Update Member Import
@@ -53,6 +53,7 @@ class CorporatePlanController extends Controller
|
||||
'corporate_id' => $corporate_id,
|
||||
'code' => $request->code,
|
||||
'name' => $request->name,
|
||||
'description' => $request->description
|
||||
]);
|
||||
|
||||
return $newCorporatePlan;
|
||||
@@ -101,6 +102,7 @@ class CorporatePlanController extends Controller
|
||||
'code' => $request->code,
|
||||
'name' => $request->name,
|
||||
'active' => $request->active,
|
||||
'description' => $request->description
|
||||
])->save();
|
||||
|
||||
return $corporatePlan;
|
||||
|
||||
@@ -29,6 +29,9 @@ class MemberController extends Controller
|
||||
$benefits = Member::query()
|
||||
->filter($request->all())
|
||||
// ->where('corporate_id', $corporate_id)
|
||||
->whereHas('employeds', function ($query) use ($corporate_id) {
|
||||
$query->where('corporate_id', $corporate_id);
|
||||
})
|
||||
->paginate(20)
|
||||
->appends($request->all());
|
||||
|
||||
@@ -101,7 +104,7 @@ class MemberController extends Controller
|
||||
$request->validate([
|
||||
'file' => 'required|file|mimes:xls,xlsx,csv,txt',
|
||||
]);
|
||||
$corporate = Corporate::findOrFail($corporate_id);
|
||||
$corporate = Corporate::findOrFail($corporate_id)->load('currentPolicy');
|
||||
|
||||
$file_name = now()->getPreciseTimestamp(3).'-'.$request->file('file')->getClientOriginalName();
|
||||
$file = $request->file('file')->storeAs('temp', $file_name);
|
||||
|
||||
@@ -146,14 +146,24 @@ class MemberEnrollmentService
|
||||
"bpjs_class" => $row['bpjs_class'],
|
||||
];
|
||||
|
||||
|
||||
if ($corporate->currentPolicy->code != $row['policy_number']) {
|
||||
throw new ImportRowException(__('enrollment.POLICY_NUMBER_NOT_MATCH', [
|
||||
'policy_id' => $row['policy_number']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
switch ($row['record_mode']) {
|
||||
case "1": // New Member
|
||||
$member = Member::query()
|
||||
->where('member_id', $row['member_id'])
|
||||
// ->whereHas('employeds', function ($query) use ($corporate) {
|
||||
// $query->where('corporate_id', $corporate->id);
|
||||
// })
|
||||
->first();
|
||||
|
||||
|
||||
if ($member) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_EXISTS', [
|
||||
throw new ImportRowException(__('enrollment.MEMBER_UNIQUE', [
|
||||
'member_id' => $row['member_id'],
|
||||
'policy_id' => $row['policy_number']
|
||||
]), 0, null, $row);
|
||||
@@ -180,10 +190,10 @@ class MemberEnrollmentService
|
||||
if ($member->save()) {
|
||||
$memberPolicy = new MemberPolicy();
|
||||
$memberPolicy->fill([
|
||||
'member_id' => $member->id,
|
||||
'member_id' => $member->member_id,
|
||||
'policy_id' => $row['policy_number'],
|
||||
'start' => Carbon::parse($row['member_effective_date']),
|
||||
'end' => Carbon::parse($row['member_expiry_date']),
|
||||
'start' => Carbon::parse(strtotime($row['member_effective_date'])),
|
||||
'end' => Carbon::parse(strtotime($row['member_expiry_date'])),
|
||||
'status' => 'active'
|
||||
]);
|
||||
$memberPolicy->save();
|
||||
@@ -285,7 +295,7 @@ class MemberEnrollmentService
|
||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_NO_CHANGE'), 0, null, $row);
|
||||
}
|
||||
|
||||
if (Carbon::parse($row['member_effective_date']) > Carbon::parse($row['end_date'])) {
|
||||
if (Carbon::parse(strtotime($row['member_effective_date'])) > Carbon::parse($row['end_date'])) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_INVALID'), 0, null, $row);
|
||||
}
|
||||
|
||||
@@ -312,12 +322,12 @@ class MemberEnrollmentService
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
if (Carbon::parse($row['member_effective_date']) > Carbon::parse($row['member_expiry_date'])) {
|
||||
if (Carbon::parse(strtotime($row['member_effective_date'])) > Carbon::parse(strtotime($row['member_expiry_date']))) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_INVALID'), 0, null, $row);
|
||||
}
|
||||
|
||||
if (Carbon::parse($memberPolicy->end) > Carbon::parse($row['member_expiry_date']
|
||||
|| $memberPolicy->end > Carbon::parse($row['member_expiry_date']))) {
|
||||
if (Carbon::parse($memberPolicy->end) > Carbon::parse(strtotime($row['member_expiry_date'])
|
||||
|| $memberPolicy->end > Carbon::parse(strtotime($row['member_expiry_date'])))) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_RENEWAL_STILL_ACTIVE'), 0, null, $row);
|
||||
}
|
||||
|
||||
@@ -352,12 +362,12 @@ class MemberEnrollmentService
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
if (Carbon::parse($row['member_effective_date']) > Carbon::parse($row['member_expiry_date'])) {
|
||||
if (Carbon::parse(strtotime($row['member_effective_date'])) > Carbon::parse(strtotime($row['member_expiry_date']))) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_INVALID'), 0, null, $row);
|
||||
}
|
||||
|
||||
if (Carbon::parse($memberPolicy->end) > Carbon::parse($row['member_expiry_date']
|
||||
|| $memberPolicy->end > Carbon::parse($row['member_expiry_date']))) {
|
||||
if (Carbon::parse($memberPolicy->end) > Carbon::parse(strtotime($row['member_expiry_date'])
|
||||
|| $memberPolicy->end > Carbon::parse(strtotime($row['member_expiry_date'])))) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_RENEWAL_STILL_ACTIVE'), 0, null, $row);
|
||||
}
|
||||
|
||||
@@ -445,11 +455,11 @@ class MemberEnrollmentService
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
if (Carbon::parse($row['member_effective_date']) < now() || Carbon::parse($row['member_expiry_date']) < now()) {
|
||||
if (Carbon::parse(strtotime($row['member_effective_date'])) < now() || Carbon::parse(strtotime($row['member_expiry_date'])) < now()) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_MUST_BE_AFTER_TODAY'), 0, null, $row);
|
||||
}
|
||||
|
||||
if (Carbon::parse($row['member_effective_date']) > Carbon::parse($row['member_expiry_date'])) {
|
||||
if (Carbon::parse(strtotime($row['member_effective_date'])) > Carbon::parse(strtotime($row['member_expiry_date']))) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_INVALID'), 0, null, $row);
|
||||
}
|
||||
|
||||
@@ -521,7 +531,7 @@ class MemberEnrollmentService
|
||||
throw new ImportRowException(__("enrollment.MODE_UNAVAILABLE"), 0, null, $row);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
throw new ImportRowException($e->getMessage(), (int) $e->getCode(), $e, $row);
|
||||
throw $e; //new ImportRowException($e->getMessage(), (int) $e->getCode(), $e, $row);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,12 @@ class Corporate extends Model
|
||||
'name',
|
||||
'welcome_message',
|
||||
'help_text',
|
||||
'active'
|
||||
'active',
|
||||
'linking_rules',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'linking_rules' => 'array',
|
||||
];
|
||||
|
||||
public function imports()
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Str;
|
||||
@@ -12,6 +13,7 @@ class CorporatePolicy extends Model
|
||||
|
||||
protected $fillable = [
|
||||
'corporate_id',
|
||||
// 'policy_id',
|
||||
'code',
|
||||
'total_premi',
|
||||
'minimal_deposit_percentage',
|
||||
@@ -34,4 +36,19 @@ class CorporatePolicy extends Model
|
||||
{
|
||||
$this->attributes['code'] = !empty($value) ? $value : Str::upper(Str::random('6'));
|
||||
}
|
||||
|
||||
// public function setPolicyIdAttribute($value)
|
||||
// {
|
||||
// $this->attributes['policy_id'] = !empty($value) ? $value : Str::upper(Str::random('6'));
|
||||
// }
|
||||
|
||||
public function setStartAttribute($value)
|
||||
{
|
||||
$this->attributes['start'] = !empty($value) ? Carbon::parse($value)->format('Y-m-d') : null;
|
||||
}
|
||||
|
||||
public function setEndAttribute($value)
|
||||
{
|
||||
$this->attributes['end'] = !empty($value) ? Carbon::parse($value)->format('Y-m-d') : null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,7 +106,7 @@ class Member extends Model
|
||||
|
||||
public function policies()
|
||||
{
|
||||
return $this->hasMany(MemberPolicy::class, 'member_id');
|
||||
return $this->hasMany(MemberPolicy::class, 'member_id', 'member_id');
|
||||
}
|
||||
|
||||
public function scopeFilter($query, array $filters)
|
||||
|
||||
@@ -28,4 +28,14 @@ class MemberPolicy extends Model
|
||||
{
|
||||
return $this->belongsTo(Member::class, 'member_id', 'member_id');
|
||||
}
|
||||
|
||||
// public function setStartAttribute($value)
|
||||
// {
|
||||
// $this->attributes['start'] = $value ? strtotime($value) : null;
|
||||
// }
|
||||
|
||||
// public function setEndAttribute($value)
|
||||
// {
|
||||
// $this->attributes['end'] = $value ? strtotime($value) : null;
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ return new class extends Migration
|
||||
$table->text('welcome_message')->nullable();
|
||||
$table->text('help_text')->nullable();
|
||||
$table->boolean('active')->default(true);
|
||||
$table->json('linking_rules')->nullable();
|
||||
|
||||
$table->timestamps();
|
||||
$table->softDeletes();
|
||||
|
||||
@@ -16,14 +16,15 @@ return new class extends Migration
|
||||
Schema::create('corporate_policies', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('corporate_id');
|
||||
$table->string('policy_id')->unique();
|
||||
$table->decimal('total_premi', 15, 2)->nullable();
|
||||
$table->decimal('minimal_deposit_percentage', 15, 2)->nullable();
|
||||
$table->decimal('minimal_deposit_net', 15, 2)->nullable();
|
||||
$table->decimal('minimal_alert_percentage', 7, 4)->nullable();
|
||||
$table->decimal('minimal_alert_net', 15, 2)->nullable();
|
||||
$table->decimal('minimal_stop_service_percentage', 7, 4)->nullable();
|
||||
$table->decimal('minimal_stop_service_net', 15, 2)->nullable();
|
||||
$table->string('code')->index();
|
||||
// $table->string('policy_id')->index();
|
||||
$table->string('total_premi', 30)->nullable();
|
||||
$table->string('minimal_deposit_percentage', 30)->nullable();
|
||||
$table->string('minimal_deposit_net', 30)->nullable();
|
||||
$table->string('minimal_alert_percentage', 30)->nullable();
|
||||
$table->string('minimal_alert_net', 30)->nullable();
|
||||
$table->string('minimal_stop_service_percentage', 30)->nullable();
|
||||
$table->string('minimal_stop_service_net', 30)->nullable();
|
||||
$table->date('start')->nullable();
|
||||
$table->date('end')->nullable();
|
||||
$table->boolean('active')->default(false);
|
||||
|
||||
@@ -37,22 +37,25 @@
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/cache": "^11.7.1",
|
||||
"@emotion/react": "^11.9.0",
|
||||
"@emotion/styled": "^11.8.1",
|
||||
"@hookform/resolvers": "^2.8.8",
|
||||
"@iconify/react": "^3.2.1",
|
||||
"@mui/icons-material": "^5.8.0",
|
||||
"@date-io/date-fns": "^2.14.0",
|
||||
"@emotion/cache": "^11.9.3",
|
||||
"@emotion/react": "^11.9.3",
|
||||
"@emotion/styled": "^11.9.3",
|
||||
"@hookform/resolvers": "^2.9.6",
|
||||
"@iconify/react": "^3.2.2",
|
||||
"@mui/icons-material": "^5.8.4",
|
||||
"@mui/lab": "5.0.0-alpha.80",
|
||||
"@mui/material": "^5.6.4",
|
||||
"@mui/system": "^5.6.4",
|
||||
"@mui/x-data-grid": "^5.10.0",
|
||||
"@mui/material": "^5.9.1",
|
||||
"@mui/system": "^5.9.1",
|
||||
"@mui/x-data-grid": "^5.14.0",
|
||||
"@mui/x-date-pickers": "5.0.0-beta.2",
|
||||
"@vitejs/plugin-react": "^1.3.2",
|
||||
"axios": "^0.27.2",
|
||||
"change-case": "^4.1.2",
|
||||
"date-fns": "^2.28.0",
|
||||
"framer-motion": "^6.3.3",
|
||||
"highlight.js": "^11.5.1",
|
||||
"csstype": "^3.1.0",
|
||||
"date-fns": "^2.29.1",
|
||||
"framer-motion": "^6.5.1",
|
||||
"highlight.js": "^11.6.0",
|
||||
"history": "^5.3.0",
|
||||
"jsx-runtime": "^1.2.0",
|
||||
"lodash": "^4.17.21",
|
||||
@@ -61,36 +64,36 @@
|
||||
"numeral": "^2.0.6",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-dropzone": "^14.2.1",
|
||||
"react-dropzone": "^14.2.2",
|
||||
"react-helmet-async": "^1.3.0",
|
||||
"react-hook-form": "^7.30.0",
|
||||
"react-hook-form": "^7.33.1",
|
||||
"react-intersection-observer": "^8.34.0",
|
||||
"react-lazy-load-image-component": "^1.5.4",
|
||||
"react-quill": "^1.3.5",
|
||||
"react-lazy-load-image-component": "^1.5.5",
|
||||
"react-quill": "2.0.0-beta.4",
|
||||
"react-router": "^6.3.0",
|
||||
"react-router-dom": "^6.3.0",
|
||||
"simplebar": "^5.3.6",
|
||||
"simplebar-react": "^2.3.7",
|
||||
"simplebar": "^5.3.8",
|
||||
"simplebar-react": "^2.4.1",
|
||||
"stylis": "^4.1.1",
|
||||
"stylis-plugin-rtl": "^2.1.1",
|
||||
"vite": "^2.9.8",
|
||||
"vite-plugin-svgr": "^2.1.0",
|
||||
"vite": "^2.9.14",
|
||||
"vite-plugin-svgr": "^2.2.1",
|
||||
"yup": "^0.32.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.17.10",
|
||||
"@babel/eslint-parser": "^7.17.0",
|
||||
"@babel/plugin-syntax-flow": "^7.16.7",
|
||||
"@babel/plugin-transform-react-jsx": "^7.17.3",
|
||||
"@babel/core": "^7.18.9",
|
||||
"@babel/eslint-parser": "^7.18.9",
|
||||
"@babel/plugin-syntax-flow": "^7.18.6",
|
||||
"@babel/plugin-transform-react-jsx": "^7.18.6",
|
||||
"@types/lodash": "^4.14.182",
|
||||
"@types/nprogress": "^0.2.0",
|
||||
"@types/react": "^17.0.44",
|
||||
"@types/react-dom": "^17.0.16",
|
||||
"@types/react": "^17.0.47",
|
||||
"@types/react-dom": "^17.0.17",
|
||||
"@types/react-lazy-load-image-component": "^1.5.2",
|
||||
"@types/stylis": "^4.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "^5.22.0",
|
||||
"@typescript-eslint/parser": "^5.22.0",
|
||||
"eslint": "^8.14.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.30.7",
|
||||
"@typescript-eslint/parser": "^5.30.7",
|
||||
"eslint": "^8.20.0",
|
||||
"eslint-config-airbnb": "19.0.4",
|
||||
"eslint-config-airbnb-typescript": "^16.2.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
@@ -99,11 +102,11 @@
|
||||
"eslint-plugin-flowtype": "^8.0.3",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-jsx-a11y": "6.5.1",
|
||||
"eslint-plugin-prettier": "^4.0.0",
|
||||
"eslint-plugin-react": "^7.29.4",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"eslint-plugin-react": "^7.30.1",
|
||||
"eslint-plugin-react-hooks": "4.3.0",
|
||||
"prettier": "^2.6.2",
|
||||
"typescript": "^4.6.4",
|
||||
"vite-plugin-pwa": "^0.12.0"
|
||||
"prettier": "^2.7.1",
|
||||
"typescript": "^4.7.4",
|
||||
"vite-plugin-pwa": "^0.12.3"
|
||||
}
|
||||
}
|
||||
|
||||
2955
frontend/dashboard/pnpm-lock.yaml
generated
@@ -150,11 +150,13 @@ export default function EditorToolbar({ id, isSimple, ...other }: EditorToolbarP
|
||||
<select className="ql-align" />
|
||||
</div>
|
||||
|
||||
<div className="ql-formats">
|
||||
<button type="button" className="ql-link" />
|
||||
<button type="button" className="ql-image" />
|
||||
<button type="button" className="ql-video" />
|
||||
</div>
|
||||
{!isSimple && (
|
||||
<div className="ql-formats">
|
||||
<button type="button" className="ql-link" />
|
||||
<button type="button" className="ql-image" />
|
||||
<button type="button" className="ql-video" />
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className="ql-formats">
|
||||
{!isSimple && <button type="button" className="ql-formula" />}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { ReactNode } from 'react';
|
||||
import ReactQuill from 'react-quill';
|
||||
import 'react-quill/dist/quill.snow.css';
|
||||
// @mui
|
||||
import { styled } from '@mui/material/styles';
|
||||
import { Box, BoxProps } from '@mui/material';
|
||||
|
||||
@@ -67,3 +67,49 @@ export function RHFMultiCheckbox({ name, options, ...other }: RHFMultiCheckboxPr
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
interface optionsCustomInterface {
|
||||
value: string;
|
||||
label: string;
|
||||
}
|
||||
interface RHFCustomMultiCheckboxProps {
|
||||
name: string;
|
||||
options: optionsCustomInterface[];
|
||||
}
|
||||
|
||||
export function RHFCustomMultiCheckbox({ name, options, ...other }: RHFCustomMultiCheckboxProps) {
|
||||
const { control } = useFormContext();
|
||||
|
||||
return (
|
||||
<Controller
|
||||
name={name}
|
||||
control={control}
|
||||
render={({ field }) => {
|
||||
const onSelected = (option: optionsCustomInterface) =>
|
||||
field.value.includes(option.value)
|
||||
? field.value.filter((value: string) => value !== option.value)
|
||||
: [...field.value, option.value];
|
||||
|
||||
return (
|
||||
<FormGroup>
|
||||
{options.map((option, index) => (
|
||||
<FormControlLabel
|
||||
key={index}
|
||||
control={
|
||||
<Checkbox
|
||||
checked={field.value.includes(option.value)}
|
||||
onChange={() => field.onChange(onSelected(option))}
|
||||
/>
|
||||
}
|
||||
label={option.label}
|
||||
{...other}
|
||||
/>
|
||||
))}
|
||||
</FormGroup>
|
||||
);
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
// form
|
||||
import { useFormContext, Controller } from 'react-hook-form';
|
||||
// @mui
|
||||
import { TextField, TextFieldProps } from '@mui/material';
|
||||
import { LocalizationProvider, MobileDatePicker } from '@mui/x-date-pickers';
|
||||
import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
interface IProps {
|
||||
name: string;
|
||||
}
|
||||
|
||||
export default function RHFDatepicker({ name, ...other }: IProps & TextFieldProps) {
|
||||
const { control } = useFormContext();
|
||||
return (
|
||||
<Controller
|
||||
name={name}
|
||||
control={control}
|
||||
render={({ field, fieldState: { error } }) => (
|
||||
|
||||
<LocalizationProvider dateAdapter={AdapterDateFns}>
|
||||
<MobileDatePicker
|
||||
inputFormat="yyyy-MM-dd"
|
||||
value={field.value}
|
||||
onChange={field.onChange}
|
||||
renderInput={(field) => <TextField {...field} fullWidth error={!!error} helperText={error?.message} {...other} />}
|
||||
/>
|
||||
</LocalizationProvider>
|
||||
)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
@@ -24,6 +24,7 @@ export default function RHFEditor({ name, ...other }: Props) {
|
||||
value={field.value}
|
||||
onChange={field.onChange}
|
||||
error={!!error}
|
||||
simple={true}
|
||||
helperText={
|
||||
<FormHelperText error sx={{ px: 2, textTransform: 'capitalize' }}>
|
||||
{error?.message}
|
||||
|
||||
@@ -8,3 +8,4 @@ export { default as RHFSelect } from './RHFSelect';
|
||||
export { default as RHFEditor } from './RHFEditor';
|
||||
export { default as RHFTextField } from './RHFTextField';
|
||||
export { default as RHFRadioGroup } from './RHFRadioGroup';
|
||||
export { default as RHFDatepicker } from './RHFDatepicker';
|
||||
|
||||
@@ -2,7 +2,7 @@ import * as Yup from 'yup';
|
||||
import { LoadingButton } from "@mui/lab";
|
||||
import { Card, Grid, Stack, Typography } from "@mui/material";
|
||||
import { CorporatePlan } from "../../../@types/corporates";
|
||||
import { FormProvider, RHFSwitch, RHFTextField } from "../../../components/hook-form";
|
||||
import { FormProvider, RHFEditor, RHFSwitch, RHFTextField } from "../../../components/hook-form";
|
||||
import { useEffect, useMemo } from 'react';
|
||||
import { useForm } from 'react-hook-form';
|
||||
import { yupResolver } from '@hookform/resolvers/yup';
|
||||
@@ -30,7 +30,8 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
|
||||
() => ({
|
||||
name: currentCorporatePlan?.name || '',
|
||||
code: currentCorporatePlan?.code || '',
|
||||
active: currentCorporatePlan?.active === 1 ? true : false,
|
||||
active: currentCorporatePlan?.active || true,
|
||||
description: currentCorporatePlan?.description || ''
|
||||
}),
|
||||
[currentCorporatePlan]
|
||||
);
|
||||
@@ -110,6 +111,11 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
|
||||
|
||||
<RHFTextField name="code" label="Code" />
|
||||
|
||||
<Stack spacing={1}>
|
||||
<Typography variant='subtitle2' sx={{ color: "text.secondary" }}>Description</Typography>
|
||||
<RHFEditor name="description" />
|
||||
</Stack>
|
||||
|
||||
<LoadingButton type="submit" variant="contained" size="large" fullWidth={true} loading={isSubmitting}>
|
||||
Create Corporate Plan
|
||||
</LoadingButton>
|
||||
|
||||
@@ -11,6 +11,7 @@ import useSettings from '../../../hooks/useSettings';
|
||||
import { Link, useNavigate, useParams, useSearchParams } from 'react-router-dom';
|
||||
// components
|
||||
import axios from '../../../utils/axios';
|
||||
import { makeExcerpt } from '../../../utils/formatString';
|
||||
import { CorporatePlan } from '../../../@types/corporates';
|
||||
import { LaravelPaginatedData } from '../../../@types/paginated-data';
|
||||
|
||||
@@ -74,7 +75,7 @@ export default function PlanList() {
|
||||
<TableCell align="left">{row.id}</TableCell>
|
||||
<TableCell align="left">{row.code}</TableCell>
|
||||
<TableCell align="left">{row.name}</TableCell>
|
||||
<TableCell align="left">{row.description}</TableCell>
|
||||
<TableCell align="left">{ makeExcerpt(row.description) }</TableCell>
|
||||
<TableCell align="right"><Button variant="outlined" color="success" size="small">Active</Button></TableCell>
|
||||
<TableCell align="right"><Link to={`/corporates/${row.corporate_id}/corporate-plans/${row.id}/edit`}><Button variant="outlined" color="success" size="small">Edit</Button></Link></TableCell>
|
||||
</TableRow>
|
||||
|
||||
@@ -27,10 +27,10 @@ export default function CorporateTabNavigations({ position }: Props) {
|
||||
'path' : 'plans',
|
||||
'label': 'Plans',
|
||||
},
|
||||
{
|
||||
'path' : 'corporate-benefits',
|
||||
'label': 'Corporate Benefit',
|
||||
},
|
||||
// {
|
||||
// 'path' : 'corporate-benefits',
|
||||
// 'label': 'Corporate Benefit',
|
||||
// },
|
||||
{
|
||||
'path' : 'benefits',
|
||||
'label': 'Benefit',
|
||||
|
||||
@@ -9,6 +9,7 @@ import { yupResolver } from '@hookform/resolvers/yup';
|
||||
import { styled } from '@mui/material/styles';
|
||||
import { LoadingButton } from '@mui/lab';
|
||||
import {
|
||||
Box,
|
||||
Card,
|
||||
FormHelperText,
|
||||
Grid,
|
||||
@@ -23,9 +24,15 @@ import {
|
||||
RHFRadioGroup,
|
||||
RHFUploadAvatar,
|
||||
RHFSwitch,
|
||||
RHFEditor,
|
||||
RHFDatepicker,
|
||||
RHFMultiCheckbox,
|
||||
RHFCheckbox,
|
||||
RHFCustomMultiCheckbox,
|
||||
} from '../../components/hook-form';
|
||||
import { Corporate } from '../../@types/corporates';
|
||||
import axios from '../../utils/axios';
|
||||
import { fCurrency } from '../../utils/formatNumber';
|
||||
|
||||
const LabelStyle = styled(Typography)(({ theme }) => ({
|
||||
...theme.typography.subtitle2,
|
||||
@@ -65,15 +72,16 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
||||
active: currentCorporate?.id ? currentCorporate?.active === 1 : true,
|
||||
policy_id: currentCorporate?.current_policy?.id || '',
|
||||
policy_code: currentCorporate?.current_policy?.code || '',
|
||||
policy_total_premi: currentCorporate?.current_policy?.total_premi || '',
|
||||
policy_total_premi: currentCorporate?.current_policy?.total_premi || 0,
|
||||
policy_minimal_deposit_percentage: currentCorporate?.current_policy?.minimal_deposit_percentage || 50,
|
||||
policy_minimal_deposit_net: currentCorporate?.current_policy?.minimal_deposit_net || '',
|
||||
policy_minimal_deposit_net: currentCorporate?.current_policy?.minimal_deposit_net || 0,
|
||||
policy_minimal_alert_percentage: currentCorporate?.current_policy?.minimal_alert_percentage || 25,
|
||||
policy_minimal_alert_net: currentCorporate?.current_policy?.minimal_alert_net || '',
|
||||
policy_minimal_alert_net: currentCorporate?.current_policy?.minimal_alert_net || 0,
|
||||
policy_stop_service_percentage: currentCorporate?.current_policy?.minimal_stop_service_percentage || 25,
|
||||
policy_stop_service_net: currentCorporate?.current_policy?.minimal_stop_service_net || '',
|
||||
policy_stop_service_net: currentCorporate?.current_policy?.minimal_stop_service_net || 0,
|
||||
policy_start: currentCorporate?.current_policy?.start || '',
|
||||
policy_end: currentCorporate?.current_policy?.end || '',
|
||||
linking_rules: currentCorporate?.linking_rules || ['nrik', 'nik', 'member_id'],
|
||||
}),
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
[currentCorporate]
|
||||
@@ -104,6 +112,7 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
||||
if (!isEdit) {
|
||||
reset(defaultValues);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [isEdit, currentCorporate]);
|
||||
|
||||
@@ -148,6 +157,73 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
||||
setValue('logo', null);
|
||||
};
|
||||
|
||||
// Only Handle Change on Policy Total Premi
|
||||
useEffect(() => {
|
||||
let calc_policy_minimal_deposit_net = values.policy_total_premi * values.policy_minimal_deposit_percentage / 100;
|
||||
setValue('policy_minimal_deposit_net', calc_policy_minimal_deposit_net);
|
||||
|
||||
let calc_policy_minimal_alert_net = values.policy_total_premi * values.policy_minimal_alert_percentage / 100;
|
||||
setValue('policy_minimal_alert_net', calc_policy_minimal_alert_net);
|
||||
|
||||
|
||||
let calc_policy_stop_service_net = values.policy_total_premi * values.policy_stop_service_percentage / 100;
|
||||
setValue('policy_stop_service_net', calc_policy_stop_service_net);
|
||||
|
||||
}, [values.policy_total_premi]);
|
||||
|
||||
// Only Handle on Change Policy Minimal Deposit
|
||||
const handleMinimalDepositNetChange = (e) => {
|
||||
setValue('policy_minimal_deposit_net', e.target.value);
|
||||
setValue('policy_minimal_deposit_percentage', e.target.value / values.policy_total_premi * 100);
|
||||
}
|
||||
const handleMinimalDepositPercentageChange = (e) => {
|
||||
setValue('policy_minimal_deposit_percentage', e.target.value);
|
||||
setValue('policy_minimal_deposit_net', values.policy_total_premi * e.target.value / 100);
|
||||
}
|
||||
// Only Handle on Change Minimal Alert
|
||||
const handleMinimalAlertNetChange = (e) => {
|
||||
setValue('policy_minimal_alert_net', e.target.value);
|
||||
setValue('policy_minimal_alert_percentage', e.target.value / values.policy_total_premi * 100);
|
||||
}
|
||||
const handleMinimalAlertPercentageChange = (e) => {
|
||||
setValue('policy_minimal_alert_percentage', e.target.value);
|
||||
setValue('policy_minimal_alert_net', values.policy_total_premi * e.target.value / 100);
|
||||
}
|
||||
// Only Handle on Change Minimum Stop Service
|
||||
const handleStopServiceNetChange = (e) => {
|
||||
setValue('policy_stop_service_net', e.target.value);
|
||||
setValue('policy_stop_service_percentage', e.target.value / values.policy_total_premi * 100);
|
||||
}
|
||||
const handleStopServicePercentageChange = (e) => {
|
||||
setValue('policy_stop_service_percentage', e.target.value);
|
||||
setValue('policy_stop_service_net', values.policy_total_premi * e.target.value / 100);
|
||||
}
|
||||
|
||||
const linking_rules_checkbox_name = "linking_rules"
|
||||
const linking_tools = [
|
||||
{
|
||||
"value" : "nrik",
|
||||
"label" : "No. KTP"
|
||||
},
|
||||
{
|
||||
"value" : "nik",
|
||||
"label" : "Nomor Induk Karyawan (NIK)"
|
||||
},
|
||||
{
|
||||
"value" : "member_id",
|
||||
"label" : "Member ID"
|
||||
},
|
||||
{
|
||||
"value" : "phone",
|
||||
"label" : "Nomor Telepon"
|
||||
},
|
||||
{
|
||||
"value" : "email",
|
||||
"label" : "E-Mail"
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
return (
|
||||
<FormProvider methods={methods} onSubmit={handleSubmit(onSubmit)}>
|
||||
{/* <Card sx={{ p:3, mb:3, background: 'gray', color: 'white' }}><Typography>Corporate Detail</Typography></Card> */}
|
||||
@@ -161,9 +237,15 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
||||
|
||||
<RHFTextField name="name" label="Corporate Name" />
|
||||
|
||||
<RHFTextField name="welcome_message" label="Welcome Message" />
|
||||
<Stack spacing={1}>
|
||||
<Typography variant='subtitle2' sx={{ color: "text.secondary" }}>Welcome Message</Typography>
|
||||
<RHFEditor name="welcome_message" />
|
||||
</Stack>
|
||||
|
||||
<RHFTextField name="help_text" label="Help Text" />
|
||||
<Stack spacing={1}>
|
||||
<Typography variant='subtitle2' sx={{ color: "text.secondary" }}>Help Text</Typography>
|
||||
<RHFEditor name="help_text" />
|
||||
</Stack>
|
||||
|
||||
{/* <div>
|
||||
<LabelStyle>Images</LabelStyle>
|
||||
@@ -197,6 +279,14 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
||||
/>
|
||||
</Stack>
|
||||
</Card>
|
||||
<Card sx={{ p: 3 }}>
|
||||
<Stack>
|
||||
<Typography variant='subtitle2' sx={{ color: "text.secondary" }}>Linking Rules</Typography>
|
||||
<Stack>
|
||||
<RHFCustomMultiCheckbox name='linking_rules' options={linking_tools} />
|
||||
</Stack>
|
||||
</Stack>
|
||||
</Card>
|
||||
</Stack>
|
||||
</Grid>
|
||||
|
||||
@@ -215,49 +305,49 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
||||
</Stack>
|
||||
|
||||
{/* <Typography>Minimal Deposit Policy Level</Typography> */}
|
||||
<Grid container>
|
||||
<Stack direction="row" spacing={2}>
|
||||
<Grid item xs={12} md={6}>
|
||||
<RHFTextField name="policy_start" label="Start Date (YYYY-MM-DD)" />
|
||||
<RHFDatepicker name="policy_start" label="Start Date (YYYY-MM-DD)" />
|
||||
</Grid>
|
||||
<Grid item xs={12} md={6}>
|
||||
<RHFTextField name="policy_end" label="End Date (YYYY-MM-DD)" />
|
||||
<RHFDatepicker name="policy_end" label="End Date (YYYY-MM-DD)" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Stack>
|
||||
|
||||
<RHFTextField name="policy_total_premi" label="Deposit Intial Fund" />
|
||||
<RHFTextField name="policy_total_premi" label={"Deposit Intial Fund ("+fCurrency(values.policy_total_premi)+")"}/>
|
||||
|
||||
<Stack spacing={1}>
|
||||
<Typography>Minimal Deposit Policy Level</Typography>
|
||||
<Typography variant='subtitle2' sx={{ color: "text.secondary" }}>Minimal Deposit Policy Level</Typography>
|
||||
<Grid container>
|
||||
<Grid item xs={12} md={3}>
|
||||
<RHFTextField name="policy_minimal_deposit_percentage" label="Percentage (%)" onChange={handleMinimalDepositPercentageChange}/>
|
||||
</Grid>
|
||||
<Grid item xs={12} md={9}>
|
||||
<RHFTextField name="policy_minimal_deposit_net" label={"Net ("+fCurrency(values.policy_minimal_deposit_net)+")"} onChange={handleMinimalDepositNetChange}/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Stack>
|
||||
|
||||
<Stack spacing={1}>
|
||||
<Typography variant='subtitle2' sx={{ color: "text.secondary" }}>Minimal Alert Level</Typography>
|
||||
<Grid container>
|
||||
<Grid item xs={12} md={3}>
|
||||
<RHFTextField name="policy_minimal_deposit_percentage" label="Percentage (%)" />
|
||||
<RHFTextField name="policy_minimal_alert_percentage" label="Percentage (%)" onChange={handleMinimalAlertPercentageChange}/>
|
||||
</Grid>
|
||||
<Grid item xs={12} md={9}>
|
||||
<RHFTextField name="policy_minimal_deposit_net" label="Net (Rp)" />
|
||||
<RHFTextField name="policy_minimal_alert_net" label={"Net ("+fCurrency(values.policy_minimal_alert_net)+")"} onChange={handleMinimalAlertNetChange}/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Stack>
|
||||
|
||||
<Stack spacing={1}>
|
||||
<Typography>Minimal Alert Level</Typography>
|
||||
<Typography variant='subtitle2' sx={{ color: "text.secondary" }}>Stop Service Level</Typography>
|
||||
<Grid container>
|
||||
<Grid item xs={12} md={3}>
|
||||
<RHFTextField name="policy_minimal_alert_percentage" label="Percentage (%)" />
|
||||
<RHFTextField name="policy_stop_service_percentage" label="Percentage (%)" onChange={handleStopServicePercentageChange}/>
|
||||
</Grid>
|
||||
<Grid item xs={12} md={9}>
|
||||
<RHFTextField name="policy_minimal_alert_net" label="Net (Rp)" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Stack>
|
||||
|
||||
<Stack spacing={1}>
|
||||
<Typography>Stop Service Level</Typography>
|
||||
<Grid container>
|
||||
<Grid item xs={12} md={3}>
|
||||
<RHFTextField name="policy_stop_service_percentage" label="Percentage (%)" />
|
||||
</Grid>
|
||||
<Grid item xs={12} md={9}>
|
||||
<RHFTextField name="policy_stop_service_net" label="Net (Rp)" />
|
||||
<RHFTextField name="policy_stop_service_net" label={"Net ("+fCurrency(values.policy_stop_service_net)+")"} onChange={handleStopServiceNetChange}/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Stack>
|
||||
|
||||
@@ -20,6 +20,42 @@ export default function CorporatePlanList() {
|
||||
const { corporate_id } = useParams();
|
||||
const [searchParams, setSearchParams] = useSearchParams();
|
||||
const [importResult, setImportResult] = useState(null)
|
||||
|
||||
// Dummy Default Data
|
||||
const [dataTableIsLoading, setDataTableLoading] = React.useState(true);
|
||||
const [dataTableData, setDataTableData] = React.useState<LaravelPaginatedData>({
|
||||
current_page: 1,
|
||||
data: [],
|
||||
path: "",
|
||||
first_page_url: "",
|
||||
last_page: 1,
|
||||
last_page_url: "",
|
||||
next_page_url: "",
|
||||
prev_page_url: "",
|
||||
per_page: 10,
|
||||
from: 0,
|
||||
to: 0,
|
||||
total: 0
|
||||
});
|
||||
|
||||
const loadDataTableData = async (appliedFilter = null) => {
|
||||
setDataTableLoading(true);
|
||||
const filter = appliedFilter ? appliedFilter : Object.fromEntries([...searchParams.entries()]);
|
||||
const response = await axios.get('/corporates/'+corporate_id+'/members', { params: filter });
|
||||
// console.log(response.data);
|
||||
setDataTableLoading(false);
|
||||
|
||||
setDataTableData(response.data);
|
||||
}
|
||||
|
||||
const applyFilter = async (searchFilter) => {
|
||||
await loadDataTableData({ "search" : searchFilter });
|
||||
setSearchParams({ "search" : searchFilter });
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
loadDataTableData();
|
||||
}, [])
|
||||
|
||||
function SearchInput(props: any) {
|
||||
// SEARCH
|
||||
@@ -92,16 +128,13 @@ export default function CorporatePlanList() {
|
||||
formData.append("file", importPlan.current?.files[0])
|
||||
axios.post(`corporates/${corporate_id}/members/import`, formData )
|
||||
.then(response => {
|
||||
setImportResult(response.data)
|
||||
handleCancelImportButton();
|
||||
loadDataTableData();
|
||||
setImportResult(response.data)
|
||||
})
|
||||
.catch(response => {
|
||||
alert('Looks like something went wrong. Please check your data and try again. ' + response.message)
|
||||
})
|
||||
.then(x => {
|
||||
console.log('motherfucker', importResult)
|
||||
})
|
||||
} else {
|
||||
alert('No File Selected')
|
||||
}
|
||||
@@ -206,7 +239,7 @@ export default function CorporatePlanList() {
|
||||
<TableCell key={ index } align={ column.align } minwidth={ column.minWidth }>{ row[column.id] ?? '-' }</TableCell>
|
||||
) }
|
||||
<TableCell align="right"><Button variant="outlined" color="success" size="small">Active</Button></TableCell>
|
||||
<TableCell align="right"><Button variant="outlined" color="success" size="small">Edit</Button></TableCell>
|
||||
{/* <TableCell align="right"><Button variant="outlined" color="success" size="small">Edit</Button></TableCell> */}
|
||||
</TableRow>
|
||||
{/* COLLAPSIBLE ROW */}
|
||||
<TableRow>
|
||||
@@ -225,46 +258,9 @@ export default function CorporatePlanList() {
|
||||
);
|
||||
}
|
||||
|
||||
// Dummy Default Data
|
||||
const [dataTableIsLoading, setDataTableLoading] = React.useState(true);
|
||||
const [dataTableData, setDataTableData] = React.useState<LaravelPaginatedData>({
|
||||
current_page: 1,
|
||||
data: [],
|
||||
path: "",
|
||||
first_page_url: "",
|
||||
last_page: 1,
|
||||
last_page_url: "",
|
||||
next_page_url: "",
|
||||
prev_page_url: "",
|
||||
per_page: 10,
|
||||
from: 0,
|
||||
to: 0,
|
||||
total: 0
|
||||
});
|
||||
|
||||
const loadDataTableData = async (appliedFilter = null) => {
|
||||
setDataTableLoading(true);
|
||||
const filter = appliedFilter ? appliedFilter : Object.fromEntries([...searchParams.entries()]);
|
||||
const response = await axios.get('/corporates/'+corporate_id+'/members', { params: filter });
|
||||
// console.log(response.data);
|
||||
setDataTableLoading(false);
|
||||
|
||||
setDataTableData(response.data);
|
||||
}
|
||||
|
||||
const headStyle = {
|
||||
fontWeight: 'bold',
|
||||
};
|
||||
|
||||
const applyFilter = async (searchFilter) => {
|
||||
await loadDataTableData({ "search" : searchFilter });
|
||||
setSearchParams({ "search" : searchFilter });
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
loadDataTableData();
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<Stack>
|
||||
<ImportForm />
|
||||
|
||||
11
frontend/dashboard/src/utils/formatString.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
export function clearTag(htmlString: string | undefined) {
|
||||
return htmlString?.replace(/(<([^>]+)>)/gi, "");
|
||||
}
|
||||
|
||||
export function limitString(anyString: string | undefined, limit: number = 50) {
|
||||
return anyString?.substring(0, limit)
|
||||
}
|
||||
|
||||
export function makeExcerpt(htmlString: string | undefined, limit: number = 50) {
|
||||
return limitString(clearTag(htmlString ?? ''), limit);
|
||||
}
|
||||
@@ -10,9 +10,11 @@ return [
|
||||
| The following language lines are used during import enrollment for various
|
||||
|
|
||||
*/
|
||||
"POLICY_NUMBER_NOT_MATCH" => "Wrong Policy Number (:policy_id)",
|
||||
"RECORD_MODE_REQUIRED" => "Record mode must be filled",
|
||||
"MODE_UNAVAILABLE" => "Record mode for member is not available",
|
||||
"RECORD_TYPE_REQUIRED" => "Record Type must be filled for member (Member ID)",
|
||||
"MEMBER_UNIQUE" => "Member (:member_id) is already exist, change Member ID or use another mode",
|
||||
"MEMBER_EXISTS" => "Member (:member_id) for policy (:policy_id) already exist in database",
|
||||
"MEMBER_NOT_EXISTS" => "Member (Member ID) for policy (Policy No) not found",
|
||||
"MEMBER_INACTIVE" => "Member (Member ID) for policy (Policy No) is inactive",
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
#RewriteRule ^index\.html$ - [L]
|
||||
#RewriteCond %{REQUEST_FILENAME} !-f
|
||||
#RewriteCond %{REQUEST_FILENAME} !-d
|
||||
#RewriteRule . /index.html [L]
|
||||
|
||||
RewriteCond %{HTTP_HOST} ^aso.local$
|
||||
RewriteRule ^fuck? http://dashboard.kavacare.id/berobat-ke-luar-negeri$1 [L,NE,P]
|
||||
|
||||
#RewriteRule ^berobat-ke-luar-negeri? http://dashboard.kavacare.id/berobat-ke-luar-negeri [L,NE,P]
|
||||
</IfModule>
|
||||
@@ -1 +0,0 @@
|
||||
/* /index.html 200
|
||||
@@ -1 +0,0 @@
|
||||
import{g as d,a as u,s as C,V as p,r as f,m,b as x,_ as n,d as v,e as y,f as g}from"./index.de6e8fe5.js";function h(s){return d("MuiCard",s)}u("MuiCard",["root"]);const w=["className","raised"],M=s=>{const{classes:e}=s;return v({root:["root"]},h,e)},R=C(p,{name:"MuiCard",slot:"Root",overridesResolver:(s,e)=>e.root})(()=>({overflow:"hidden"})),U=f.exports.forwardRef(function(e,t){const o=m({props:e,name:"MuiCard"}),{className:l,raised:r=!1}=o,i=x(o,w),a=n({},o,{raised:r}),c=M(a);return y(R,n({className:g(c.root,l),elevation:r?8:void 0,ref:t,ownerState:a},i))});var N=U;export{N as C};
|
||||
@@ -1 +0,0 @@
|
||||
import{ak as t,t as r,e as q,j as s,N as n,T as e}from"./index.de6e8fe5.js";import{P as h}from"./Page.080e4607.js";function c(){const{themeStretch:a}=t();return r(),q(h,{title:"Create Obat",children:s(n,{maxWidth:a?!1:"xl",children:[q(e,{variant:"h3",component:"h1",paragraph:!0,children:"Create Obat"}),q(e,{children:"qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq"})]})})}export{c as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{r as S,g as O,a as T,s as U,_ as f,m as L,al as A,b as E,d as F,e as b,f as Z,am as x,an as w}from"./index.de6e8fe5.js";const q=S.exports.createContext();var C=q;function H(n){return O("MuiGrid",n)}const J=[0,1,2,3,4,5,6,7,8,9,10],K=["column-reverse","column","row-reverse","row"],Q=["nowrap","wrap-reverse","wrap"],m=["auto",!0,1,2,3,4,5,6,7,8,9,10,11,12],h=T("MuiGrid",["root","container","item","zeroMinWidth",...J.map(n=>`spacing-xs-${n}`),...K.map(n=>`direction-xs-${n}`),...Q.map(n=>`wrap-xs-${n}`),...m.map(n=>`grid-xs-${n}`),...m.map(n=>`grid-sm-${n}`),...m.map(n=>`grid-md-${n}`),...m.map(n=>`grid-lg-${n}`),...m.map(n=>`grid-xl-${n}`)]),X=["className","columns","columnSpacing","component","container","direction","item","lg","md","rowSpacing","sm","spacing","wrap","xl","xs","zeroMinWidth"];function u(n){const r=parseFloat(n);return`${r}${String(n).replace(String(r),"")||"px"}`}function Y({theme:n,ownerState:r}){let i;return n.breakpoints.keys.reduce((e,t)=>{let o={};if(r[t]&&(i=r[t]),!i)return e;if(i===!0)o={flexBasis:0,flexGrow:1,maxWidth:"100%"};else if(i==="auto")o={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"};else{const a=x({values:r.columns,breakpoints:n.breakpoints.values}),s=typeof a=="object"?a[t]:a;if(s==null)return e;const g=`${Math.round(i/s*1e8)/1e6}%`;let c={};if(r.container&&r.item&&r.columnSpacing!==0){const p=n.spacing(r.columnSpacing);if(p!=="0px"){const l=`calc(${g} + ${u(p)})`;c={flexBasis:l,maxWidth:l}}}o=f({flexBasis:g,flexGrow:0,maxWidth:g},c)}return n.breakpoints.values[t]===0?Object.assign(e,o):e[n.breakpoints.up(t)]=o,e},{})}function y({theme:n,ownerState:r}){const i=x({values:r.direction,breakpoints:n.breakpoints.values});return w({theme:n},i,e=>{const t={flexDirection:e};return e.indexOf("column")===0&&(t[`& > .${h.item}`]={maxWidth:"none"}),t})}function nn({theme:n,ownerState:r}){const{container:i,rowSpacing:e}=r;let t={};if(i&&e!==0){const o=x({values:e,breakpoints:n.breakpoints.values});t=w({theme:n},o,a=>{const s=n.spacing(a);return s!=="0px"?{marginTop:`-${u(s)}`,[`& > .${h.item}`]:{paddingTop:u(s)}}:{}})}return t}function rn({theme:n,ownerState:r}){const{container:i,columnSpacing:e}=r;let t={};if(i&&e!==0){const o=x({values:e,breakpoints:n.breakpoints.values});t=w({theme:n},o,a=>{const s=n.spacing(a);return s!=="0px"?{width:`calc(100% + ${u(s)})`,marginLeft:`-${u(s)}`,[`& > .${h.item}`]:{paddingLeft:u(s)}}:{}})}return t}function N(n,r,i={}){if(!r||!n||n<=0)return[];if(typeof n=="string"&&!Number.isNaN(Number(n))||typeof n=="number")return[i[`spacing-xs-${String(n)}`]||`spacing-xs-${String(n)}`];const{xs:e,sm:t,md:o,lg:a,xl:s}=n;return[Number(e)>0&&(i[`spacing-xs-${String(e)}`]||`spacing-xs-${String(e)}`),Number(t)>0&&(i[`spacing-sm-${String(t)}`]||`spacing-sm-${String(t)}`),Number(o)>0&&(i[`spacing-md-${String(o)}`]||`spacing-md-${String(o)}`),Number(a)>0&&(i[`spacing-lg-${String(a)}`]||`spacing-lg-${String(a)}`),Number(s)>0&&(i[`spacing-xl-${String(s)}`]||`spacing-xl-${String(s)}`)]}const en=U("div",{name:"MuiGrid",slot:"Root",overridesResolver:(n,r)=>{const{container:i,direction:e,item:t,lg:o,md:a,sm:s,spacing:g,wrap:c,xl:p,xs:l,zeroMinWidth:d}=n.ownerState;return[r.root,i&&r.container,t&&r.item,d&&r.zeroMinWidth,...N(g,i,r),e!=="row"&&r[`direction-xs-${String(e)}`],c!=="wrap"&&r[`wrap-xs-${String(c)}`],l!==!1&&r[`grid-xs-${String(l)}`],s!==!1&&r[`grid-sm-${String(s)}`],a!==!1&&r[`grid-md-${String(a)}`],o!==!1&&r[`grid-lg-${String(o)}`],p!==!1&&r[`grid-xl-${String(p)}`]]}})(({ownerState:n})=>f({boxSizing:"border-box"},n.container&&{display:"flex",flexWrap:"wrap",width:"100%"},n.item&&{margin:0},n.zeroMinWidth&&{minWidth:0},n.wrap!=="wrap"&&{flexWrap:n.wrap}),y,nn,rn,Y),tn=n=>{const{classes:r,container:i,direction:e,item:t,lg:o,md:a,sm:s,spacing:g,wrap:c,xl:p,xs:l,zeroMinWidth:d}=n,$={root:["root",i&&"container",t&&"item",d&&"zeroMinWidth",...N(g,i),e!=="row"&&`direction-xs-${String(e)}`,c!=="wrap"&&`wrap-xs-${String(c)}`,l!==!1&&`grid-xs-${String(l)}`,s!==!1&&`grid-sm-${String(s)}`,a!==!1&&`grid-md-${String(a)}`,o!==!1&&`grid-lg-${String(o)}`,p!==!1&&`grid-xl-${String(p)}`]};return F($,H,r)},sn=S.exports.forwardRef(function(r,i){const e=L({props:r,name:"MuiGrid"}),t=A(e),{className:o,columns:a,columnSpacing:s,component:g="div",container:c=!1,direction:p="row",item:l=!1,lg:d=!1,md:$=!1,rowSpacing:M,sm:k=!1,spacing:v=0,wrap:z="wrap",xl:P=!1,xs:R=!1,zeroMinWidth:B=!1}=t,I=E(t,X),V=M||v,_=s||v,j=S.exports.useContext(C),G=c?a||12:j,W=f({},t,{columns:G,container:c,direction:p,item:l,lg:d,md:$,sm:k,rowSpacing:V,columnSpacing:_,wrap:z,xl:P,xs:R,zeroMinWidth:B}),D=tn(W);return b(C.Provider,{value:G,children:b(en,f({ownerState:W,className:Z(D.root,o),as:g,ref:i},I))})});var an=sn;export{an as G};
|
||||
@@ -1 +0,0 @@
|
||||
var j=Object.defineProperty,m=Object.defineProperties;var p=Object.getOwnPropertyDescriptors;var t=Object.getOwnPropertySymbols;var n=Object.prototype.hasOwnProperty,c=Object.prototype.propertyIsEnumerable;var i=(a,e,r)=>e in a?j(a,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):a[e]=r,x=(a,e)=>{for(var r in e||(e={}))n.call(e,r)&&i(a,r,e[r]);if(t)for(var r of t(e))c.call(e,r)&&i(a,r,e[r]);return a},d=(a,e)=>m(a,p(e));var h=(a,e)=>{var r={};for(var s in a)n.call(a,s)&&e.indexOf(s)<0&&(r[s]=a[s]);if(a!=null&&t)for(var s of t(a))e.indexOf(s)<0&&c.call(a,s)&&(r[s]=a[s]);return r};import{r as P,j as l,Q as $,W as k,e as f,O as v}from"./index.de6e8fe5.js";const w=P.exports.forwardRef((B,g)=>{var o=B,{children:a,title:e="",meta:r}=o,s=h(o,["children","title","meta"]);return l($,{children:[l(k,{children:[f("title",{children:`${e} | LinkSehat`}),r]}),f(v,d(x({ref:g},s),{children:a}))]})});var O=w;export{O as P};
|
||||
@@ -1 +0,0 @@
|
||||
[data-simplebar]{position:relative;flex-direction:column;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.simplebar-wrapper{overflow:hidden;width:inherit;height:inherit;max-width:inherit;max-height:inherit}.simplebar-mask{direction:inherit;position:absolute;overflow:hidden;padding:0;margin:0;left:0;top:0;bottom:0;right:0;width:auto!important;height:auto!important;z-index:0}.simplebar-offset{direction:inherit!important;box-sizing:inherit!important;resize:none!important;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:auto;max-width:100%;max-height:100%;scrollbar-width:none;-ms-overflow-style:none}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{width:0;height:0}.simplebar-content:before,.simplebar-content:after{content:" ";display:table}.simplebar-placeholder{max-height:100%;max-width:100%;width:100%;pointer-events:none}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;height:100%;width:100%;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;flex-grow:inherit;flex-shrink:0;flex-basis:0}.simplebar-height-auto-observer{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:1000%;width:1000%;min-height:1px;min-width:1px;overflow:hidden;pointer-events:none;z-index:-1}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;pointer-events:none;overflow:hidden}[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;user-select:none;-webkit-user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{position:absolute;left:0;right:0;min-height:10px}.simplebar-scrollbar:before{position:absolute;content:"";background:black;border-radius:7px;left:2px;right:2px;opacity:0;transition:opacity .2s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;transition:opacity 0s linear}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{top:2px;bottom:2px}.simplebar-track.simplebar-horizontal{left:0;height:11px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar:before{height:100%;left:2px;right:2px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{right:auto;left:0;top:2px;height:7px;min-height:0;min-width:10px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{right:auto;left:0}.hs-dummy-scrollbar-size{direction:rtl;position:fixed;opacity:0;visibility:hidden;height:500px;width:500px;overflow-y:hidden;overflow-x:scroll}.simplebar-hide-scrollbar{position:fixed;left:0;visibility:hidden;overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}.lazy-load-image-background.blur{filter:blur(15px)}.lazy-load-image-background.blur.lazy-load-image-loaded{filter:blur(0);transition:filter .3s}.lazy-load-image-background.blur>img{opacity:0}.lazy-load-image-background.blur.lazy-load-image-loaded>img{opacity:1;transition:opacity .3s}.lazy-load-image-background.opacity{opacity:0}.lazy-load-image-background.opacity.lazy-load-image-loaded{opacity:1;transition:opacity .3s}.lazy-load-image-background.black-and-white{filter:grayscale(1)}.lazy-load-image-background.black-and-white.lazy-load-image-loaded{filter:grayscale(0);transition:filter .3s}.lazy-load-image-background.black-and-white>img{opacity:0}.lazy-load-image-background.black-and-white.lazy-load-image-loaded>img{opacity:1;transition:opacity .3s}
|
||||
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 573 B |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 15 KiB |
@@ -1,18 +0,0 @@
|
||||
@font-face {
|
||||
font-family: 'CircularStd';
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
src: local('CircularStd'), url('CircularStd-Book.otf') format('opentype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'CircularStd';
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
src: local('CircularStd'), url('CircularStd-Medium.otf') format('opentype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'CircularStd';
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
src: local('CircularStd'), url('CircularStd-Bold.otf') format('opentype');
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m20.247634 1c1.0125221 0 1.8333334.82081129 1.8333334 1.83333333s-.8208113 1.83333334-1.8333334 1.83333334c-.3158442 0-.6130339-.07986936-.8724738-.22051281l-3.0249251 3.47961717c.1346337.25513483.2108509.5458717.2108509.85441003 0 1.01252204-.8208113 1.83333334-1.8333334 1.83333334-.9820883 0-1.7838173-.7722101-1.8311257-1.74256896l-2.2033918-.75849737c-.336256.40778098-.84535009.66773299-1.41515923.66773299-.32712483 0-.63423886-.08567643-.90012689-.2358141l-2.87560465 2.41277624c.05416355.1730906.08335496.3572185.08335496.5481644 0 1.012522-.8208113 1.8333333-1.83333334 1.8333333s-1.83333333-.8208113-1.83333333-1.8333333c0-1.0125221.82081129-1.83333335 1.83333333-1.83333335.33090488 0 .64133381.08766791.90932763.24104456l2.86960725-2.40787374c-.05621505-.1760311-.0865583-.3636207-.0865583-.55829735 0-1.01252204.8208113-1.83333333 1.83333334-1.83333333.97577423 0 1.77350093.76231258 1.83011983 1.7238777l2.2160025.76325559c.336304-.39976002.8402621-.65379996 1.4035544-.65379996.2130474 0 .4176071.03634016.6078186.10315996l3.1693503-3.64581344c-.0588143-.17965899-.0906208-.37154554-.0906208-.57086091 0-1.01252204.8208113-1.83333333 1.8333333-1.83333333z" opacity=".48"/><path d="m21.1666667 9.60855714c.506261 0 .9166666.41040566.9166666.91666666v10.7540685c0 .2761423-.2238576.5-.5.5h-2.6666666c-.2761424 0-.5-.2238577-.5-.5v-10.7540685c0-.506261.4104056-.91666666.9166666-.91666666zm-5.5 6.42549146c.506261 0 .9166666.4104057.9166666.9166667v4.328577c0 .2761423-.2238576.5-.5.5h-2.6666666c-.2761424 0-.5-.2238577-.5-.5v-4.328577c0-.506261.4104056-.9166667.9166666-.9166667zm-5.5-1.8405511c.506261 0 .9166666.4104057.9166666.9166667v6.1691281c0 .2761423-.2238576.5-.5.5h-2.66666663c-.27614238 0-.5-.2238577-.5-.5v-6.1691281c0-.506261.41040564-.9166667.91666666-.9166667zm-5.50000003 4.7135227c.50626102 0 .91666666.4104057.91666666.9166667v1.4556054c0 .2761423-.22385762.5-.5.5h-2.66666666c-.27614238 0-.5-.2238577-.5-.5v-1.4556054c0-.506261.41040564-.9166667.91666666-.9166667z"/></svg>
|
||||
|
Before Width: | Height: | Size: 2.0 KiB |
@@ -1,5 +0,0 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M21.5367 20.5812H2.45436C1.92714 20.5812 1.5 21.0083 1.5 21.536C1.5 22.0628 1.92714 22.4899 2.45436 22.4899H21.5362C22.0635 22.4899 22.4906 22.0628 22.4906 21.536C22.4902 21.0083 22.063 20.5812 21.5367 20.5812Z" fill="#637381"/>
|
||||
<path d="M3.64772 18.1001C3.1205 18.1001 2.69336 18.5273 2.69336 19.0545C2.69336 19.5817 3.1205 20.0093 3.64772 20.0093H20.3446C20.8718 20.0093 21.2989 19.5817 21.2989 19.0545C21.2989 18.5273 20.8718 18.1001 20.3446 18.1001H20.1064V9.51266H20.3446C20.6086 9.51266 20.8213 9.29909 20.8213 9.03592C20.8213 8.77276 20.6077 8.55919 20.3446 8.55919H3.64772C3.38411 8.55919 3.17099 8.77276 3.17099 9.03592C3.17099 9.29909 3.38456 9.51266 3.64772 9.51266H3.88631V18.0997H3.64772V18.1001ZM18.1977 9.51266V18.0997H15.3355V9.51266H18.1977ZM13.4268 9.51266V18.0997H10.5646V9.51266H13.4268ZM5.79414 9.51266H8.65633V18.0997H5.79414V9.51266Z" fill="#637381"/>
|
||||
<path opacity="0.48" d="M2.45438 7.70134H21.5363C21.5394 7.70134 21.543 7.70134 21.5456 7.70134C22.0733 7.70134 22.5 7.2742 22.5 6.74698C22.5 6.32788 22.2301 5.97268 21.8553 5.844L12.3876 1.58377C12.1387 1.47208 11.8541 1.47208 11.6048 1.58377L2.06298 5.87706C1.65238 6.06204 1.42674 6.50794 1.52146 6.94759C1.61574 7.38724 2.00445 7.70134 2.45438 7.70134Z" fill="#637381"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1 +0,0 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m14.984127 0c2.7619047 0 5.015873 2.25396825 5.015873 5.01587302v9.96825398c0 2.7619047-2.2539683 5.015873-5.015873 5.015873h-9.984127c-2.74603175 0-5-2.2539683-5-5v-9.98412698c0-2.76190477 2.25396825-5.01587302 5-5.01587302zm-4.5079365 3.80952381h-2.76190479c-2.17460317 0-3.9047619 1.73015873-3.9047619 3.88888889v4.6031746c0 2.1587302 1.73015873 3.8888889 3.9047619 3.8888889h4.53968259c2.1746031 0 3.9523809-1.7460318 3.9682539-3.9047619v-3.15873017l-.031746-.15873016-.1111111-.22222222-.1746032-.14285715c-.2380952-.17460317-1.3968254.01587302-1.7142857-.26984127-.2222222-.2063492-.2539683-.57142857-.3174603-1.06349206-.1111111-.96825397-.2063492-1.01587302-.3492064-1.33333333-.5396825-1.15873016-2.031746-2.12698413-3.047619-2.12698413zm1.7460317 7.61904759c.4126984 0 .7460318.3809524.7460318.7936508s-.3333334.7936508-.7460318.7936508h-4.46031744c-.42857143 0-.76190476-.3809524-.76190476-.7936508s.34920635-.7936508.76190476-.7936508zm-2.26984125-4.44444442c.42857145 0 .76190475.30158731.76190475.71428572s-.3492063.71428571-.76190475.71428571h-2.19047619c-.41269841 0-.76190476-.3015873-.76190476-.71428571s.34920635-.71428572.76190476-.71428572z" transform="translate(2 2)"/></svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1 +0,0 @@
|
||||
<svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g fill="#637381"><path d="m16.8125 2.83333h-1.1459v-.91667c0-.50599-.4097-.91666-.9166-.91666s-.9167.41067-.9167.91666v.91667h-7.33331v-.91667c0-.50599-.40975-.91666-.91667-.91666-.50691 0-.91666.41067-.91666.91666v.91667h-1.14583c-1.39058 0-2.52083 1.13025-2.52083 2.52083v10.31244c0 1.5162 1.23383 2.75 2.74999 2.75h4.58333c.50691 0 .91666-.4106.91666-.9166s-.40975-.9167-.91666-.9167h-4.58333c-.50599 0-.91666-.4116-.91666-.9167v-7.33328h14.66667c0 .506.4097.91666.9166.91666s.9167-.41066.9167-.91666v-2.97916c0-1.39058-1.1302-2.52083-2.5208-2.52083z"/><path d="m17.0413 11.0834c-3.2853 0-5.9583 2.673-5.9583 5.9583s2.673 5.9583 5.9583 5.9583 5.9583-2.673 5.9583-5.9583-2.673-5.9583-5.9583-5.9583zm2.7555 4.9545-2.9791 3.4375c-.1669.1925-.4061.3062-.66.3163-.011 0-.022 0-.033 0-.243 0-.4758-.0963-.6481-.2686l-1.6042-1.6042c-.3584-.3584-.3584-.9377 0-1.2961.3584-.3585.9378-.3585 1.2962 0l.9084.9084 2.3338-2.6932c.3318-.3831.9112-.4226 1.2934-.0926.3823.331.4235.9103.0926 1.2925z" opacity=".48"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
@@ -1 +0,0 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1.5 1.5)"><path d="m18.9 3.15h-16.8c-1.15931815.00115758-2.09884242.94068185-2.1 2.1v12.95c.00115758 1.1593181.94068185 2.0988424 2.1 2.1h16.8c1.1593181-.0011576 2.0988424-.9406819 2.1-2.1v-12.95c-.0011576-1.15931815-.9406819-2.09884242-2.1-2.1zm0 16.45h-16.8c-.77319865 0-1.4-.6268014-1.4-1.4v-10.5h19.6v10.5c0 .7731986-.6268014 1.4-1.4 1.4zm-2.45-17.15v-1.75c0-.38659932-.3134007-.7-.7-.7s-.7.31340068-.7.7v1.75zm-10.5 0v-1.75c0-.38659932-.31340068-.7-.7-.7s-.7.31340068-.7.7v1.75z"/><path d="m5.99840724 14.441644c.55228475 0 1 .4477153 1 1v1.6c0 .5522848-.44771525 1-1 1h-2.2c-.55228475 0-1-.4477152-1-1v-1.6c0-.5522847.44771525-1 1-1zm5.60159276 0c.5522847 0 1 .4477153 1 1v1.6c0 .5522848-.4477153 1-1 1h-2.2c-.55228475 0-1-.4477152-1-1v-1.6c0-.5522847.44771525-1 1-1zm-5.60159276-5.0001284c.55228475 0 1 .44771525 1 1v1.6c0 .5522848-.44771525 1-1 1h-2.2c-.55228475 0-1-.4477152-1-1v-1.6c0-.55228475.44771525-1 1-1zm5.60159276 0c.5522847 0 1 .44771525 1 1v1.6c0 .5522848-.4477153 1-1 1h-2.2c-.55228475 0-1-.4477152-1-1v-1.6c0-.55228475.44771525-1 1-1zm5.6015928 0c.5522847 0 1 .44771525 1 1v1.6c0 .5522848-.4477153 1-1 1h-2.2c-.5522848 0-1-.4477152-1-1v-1.6c0-.55228475.4477152-1 1-1z" opacity=".48"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1 +0,0 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g transform="translate(2 2)"><path d="m9.58985382 1.32162476c1.66180188 0 3.06430158 1.12239456 3.49720258 2.64777104h-6.99440518c.432901-1.52537648 1.83540001-2.64777104 3.4972026-2.64777104zm4.62891648-1.32162476c.9093636 0 1.6555835.7429914 1.6555835 1.65235392 0 .90937489-.7462199 1.6529999-1.6555835 1.6529999-.909364 0-1.6529999-.74362501-1.6529999-1.6529999 0-.90936252.7436359-1.65235392 1.6529999-1.65235392z" opacity=".48"/><path d="m7.60483293 15.8737079c.90936397 0 1.6529999.7436373 1.6529999 1.6529999 0 .9093749-.74362997 1.6549376-1.6529999 1.6549376s-1.65235399-.7455627-1.65235399-1.6549376c0-.9093626.74299001-1.6529999 1.65235399-1.6529999zm6.61393737 0c.9093636 0 1.6555835.7436373 1.6555835 1.6529999 0 .9093749-.7462136 1.6549376-1.6555835 1.6549376-.90937 0-1.6529999-.7455627-1.6529999-1.6549376 0-.9093626.7436349-1.6529999 1.6529999-1.6529999zm-10.58074958-13.22722875c.47021948.00126272.87961059.33725114.97151692.79840103l.23706567 1.18597394h13.34220869c.6357812 0 1.1062464.60903974.9644116 1.2234396l-1.9850212 8.59895818c-.1036535.4490251-.5105252.7589977-.9644112.7589977h-10.58333325c-.47083827 0-.88484536-.3341221-.97216282-.8009847l-1.82805386-9.78234852h-1.82869973c-.30322176 0-.57131938-.12557224-.74220274-.31781022-.17088343-.19224988-.2493388-.43483146-.2493388-.67373135 0-.2388999.07845541-.48148147.2493388-.67373136.17088336-.19223764.43898098-.3171643.74220274-.3171643z"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1 +0,0 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g transform="translate(.5 2.5)"><path d="m8.3418125.28845833c-4.72554167 0-8.3418125 3.20658334-8.3418125 6.70210417 0 3.4955208 3.12225 5.5209583 3.12225 5.5209583l-.5074375 1.923375c-.06708333.2534792.20460417.462875.4326875.3335l2.28083333-1.2923125c1.00864584.3210417 3.14908334.4235834 3.35752084.4331667-.1495-.5184583-.22329167-1.02925-.22329167-1.5060208 0-2.69770837 2.348875-6.49750003 7.5703542-6.49750003.1188333 0 .2376666.002875.3565.00766666-.6947917-3.32541666-4.1476667-5.6249375-8.0476042-5.6249375z"/><path d="m23 11.9810833c0-3.06187497-3.5923125-5.3038958-6.9675625-5.3038958-4.7734583 0-6.79889583 3.4476042-6.79889583 5.7260417 0 2.2832291 2.02495833 5.7260416 6.79889583 5.7260416 1.0560833 0 1.9851875-.1514166 2.7930625-.41975l1.7954375 1.1394584c.1418333.0900833.3210417-.0368959.2831875-.2007709l-.4072917-1.768125c1.69625-1.181625 2.5031667-3.0441458 2.5031667-4.899z" opacity=".48"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1007 B |
@@ -1 +0,0 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g transform="translate(2 4)"><path d="m18.38 4.57-1.23 1.85c1.2049 2.40314304 1.1222508 5.2507848-.22 7.58h-13.86c-1.76350331-3.059309-1.31261601-6.91298595 1.10947843-9.48257235s6.24242627-3.24722187 9.40052157-1.66742765l1.85-1.23c-3.8761922-2.48556317-8.94860517-2.00294347-12.28650726 1.16901179-3.3379021 3.17195526-4.07833512 8.21319061-1.79349274 12.21098821.35510459.6150891 1.00977788.9957131 1.72 1.0000158h13.85c.7173695.0028322 1.3813181-.3787474 1.74-1.0000158 1.8786438-3.25433 1.7743473-7.28712667-.27-10.44z"/><path d="m8.59 11.41c.37513651.3755541.8841815.5865733 1.415.5865733s1.0398635-.2110192 1.415-.5865733l5.66-8.49-8.49 5.66c-.37555409.37513651-.58657331.8841815-.58657331 1.415s.21101922 1.0398635.58657331 1.415z" opacity=".48"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 849 B |
@@ -1 +0,0 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m7.94101676 5.6427832v2.74464258c0 .33989649.27513281.6150293.6150293.6150293.30862393 0 .56440212-.22738249.60835663-.52409402l.00667266-.09093528v-2.74464258h5.65814645v2.74464258c0 .33989649.275543.6150293.6150293.6150293.3089968 0 .5644699-.22738249.6083659-.52409402l.0066634-.09093528v-2.74464258h1.8524297c.7157099 0 1.3265895.52397061 1.44811 1.21681899l.0176654.14071617.9376992 11.81697074c.0730078.9483222-.2554043 1.8905332-.900334 2.5867324-.5953575.6426454-1.4202201 1.03272-2.2901578 1.0889289l-.2183168.0070496h-9.81241403c-.94918359 0-1.8635039-.3997793-2.50847461-1.0959375-.59531971-.6426454-.92094397-1.4949103-.91044964-2.3668484l.00966449-.2182844.93810937-11.82025197c.0545636-.71224914.62412163-1.28073532 1.3241451-1.34901387l.14163029-.00688066zm4.09817114 3.97089698c-.2266736-.00327725-.4135824.17768425-.4169046.40501402v.7555922c-1.4912918.1060463-2.50536524 1.0273421-2.50536524 2.253508 0 1.5045398 1.27919924 1.9221212 2.50536524 2.253508v2.6511967c-.6469005-.0868303-1.2566612-.3552579-1.7564176-.7754643-.09411064-.0748948-.21077995-.1166488-.33140728-.1192943-.30554685.0212051-.54083371.2770409-.5369249.5832645-.00060704.1338754.05174957.2624598.14586021.3579034.68467596.6164053 1.56487397.9710069 2.48549307 1.0008254l.0006563.7430004c.0106025.2266735.2034791.4016467.4301527.3903879.2233717 0 .4043127-.180941.4043127-.4043128v-.7423236c1.8094305-.1192943 2.538506-1.2195419 2.538506-2.3860709 0-1.5642177-1.3122785-2.041436-2.5384649-2.3728433v-2.3330375c.4990796.0841848.9696739.2889765 1.3719974.5965126.0802063.0550021.1743169.0848411.2717499.0861536.3121708 0 .5666941-.251201.5699959-.5633719.0006562-.1338754-.0517004-.2624598-.145811-.3579035-.5812753-.4977671-1.3103508-.7913784-2.0745563-.8351217v-.7821089c0-.22337175-.180941-.40431274-.4043128-.40431274-.0046347-.00070128-.00929-.00070128-.0139248-.00070128zm.4248617 5.91949992c.7489681.2120925 1.3322121.4970904 1.3255881 1.1930252 0 .503735-.3446554 1.1002476-1.3255881 1.2195419zm-.8351218-3.7050349v2.1673339c-.7224514-.2120925-1.2858233-.430809-1.2858233-1.0472142 0-.6164053.510359-1.0604828 1.2858233-1.1201197zm.3712413-10.3281452c2.2382637 0 4.0591523 1.82125781 4.0591523 4.05952148v.08322071h-1.2300175v-.08322071c0-1.56011132-1.2689825-2.8295039-2.8290938-2.8295039s-2.82909373 1.26939258-2.82909373 2.8295039v.08322071h-1.23005859v-.08322071c0-2.23826367 1.82084765-4.05952148 4.05911132-4.05952148z"/></svg>
|
||||
|
Before Width: | Height: | Size: 2.5 KiB |
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>ic_kanban</title>
|
||||
<g id="ic_kanban" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<path d="M20,3 C21.1045695,3 22,3.8954305 22,5 L22,15 C22,16.1045695 21.1045695,17 20,17 L4,17 C2.8954305,17 2,16.1045695 2,15 L2,5 C2,3.8954305 2.8954305,3 4,3 L20,3 Z M11.5,6 L6.5,6 C5.67157288,6 5,6.67157288 5,7.5 L5,7.5 L5,9.5 C5,10.3284271 5.67157288,11 6.5,11 L6.5,11 L11.5,11 C12.3284271,11 13,10.3284271 13,9.5 L13,9.5 L13,7.5 C13,6.67157288 12.3284271,6 11.5,6 L11.5,6 Z" id="Combined-Shape" fill="#000000"></path>
|
||||
<path d="M8,21 L16,21 M12,17 L12,21" id="Combined-Shape" stroke="#000000" stroke-width="2" opacity="0.48" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 915 B |
@@ -1 +0,0 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1.5 4)"><path d="m11.0988387 10.3846452c-.1981935.1238709-.4211613.1734193-.6193548.1734193-.1981936 0-.4211613-.0495484-.61935487-.1734193l-9.86012903-6.02012907v8.00206447c0 1.7094194 1.38735484 3.0967742 3.09677419 3.0967742h14.79019351c1.7094194 0 3.0967742-1.3873548 3.0967742-3.0967742v-8.00206447z"/><path d="m17.8869677.00425806h-14.79019351c-1.46167742 0-2.70038709 1.04051613-2.99767742 2.42787097l10.40516133 6.34219355 10.3803871-6.34219355c-.2972904-1.38735484-1.536-2.42787097-2.9976775-2.42787097z" opacity=".48"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 646 B |
@@ -1 +0,0 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g transform="translate(5 3)"><path d="m7 8c2.209139 0 4-1.790861 4-4s-1.790861-4-4-4-4 1.790861-4 4 1.790861 4 4 4z" opacity=".48"/><path d="m13 18.0000001c.5522847 0 1-.4477154 1-1 0-3.8659933-3.1340068-7-7-7-3.86599321 0-7 3.1340067-7 7 0 .5522846.44771525 1 1 1z"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 362 B |
@@ -1,38 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<!-- Favicon -->
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png">
|
||||
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
||||
|
||||
<!-- Using Google Font -->
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Public+Sans:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
|
||||
<!-- Using Local Font -->
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/index.css" />
|
||||
|
||||
<title>Minimal UI Kit</title>
|
||||
<meta name="description"
|
||||
content="The starting point for your next project with Minimal UI Kit, built on the newest version of Material-UI ©, ready to be customized to your style" />
|
||||
<meta name="keywords" content="react,material,kit,application,dashboard,admin,template" />
|
||||
<meta name="author" content="Minimal UI Kit" />
|
||||
<script type="module" crossorigin src="/assets/index.de6e8fe5.js"></script>
|
||||
<link rel="stylesheet" href="/assets/index.d5e0c650.css">
|
||||
<link rel="manifest" href="/manifest.webmanifest"></head>
|
||||
|
||||
<body>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<div id="root"></div>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
Before Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
@@ -1 +0,0 @@
|
||||
<svg height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" x1="100%" x2="50%" y1="5.663%" y2="50%"><stop offset="0" stop-color="#007b55"/><stop offset="1" stop-color="#00ab55"/></linearGradient><linearGradient id="b" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0" stop-color="#5be584"/><stop offset="1" stop-color="#00ab55"/></linearGradient><g fill="none" fill-rule="evenodd" transform="translate(14 128)"><path d="m92.8065878 83.1065019c44.2888442 22.8889511 46.3079382 23.9345951 46.4006692 23.9799821.012248.008728.642121.333419 44.792743 23.152545-26.071507 48.53952-42.693165 77.265922-49.868472 86.179207-10.758587 13.369926-22.495227 23.492946-36.929824 29.333888-30.3458978 14.261953-68.070062 14.928791-97.201704-2.704011z" fill="url(#a)"/><g fill="url(#b)"><path d="m430.310491 101.726093c-46.270793-80.9559274-94.100378-157.2284394-149.043472-45.3437359-7.516227 14.3833977-12.994566 42.3366008-25.267019 42.3366008v-.1420279c-12.272453 0-17.749057-27.9532032-25.265283-42.3366009-54.94483-111.8847034-102.774415-35.6121915-149.0452076 45.3437359-3.4821132 6.105448-6.8270943 11.9321-9.6895094 16.99601 106.037811-67.1266136 97.11034 135.666494 184 137.277897v.142028c86.891396-1.611403 77.962189-204.4045106 184-137.27965-2.860679-5.062157-6.20566-10.888809-9.689509-16.994257"/><path d="m436 256c26.5088 0 48-21.4912 48-48s-21.4912-48-48-48-48 21.4912-48 48 21.4912 48 48 48"/></g></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"name": "React Material Minimal UI",
|
||||
"short_name": "Minimal-UI",
|
||||
"display": "standalone",
|
||||
"start_url": "/",
|
||||
"theme_color": "#000000",
|
||||
"background_color": "#ffffff",
|
||||
"icons": [
|
||||
{
|
||||
"src": "favicon/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "favicon/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{"name":"@minimal/material-kit-react","short_name":"@minimal/material-kit-react","start_url":"/","display":"standalone","background_color":"#ffffff","lang":"en","scope":"/"}
|
||||
@@ -1 +0,0 @@
|
||||
if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('/sw.js', { scope: '/' })})}
|
||||
@@ -1,3 +0,0 @@
|
||||
# https://www.robotstxt.org/robotstxt.html
|
||||
User-agent: *
|
||||
Disallow:
|
||||
@@ -1 +0,0 @@
|
||||
if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()})).then((()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e})));self.define=(n,r)=>{const l=e||("document"in self?document.currentScript.src:"")||location.href;if(s[l])return;let t={};const o=e=>i(e,l),u={module:{uri:l},exports:t,require:o};s[l]=Promise.all(n.map((e=>u[e]||o(e)))).then((e=>(r(...e),t)))}}define(["./workbox-4ee7f24a"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"assets/Card.f5620e98.js",revision:null},{url:"assets/Create.dc2cd4bf.js",revision:null},{url:"assets/Dashboard.7973b208.js",revision:null},{url:"assets/Grid.68f2d9bd.js",revision:null},{url:"assets/Index.79b77036.js",revision:null},{url:"assets/index.d5e0c650.css",revision:null},{url:"assets/index.de6e8fe5.js",revision:null},{url:"assets/Login.cab4e563.js",revision:null},{url:"assets/Page.080e4607.js",revision:null},{url:"assets/Page404.fbaf06f1.js",revision:null},{url:"fonts/index.css",revision:"8711e169f3dc54f34d839f18d7acef21"},{url:"index.html",revision:"068a88ddc93b0223c95f1d4f35825c4b"},{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"manifest.webmanifest",revision:"ced57fe94e88ec3187bcd0a36e2e178f"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));
|
||||