Update Member Import

This commit is contained in:
2022-07-25 10:20:35 +07:00
parent 42e4129a79
commit 1edd8157c7
71 changed files with 1917 additions and 2743 deletions

View File

@@ -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;

View File

@@ -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);

View File

@@ -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);
}
}

View File

@@ -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()

View File

@@ -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;
}
}

View File

@@ -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)

View File

@@ -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;
// }
}

View File

@@ -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();

View File

@@ -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);

View File

@@ -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"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -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" />}

View File

@@ -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';

View File

@@ -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>
);
}}
/>
);
}

View File

@@ -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>
)}
/>
);
}

View File

@@ -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}

View File

@@ -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';

View File

@@ -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>

View File

@@ -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>

View File

@@ -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',

View File

@@ -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>

View File

@@ -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 />

View 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);
}

View File

@@ -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",

View File

@@ -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>

View File

@@ -1 +0,0 @@
/* /index.html 200

View File

@@ -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};

View File

@@ -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};

File diff suppressed because one or more lines are too long

View File

@@ -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};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -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};

File diff suppressed because one or more lines are too long

View File

@@ -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}

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 573 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -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');
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 4.9 KiB

View File

@@ -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

View File

@@ -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"
}
]
}

View File

@@ -1 +0,0 @@
{"name":"@minimal/material-kit-react","short_name":"@minimal/material-kit-react","start_url":"/","display":"standalone","background_color":"#ffffff","lang":"en","scope":"/"}

View File

@@ -1 +0,0 @@
if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('/sw.js', { scope: '/' })})}

View File

@@ -1,3 +0,0 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:

View File

@@ -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} didnt 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")))}));

File diff suppressed because one or more lines are too long