@startdownnotez404/ui 1.3.5 → 1.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AutocompleteField-653233JU.mjs +203 -0
- package/dist/AutocompleteField-653233JU.mjs.map +1 -0
- package/dist/AvatarField-KFASMVZU.mjs +378 -0
- package/dist/AvatarField-KFASMVZU.mjs.map +1 -0
- package/dist/{DateField-ZYMZFHL4.mjs → DateField-CDJ6W6XF.mjs} +19 -7
- package/dist/DateField-CDJ6W6XF.mjs.map +1 -0
- package/dist/DateRangeField-ZWSFT5KV.mjs +118 -0
- package/dist/DateRangeField-ZWSFT5KV.mjs.map +1 -0
- package/dist/{DateTimeField-TPTJ7YIZ.mjs → DateTimeField-SFAF4I6A.mjs} +36 -11
- package/dist/DateTimeField-SFAF4I6A.mjs.map +1 -0
- package/dist/FileUploadField-TSNCSLXX.mjs +101 -0
- package/dist/FileUploadField-TSNCSLXX.mjs.map +1 -0
- package/dist/{JSONEditorField-TMRWGXVR.mjs → JSONEditorField-3KXC2GOG.mjs} +7 -6
- package/dist/{JSONEditorField-TMRWGXVR.mjs.map → JSONEditorField-3KXC2GOG.mjs.map} +1 -1
- package/dist/{PopperMenu-LJ36RPBW.mjs → PopperMenu-PSHLKIEZ.mjs} +26 -12
- package/dist/{PopperMenu-LJ36RPBW.mjs.map → PopperMenu-PSHLKIEZ.mjs.map} +1 -1
- package/dist/{TelField-LOGRVZ4I.mjs → TelField-FRQT2UBJ.mjs} +8 -7
- package/dist/{TelField-LOGRVZ4I.mjs.map → TelField-FRQT2UBJ.mjs.map} +1 -1
- package/dist/TimeField-XVWXBJID.mjs +94 -0
- package/dist/TimeField-XVWXBJID.mjs.map +1 -0
- package/dist/alert.d.mts +148 -18
- package/dist/alert.d.ts +148 -18
- package/dist/alert.js +698 -254
- package/dist/alert.js.map +1 -1
- package/dist/alert.mjs +46 -10
- package/dist/autocomplete.d.mts +438 -4
- package/dist/autocomplete.d.ts +438 -4
- package/dist/autocomplete.js +632 -21
- package/dist/autocomplete.js.map +1 -1
- package/dist/autocomplete.mjs +26 -7
- package/dist/avatar.js +2 -1
- package/dist/avatar.js.map +1 -1
- package/dist/avatar.mjs +12 -11
- package/dist/box.mjs +2 -1
- package/dist/button.mjs +3 -2
- package/dist/chart.mjs +3 -2
- package/dist/checkbox.mjs +3 -2
- package/dist/chunk-2FK24ZPJ.mjs +78 -0
- package/dist/chunk-2FK24ZPJ.mjs.map +1 -0
- package/dist/{chunk-V26V2S3W.mjs → chunk-3O3N6X6D.mjs} +3 -3
- package/dist/{chunk-Y74ALKBL.mjs → chunk-4MSPA7U7.mjs} +11 -9
- package/dist/{chunk-Y74ALKBL.mjs.map → chunk-4MSPA7U7.mjs.map} +1 -1
- package/dist/{chunk-24XDGNJ6.mjs → chunk-4P45Z5LR.mjs} +63 -41
- package/dist/chunk-4P45Z5LR.mjs.map +1 -0
- package/dist/chunk-4SSJY32J.mjs +1182 -0
- package/dist/chunk-4SSJY32J.mjs.map +1 -0
- package/dist/{chunk-XJ2SXC2Q.mjs → chunk-6B6I27TT.mjs} +18 -16
- package/dist/{chunk-XJ2SXC2Q.mjs.map → chunk-6B6I27TT.mjs.map} +1 -1
- package/dist/chunk-6JKMEH2L.mjs +205 -0
- package/dist/chunk-6JKMEH2L.mjs.map +1 -0
- package/dist/{chunk-IN3O4R7Q.mjs → chunk-7O526A2D.mjs} +6 -4
- package/dist/{chunk-IN3O4R7Q.mjs.map → chunk-7O526A2D.mjs.map} +1 -1
- package/dist/chunk-AFLEG5ZC.mjs +28 -0
- package/dist/chunk-AFLEG5ZC.mjs.map +1 -0
- package/dist/{chunk-UGMRJMFZ.mjs → chunk-BO5CU4ZM.mjs} +4 -4
- package/dist/{chunk-JIU5GVM7.mjs → chunk-D4XPNSSI.mjs} +5 -3
- package/dist/{chunk-JIU5GVM7.mjs.map → chunk-D4XPNSSI.mjs.map} +1 -1
- package/dist/chunk-DPIMA5IO.mjs +72 -0
- package/dist/chunk-DPIMA5IO.mjs.map +1 -0
- package/dist/chunk-F2CGFVIZ.mjs +83 -0
- package/dist/chunk-F2CGFVIZ.mjs.map +1 -0
- package/dist/{chunk-R5MKQN6D.mjs → chunk-FBLSJQWK.mjs} +3 -3
- package/dist/{chunk-BGB7JHIU.mjs → chunk-FMGZCOJC.mjs} +5 -3
- package/dist/{chunk-BGB7JHIU.mjs.map → chunk-FMGZCOJC.mjs.map} +1 -1
- package/dist/{chunk-UTVSYS6S.mjs → chunk-FNSIQ2B7.mjs} +18 -6
- package/dist/chunk-FNSIQ2B7.mjs.map +1 -0
- package/dist/{chunk-JWANK42G.mjs → chunk-FUZ2JNTZ.mjs} +3 -3
- package/dist/{chunk-CRYIEYZZ.mjs → chunk-HAJWE62X.mjs} +66 -42
- package/dist/chunk-HAJWE62X.mjs.map +1 -0
- package/dist/{chunk-CWFWRZWU.mjs → chunk-KSN33A6I.mjs} +3 -2
- package/dist/{chunk-CWFWRZWU.mjs.map → chunk-KSN33A6I.mjs.map} +1 -1
- package/dist/chunk-KYTHGFFY.mjs +866 -0
- package/dist/chunk-KYTHGFFY.mjs.map +1 -0
- package/dist/{chunk-QKGCW37O.mjs → chunk-LDFM46LV.mjs} +5 -3
- package/dist/{chunk-QKGCW37O.mjs.map → chunk-LDFM46LV.mjs.map} +1 -1
- package/dist/chunk-LQNDBPHU.mjs +142 -0
- package/dist/chunk-LQNDBPHU.mjs.map +1 -0
- package/dist/{chunk-E3I2VDHZ.mjs → chunk-M2PYXSAF.mjs} +6 -4
- package/dist/{chunk-E3I2VDHZ.mjs.map → chunk-M2PYXSAF.mjs.map} +1 -1
- package/dist/{chunk-DELCADNF.mjs → chunk-ODVKRIVN.mjs} +30 -30
- package/dist/{chunk-HR3A4H4E.mjs → chunk-PEJL2T2K.mjs} +13 -11
- package/dist/{chunk-HR3A4H4E.mjs.map → chunk-PEJL2T2K.mjs.map} +1 -1
- package/dist/{chunk-OGNGPI3M.mjs → chunk-PL55YKT4.mjs} +2 -2
- package/dist/{chunk-S6EZVRZC.mjs → chunk-PNSJC6PC.mjs} +5 -28
- package/dist/chunk-PNSJC6PC.mjs.map +1 -0
- package/dist/{chunk-TDRA5EZI.mjs → chunk-PUREEN2J.mjs} +7 -7
- package/dist/chunk-QFS5CENY.mjs +659 -0
- package/dist/chunk-QFS5CENY.mjs.map +1 -0
- package/dist/chunk-RSN7NH2J.mjs +250 -0
- package/dist/chunk-RSN7NH2J.mjs.map +1 -0
- package/dist/{chunk-UDREPVEY.mjs → chunk-RVSMEZE3.mjs} +12 -78
- package/dist/chunk-RVSMEZE3.mjs.map +1 -0
- package/dist/{chunk-SRWPHN2N.mjs → chunk-S64IYJ6Y.mjs} +2 -2
- package/dist/{chunk-ZG3NQI77.mjs → chunk-SMD7OEUW.mjs} +6 -4
- package/dist/{chunk-ZG3NQI77.mjs.map → chunk-SMD7OEUW.mjs.map} +1 -1
- package/dist/{chunk-NJYNJLT7.mjs → chunk-SWFB3A3G.mjs} +2 -2
- package/dist/{chunk-RXBQ7KXF.mjs → chunk-USXGNKWJ.mjs} +98 -44
- package/dist/chunk-USXGNKWJ.mjs.map +1 -0
- package/dist/{chunk-OJV6V7YZ.mjs → chunk-VL7V52YD.mjs} +27 -20
- package/dist/chunk-VL7V52YD.mjs.map +1 -0
- package/dist/{chunk-2ZZJTBTE.mjs → chunk-WJZ3IYET.mjs} +2 -2
- package/dist/chunk-XAJAMVAG.mjs +1720 -0
- package/dist/chunk-XAJAMVAG.mjs.map +1 -0
- package/dist/chunk-YIJ5QVJ6.mjs +277 -0
- package/dist/chunk-YIJ5QVJ6.mjs.map +1 -0
- package/dist/{chunk-T6AMRENK.mjs → chunk-YRW5NKD7.mjs} +148 -112
- package/dist/chunk-YRW5NKD7.mjs.map +1 -0
- package/dist/chunk-ZMJKG2UI.mjs +71 -0
- package/dist/chunk-ZMJKG2UI.mjs.map +1 -0
- package/dist/confirm.d.mts +48 -0
- package/dist/confirm.d.ts +48 -0
- package/dist/confirm.js +334 -0
- package/dist/confirm.js.map +1 -0
- package/dist/confirm.mjs +20 -0
- package/dist/datePicker.d.mts +256 -14
- package/dist/datePicker.d.ts +256 -14
- package/dist/datePicker.js +1624 -145
- package/dist/datePicker.js.map +1 -1
- package/dist/datePicker.mjs +19 -6
- package/dist/dialog.d.mts +166 -0
- package/dist/dialog.d.ts +166 -0
- package/dist/dialog.js +362 -0
- package/dist/dialog.js.map +1 -0
- package/dist/dialog.mjs +45 -0
- package/dist/emptyState.d.mts +17 -0
- package/dist/emptyState.d.ts +17 -0
- package/dist/emptyState.js +253 -0
- package/dist/emptyState.js.map +1 -0
- package/dist/emptyState.mjs +12 -0
- package/dist/emptyState.mjs.map +1 -0
- package/dist/errorState.d.mts +18 -0
- package/dist/errorState.d.ts +18 -0
- package/dist/{displayFile.js → errorState.js} +107 -156
- package/dist/errorState.js.map +1 -0
- package/dist/errorState.mjs +15 -0
- package/dist/errorState.mjs.map +1 -0
- package/dist/fileUpload.d.mts +197 -0
- package/dist/fileUpload.d.ts +197 -0
- package/dist/fileUpload.js +1483 -0
- package/dist/fileUpload.js.map +1 -0
- package/dist/fileUpload.mjs +65 -0
- package/dist/fileUpload.mjs.map +1 -0
- package/dist/flowMap.mjs +7 -6
- package/dist/flowMap.mjs.map +1 -1
- package/dist/image.js +1195 -429
- package/dist/image.js.map +1 -1
- package/dist/image.mjs +8 -6
- package/dist/index.d.ts +7 -2
- package/dist/index.js +8606 -4087
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +314 -152
- package/dist/inlineError.d.mts +16 -0
- package/dist/inlineError.d.ts +16 -0
- package/dist/inlineError.js +297 -0
- package/dist/inlineError.js.map +1 -0
- package/dist/inlineError.mjs +15 -0
- package/dist/inlineError.mjs.map +1 -0
- package/dist/input.mjs +8 -7
- package/dist/jsonEditor.mjs +3 -2
- package/dist/list.mjs +7 -6
- package/dist/loading.mjs +8 -6
- package/dist/markdown.mjs +7 -6
- package/dist/markdown.mjs.map +1 -1
- package/dist/menu.mjs +9 -8
- package/dist/modal.js +2 -1
- package/dist/modal.js.map +1 -1
- package/dist/modal.mjs +7 -5
- package/dist/process.d.mts +33 -75
- package/dist/process.d.ts +33 -75
- package/dist/process.js +1275 -203
- package/dist/process.js.map +1 -1
- package/dist/process.mjs +12 -9
- package/dist/scrollToLoad.mjs +4 -3
- package/dist/select.mjs +10 -9
- package/dist/skeleton.d.mts +15 -1
- package/dist/skeleton.d.ts +15 -1
- package/dist/skeleton.js +114 -2
- package/dist/skeleton.js.map +1 -1
- package/dist/skeleton.mjs +6 -3
- package/dist/stepper.mjs +4 -3
- package/dist/tab.mjs +10 -9
- package/dist/table.d.mts +269 -85
- package/dist/table.d.ts +269 -85
- package/dist/table.js +5102 -3153
- package/dist/table.js.map +1 -1
- package/dist/table.mjs +21 -19
- package/dist/theme.js +1766 -432
- package/dist/theme.js.map +1 -1
- package/dist/theme.mjs +32 -25
- package/dist/timeline.mjs +4 -3
- package/dist/toast.d.mts +49 -0
- package/dist/toast.d.ts +49 -0
- package/dist/toast.js +175 -0
- package/dist/toast.js.map +1 -0
- package/dist/toast.mjs +9 -0
- package/dist/toast.mjs.map +1 -0
- package/dist/toggleButtonGroup.mjs +3 -2
- package/dist/useForm.d.mts +270 -86
- package/dist/useForm.d.ts +270 -86
- package/dist/useForm.js +4672 -2727
- package/dist/useForm.js.map +1 -1
- package/dist/useForm.mjs +18 -16
- package/dist/useSearch.mjs +13 -12
- package/dist/variablesRenderer.mjs +8 -7
- package/package.json +3 -3
- package/dist/AutocompleteField-ZKNU2IRR.mjs +0 -181
- package/dist/AutocompleteField-ZKNU2IRR.mjs.map +0 -1
- package/dist/AvatarField-SAODT3CZ.mjs +0 -275
- package/dist/AvatarField-SAODT3CZ.mjs.map +0 -1
- package/dist/DateField-ZYMZFHL4.mjs.map +0 -1
- package/dist/DateTimeField-TPTJ7YIZ.mjs.map +0 -1
- package/dist/FileUploadField-NTMWBJER.mjs +0 -78
- package/dist/FileUploadField-NTMWBJER.mjs.map +0 -1
- package/dist/chunk-24XDGNJ6.mjs.map +0 -1
- package/dist/chunk-27KYFU7R.mjs +0 -30
- package/dist/chunk-27KYFU7R.mjs.map +0 -1
- package/dist/chunk-AAH2O24U.mjs +0 -325
- package/dist/chunk-AAH2O24U.mjs.map +0 -1
- package/dist/chunk-CRYIEYZZ.mjs.map +0 -1
- package/dist/chunk-EEH7HACG.mjs +0 -249
- package/dist/chunk-EEH7HACG.mjs.map +0 -1
- package/dist/chunk-EKPULYPU.mjs +0 -497
- package/dist/chunk-EKPULYPU.mjs.map +0 -1
- package/dist/chunk-OJV6V7YZ.mjs.map +0 -1
- package/dist/chunk-RXBQ7KXF.mjs.map +0 -1
- package/dist/chunk-S6EZVRZC.mjs.map +0 -1
- package/dist/chunk-SGCUDWO3.mjs +0 -396
- package/dist/chunk-SGCUDWO3.mjs.map +0 -1
- package/dist/chunk-T6AMRENK.mjs.map +0 -1
- package/dist/chunk-UDREPVEY.mjs.map +0 -1
- package/dist/chunk-UTVSYS6S.mjs.map +0 -1
- package/dist/chunk-XIMFP6RB.mjs +0 -161
- package/dist/chunk-XIMFP6RB.mjs.map +0 -1
- package/dist/displayFile.d.mts +0 -95
- package/dist/displayFile.d.ts +0 -95
- package/dist/displayFile.js.map +0 -1
- package/dist/displayFile.mjs +0 -19
- package/dist/fileUploader.d.mts +0 -86
- package/dist/fileUploader.d.ts +0 -86
- package/dist/fileUploader.js +0 -722
- package/dist/fileUploader.js.map +0 -1
- package/dist/fileUploader.mjs +0 -16
- /package/dist/{chunk-V26V2S3W.mjs.map → chunk-3O3N6X6D.mjs.map} +0 -0
- /package/dist/{chunk-UGMRJMFZ.mjs.map → chunk-BO5CU4ZM.mjs.map} +0 -0
- /package/dist/{chunk-R5MKQN6D.mjs.map → chunk-FBLSJQWK.mjs.map} +0 -0
- /package/dist/{chunk-JWANK42G.mjs.map → chunk-FUZ2JNTZ.mjs.map} +0 -0
- /package/dist/{chunk-DELCADNF.mjs.map → chunk-ODVKRIVN.mjs.map} +0 -0
- /package/dist/{chunk-OGNGPI3M.mjs.map → chunk-PL55YKT4.mjs.map} +0 -0
- /package/dist/{chunk-TDRA5EZI.mjs.map → chunk-PUREEN2J.mjs.map} +0 -0
- /package/dist/{chunk-SRWPHN2N.mjs.map → chunk-S64IYJ6Y.mjs.map} +0 -0
- /package/dist/{chunk-NJYNJLT7.mjs.map → chunk-SWFB3A3G.mjs.map} +0 -0
- /package/dist/{chunk-2ZZJTBTE.mjs.map → chunk-WJZ3IYET.mjs.map} +0 -0
- /package/dist/{displayFile.mjs.map → confirm.mjs.map} +0 -0
- /package/dist/{fileUploader.mjs.map → dialog.mjs.map} +0 -0
package/dist/datePicker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/elemental/DatePicker/index.ts","../src/components/elemental/DatePicker/src/MuiXDatePicker.tsx","../src/components/elemental/DatePicker/src/_shared.tsx","../src/components/Icons/MuiIcon/index.ts","../src/components/elemental/Box/src/index.ts","../src/components/elemental/Button/src/IconButton/IconButton.tsx","../src/components/elemental/Tooltip/src/Tooltip/index.ts","../src/components/elemental/DatePicker/src/MuiXDateTimePicker.tsx","../src/components/elemental/DatePicker/src/theme.ts"],"sourcesContent":["export * from './src'\n","import React from 'react'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport { DatePicker as MUIDatePicker } from '@mui/x-date-pickers/DatePicker'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\n\nimport { MyPickersTextField, MyActionBar } from './_shared'\n\nexport const MuiXDatePicker: React.FC<React.ComponentProps<typeof MUIDatePicker>> = (props) => {\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <MUIDatePicker \n showDaysOutsideCurrentMonth\n \n {...props} \n slotProps={{\n actionBar: {\n actions: ['clear', 'today', 'cancel', 'accept'],\n },\n ...(props.slotProps || {}),\n }}\n slots={{\n actionBar: MyActionBar,\n textField: MyPickersTextField,\n ...(props.slots || {}),\n }}\n />\n </LocalizationProvider>\n )\n}\n\nexport default MuiXDatePicker","import React from 'react'\nimport {\n PickersTextField,\n PickersTextFieldProps,\n} from '@mui/x-date-pickers/PickersTextField'\nimport { PickersActionBarProps } from '@mui/x-date-pickers/PickersActionBar'\nimport { usePickerContext } from '@mui/x-date-pickers/hooks'\nimport { styled } from '@mui/material/styles'\nimport DialogActions from '@mui/material/DialogActions'\nimport {\n CheckIcon,\n TodayIcon,\n ClearIcon,\n NavigateNextIcon as NextIcon,\n DeleteForeverIcon,\n} from '@/icons/MuiIcon'\n\nimport { IconButton } from '@/ele/Button'\n\nexport const MyPickersTextField = React.forwardRef(\n (props: PickersTextFieldProps, ref: React.Ref<HTMLDivElement>) => (\n <PickersTextField size=\"small\" {...props} ref={ref} />\n ),\n)\n\n/**\n * Reference: https://github.com/mui/mui-x/blob/v8.26.0/packages/x-date-pickers/src/PickersActionBar/PickersActionBar.tsx\n */\nexport const PickersActionBarRoot = styled(DialogActions, {\n name: 'MuiPickersLayout',\n slot: 'ActionBar',\n})({})\n\nexport const MyActionBar: React.FC<PickersActionBarProps> = (props) => {\n const { actions, ...other } = props\n const {\n clearValue,\n setValueToToday,\n acceptValueChanges,\n cancelValueChanges,\n goToNextStep,\n hasNextStep,\n } = usePickerContext()\n\n if (actions == null || actions.length === 0) {\n return null\n }\n\n const buttons = actions.map((actionType) => {\n switch (actionType) {\n case 'clear':\n return (\n <IconButton data-testid=\"clear-action-button\" onClick={clearValue} key={actionType} title=\"clear\">\n <DeleteForeverIcon fontSize=\"small\" />\n </IconButton>\n )\n case 'cancel':\n return (\n <IconButton onClick={cancelValueChanges} key={actionType} title=\"cancel\">\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n )\n case 'accept':\n return (\n <IconButton onClick={acceptValueChanges} key={actionType} title=\"accept\">\n <CheckIcon fontSize=\"small\" />\n </IconButton>\n )\n case 'today':\n return (\n <IconButton data-testid=\"today-action-button\" onClick={setValueToToday} key={actionType} title=\"today\">\n <TodayIcon fontSize=\"small\" />\n </IconButton>\n )\n case 'next':\n return (\n <IconButton onClick={goToNextStep} key={actionType} title=\"next\">\n <NextIcon fontSize=\"small\" />\n </IconButton>\n )\n case 'nextOrAccept':\n if (hasNextStep) {\n return (\n <IconButton onClick={goToNextStep} key={actionType} title=\"next\">\n <NextIcon fontSize=\"small\" />\n </IconButton>\n )\n }\n return (\n <IconButton onClick={acceptValueChanges} key={actionType} title=\"accept\">\n <CheckIcon fontSize=\"small\" />\n </IconButton>\n )\n default:\n return null\n }\n })\n\n return <PickersActionBarRoot {...other}>{buttons}</PickersActionBarRoot>\n}\n","// display\nexport {default as ArrowIcon} from '@mui/icons-material/ArrowRightAlt'\nexport {default as FileIcon} from '@mui/icons-material/DescriptionOutlined'\nexport {default as DescriptionIcon} from '@mui/icons-material/Description'\nexport {default as PictureAsPdfIcon} from '@mui/icons-material/PictureAsPdf'\nexport {default as AudioFileIcon} from '@mui/icons-material/AudioFile'\nexport {default as VideoFileIcon} from '@mui/icons-material/VideoFile'\nexport {default as TableChartIcon} from '@mui/icons-material/TableChart'\nexport {default as FolderZipIcon} from '@mui/icons-material/FolderZip'\nexport {default as InsertDriveFileIcon} from '@mui/icons-material/InsertDriveFile'\nexport {default as ImageIcon} from '@mui/icons-material/ImageOutlined'\nexport {default as LayersIcon} from '@mui/icons-material/LayersOutlined'\nexport {default as TextIcon} from '@mui/icons-material/TextFormat'\nexport {default as RemoveIcon} from '@mui/icons-material/Remove'\nexport {default as AddFileIcon} from '@mui/icons-material/PostAdd'\nexport {default as ErrorIcon} from '@mui/icons-material/ErrorOutline'\nexport {default as QuestionIcon} from '@mui/icons-material/QuestionMarkOutlined'\nexport {default as RoomIcon} from '@mui/icons-material/MeetingRoomOutlined'\nexport {default as BlacklistIcon} from '@mui/icons-material/PlaylistRemove'\nexport {default as WhitelistIcon} from '@mui/icons-material/ChecklistRtl'\nexport {default as NoImageIcon} from '@mui/icons-material/HideImageOutlined'\nexport {default as EyeIcon} from '@mui/icons-material/RemoveRedEyeTwoTone'\nexport {default as CropSizeIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as AdminIcon} from '@mui/icons-material/LockPersonOutlined'\nexport {default as UserIcon} from '@mui/icons-material/Person'\nexport {default as EmoticonIcon} from '@mui/icons-material/InsertEmoticon'\nexport {default as DisabledSelectionIcon} from '@mui/icons-material/RemoveDoneOutlined'\nexport {default as TagIcon} from '@mui/icons-material/Tag'\nexport {default as AudioIcon} from '@mui/icons-material/Audiotrack'\nexport {default as VideoIcon} from '@mui/icons-material/Videocam'\nexport {default as CodeIcon} from '@mui/icons-material/Code'\nexport {default as ChartIcon} from '@mui/icons-material/Equalizer'\nexport {default as TableIcon} from '@mui/icons-material/PivotTableChart'\nexport {default as SearchIcon} from '@mui/icons-material/Search'\nexport {default as DataObjectIcon} from '@mui/icons-material/DataObject'\nexport {default as A2ZIcon} from '@mui/icons-material/SortByAlpha'\nexport {default as ThumbUpIcon} from '@mui/icons-material/ThumbUp'\nexport {default as MoneyIcon} from '@mui/icons-material/AttachMoneyOutlined'\nexport {default as ServerIcon} from '@mui/icons-material/Storage'\nexport {default as CerticateIcon} from '@mui/icons-material/WorkspacePremium'\nexport {default as NumberIcon} from '@mui/icons-material/Numbers'\nexport {default as SumIcon} from '@mui/icons-material/Functions'\nexport {default as LightBulbIcon} from '@mui/icons-material/Lightbulb'\nexport {default as RotateIcon} from '@mui/icons-material/CropRotate'\nexport {default as ImageSzieScaleIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as CollectionIcon} from '@mui/icons-material/CollectionsBookmark'\nexport {default as HistoryIcon} from '@mui/icons-material/Schedule'\nexport {default as StyleIcon} from '@mui/icons-material/Style'\nexport {default as ARHorizontalIcon} from '@mui/icons-material/Crop169'\nexport {default as ARSquareIcon} from '@mui/icons-material/CropSquare'\nexport {default as VoiceIcon} from '@mui/icons-material/GraphicEqRounded'\nexport {default as MemoryIcon} from '@mui/icons-material/MemoryRounded'\n\n// button\nexport {default as AddCircleIcon} from '@mui/icons-material/AddCircleOutlineRounded'\nexport {default as AddIcon} from '@mui/icons-material/Add'\nexport {default as CloseIcon} from '@mui/icons-material/Close'\nexport {default as ExpandMoreIcon} from '@mui/icons-material/ExpandMore'\nexport {default as AutorenewIcon} from '@mui/icons-material/Autorenew'\nexport {default as CheckCircleIcon} from '@mui/icons-material/CheckCircle'\nexport {default as MenuIcon} from '@mui/icons-material/Menu'\nexport {default as MoreIcon} from '@mui/icons-material/MoreVert'\nexport {default as MoreHorizIcon} from '@mui/icons-material/MoreHoriz'\nexport {default as CopyIcon} from '@mui/icons-material/ContentCopy'\nexport {default as PasteIcon} from '@mui/icons-material/ContentPaste'\nexport {default as CloudIcon} from '@mui/icons-material/Cloud'\nexport {default as DownloadIcon} from '@mui/icons-material/DownloadOutlined'\nexport {default as DownloadDoneIcon} from '@mui/icons-material/DownloadDoneOutlined'\nexport {default as StartIcon} from '@mui/icons-material/StarBorderOutlined'\nexport {default as DeleteIcon} from '@mui/icons-material/DeleteForever'\nexport {default as LayerClearIcon } from '@mui/icons-material/LayersClear'\nexport {default as CheckIcon } from '@mui/icons-material/Check'\nexport {default as CheckAllIcon } from '@mui/icons-material/DoneAll'\nexport {default as PowerIcon } from '@mui/icons-material/PowerSettingsNew'\nexport {default as SendIcon } from '@mui/icons-material/Send'\nexport {default as ZoomInIcon } from '@mui/icons-material/ZoomInMap'\nexport {default as ZoomOutIcon } from '@mui/icons-material/ZoomOutMap'\nexport {default as ToolIcon } from '@mui/icons-material/HomeRepairService'\nexport {default as ConstructionIcon } from '@mui/icons-material/Construction'\nexport {default as HelpIcon } from '@mui/icons-material/Help'\nexport {default as ReportIcon } from '@mui/icons-material/EmojiFlags'\nexport {default as EditIcon } from '@mui/icons-material/Edit'\nexport {default as ForkIcon } from '@mui/icons-material/ForkRight'\nexport {default as SettingIcon } from '@mui/icons-material/Settings'\nexport {default as RestoreIcon } from '@mui/icons-material/Restore'\nexport {default as EditListIcon } from '@mui/icons-material/EditNote'\nexport {default as HomeIcon } from '@mui/icons-material/HomeOutlined'\nexport {default as EnterRoomIcon } from '@mui/icons-material/ExitToAppOutlined'\nexport {default as SunIcon} from '@mui/icons-material/WbSunnyOutlined'\nexport {default as MoonIcon} from '@mui/icons-material/DarkModeOutlined'\nexport {default as AttachFileIcon} from '@mui/icons-material/AttachFileOutlined'\nexport {default as NoteAddIcon} from '@mui/icons-material/NoteAdd'\nexport {default as CloudUploadIcon} from '@mui/icons-material/CloudUpload'\nexport {default as DoubleRightArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRight'\nexport {default as DoubleLeftArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowLeft'\nexport {default as DoubleArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRightRounded'\nexport {default as FitScreenIcon} from '@mui/icons-material/FitScreen'\nexport {default as FullscreenIcon} from '@mui/icons-material/Fullscreen'\nexport {default as TestIcon} from '@mui/icons-material/Biotech'\nexport {default as ShareIcon} from '@mui/icons-material/Share'\nexport {default as FilterIcon} from '@mui/icons-material/FilterAlt'\nexport {default as SyncIcon} from '@mui/icons-material/Sync'\nexport {default as PlayIcon} from '@mui/icons-material/PlayArrow'\nexport {default as PauseIcon} from '@mui/icons-material/PauseOutlined'\nexport {default as RandomIcon} from '@mui/icons-material/Casino'\nexport {default as CoinIcon} from '@mui/icons-material/Paid'\nexport {default as SaveChangesIcon} from '@mui/icons-material/Save'\nexport {default as StopIcon} from '@mui/icons-material/StopRounded'\nexport {default as ReplayIcon} from '@mui/icons-material/Replay'\nexport {default as TreeIcon} from '@mui/icons-material/AccountTree'\nexport {default as ClearIcon} from '@mui/icons-material/Close'\nexport {default as KeyboardArrowDownIcon} from '@mui/icons-material/KeyboardArrowDown'\nexport {default as KeyboardArrowRightIcon} from '@mui/icons-material/KeyboardArrowRight'\nexport {default as SearchRoundedIcon} from '@mui/icons-material/SearchRounded'\nexport {default as CloseRoundedIcon} from '@mui/icons-material/CloseRounded'\nexport {default as SortByAlphaRoundedIcon} from '@mui/icons-material/SortByAlphaRounded'\nexport {default as FilterAltOutlinedIcon} from '@mui/icons-material/FilterAltOutlined'\nexport {default as InboxOutlinedIcon} from '@mui/icons-material/InboxOutlined'\nexport {default as SearchOffIcon} from '@mui/icons-material/SearchOff'\nexport {default as ClearRoundedIcon} from '@mui/icons-material/ClearRounded'\nexport {default as ArrowDropDownRoundedIcon} from '@mui/icons-material/ArrowDropDownRounded'\n\n// login\nexport {default as AccountIcon} from '@mui/icons-material/AccountBox'\nexport {default as LogoutIcon} from '@mui/icons-material/Logout'\nexport {default as LoginIcon} from '@mui/icons-material/Login'\nexport {default as DashboardIcon} from '@mui/icons-material/Dashboard'\n\n//logo\nexport {default as WorkFlowIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as HelpOutlineIcon} from '@mui/icons-material/HelpOutline'\nexport {default as NavigateBeforeIcon} from '@mui/icons-material/NavigateBefore'\nexport {default as NavigateNextIcon} from '@mui/icons-material/NavigateNext'\nexport {default as PersonIcon} from '@mui/icons-material/Person'\nexport {default as CalendarTodayIcon} from '@mui/icons-material/CalendarToday'\nexport {default as ChatIcon} from '@mui/icons-material/QuestionAnswerOutlined'\nexport {default as TodayIcon} from '@mui/icons-material/Today'\nexport {default as DeleteForeverIcon} from '@mui/icons-material/DeleteForever'\n\nexport {default as AdsClickIcon} from '@mui/icons-material/AdsClick'\nexport {default as FingerprintIcon} from '@mui/icons-material/Fingerprint'\nexport {default as SportsEsportsOutlinedIcon} from '@mui/icons-material/SportsEsportsOutlined'\nexport {default as HelpOutlineRoundedIcon} from '@mui/icons-material/HelpOutlineRounded'\nexport {default as AccountTreeOutlinedIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as SmartToyOutlinedIcon} from '@mui/icons-material/SmartToyOutlined'\nexport {default as AcUnitIcon} from '@mui/icons-material/AcUnit'\nexport {default as LoopIcon} from '@mui/icons-material/Loop'\nexport {default as PendingIcon} from '@mui/icons-material/Pending'\nexport {default as AllInclusiveIcon} from '@mui/icons-material/AllInclusive'\nexport {default as WarningOutlinedIcon} from '@mui/icons-material/WarningOutlined'\nexport {default as InfoOutlinedIcon} from '@mui/icons-material/InfoOutlined'\nexport {default as AutoAwesomeRoundedIcon} from '@mui/icons-material/AutoAwesomeRounded'\nexport {default as ErrorOutlineOutlinedIcon} from '@mui/icons-material/ErrorOutlineOutlined'\nexport {default as DownloadFilledIcon} from '@mui/icons-material/Download'","export * from './BorderBox'\nexport {default as Box} from '@mui/material/Box'\nexport {default as Stack} from '@mui/material/Stack'\nexport {default as Grid} from '@mui/material/Grid'\n","'use client'\nimport {forwardRef} from 'react'\nimport MuiIconButton from '@mui/material/IconButton'\nimport { Tooltip } from '@/ele/Tooltip'\nimport { type TooltipProps } from '@mui/material/Tooltip'\nimport { Box } from '@/ele/Box'\n\ntype IconButtonProps = React.ComponentProps<typeof MuiIconButton>\ntype Props = {\n /** The Icon to render */\n children: React.ReactNode;\n /** The title of the tooltip */\n title?: string;\n /** \n * The color theme of the entire component.\n * @default 'secondary' (from theme)\n */\n color?: IconButtonProps['color'];\n /**\n * The size of the component.\n * @default 'small' (from theme)\n */\n size?: IconButtonProps['size'];\n \n selected?: boolean;\n \n slotProps?: {\n tooltip?: Omit<TooltipProps, \"children\">\n };\n} & Omit<IconButtonProps, \"color\" | \"size\">;\n\n/**\n * A MuiIconButton wrapped in a MuiTooltip.\n * Default props like `size` and `color` are handled by the theme.\n */\nconst IconButton = forwardRef<HTMLButtonElement, Props>(({\n title = \"\",\n children,\n color,\n size,\n slotProps,\n selected,\n className,\n ...props\n}, ref) => {\n return (\n <Tooltip \n title={title} \n slotProps={{\n popper: {\n sx: {\n textTransform: \"capitalize\",\n }\n },\n ...slotProps?.tooltip\n }}\n >\n <Box component=\"span\" sx={{width: \"fit-content\"}}>\n <MuiIconButton\n ref={ref}\n color={color}\n size={size}\n className={[className, selected ? 'Mui-selected' : ''].filter(Boolean).join(' ')}\n {...props}\n >\n {children}\n </MuiIconButton>\n </Box>\n </Tooltip>\n )\n})\n\nexport default IconButton","export {default as Tooltip} from '@mui/material/Tooltip'\nexport * from './theme'\n","import React from 'react'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport { DateTimePicker as MUIDateTimePicker } from '@mui/x-date-pickers/DateTimePicker'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\n\nimport { MyPickersTextField, MyActionBar } from './_shared'\n\nexport const MuiXDateTimePicker: React.FC<React.ComponentProps<typeof MUIDateTimePicker>> = (props) => {\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <MUIDateTimePicker \n showDaysOutsideCurrentMonth\n \n {...props} \n slotProps={{\n actionBar: {\n actions: ['clear', 'today', 'cancel', 'accept'],\n },\n ...(props.slotProps || {}),\n }}\n slots={{\n actionBar: MyActionBar,\n textField: MyPickersTextField,\n ...(props.slots || {}),\n }}\n />\n </LocalizationProvider>\n )\n}\n\nexport default MuiXDateTimePicker\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const datePickerTheme = {\n defaultProps: {\n slotProps: {\n popper: {\n sx: {\n \"& .MuiPaper-root\": {\n borderRadius: '20px',\n background: 'var(--mui-palette-background-default)',\n border: 'solid 1px var(--mui-palette-border-1)',\n },\n },\n }\n },\n },\n} as const satisfies MuiComponentTheme<'MuiDatePicker'>\nexport const dateTimePickerTheme = {\n defaultProps: {\n slotProps: {\n popper: {\n sx: {\n \"& .MuiPaper-root\": {\n borderRadius: '20px',\n background: 'var(--mui-palette-background-default)',\n border: 'solid 1px var(--mui-palette-border-1)',\n },\n },\n }\n },\n },\n} as const satisfies MuiComponentTheme<'MuiDateTimePicker'>\n\nexport const dateCalendarTheme = {\n defaultProps: {\n slotProps: {},\n },\n styleOverrides: {\n root: {\n borderRadius: '20px',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiDateCalendar'>\n\nexport const pickersCalendarHeaderTheme = {\n defaultProps: {\n slotProps: {\n previousIconButton: { size: 'small' },\n nextIconButton: { size: 'small' },\n switchViewIcon: { fontSize: 'small' },\n },\n },\n styleOverrides: {\n root: {},\n label: {},\n },\n} as const satisfies MuiComponentTheme<'MuiPickersCalendarHeader'>\n\nexport const pickersDayTheme = {\n defaultProps: {},\n styleOverrides: {\n root: {\n '&.Mui-selected.MuiButtonBase-root': {\n color: 'var(--mui-palette-error-main)',\n backgroundColor: 'var(--mui-palette-focus-1)',\n \"&:hover\": {\n backgroundColor: 'var(--mui-palette-focus-1-hover)',\n },\n },\n \"&.MuiPickersDay-today\": {\n borderColor:\"var(--mui-palette-focus-1)\",\n },\n },\n dayOutsideMonth: {\n color:'var(--mui-palette-text-disabled)',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiPickersDay'>\n\nexport const multiSectionDigitalClockTheme = {\n defaultProps: {\n slotProps: {\n digitalClockSectionItem: {\n dense: true,\n },\n }\n },\n styleOverrides: {\n root: {\n '&': { paddingRight: '4px' },\n '& .MuiMultiSectionDigitalClockSection-root': {\n scrollbarWidth: 'inherit',\n '& li': {\n borderRadius: 'var(--mui-shape-borderRadius)',\n '&::before': {\n borderRadius: 'var(--mui-shape-borderRadius)',\n },\n \"&.Mui-selected\": {\n backgroundColor:\"transparent\",\n },\n },\n\n },\n },\n },\n} as const satisfies MuiComponentTheme<'MuiMultiSectionDigitalClock'>\n\nexport const pickersInputBaseTheme = {\n styleOverrides: {\n root: {\n \"&.Mui-focused:not(.Mui-error) fieldset.MuiPickersOutlinedInput-notchedOutline\": {\n borderColor:\"var(--mui-palette-text-secondary)\",\n },\n \"&.MuiPickersInputBase-root\": {\n \"& .MuiButtonBase-root\": {\n \"& > svg\": {\n fontSize: '1.25rem',\n },\n },\n },\n },\n },\n\n} as const satisfies MuiComponentTheme<'MuiPickersInputBase'>"],"mappings":"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","names":["import_react","import_PhotoSizeSelectLarge","import_Close","import_Person","import_DeleteForever","import_AccountTreeOutlined","MuiIconButton","import_jsx_runtime","React","DialogActions","import_jsx_runtime","MUIDatePicker","import_LocalizationProvider","import_AdapterDayjs","import_jsx_runtime","MUIDateTimePicker"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/elemental/DatePicker/index.ts","../src/components/elemental/DatePicker/src/MuiXDatePicker.tsx","../src/components/elemental/Box/src/index.ts","../src/components/elemental/Paper/src/Paper/Paper.tsx","../src/components/elemental/Overlay/src/index.ts","../src/components/elemental/Button/src/IconButton/IconButton.tsx","../src/components/elemental/Tooltip/src/Tooltip/index.ts","../src/components/elemental/Chip/src/Chip/Chip.tsx","../src/components/elemental/Input/src/TextField/index.ts","../src/components/Icons/MuiIcon/index.ts","../src/components/elemental/DatePicker/src/MuiXDateTimePicker.tsx","../src/components/elemental/DatePicker/src/MuiXTimePicker.tsx","../src/components/elemental/DatePicker/src/MuiXDateRangePicker.tsx","../src/components/elemental/DatePicker/src/theme.ts"],"sourcesContent":["export * from './src'\n","'use client'\nimport React from 'react'\nimport dayjs, { type Dayjs } from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport { DateCalendar } from '@mui/x-date-pickers/DateCalendar'\nimport DialogActions from '@mui/material/DialogActions'\nimport InputAdornment from '@mui/material/InputAdornment'\n\nimport { Box } from '@/ele/Box'\nimport { Paper } from '@/ele/Paper'\nimport { Popper, ClickAwayListener } from '@/ele/Overlay'\nimport { IconButton } from '@/ele/Button'\nimport { TextField } from '@/ele/Input'\nimport {\n CheckIcon,\n ClearIcon,\n DeleteForeverIcon,\n TodayIcon,\n CalendarTodayIcon,\n} from '@/icons/MuiIcon'\n\ndayjs.extend(customParseFormat)\n\n/** Display / default parse format — matches prior MUI Date field for en-US. */\nconst DISPLAY_DATE_FMT = 'MM/DD/YYYY'\n\nexport type MuiXDatePickerProps = {\n /** Controlled value (Dayjs, Date, or null). Prefer this in forms/stories. */\n value?: Dayjs | Date | string | null\n /** Uncontrolled initial value when `value` is omitted. */\n defaultValue?: Dayjs | Date | string | null\n /**\n * Called with Dayjs | null (same shape as MUI DatePicker) so UseForm DateField\n * can keep using `d?.toDate?.()`.\n */\n onChange?: (value: Dayjs | null) => void\n label?: string\n disabled?: boolean\n /** Override display format (default `MM/DD/YYYY`). */\n format?: string\n /** Optional sx for the outer field wrapper. */\n sx?: React.ComponentProps<typeof Box>['sx']\n /**\n * When true, the trigger field stays read-only (calendar-only).\n * Default false — user can type a date string and commit on blur/Enter.\n */\n disableTyping?: boolean\n /**\n * Legacy passthrough kept for UseForm slotProps compatibility.\n * `textField` bits are applied to the trigger field.\n */\n slotProps?: {\n textField?: Record<string, unknown>\n openPickerIcon?: Record<string, unknown>\n actionBar?: Record<string, unknown>\n }\n}\n\nconst toDayjs = (v: Dayjs | Date | string | null | undefined): Dayjs | null => {\n if (v == null || v === '') return null\n const d = dayjs(v)\n return d.isValid() ? d : null\n}\n\nconst formatDateLabel = (v: Dayjs | null, fmt: string): string =>\n v && v.isValid() ? v.format(fmt) : ''\n\n/**\n * Date-only formats (align with DateTime / DateRange per-half formats).\n * Tried strictly before a loose dayjs parse.\n */\nconst DATE_PARSE_FORMATS = [\n DISPLAY_DATE_FMT,\n 'M/D/YYYY',\n 'YYYY-MM-DD',\n 'MMM D, YYYY',\n 'D MMM YYYY',\n 'MMM D YYYY',\n 'YYYY/MM/DD',\n] as const\n\n/**\n * Parse typed date text into a Dayjs (start of day).\n * Returns `null` for empty clear; `'invalid'` when unparseable (caller reverts).\n */\nconst parseDateInput = (raw: string): Dayjs | null | 'invalid' => {\n const trimmed = raw.trim()\n if (!trimmed) return null\n\n for (const fmt of DATE_PARSE_FORMATS) {\n const d = dayjs(trimmed, fmt, true)\n if (d.isValid()) return d.startOf('day')\n }\n\n // Loose dayjs last resort (ISO / locale strings)\n const loose = dayjs(trimmed)\n if (loose.isValid()) return loose.startOf('day')\n\n return 'invalid'\n}\n\n/**\n * Soft/quiet DatePicker with a typeable trigger field.\n *\n * Trigger text is editable by default (commit on blur/Enter). Calendar icon\n * opens the DateCalendar popover; focusing/typing the field does not.\n * Pass `disableTyping` for read-only calendar-only mode.\n *\n * Invalid typed input reverts to the last committed label.\n * Escape cancels the edit without committing.\n */\nexport const MuiXDatePicker: React.FC<MuiXDatePickerProps> = ({\n value: valueProp,\n defaultValue,\n onChange,\n label = 'Pick a date',\n disabled,\n format: formatProp,\n sx,\n disableTyping = false,\n slotProps,\n}) => {\n const displayFmt = formatProp ?? DISPLAY_DATE_FMT\n\n const isControlled = valueProp !== undefined\n const [uncontrolled, setUncontrolled] = React.useState<Dayjs | null>(() =>\n toDayjs(defaultValue),\n )\n const value = isControlled ? toDayjs(valueProp) : uncontrolled\n\n const [open, setOpen] = React.useState(false)\n const [draft, setDraft] = React.useState<Dayjs | null>(value)\n\n const committedLabel = formatDateLabel(value, displayFmt)\n const [inputText, setInputText] = React.useState(committedLabel)\n const [fieldFocused, setFieldFocused] = React.useState(false)\n const typingEnabled = !disableTyping\n const skipCommitOnBlurRef = React.useRef(false)\n\n const anchorRef = React.useRef<HTMLDivElement | null>(null)\n const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null)\n\n const tf = (slotProps?.textField ?? {}) as Record<string, unknown>\n const mergedDisabled = disabled ?? (tf.disabled as boolean | undefined)\n const mergedRequired = Boolean(tf.required)\n const mergedError = Boolean(tf.error)\n const helperText = tf.helperText as React.ReactNode | undefined\n\n const commit = (next: Dayjs | null) => {\n if (!isControlled) setUncontrolled(next)\n onChange?.(next)\n return next\n }\n\n // Sync display text from committed value when not actively typing.\n React.useEffect(() => {\n if (!fieldFocused) setInputText(committedLabel)\n }, [committedLabel, fieldFocused])\n\n const commitTypedInput = () => {\n if (!typingEnabled) return\n const parsed = parseDateInput(inputText)\n if (parsed === 'invalid') {\n setInputText(committedLabel)\n return\n }\n const next = commit(parsed)\n setDraft(next)\n setInputText(formatDateLabel(next, displayFmt))\n }\n\n const openPicker = () => {\n if (mergedDisabled) return\n setDraft(value)\n setOpen(true)\n }\n\n const closePicker = () => {\n setOpen(false)\n }\n\n const handleAccept = () => {\n commit(draft)\n setInputText(formatDateLabel(draft, displayFmt))\n closePicker()\n }\n\n const handleCancel = () => {\n setDraft(value)\n closePicker()\n }\n\n const handleClear = () => {\n setDraft(null)\n }\n\n const handleToday = () => {\n setDraft(dayjs().startOf('day'))\n }\n\n const handleCalendarChange = (d: Dayjs | null) => {\n if (!d) {\n setDraft(null)\n return\n }\n setDraft(dayjs(d).startOf('day'))\n }\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <Box sx={{ display: 'inline-flex', flexDirection: 'column', ...((sx as object) || {}) }}>\n <Box\n ref={(el: HTMLDivElement | null) => {\n anchorRef.current = el\n setAnchorEl(el)\n }}\n sx={{ display: 'inline-flex', minWidth: 200 }}\n >\n <TextField\n size=\"small\"\n fullWidth\n label={label}\n value={typingEnabled ? inputText : committedLabel}\n placeholder={displayFmt}\n disabled={mergedDisabled}\n required={mergedRequired}\n error={mergedError}\n helperText={helperText}\n onClick={typingEnabled ? undefined : openPicker}\n onFocus={() => {\n if (typingEnabled) {\n setFieldFocused(true)\n } else {\n openPicker()\n }\n }}\n onBlur={() => {\n if (!typingEnabled) return\n setFieldFocused(false)\n if (skipCommitOnBlurRef.current) {\n skipCommitOnBlurRef.current = false\n setInputText(committedLabel)\n return\n }\n commitTypedInput()\n }}\n onChange={(e) => {\n if (!typingEnabled) return\n setInputText(e.target.value)\n }}\n onKeyDown={(e) => {\n if (!typingEnabled) return\n if (e.key === 'Enter') {\n e.preventDefault()\n ;(e.target as HTMLInputElement).blur()\n }\n if (e.key === 'Escape') {\n e.preventDefault()\n skipCommitOnBlurRef.current = true\n setInputText(committedLabel)\n ;(e.target as HTMLInputElement).blur()\n }\n }}\n inputProps={{\n readOnly: !typingEnabled,\n 'aria-label': label,\n 'data-testid': 'date-field',\n }}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n disabled={mergedDisabled}\n aria-label=\"Choose date\"\n title=\"Choose date\"\n {...(slotProps?.openPickerIcon as object)}\n onMouseDown={(e) => {\n // Keep focus in the field so blur does not race the open.\n e.preventDefault()\n }}\n onClick={(e) => {\n e.stopPropagation()\n if (open) closePicker()\n else openPicker()\n }}\n >\n <CalendarTodayIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n }}\n />\n </Box>\n\n <Popper\n open={open}\n anchorEl={anchorEl}\n placement=\"bottom-start\"\n style={{ zIndex: 1300 }}\n >\n <ClickAwayListener onClickAway={handleCancel}>\n <Paper\n elevation={0}\n sx={{\n mt: 1,\n borderRadius: '20px',\n background: 'var(--mui-palette-background-default)',\n border: 'solid 1px var(--mui-palette-border-1)',\n overflow: 'hidden',\n }}\n >\n <DateCalendar\n value={draft}\n onChange={handleCalendarChange}\n showDaysOutsideCurrentMonth\n />\n <DialogActions sx={{ px: 1.5, pb: 1, justifyContent: 'flex-end', gap: 0.5 }}>\n <IconButton data-testid=\"clear-action-button\" onClick={handleClear} title=\"clear\">\n <DeleteForeverIcon fontSize=\"small\" />\n </IconButton>\n <IconButton data-testid=\"today-action-button\" onClick={handleToday} title=\"today\">\n <TodayIcon fontSize=\"small\" />\n </IconButton>\n <IconButton onClick={handleCancel} title=\"cancel\">\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n <IconButton onClick={handleAccept} title=\"accept\">\n <CheckIcon fontSize=\"small\" />\n </IconButton>\n </DialogActions>\n </Paper>\n </ClickAwayListener>\n </Popper>\n </Box>\n </LocalizationProvider>\n )\n}\n\nexport default MuiXDatePicker\n","export * from './BorderBox'\nexport {default as Box} from '@mui/material/Box'\nexport {default as Stack} from '@mui/material/Stack'\nexport {default as Grid} from '@mui/material/Grid'\n","import Paper, { type PaperProps } from '@mui/material/Paper'\n\n/**\n * A wrapper for Mui Paper\n */\nexport default function MuiPaper(props: PaperProps) {\n return <Paper {...props} />\n}\n","export { default as ClickAwayListener } from '@mui/material/ClickAwayListener';\nexport { default as Popper } from '@mui/material/Popper';\n","'use client'\nimport {forwardRef} from 'react'\nimport MuiIconButton from '@mui/material/IconButton'\nimport { Tooltip } from '@/ele/Tooltip'\nimport { type TooltipProps } from '@mui/material/Tooltip'\nimport { Box } from '@/ele/Box'\n\ntype IconButtonProps = React.ComponentProps<typeof MuiIconButton>\ntype Props = {\n /** The Icon to render */\n children: React.ReactNode;\n /** The title of the tooltip */\n title?: string;\n /** \n * The color theme of the entire component.\n * @default 'secondary' (from theme)\n */\n color?: IconButtonProps['color'];\n /**\n * The size of the component.\n * @default 'small' (from theme)\n */\n size?: IconButtonProps['size'];\n \n selected?: boolean;\n \n slotProps?: {\n tooltip?: Omit<TooltipProps, \"children\">\n };\n} & Omit<IconButtonProps, \"color\" | \"size\">;\n\n/**\n * A MuiIconButton wrapped in a MuiTooltip.\n * Default props like `size` and `color` are handled by the theme.\n */\nconst IconButton = forwardRef<HTMLButtonElement, Props>(({\n title = \"\",\n children,\n color,\n size,\n slotProps,\n selected,\n className,\n ...props\n}, ref) => {\n return (\n <Tooltip \n title={title} \n slotProps={{\n popper: {\n sx: {\n textTransform: \"capitalize\",\n }\n },\n ...slotProps?.tooltip\n }}\n >\n <Box component=\"span\" sx={{width: \"fit-content\"}}>\n <MuiIconButton\n ref={ref}\n color={color}\n size={size}\n className={[className, selected ? 'Mui-selected' : ''].filter(Boolean).join(' ')}\n {...props}\n >\n {children}\n </MuiIconButton>\n </Box>\n </Tooltip>\n )\n})\n\nexport default IconButton","export {default as Tooltip} from '@mui/material/Tooltip'\nexport * from './theme'\n","import MuiChip, { type ChipProps } from '@mui/material/Chip'\n\n/**\n * A wrapper for Mui Chip\n */\nexport default function Chip({ color = 'default', ...props }: ChipProps) {\n return <MuiChip {...props} color={color} />\n}\n","export {default as TextField} from '@mui/material/TextField'\nexport * from './theme'","// display\nexport {default as ArrowIcon} from '@mui/icons-material/ArrowRightAlt'\nexport {default as FileIcon} from '@mui/icons-material/DescriptionOutlined'\nexport {default as DescriptionIcon} from '@mui/icons-material/Description'\nexport {default as PictureAsPdfIcon} from '@mui/icons-material/PictureAsPdf'\nexport {default as AudioFileIcon} from '@mui/icons-material/AudioFile'\nexport {default as VideoFileIcon} from '@mui/icons-material/VideoFile'\nexport {default as TableChartIcon} from '@mui/icons-material/TableChart'\nexport {default as FolderZipIcon} from '@mui/icons-material/FolderZip'\nexport {default as InsertDriveFileIcon} from '@mui/icons-material/InsertDriveFile'\nexport {default as ImageIcon} from '@mui/icons-material/ImageOutlined'\nexport {default as LayersIcon} from '@mui/icons-material/LayersOutlined'\nexport {default as TextIcon} from '@mui/icons-material/TextFormat'\nexport {default as RemoveIcon} from '@mui/icons-material/Remove'\nexport {default as AddFileIcon} from '@mui/icons-material/PostAdd'\nexport {default as ErrorIcon} from '@mui/icons-material/ErrorOutline'\nexport {default as QuestionIcon} from '@mui/icons-material/QuestionMarkOutlined'\nexport {default as RoomIcon} from '@mui/icons-material/MeetingRoomOutlined'\nexport {default as BlacklistIcon} from '@mui/icons-material/PlaylistRemove'\nexport {default as WhitelistIcon} from '@mui/icons-material/ChecklistRtl'\nexport {default as NoImageIcon} from '@mui/icons-material/HideImageOutlined'\nexport {default as EyeIcon} from '@mui/icons-material/RemoveRedEyeTwoTone'\nexport {default as CropSizeIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as AdminIcon} from '@mui/icons-material/LockPersonOutlined'\nexport {default as UserIcon} from '@mui/icons-material/Person'\nexport {default as EmoticonIcon} from '@mui/icons-material/InsertEmoticon'\nexport {default as DisabledSelectionIcon} from '@mui/icons-material/RemoveDoneOutlined'\nexport {default as TagIcon} from '@mui/icons-material/Tag'\nexport {default as AudioIcon} from '@mui/icons-material/Audiotrack'\nexport {default as VideoIcon} from '@mui/icons-material/Videocam'\nexport {default as CodeIcon} from '@mui/icons-material/Code'\nexport {default as ChartIcon} from '@mui/icons-material/Equalizer'\nexport {default as TableIcon} from '@mui/icons-material/PivotTableChart'\nexport {default as SearchIcon} from '@mui/icons-material/Search'\nexport {default as DataObjectIcon} from '@mui/icons-material/DataObject'\nexport {default as A2ZIcon} from '@mui/icons-material/SortByAlpha'\nexport {default as ThumbUpIcon} from '@mui/icons-material/ThumbUp'\nexport {default as MoneyIcon} from '@mui/icons-material/AttachMoneyOutlined'\nexport {default as ServerIcon} from '@mui/icons-material/Storage'\nexport {default as CerticateIcon} from '@mui/icons-material/WorkspacePremium'\nexport {default as NumberIcon} from '@mui/icons-material/Numbers'\nexport {default as SumIcon} from '@mui/icons-material/Functions'\nexport {default as LightBulbIcon} from '@mui/icons-material/Lightbulb'\nexport {default as RotateIcon} from '@mui/icons-material/CropRotate'\nexport {default as ImageSzieScaleIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as CollectionIcon} from '@mui/icons-material/CollectionsBookmark'\nexport {default as HistoryIcon} from '@mui/icons-material/Schedule'\nexport {default as StyleIcon} from '@mui/icons-material/Style'\nexport {default as ARHorizontalIcon} from '@mui/icons-material/Crop169'\nexport {default as ARSquareIcon} from '@mui/icons-material/CropSquare'\nexport {default as VoiceIcon} from '@mui/icons-material/GraphicEqRounded'\nexport {default as MemoryIcon} from '@mui/icons-material/MemoryRounded'\n\n// button\nexport {default as AddCircleIcon} from '@mui/icons-material/AddCircleOutlineRounded'\nexport {default as AddIcon} from '@mui/icons-material/Add'\nexport {default as CloseIcon} from '@mui/icons-material/Close'\nexport {default as ExpandMoreIcon} from '@mui/icons-material/ExpandMore'\nexport {default as AutorenewIcon} from '@mui/icons-material/Autorenew'\nexport {default as CheckCircleIcon} from '@mui/icons-material/CheckCircle'\nexport {default as MenuIcon} from '@mui/icons-material/Menu'\nexport {default as MoreIcon} from '@mui/icons-material/MoreVert'\nexport {default as MoreHorizIcon} from '@mui/icons-material/MoreHoriz'\nexport {default as CopyIcon} from '@mui/icons-material/ContentCopy'\nexport {default as PasteIcon} from '@mui/icons-material/ContentPaste'\nexport {default as CloudIcon} from '@mui/icons-material/Cloud'\nexport {default as DownloadIcon} from '@mui/icons-material/DownloadOutlined'\nexport {default as DownloadDoneIcon} from '@mui/icons-material/DownloadDoneOutlined'\nexport {default as StartIcon} from '@mui/icons-material/StarBorderOutlined'\nexport {default as DeleteIcon} from '@mui/icons-material/DeleteForever'\nexport {default as LayerClearIcon } from '@mui/icons-material/LayersClear'\nexport {default as CheckIcon } from '@mui/icons-material/Check'\nexport {default as CheckAllIcon } from '@mui/icons-material/DoneAll'\nexport {default as PowerIcon } from '@mui/icons-material/PowerSettingsNew'\nexport {default as SendIcon } from '@mui/icons-material/Send'\nexport {default as ZoomInIcon } from '@mui/icons-material/ZoomInMap'\nexport {default as ZoomOutIcon } from '@mui/icons-material/ZoomOutMap'\nexport {default as ToolIcon } from '@mui/icons-material/HomeRepairService'\nexport {default as ConstructionIcon } from '@mui/icons-material/Construction'\nexport {default as HelpIcon } from '@mui/icons-material/Help'\nexport {default as ReportIcon } from '@mui/icons-material/EmojiFlags'\nexport {default as EditIcon } from '@mui/icons-material/Edit'\nexport {default as ForkIcon } from '@mui/icons-material/ForkRight'\nexport {default as SettingIcon } from '@mui/icons-material/Settings'\nexport {default as RestoreIcon } from '@mui/icons-material/Restore'\nexport {default as EditListIcon } from '@mui/icons-material/EditNote'\nexport {default as HomeIcon } from '@mui/icons-material/HomeOutlined'\nexport {default as EnterRoomIcon } from '@mui/icons-material/ExitToAppOutlined'\nexport {default as SunIcon} from '@mui/icons-material/WbSunnyOutlined'\nexport {default as MoonIcon} from '@mui/icons-material/DarkModeOutlined'\nexport {default as AttachFileIcon} from '@mui/icons-material/AttachFileOutlined'\nexport {default as NoteAddIcon} from '@mui/icons-material/NoteAdd'\nexport {default as CloudUploadIcon} from '@mui/icons-material/CloudUpload'\nexport {default as DoubleRightArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRight'\nexport {default as DoubleLeftArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowLeft'\nexport {default as DoubleArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRightRounded'\nexport {default as FitScreenIcon} from '@mui/icons-material/FitScreen'\nexport {default as FullscreenIcon} from '@mui/icons-material/Fullscreen'\nexport {default as TestIcon} from '@mui/icons-material/Biotech'\nexport {default as ShareIcon} from '@mui/icons-material/Share'\nexport {default as FilterIcon} from '@mui/icons-material/FilterAlt'\nexport {default as SyncIcon} from '@mui/icons-material/Sync'\nexport {default as PlayIcon} from '@mui/icons-material/PlayArrow'\nexport {default as PauseIcon} from '@mui/icons-material/PauseOutlined'\nexport {default as RandomIcon} from '@mui/icons-material/Casino'\nexport {default as CoinIcon} from '@mui/icons-material/Paid'\nexport {default as SaveChangesIcon} from '@mui/icons-material/Save'\nexport {default as StopIcon} from '@mui/icons-material/StopRounded'\nexport {default as ReplayIcon} from '@mui/icons-material/Replay'\nexport {default as TreeIcon} from '@mui/icons-material/AccountTree'\nexport {default as ClearIcon} from '@mui/icons-material/Close'\nexport {default as KeyboardArrowDownIcon} from '@mui/icons-material/KeyboardArrowDown'\nexport {default as KeyboardArrowRightIcon} from '@mui/icons-material/KeyboardArrowRight'\nexport {default as SearchRoundedIcon} from '@mui/icons-material/SearchRounded'\nexport {default as CloseRoundedIcon} from '@mui/icons-material/CloseRounded'\nexport {default as SortByAlphaRoundedIcon} from '@mui/icons-material/SortByAlphaRounded'\nexport {default as FilterAltOutlinedIcon} from '@mui/icons-material/FilterAltOutlined'\nexport {default as InboxOutlinedIcon} from '@mui/icons-material/InboxOutlined'\nexport {default as SearchOffIcon} from '@mui/icons-material/SearchOff'\nexport {default as ClearRoundedIcon} from '@mui/icons-material/ClearRounded'\nexport {default as ArrowDropDownRoundedIcon} from '@mui/icons-material/ArrowDropDownRounded'\n\n// login\nexport {default as AccountIcon} from '@mui/icons-material/AccountBox'\nexport {default as LogoutIcon} from '@mui/icons-material/Logout'\nexport {default as LoginIcon} from '@mui/icons-material/Login'\nexport {default as DashboardIcon} from '@mui/icons-material/Dashboard'\n\n//logo\nexport {default as WorkFlowIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as HelpOutlineIcon} from '@mui/icons-material/HelpOutline'\nexport {default as NavigateBeforeIcon} from '@mui/icons-material/NavigateBefore'\nexport {default as NavigateNextIcon} from '@mui/icons-material/NavigateNext'\nexport {default as PersonIcon} from '@mui/icons-material/Person'\nexport {default as CalendarTodayIcon} from '@mui/icons-material/CalendarToday'\nexport {default as ChatIcon} from '@mui/icons-material/QuestionAnswerOutlined'\nexport {default as TodayIcon} from '@mui/icons-material/Today'\nexport {default as DeleteForeverIcon} from '@mui/icons-material/DeleteForever'\n\nexport {default as AdsClickIcon} from '@mui/icons-material/AdsClick'\nexport {default as FingerprintIcon} from '@mui/icons-material/Fingerprint'\nexport {default as SportsEsportsOutlinedIcon} from '@mui/icons-material/SportsEsportsOutlined'\nexport {default as HelpOutlineRoundedIcon} from '@mui/icons-material/HelpOutlineRounded'\nexport {default as AccountTreeOutlinedIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as SmartToyOutlinedIcon} from '@mui/icons-material/SmartToyOutlined'\nexport {default as AcUnitIcon} from '@mui/icons-material/AcUnit'\nexport {default as LoopIcon} from '@mui/icons-material/Loop'\nexport {default as PendingIcon} from '@mui/icons-material/Pending'\nexport {default as AllInclusiveIcon} from '@mui/icons-material/AllInclusive'\nexport {default as WarningOutlinedIcon} from '@mui/icons-material/WarningOutlined'\nexport {default as InfoOutlinedIcon} from '@mui/icons-material/InfoOutlined'\nexport {default as AutoAwesomeRoundedIcon} from '@mui/icons-material/AutoAwesomeRounded'\nexport {default as ErrorOutlineOutlinedIcon} from '@mui/icons-material/ErrorOutlineOutlined'\nexport {default as DownloadFilledIcon} from '@mui/icons-material/Download'","'use client'\nimport React from 'react'\nimport dayjs, { type Dayjs } from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport { DateCalendar } from '@mui/x-date-pickers/DateCalendar'\nimport { MultiSectionDigitalClock } from '@mui/x-date-pickers/MultiSectionDigitalClock'\nimport DialogActions from '@mui/material/DialogActions'\nimport InputAdornment from '@mui/material/InputAdornment'\n\nimport { Box } from '@/ele/Box'\nimport { Paper } from '@/ele/Paper'\nimport { Popper, ClickAwayListener } from '@/ele/Overlay'\nimport { IconButton } from '@/ele/Button'\nimport { TextField } from '@/ele/Input'\nimport {\n CheckIcon,\n ClearIcon,\n DeleteForeverIcon,\n CalendarTodayIcon,\n} from '@/icons/MuiIcon'\n\ndayjs.extend(customParseFormat)\n\n/** Display format — date + 12h time (matches prior MUI DateTime field for en-US). */\nconst DISPLAY_DATETIME_FMT = 'MM/DD/YYYY hh:mm a'\nconst DISPLAY_DATETIME_FMT_24 = 'MM/DD/YYYY HH:mm'\n\nexport type MuiXDateTimePickerProps = {\n /** Controlled value (Dayjs, Date, or null). Prefer this in forms/stories. */\n value?: Dayjs | Date | string | null\n /** Uncontrolled initial value when `value` is omitted. */\n defaultValue?: Dayjs | Date | string | null\n /**\n * Called with Dayjs | null (same shape as MUI DateTimePicker) so UseForm\n * DateTimeField can keep using `d?.toDate?.()`.\n */\n onChange?: (value: Dayjs | null) => void\n label?: string\n disabled?: boolean\n /** 12h + am/pm when true (default). When false, display/parse as `HH:mm`. */\n ampm?: boolean\n /** Override display format (default `MM/DD/YYYY hh:mm a` or 24h variant). */\n format?: string\n /** Optional sx for the outer field wrapper. */\n sx?: React.ComponentProps<typeof Box>['sx']\n /**\n * When true, the trigger field stays read-only (calendar-only).\n * Default false — user can type a datetime string and commit on blur/Enter.\n */\n disableTyping?: boolean\n /**\n * Legacy passthrough kept for UseForm slotProps compatibility.\n * `textField` bits are applied to the trigger field.\n */\n slotProps?: {\n textField?: Record<string, unknown>\n openPickerIcon?: Record<string, unknown>\n actionBar?: Record<string, unknown>\n }\n}\n\nconst toDayjs = (v: Dayjs | Date | string | null | undefined): Dayjs | null => {\n if (v == null || v === '') return null\n const d = dayjs(v)\n return d.isValid() ? d : null\n}\n\nconst formatDateTimeLabel = (v: Dayjs | null, fmt: string): string =>\n v && v.isValid() ? v.format(fmt) : ''\n\n/** Date-only formats (align with DateRange). */\nconst DATE_PARSE_FORMATS = [\n 'MM/DD/YYYY',\n 'M/D/YYYY',\n 'YYYY-MM-DD',\n 'MMM D, YYYY',\n 'D MMM YYYY',\n 'MMM D YYYY',\n 'YYYY/MM/DD',\n] as const\n\nconst MERIDIEM_TIME_FORMATS = [\n 'hh:mm a',\n 'h:mm a',\n 'hh:mma',\n 'h:mma',\n 'hh:mm A',\n 'h:mm A',\n 'hh:mmA',\n 'h:mmA',\n] as const\n\n/** Full datetime strings tried strictly before loose dayjs. */\nconst DATETIME_PARSE_FORMATS = [\n DISPLAY_DATETIME_FMT,\n 'MM/DD/YYYY h:mm a',\n 'M/D/YYYY hh:mm a',\n 'M/D/YYYY h:mm a',\n 'MM/DD/YYYY hh:mma',\n 'M/D/YYYY h:mma',\n 'MM/DD/YYYY HH:mm',\n 'M/D/YYYY H:mm',\n 'MM/DD/YYYY H:mm',\n 'YYYY-MM-DD HH:mm',\n 'YYYY-MM-DD H:mm',\n 'YYYY-MM-DDTHH:mm',\n 'YYYY-MM-DDTHH:mm:ss',\n 'YYYY-MM-DD HH:mm:ss',\n 'MMM D, YYYY hh:mm a',\n 'MMM D, YYYY h:mm a',\n 'MMM D, YYYY HH:mm',\n] as const\n\nconst stampDateTime = (\n datePart: Dayjs,\n hour: number,\n minute: number,\n): Dayjs => datePart.hour(hour).minute(minute).second(0).millisecond(0)\n\n/**\n * Parse a time-of-day fragment (same rules as Time picker).\n * Returns `'invalid'` when unparseable.\n */\nconst parseTimeFragment = (\n raw: string,\n opts: { ampm: boolean; anchorHour: number | null },\n): { hour: number; minute: number } | 'invalid' => {\n const trimmed = raw.trim()\n if (!trimmed) return 'invalid'\n\n const normalized = trimmed\n .replace(/\\s+/g, ' ')\n .replace(/(\\d)\\s*([ap])\\.?m\\.?$/i, (_, d, p) => `${d} ${p.toLowerCase()}m`)\n\n for (const fmt of MERIDIEM_TIME_FORMATS) {\n const d = dayjs(normalized, fmt, true)\n if (d.isValid()) return { hour: d.hour(), minute: d.minute() }\n }\n\n const bare = normalized.match(/^(\\d{1,2})\\s*:\\s*(\\d{2})$/)\n if (bare) {\n const hour = Number(bare[1])\n const minute = Number(bare[2])\n if (minute > 59 || hour > 23) return 'invalid'\n\n if (!opts.ampm || hour > 12 || (hour === 0 && bare[1].length === 2)) {\n return { hour, minute }\n }\n\n let h12 = hour % 12\n if (opts.anchorHour != null && opts.anchorHour >= 12) {\n h12 += 12\n }\n if (hour === 12 && opts.anchorHour == null) {\n h12 = 12\n } else if (hour === 12 && opts.anchorHour != null) {\n h12 = opts.anchorHour >= 12 ? 12 : 0\n }\n return { hour: h12, minute }\n }\n\n for (const fmt of ['HH:mm', 'H:mm'] as const) {\n const d = dayjs(normalized, fmt, true)\n if (d.isValid()) return { hour: d.hour(), minute: d.minute() }\n }\n\n return 'invalid'\n}\n\nconst parseDateFragment = (raw: string): Dayjs | null | 'invalid' => {\n const t = raw.trim()\n if (!t) return null\n for (const fmt of DATE_PARSE_FORMATS) {\n const d = dayjs(t, fmt, true)\n if (d.isValid()) return d.startOf('day')\n }\n const loose = dayjs(t)\n if (loose.isValid()) return loose.startOf('day')\n return 'invalid'\n}\n\n/**\n * Split \"date time\" — prefer last whitespace before a time-looking token so\n * \"MMM D, YYYY h:mm a\" keeps the comma date intact.\n */\nconst splitDateAndTime = (raw: string): [string, string] | null => {\n const s = raw.trim()\n // Explicit ISO T separator\n const isoT = s.match(/^(\\d{4}-\\d{2}-\\d{2})[T\\s]+(.+)$/i)\n if (isoT) return [isoT[1], isoT[2]]\n\n // Trailing time: ... HH:mm (optional am/pm)\n const m = s.match(/^(.+?)\\s+(\\d{1,2}:\\d{2}(?:\\s*[ap]\\.?m\\.?)?)$/i)\n if (m) return [m[1], m[2]]\n\n return null\n}\n\n/**\n * Parse typed datetime text into a Dayjs.\n * Returns `null` for empty clear; `'invalid'` when unparseable (caller reverts).\n *\n * Order: full datetime formats -> date + time halves -> date-only (keeps time from\n * `anchor`, else 00:00) -> loose dayjs.\n */\nconst parseDateTimeInput = (\n raw: string,\n opts: { ampm: boolean; anchor: Dayjs | null },\n): Dayjs | null | 'invalid' => {\n const trimmed = raw.trim()\n if (!trimmed) return null\n\n const normalized = trimmed\n .replace(/\\s+/g, ' ')\n .replace(/(\\d)\\s*([ap])\\.?m\\.?$/i, (_, d, p) => `${d} ${p.toLowerCase()}m`)\n\n // 1) Strict full datetime formats\n for (const fmt of DATETIME_PARSE_FORMATS) {\n const d = dayjs(normalized, fmt, true)\n if (d.isValid()) return d.second(0).millisecond(0)\n }\n\n // 2) Date half + time half\n const halves = splitDateAndTime(normalized)\n if (halves) {\n const datePart = parseDateFragment(halves[0])\n if (datePart === 'invalid' || datePart == null) return 'invalid'\n const timePart = parseTimeFragment(halves[1], {\n ampm: opts.ampm,\n anchorHour: opts.anchor && opts.anchor.isValid() ? opts.anchor.hour() : null,\n })\n if (timePart === 'invalid') return 'invalid'\n return stampDateTime(datePart, timePart.hour, timePart.minute)\n }\n\n // 3) Date-only — keep existing time when editing, else midnight\n const dateOnly = parseDateFragment(normalized)\n if (dateOnly !== 'invalid' && dateOnly != null) {\n if (opts.anchor && opts.anchor.isValid()) {\n return stampDateTime(dateOnly, opts.anchor.hour(), opts.anchor.minute())\n }\n return stampDateTime(dateOnly, 0, 0)\n }\n\n // 4) Loose dayjs last resort (ISO / locale strings)\n const loose = dayjs(trimmed)\n if (loose.isValid()) return loose.second(0).millisecond(0)\n\n return 'invalid'\n}\n\n/**\n * Soft/quiet DateTimePicker with a typeable trigger field.\n *\n * Trigger text is editable by default (commit on blur/Enter). Calendar icon\n * opens the date+time popover; focusing/typing the field does not.\n * Pass `disableTyping` for read-only calendar-only mode.\n *\n * Invalid typed input reverts to the last committed label.\n * Escape cancels the edit without committing.\n */\nexport const MuiXDateTimePicker: React.FC<MuiXDateTimePickerProps> = ({\n value: valueProp,\n defaultValue,\n onChange,\n label = 'Pick date & time',\n disabled,\n ampm = true,\n format: formatProp,\n sx,\n disableTyping = false,\n slotProps,\n}) => {\n const displayFmt = formatProp ?? (ampm ? DISPLAY_DATETIME_FMT : DISPLAY_DATETIME_FMT_24)\n\n const isControlled = valueProp !== undefined\n const [uncontrolled, setUncontrolled] = React.useState<Dayjs | null>(() =>\n toDayjs(defaultValue),\n )\n const value = isControlled ? toDayjs(valueProp) : uncontrolled\n\n const [open, setOpen] = React.useState(false)\n const [draft, setDraft] = React.useState<Dayjs | null>(value)\n\n const committedLabel = formatDateTimeLabel(value, displayFmt)\n const [inputText, setInputText] = React.useState(committedLabel)\n const [fieldFocused, setFieldFocused] = React.useState(false)\n const typingEnabled = !disableTyping\n const skipCommitOnBlurRef = React.useRef(false)\n\n const anchorRef = React.useRef<HTMLDivElement | null>(null)\n const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null)\n\n const tf = (slotProps?.textField ?? {}) as Record<string, unknown>\n const mergedDisabled = disabled ?? (tf.disabled as boolean | undefined)\n const mergedRequired = Boolean(tf.required)\n const mergedError = Boolean(tf.error)\n const helperText = tf.helperText as React.ReactNode | undefined\n\n const commit = (next: Dayjs | null) => {\n if (!isControlled) setUncontrolled(next)\n onChange?.(next)\n return next\n }\n\n // Sync display text from committed value when not actively typing.\n React.useEffect(() => {\n if (!fieldFocused) setInputText(committedLabel)\n }, [committedLabel, fieldFocused])\n\n const commitTypedInput = () => {\n if (!typingEnabled) return\n const parsed = parseDateTimeInput(inputText, { ampm, anchor: value })\n if (parsed === 'invalid') {\n setInputText(committedLabel)\n return\n }\n const next = commit(parsed)\n setDraft(next)\n setInputText(formatDateTimeLabel(next, displayFmt))\n }\n\n const openPicker = () => {\n if (mergedDisabled) return\n setDraft(value)\n setOpen(true)\n }\n\n const closePicker = () => {\n setOpen(false)\n }\n\n const handleAccept = () => {\n commit(draft)\n setInputText(formatDateTimeLabel(draft, displayFmt))\n closePicker()\n }\n\n const handleCancel = () => {\n setDraft(value)\n closePicker()\n }\n\n const handleClear = () => {\n setDraft(null)\n }\n\n const handleCalendarChange = (d: Dayjs | null) => {\n if (!d) {\n setDraft(null)\n return\n }\n if (draft && draft.isValid()) {\n setDraft(stampDateTime(d, draft.hour(), draft.minute()))\n } else {\n // Fresh pick — keep current clock time so time section is not midnight-only.\n const now = dayjs()\n setDraft(stampDateTime(d, now.hour(), now.minute()))\n }\n }\n\n const handleClockChange = (v: Dayjs | null) => {\n if (!v) return\n const base = draft && draft.isValid() ? draft : dayjs()\n setDraft(stampDateTime(base, dayjs(v).hour(), dayjs(v).minute()))\n }\n\n const clockViews = ampm\n ? (['hours', 'minutes', 'meridiem'] as const)\n : (['hours', 'minutes'] as const)\n\n const placeholder = ampm ? 'MM/DD/YYYY hh:mm aa' : 'MM/DD/YYYY HH:mm'\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <Box sx={{ display: 'inline-flex', flexDirection: 'column', ...((sx as object) || {}) }}>\n <Box\n ref={(el: HTMLDivElement | null) => {\n anchorRef.current = el\n setAnchorEl(el)\n }}\n sx={{ display: 'inline-flex', minWidth: 260 }}\n >\n <TextField\n size=\"small\"\n fullWidth\n label={label}\n value={typingEnabled ? inputText : committedLabel}\n placeholder={placeholder}\n disabled={mergedDisabled}\n required={mergedRequired}\n error={mergedError}\n helperText={helperText}\n onClick={typingEnabled ? undefined : openPicker}\n onFocus={() => {\n if (typingEnabled) {\n setFieldFocused(true)\n } else {\n openPicker()\n }\n }}\n onBlur={() => {\n if (!typingEnabled) return\n setFieldFocused(false)\n if (skipCommitOnBlurRef.current) {\n skipCommitOnBlurRef.current = false\n setInputText(committedLabel)\n return\n }\n commitTypedInput()\n }}\n onChange={(e) => {\n if (!typingEnabled) return\n setInputText(e.target.value)\n }}\n onKeyDown={(e) => {\n if (!typingEnabled) return\n if (e.key === 'Enter') {\n e.preventDefault()\n ;(e.target as HTMLInputElement).blur()\n }\n if (e.key === 'Escape') {\n e.preventDefault()\n skipCommitOnBlurRef.current = true\n setInputText(committedLabel)\n ;(e.target as HTMLInputElement).blur()\n }\n }}\n inputProps={{\n readOnly: !typingEnabled,\n 'aria-label': label,\n 'data-testid': 'datetime-field',\n }}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n disabled={mergedDisabled}\n aria-label=\"Choose date and time\"\n title=\"Choose date and time\"\n {...(slotProps?.openPickerIcon as object)}\n onMouseDown={(e) => {\n // Keep focus in the field so blur does not race the open.\n e.preventDefault()\n }}\n onClick={(e) => {\n e.stopPropagation()\n if (open) closePicker()\n else openPicker()\n }}\n >\n <CalendarTodayIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n }}\n />\n </Box>\n\n <Popper\n open={open}\n anchorEl={anchorEl}\n placement=\"bottom-start\"\n style={{ zIndex: 1300 }}\n >\n <ClickAwayListener onClickAway={handleCancel}>\n <Paper\n elevation={0}\n sx={{\n mt: 1,\n borderRadius: '20px',\n background: 'var(--mui-palette-background-default)',\n border: 'solid 1px var(--mui-palette-border-1)',\n overflow: 'hidden',\n }}\n >\n <Box\n sx={{\n display: 'flex',\n flexDirection: { xs: 'column', sm: 'row' },\n alignItems: 'stretch',\n }}\n >\n <DateCalendar\n value={draft}\n onChange={handleCalendarChange}\n showDaysOutsideCurrentMonth\n />\n <Box\n sx={{\n px: 1,\n pt: 1,\n borderLeft: {\n sm: 'solid 1px var(--mui-palette-border-1)',\n },\n borderTop: {\n xs: 'solid 1px var(--mui-palette-border-1)',\n sm: 'none',\n },\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <MultiSectionDigitalClock\n ampm={ampm}\n value={draft}\n onChange={handleClockChange}\n views={[...clockViews]}\n />\n </Box>\n </Box>\n <DialogActions sx={{ px: 1.5, pb: 1, justifyContent: 'flex-end', gap: 0.5 }}>\n <IconButton data-testid=\"clear-action-button\" onClick={handleClear} title=\"clear\">\n <DeleteForeverIcon fontSize=\"small\" />\n </IconButton>\n <IconButton onClick={handleCancel} title=\"cancel\">\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n <IconButton onClick={handleAccept} title=\"accept\">\n <CheckIcon fontSize=\"small\" />\n </IconButton>\n </DialogActions>\n </Paper>\n </ClickAwayListener>\n </Popper>\n </Box>\n </LocalizationProvider>\n )\n}\n\nexport default MuiXDateTimePicker\n","'use client'\nimport React from 'react'\nimport dayjs, { type Dayjs } from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport { MultiSectionDigitalClock } from '@mui/x-date-pickers/MultiSectionDigitalClock'\nimport DialogActions from '@mui/material/DialogActions'\nimport InputAdornment from '@mui/material/InputAdornment'\nimport AccessTimeIcon from '@mui/icons-material/AccessTime'\n\nimport { Box } from '@/ele/Box'\nimport { Paper } from '@/ele/Paper'\nimport { Popper, ClickAwayListener } from '@/ele/Overlay'\nimport { IconButton } from '@/ele/Button'\nimport { TextField } from '@/ele/Input'\nimport {\n CheckIcon,\n ClearIcon,\n DeleteForeverIcon,\n} from '@/icons/MuiIcon'\n\ndayjs.extend(customParseFormat)\n\n/** Display / default parse format — 12h with am/pm (matches prior MUI Time field). */\nconst DISPLAY_TIME_FMT = 'hh:mm a'\n\n\nexport type MuiXTimePickerProps = {\n /** Controlled value (Dayjs, Date, or null). Prefer this in forms/stories. */\n value?: Dayjs | Date | string | null\n /** Uncontrolled initial value when `value` is omitted. */\n defaultValue?: Dayjs | Date | string | null\n /**\n * Called with Dayjs | null (same shape as MUI TimePicker) so UseForm TimeField\n * can keep using `d?.toDate?.()`.\n */\n onChange?: (value: Dayjs | null) => void\n label?: string\n disabled?: boolean\n /** 12h + am/pm when true (default). When false, display/parse as `HH:mm`. */\n ampm?: boolean\n /** Override display format (default `hh:mm a` or `HH:mm` when ampm=false). */\n format?: string\n /** Optional sx for the outer field wrapper. */\n sx?: React.ComponentProps<typeof Box>['sx']\n /**\n * When true, the trigger field stays read-only (clock-only).\n * Default false — user can type a time string and commit on blur/Enter.\n */\n disableTyping?: boolean\n /**\n * Legacy passthrough kept for UseForm slotProps compatibility.\n * `textField` bits are applied to the trigger field.\n */\n slotProps?: {\n textField?: Record<string, unknown>\n openPickerIcon?: Record<string, unknown>\n actionBar?: Record<string, unknown>\n }\n}\n\nconst toDayjs = (v: Dayjs | Date | string | null | undefined): Dayjs | null => {\n if (v == null || v === '') return null\n const d = dayjs(v)\n return d.isValid() ? d : null\n}\n\nconst formatTimeLabel = (v: Dayjs | null, fmt: string): string =>\n v && v.isValid() ? v.format(fmt) : ''\n\nconst MERIDIEM_PARSE_FORMATS = [\n 'hh:mm a',\n 'h:mm a',\n 'hh:mma',\n 'h:mma',\n 'hh:mm A',\n 'h:mm A',\n 'hh:mmA',\n 'h:mmA',\n] as const\n\nconst stampTime = (anchor: Dayjs | null, hour: number, minute: number): Dayjs => {\n const base = anchor && anchor.isValid() ? anchor : dayjs()\n return base.hour(hour).minute(minute).second(0).millisecond(0)\n}\n\n/**\n * Parse typed time text into a Dayjs (keeps calendar day from `anchor` when set).\n * Returns `null` for empty clear; `'invalid'` when unparseable (caller reverts).\n *\n * Order: meridiem strings → 24h when hour > 12 (or 00) → bare h:mm with anchor\n * period (else AM).\n */\nconst parseTimeInput = (\n raw: string,\n opts: { ampm: boolean; anchor: Dayjs | null },\n): Dayjs | null | 'invalid' => {\n const trimmed = raw.trim()\n if (!trimmed) return null\n\n // Normalize compact am/pm: \"4:15pm\" / \"04:15PM\" → spaced for dayjs formats.\n const normalized = trimmed\n .replace(/\\s+/g, ' ')\n .replace(/(\\d)\\s*([ap])\\.?m\\.?$/i, (_, d, p) => `${d} ${p.toLowerCase()}m`)\n\n // 1) Explicit am/pm (always accepted).\n for (const fmt of MERIDIEM_PARSE_FORMATS) {\n const d = dayjs(normalized, fmt, true)\n if (d.isValid()) return stampTime(opts.anchor, d.hour(), d.minute())\n }\n\n // 2) Plain hour:minute — decide 24h vs 12h+anchor.\n const bare = normalized.match(/^(\\d{1,2})\\s*:\\s*(\\d{2})$/)\n if (bare) {\n const hour = Number(bare[1])\n const minute = Number(bare[2])\n if (minute > 59 || hour > 23) return 'invalid'\n\n // Clear 24h: hour > 12, or 00:mm midnight, or ampm=false mode.\n if (!opts.ampm || hour > 12 || (hour === 0 && bare[1].length === 2)) {\n return stampTime(opts.anchor, hour, minute)\n }\n\n // Ambiguous 1–12: keep existing period when editing, else AM.\n let h12 = hour % 12 // 12 → 0 (midnight/noon base)\n if (opts.anchor && opts.anchor.isValid() && opts.anchor.hour() >= 12) {\n h12 += 12\n }\n // hour === 12 with no anchor → noon (12), not midnight: special-case.\n if (hour === 12 && !(opts.anchor && opts.anchor.isValid())) {\n h12 = 12\n } else if (hour === 12 && opts.anchor && opts.anchor.isValid()) {\n h12 = opts.anchor.hour() >= 12 ? 12 : 0\n }\n return stampTime(opts.anchor, h12, minute)\n }\n\n // 3) Strict 24h formats as last resort (e.g. \"16:15\" already handled above).\n for (const fmt of ['HH:mm', 'H:mm'] as const) {\n const d = dayjs(normalized, fmt, true)\n if (d.isValid()) return stampTime(opts.anchor, d.hour(), d.minute())\n }\n\n return 'invalid'\n}\n\n/**\n * Soft/quiet TimePicker with a typeable trigger field.\n *\n * Trigger text is editable by default (commit on blur/Enter). Clock icon opens\n * the multi-section digital clock popover; focusing/typing the field does not.\n * Pass `disableTyping` for read-only clock-only mode.\n *\n * Invalid typed input (e.g. `04:15 aa`) reverts to the last committed label.\n * Escape cancels the edit without committing.\n */\nexport const MuiXTimePicker: React.FC<MuiXTimePickerProps> = ({\n value: valueProp,\n defaultValue,\n onChange,\n label = 'Pick a time',\n disabled,\n ampm = true,\n format: formatProp,\n sx,\n disableTyping = false,\n slotProps,\n}) => {\n const displayFmt = formatProp ?? (ampm ? DISPLAY_TIME_FMT : 'HH:mm')\n\n const isControlled = valueProp !== undefined\n const [uncontrolled, setUncontrolled] = React.useState<Dayjs | null>(() =>\n toDayjs(defaultValue),\n )\n const value = isControlled ? toDayjs(valueProp) : uncontrolled\n\n const [open, setOpen] = React.useState(false)\n const [draft, setDraft] = React.useState<Dayjs | null>(value)\n\n const committedLabel = formatTimeLabel(value, displayFmt)\n const [inputText, setInputText] = React.useState(committedLabel)\n const [fieldFocused, setFieldFocused] = React.useState(false)\n const typingEnabled = !disableTyping\n const skipCommitOnBlurRef = React.useRef(false)\n\n const anchorRef = React.useRef<HTMLDivElement | null>(null)\n const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null)\n\n const tf = (slotProps?.textField ?? {}) as Record<string, unknown>\n const mergedDisabled = disabled ?? (tf.disabled as boolean | undefined)\n const mergedRequired = Boolean(tf.required)\n const mergedError = Boolean(tf.error)\n const helperText = tf.helperText as React.ReactNode | undefined\n\n const commit = (next: Dayjs | null) => {\n if (!isControlled) setUncontrolled(next)\n onChange?.(next)\n return next\n }\n\n // Sync display text from committed value when not actively typing.\n React.useEffect(() => {\n if (!fieldFocused) setInputText(committedLabel)\n }, [committedLabel, fieldFocused])\n\n const commitTypedInput = () => {\n if (!typingEnabled) return\n const parsed = parseTimeInput(inputText, { ampm, anchor: value })\n if (parsed === 'invalid') {\n setInputText(committedLabel)\n return\n }\n const next = commit(parsed)\n setDraft(next)\n setInputText(formatTimeLabel(next, displayFmt))\n }\n\n const openPicker = () => {\n if (mergedDisabled) return\n setDraft(value)\n setOpen(true)\n }\n\n const closePicker = () => {\n setOpen(false)\n }\n\n const handleAccept = () => {\n commit(draft)\n setInputText(formatTimeLabel(draft, displayFmt))\n closePicker()\n }\n\n const handleCancel = () => {\n setDraft(value)\n closePicker()\n }\n\n const handleClear = () => {\n setDraft(null)\n }\n\n const clockViews = ampm\n ? (['hours', 'minutes', 'meridiem'] as const)\n : (['hours', 'minutes'] as const)\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <Box sx={{ display: 'inline-flex', flexDirection: 'column', ...((sx as object) || {}) }}>\n <Box\n ref={(el: HTMLDivElement | null) => {\n anchorRef.current = el\n setAnchorEl(el)\n }}\n sx={{ display: 'inline-flex', minWidth: 200 }}\n >\n <TextField\n size=\"small\"\n fullWidth\n label={label}\n value={typingEnabled ? inputText : committedLabel}\n placeholder={ampm ? 'hh:mm aa' : 'HH:mm'}\n disabled={mergedDisabled}\n required={mergedRequired}\n error={mergedError}\n helperText={helperText}\n onClick={typingEnabled ? undefined : openPicker}\n onFocus={() => {\n if (typingEnabled) {\n setFieldFocused(true)\n } else {\n openPicker()\n }\n }}\n onBlur={() => {\n if (!typingEnabled) return\n setFieldFocused(false)\n if (skipCommitOnBlurRef.current) {\n skipCommitOnBlurRef.current = false\n setInputText(committedLabel)\n return\n }\n commitTypedInput()\n }}\n onChange={(e) => {\n if (!typingEnabled) return\n setInputText(e.target.value)\n }}\n onKeyDown={(e) => {\n if (!typingEnabled) return\n if (e.key === 'Enter') {\n e.preventDefault()\n ;(e.target as HTMLInputElement).blur()\n }\n if (e.key === 'Escape') {\n e.preventDefault()\n skipCommitOnBlurRef.current = true\n setInputText(committedLabel)\n ;(e.target as HTMLInputElement).blur()\n }\n }}\n inputProps={{\n readOnly: !typingEnabled,\n 'aria-label': label,\n 'data-testid': 'time-field',\n }}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n disabled={mergedDisabled}\n aria-label=\"Choose time\"\n title=\"Choose time\"\n {...(slotProps?.openPickerIcon as object)}\n onMouseDown={(e) => {\n // Keep focus in the field so blur does not race the open.\n e.preventDefault()\n }}\n onClick={(e) => {\n e.stopPropagation()\n if (open) closePicker()\n else openPicker()\n }}\n >\n <AccessTimeIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n }}\n />\n </Box>\n\n <Popper\n open={open}\n anchorEl={anchorEl}\n placement=\"bottom-start\"\n style={{ zIndex: 1300 }}\n >\n <ClickAwayListener onClickAway={handleCancel}>\n <Paper\n elevation={0}\n sx={{\n mt: 1,\n borderRadius: '20px',\n background: 'var(--mui-palette-background-default)',\n border: 'solid 1px var(--mui-palette-border-1)',\n overflow: 'hidden',\n }}\n >\n <Box sx={{ px: 1, pt: 1 }}>\n <MultiSectionDigitalClock\n ampm={ampm}\n value={draft}\n onChange={(v) => setDraft(v ? dayjs(v as Dayjs) : null)}\n views={[...clockViews]}\n />\n </Box>\n <DialogActions sx={{ px: 1.5, pb: 1, justifyContent: 'flex-end', gap: 0.5 }}>\n <IconButton data-testid=\"clear-action-button\" onClick={handleClear} title=\"clear\">\n <DeleteForeverIcon fontSize=\"small\" />\n </IconButton>\n <IconButton onClick={handleCancel} title=\"cancel\">\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n <IconButton onClick={handleAccept} title=\"accept\">\n <CheckIcon fontSize=\"small\" />\n </IconButton>\n </DialogActions>\n </Paper>\n </ClickAwayListener>\n </Popper>\n </Box>\n </LocalizationProvider>\n )\n}\n\nexport default MuiXTimePicker","'use client'\nimport React from 'react'\nimport dayjs, { type Dayjs } from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport { DateCalendar } from '@mui/x-date-pickers/DateCalendar'\nimport { PickersDay, type PickersDayProps } from '@mui/x-date-pickers/PickersDay'\nimport DialogActions from '@mui/material/DialogActions'\nimport InputAdornment from '@mui/material/InputAdornment'\n\nimport { Box } from '@/ele/Box'\nimport { Paper } from '@/ele/Paper'\nimport { Popper, ClickAwayListener } from '@/ele/Overlay'\nimport { IconButton } from '@/ele/Button'\nimport { TextField } from '@/ele/Input'\nimport { Chip } from '@/ele/Chip'\nimport {\n CheckIcon,\n ClearIcon,\n DeleteForeverIcon,\n CalendarTodayIcon,\n NavigateBeforeIcon,\n NavigateNextIcon,\n} from '@/icons/MuiIcon'\n\ndayjs.extend(customParseFormat)\n\nexport type DateRangeValue = {\n start: Date | null\n end: Date | null\n}\n\nexport type MuiXDateRangePickerProps = {\n /** Controlled value. Prefer this in forms/stories. */\n value?: DateRangeValue\n /** Uncontrolled initial value when `value` is omitted. */\n defaultValue?: DateRangeValue\n onChange?: (value: DateRangeValue) => void\n /** Combined field label (defaults to start/end labels joined). */\n label?: string\n startLabel?: string\n endLabel?: string\n disabled?: boolean\n /** Optional sx for the outer field wrapper. */\n sx?: React.ComponentProps<typeof Box>['sx']\n /**\n * Show the Trip.com-style endorsement chip when both ends are set.\n * Defaults to true (chip appears once start + end are non-null).\n * Pass false to hide entirely.\n */\n showEndorsement?: boolean\n /**\n * Custom chip label. String always shows that text when both ends are set.\n * Function receives `{ start, end }` and may return `string | null` (`null` hides).\n * When omitted, uses the built-in night/day formatter (`endorsementUnit`).\n */\n endorsement?: string | ((range: { start: Date; end: Date }) => string | null)\n /**\n * Unit for the default formatter.\n * - `nights` (default): `end.diff(start, 'day')` -> \"N night(s)\" (hotel-style)\n * - `days`: `end.diff(start, 'day') + 1` -> \"N day(s)\" (inclusive calendar days)\n */\n endorsementUnit?: 'nights' | 'days'\n /**\n * Legacy passthrough kept for UseForm slotProps compatibility.\n * `start` / `end` textField bits are lightly applied to the single trigger field.\n */\n slotProps?: {\n start?: { slotProps?: { textField?: Record<string, unknown> }; disabled?: boolean }\n end?: { slotProps?: { textField?: Record<string, unknown> }; disabled?: boolean }\n }\n /**\n * When true, the trigger field stays read-only (calendar-only).\n * Default false — user can type a range string and commit on blur/Enter.\n */\n disableTyping?: boolean\n}\n\nconst EMPTY: DateRangeValue = { start: null, end: null }\n\nconst toDayjs = (d: Date | null | undefined): Dayjs | null => (d ? dayjs(d) : null)\n\nconst toDate = (d: Dayjs | null): Date | null => {\n if (!d) return null\n return typeof d.toDate === 'function' ? d.toDate() : (d as unknown as Date)\n}\n\nconst orderRange = (next: DateRangeValue): DateRangeValue => {\n if (next.start && next.end && next.start.getTime() > next.end.getTime()) {\n return { start: next.end, end: next.start }\n }\n return next\n}\n\nconst DISPLAY_DATE_FMT = 'MMM D, YYYY'\n\nconst formatDay = (d: Date | null): string => (d ? dayjs(d).format(DISPLAY_DATE_FMT) : '')\n\nconst formatRangeLabel = (v: DateRangeValue, startLabel: string, endLabel: string): string => {\n const s = formatDay(v.start)\n const e = formatDay(v.end)\n if (s && e) return `${s} – ${e}`\n if (s) return `${s} – ${endLabel}`\n if (e) return `${startLabel} – ${e}`\n return ''\n}\n\n/** Formats tried (strict) then a loose dayjs parse. */\nconst DATE_PARSE_FORMATS = [\n DISPLAY_DATE_FMT,\n 'YYYY-MM-DD',\n 'M/D/YYYY',\n 'MM/DD/YYYY',\n 'D MMM YYYY',\n 'MMM D YYYY',\n 'YYYY/MM/DD',\n] as const\n\nconst parseOneDate = (raw: string): Date | null | 'invalid' => {\n const t = raw.trim()\n if (!t) return null\n for (const fmt of DATE_PARSE_FORMATS) {\n const d = dayjs(t, fmt, true)\n if (d.isValid()) return d.startOf('day').toDate()\n }\n const loose = dayjs(t)\n if (loose.isValid()) return loose.startOf('day').toDate()\n return 'invalid'\n}\n\n/**\n * Split typed range into halves. Prefer en-dash (display), then ` to `,\n * spaced hyphen / slash, then ISO/ISO with bare slash.\n */\nconst splitRangeHalves = (raw: string): [string, string] | null => {\n const s = raw.trim()\n if (!s) return null\n\n if (s.includes('–')) {\n const i = s.indexOf('–')\n return [s.slice(0, i), s.slice(i + '–'.length)]\n }\n\n const toParts = s.split(/\\s+to\\s+/i)\n if (toParts.length === 2) return [toParts[0], toParts[1]]\n\n for (const sep of [' - ', ' / ']) {\n if (s.includes(sep)) {\n const i = s.indexOf(sep)\n return [s.slice(0, i), s.slice(i + sep.length)]\n }\n }\n\n const isoSlash = s.match(/^(\\d{4}-\\d{2}-\\d{2})\\s*\\/\\s*(\\d{4}-\\d{2}-\\d{2})$/)\n if (isoSlash) return [isoSlash[1], isoSlash[2]]\n\n // Bare hyphen between two ISO dates only (avoids eating MMM D, YYYY hyphens).\n const isoHyphen = s.match(/^(\\d{4}-\\d{2}-\\d{2})\\s*-\\s*(\\d{4}-\\d{2}-\\d{2})$/)\n if (isoHyphen) return [isoHyphen[1], isoHyphen[2]]\n\n return null\n}\n\nconst isLabelPlaceholder = (part: string, label: string) => {\n const t = part.trim()\n return !t || t.toLowerCase() === label.trim().toLowerCase()\n}\n\n/**\n * Parse typed range text into `{ start, end }`.\n * Returns `null` when the string cannot be parsed (caller should revert).\n * Empty input clears to both-null. Partial halves may be null.\n */\nconst parseRangeInput = (\n raw: string,\n startLabel: string,\n endLabel: string,\n): DateRangeValue | null => {\n const trimmed = raw.trim()\n if (!trimmed) return EMPTY\n\n const halves = splitRangeHalves(trimmed)\n if (!halves) {\n if (isLabelPlaceholder(trimmed, startLabel) || isLabelPlaceholder(trimmed, endLabel)) {\n return EMPTY\n }\n const one = parseOneDate(trimmed)\n if (one === 'invalid') return null\n return { start: one, end: null }\n }\n\n const [a, b] = halves\n let start: Date | null\n let end: Date | null\n\n if (isLabelPlaceholder(a, startLabel)) {\n start = null\n } else {\n const p = parseOneDate(a)\n if (p === 'invalid') return null\n start = p\n }\n\n if (isLabelPlaceholder(b, endLabel)) {\n end = null\n } else {\n const p = parseOneDate(b)\n if (p === 'invalid') return null\n end = p\n }\n\n return orderRange({ start, end })\n}\n\n/** Hotel nights = exclusive day diff; inclusive days = nights + 1. */\nconst formatDefaultEndorsement = (\n start: Date,\n end: Date,\n unit: 'nights' | 'days' = 'nights',\n): string => {\n const nights = Math.max(0, dayjs(end).startOf('day').diff(dayjs(start).startOf('day'), 'day'))\n if (unit === 'days') {\n const days = nights + 1\n return days === 1 ? '1 day' : `${days} days`\n }\n return nights === 1 ? '1 night' : `${nights} nights`\n}\n\n/**\n * Resolve chip label. Requires both ends (for default + custom string/fn).\n * `showEndorsement === false` always hides; otherwise default/custom rules apply.\n */\nconst resolveEndorsementLabel = (\n start: Date | null,\n end: Date | null,\n showEndorsement: boolean | undefined,\n endorsement: MuiXDateRangePickerProps['endorsement'],\n endorsementUnit: 'nights' | 'days' = 'nights',\n): string | null => {\n if (!start || !end) return null\n if (showEndorsement === false) return null\n if (typeof endorsement === 'string') return endorsement\n if (typeof endorsement === 'function') return endorsement({ start, end })\n return formatDefaultEndorsement(start, end, endorsementUnit)\n}\n\nconst endorsementChipSx = {\n height: 22,\n mr: 0.5,\n maxWidth: 140,\n borderColor: 'var(--mui-palette-border-1)',\n backgroundColor: 'var(--mui-palette-focus-1)',\n color: 'text.secondary',\n fontWeight: 500,\n fontSize: '0.75rem',\n '& .MuiChip-label': { px: 1, overflow: 'hidden', textOverflow: 'ellipsis' },\n} as const\n\ntype RangeDayProps = PickersDayProps & {\n rangeStart: Dayjs | null\n rangeEnd: Dayjs | null\n hoverDay: Dayjs | null\n}\n\nconst dayStart = (d: Dayjs) => d.startOf('day')\n\nconst isSameDay = (a: Dayjs | null, b: Dayjs | null) => !!(a && b && a.isSame(b, 'day'))\n\nconst isBetween = (day: Dayjs, start: Dayjs, end: Dayjs) => {\n const t = dayStart(day).valueOf()\n const a = dayStart(start).valueOf()\n const b = dayStart(end).valueOf()\n const lo = Math.min(a, b)\n const hi = Math.max(a, b)\n return t > lo && t < hi\n}\n\n/**\n * Shared range wash for hover-preview AND committed selection.\n * Resting fill is always focus-1 (bridge + endpoints) so drag preview and\n * stable selection never hue-shift. Endpoints only add weight.\n * CSS :hover / hoverDay may intensify to focus-1-hover on the single cell\n * under the cursor — never as a resting endpoint fill (that caused the flip).\n * Kill MUI focus / Mui-selected cream primary overrides.\n */\nconst RANGE_TEXT = 'var(--mui-palette-error-main)'\nconst RANGE_FILL = 'var(--mui-palette-focus-1)'\nconst RANGE_FILL_HOVER = 'var(--mui-palette-focus-1-hover)'\nconst RANGE_QUIET_BORDER = 'var(--mui-palette-border-1)'\n\nconst rangeDayFillSx = (isEndpoint: boolean, isHoveredCell: boolean) => ({\n color: RANGE_TEXT,\n // Hovered cell (preview end under cursor) gets the stronger wash; others stay focus-1.\n backgroundColor: isHoveredCell ? RANGE_FILL_HOVER : RANGE_FILL,\n fontWeight: isEndpoint ? 600 : undefined,\n // Soft quiet ring on the day under cursor — readable, no cream primary.\n ...(isHoveredCell\n ? {\n boxShadow: `inset 0 0 0 1px ${RANGE_QUIET_BORDER}`,\n }\n : {}),\n // Per-cell :hover intensify only; focus/selected stay on shared tokens (no primary cream).\n '&:hover': {\n color: RANGE_TEXT,\n backgroundColor: RANGE_FILL_HOVER,\n },\n '&:focus, &.Mui-focusVisible': {\n color: RANGE_TEXT,\n backgroundColor: isHoveredCell ? RANGE_FILL_HOVER : RANGE_FILL,\n },\n '&.Mui-selected, &.Mui-selected:hover, &.Mui-selected:focus': {\n color: RANGE_TEXT,\n backgroundColor: isHoveredCell ? RANGE_FILL_HOVER : RANGE_FILL,\n fontWeight: isEndpoint ? 600 : undefined,\n },\n})\n\nconst RangeDay = React.forwardRef<HTMLButtonElement, RangeDayProps>(function RangeDay(props, ref) {\n const { rangeStart, rangeEnd, hoverDay, day, outsideCurrentMonth, sx, ...other } = props\n const current = dayjs(day as Dayjs)\n\n // One preview/committed geometry: hover end while selecting, else committed end.\n const previewEnd =\n rangeStart && !rangeEnd && hoverDay ? hoverDay : rangeEnd\n\n const isStart = isSameDay(current, rangeStart)\n const isEnd = isSameDay(current, previewEnd) && !!(rangeEnd || (rangeStart && hoverDay))\n const inBridge =\n !!rangeStart &&\n !!previewEnd &&\n isBetween(current, rangeStart, previewEnd)\n\n const isEndpoint = isStart || isEnd\n const showRange = isEndpoint || inBridge\n // Extra affordance for the cell under the pointer (preview tracking via hoverDay).\n const isHoveredCell = !!hoverDay && isSameDay(current, hoverDay) && !outsideCurrentMonth\n\n // Continuous wash: square off the side that faces the bridge.\n let radius: string | number = '50%'\n if (isStart && isEnd) {\n radius = '50%'\n } else if (isStart && previewEnd) {\n radius = '50% 0 0 50%'\n } else if (isEnd && rangeStart) {\n radius = '0 50% 50% 0'\n } else if (inBridge) {\n radius = 0\n }\n\n return (\n <PickersDay\n {...other}\n ref={ref}\n day={day}\n outsideCurrentMonth={outsideCurrentMonth}\n selected={false}\n autoFocus={false}\n disableMargin\n sx={[\n {\n fontSize: '0.8125rem',\n // Soft hover for ordinary (non-range) days — quiet focus wash, not primary cream.\n ...(!showRange && !outsideCurrentMonth\n ? {\n '&:hover': {\n backgroundColor: RANGE_FILL,\n },\n }\n : {}),\n ...(showRange && !outsideCurrentMonth\n ? {\n borderRadius: radius,\n ...rangeDayFillSx(isEndpoint, isHoveredCell),\n }\n : {}),\n },\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ]}\n />\n )\n})\n\n/** Match small IconButton width so month labels stay centered in each pane. */\nconst NAV_BTN_SLOT_PX = 30\n\n/**\n * Soft month+year label centered over a calendar pane (booking-style).\n * Custom header replaces MUI PickersCalendarHeader so labels never depend on\n * ArrowSwitcher / switch-view internals.\n */\nconst monthPaneLabelSx = {\n flex: 1,\n textAlign: 'center' as const,\n typography: 'body1',\n fontWeight: 500,\n lineHeight: '40px',\n userSelect: 'none' as const,\n color: 'text.primary',\n}\n\nconst navBtnSlotSx = {\n width: NAV_BTN_SLOT_PX,\n flexShrink: 0,\n}\n\n/** Hide MUI built-in calendar header (we render Prev / labels / Next ourselves). */\nconst NullCalendarHeader = () => null\n\n/**\n * Free (non-Pro) date range: single field + dual-month booking calendar popover.\n *\n * Value shape: `{ start: Date | null; end: Date | null }` — null halves are OK.\n * When both halves are set and start > end, they are swapped so the range is\n * always ordered (start ≤ end).\n *\n * Trigger text is editable by default (commit on blur/Enter). Calendar icon\n * opens the popover; focusing/typing the field does not. Pass `disableTyping`\n * for read-only calendar-only mode.\n */\nexport const MuiXDateRangePicker: React.FC<MuiXDateRangePickerProps> = ({\n value: valueProp,\n defaultValue,\n onChange,\n label,\n startLabel = 'Start',\n endLabel = 'End',\n disabled,\n showEndorsement,\n endorsement,\n endorsementUnit = 'nights',\n slotProps,\n sx,\n disableTyping = false,\n}) => {\n const isControlled = valueProp !== undefined\n const [uncontrolled, setUncontrolled] = React.useState<DateRangeValue>(\n defaultValue ?? EMPTY,\n )\n const value = isControlled ? (valueProp ?? EMPTY) : uncontrolled\n\n const [open, setOpen] = React.useState(false)\n const [draft, setDraft] = React.useState<DateRangeValue>(value)\n const [selectingEnd, setSelectingEnd] = React.useState(false)\n const [hoverDay, setHoverDay] = React.useState<Dayjs | null>(null)\n const [leftMonth, setLeftMonth] = React.useState<Dayjs>(() =>\n toDayjs(value.start) ?? toDayjs(value.end) ?? dayjs().startOf('month'),\n )\n\n const committedLabel = formatRangeLabel(value, startLabel, endLabel)\n const [inputText, setInputText] = React.useState(committedLabel)\n const [fieldFocused, setFieldFocused] = React.useState(false)\n const typingEnabled = !disableTyping\n const skipCommitOnBlurRef = React.useRef(false)\n\n const anchorRef = React.useRef<HTMLDivElement | null>(null)\n const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null)\n\n const fieldLabel = label ?? `${startLabel} – ${endLabel}`\n\n const startTf = (slotProps?.start?.slotProps?.textField ?? {}) as Record<string, unknown>\n const endTf = (slotProps?.end?.slotProps?.textField ?? {}) as Record<string, unknown>\n const mergedDisabled =\n disabled ??\n (slotProps?.start?.disabled as boolean | undefined) ??\n (slotProps?.end?.disabled as boolean | undefined) ??\n (startTf.disabled as boolean | undefined) ??\n (endTf.disabled as boolean | undefined)\n const mergedRequired = Boolean(startTf.required || endTf.required)\n const mergedError = Boolean(startTf.error || endTf.error)\n\n const commit = (next: DateRangeValue) => {\n const ordered = orderRange(next)\n if (!isControlled) setUncontrolled(ordered)\n onChange?.(ordered)\n return ordered\n }\n\n // Sync display text from committed value when not actively typing.\n React.useEffect(() => {\n if (!fieldFocused) setInputText(committedLabel)\n }, [committedLabel, fieldFocused])\n\n const commitTypedInput = () => {\n if (!typingEnabled) return\n const parsed = parseRangeInput(inputText, startLabel, endLabel)\n if (parsed === null) {\n setInputText(committedLabel)\n return\n }\n const ordered = commit(parsed)\n setDraft(ordered)\n setSelectingEnd(Boolean(ordered.start && !ordered.end))\n setInputText(formatRangeLabel(ordered, startLabel, endLabel))\n }\n\n const openPicker = () => {\n if (mergedDisabled) return\n setDraft(value)\n setSelectingEnd(Boolean(value.start && !value.end))\n setHoverDay(null)\n setLeftMonth(toDayjs(value.start) ?? toDayjs(value.end) ?? dayjs().startOf('month'))\n setOpen(true)\n }\n\n const closePicker = () => {\n setOpen(false)\n setHoverDay(null)\n }\n\n const handleAccept = () => {\n commit(draft)\n closePicker()\n }\n\n const handleCancel = () => {\n setDraft(value)\n closePicker()\n }\n\n const handleClear = () => {\n setDraft(EMPTY)\n setSelectingEnd(false)\n setHoverDay(null)\n }\n\n const handleDayClick = (day: Dayjs | null) => {\n if (!day) return\n const picked = toDate(day)\n if (!selectingEnd || !draft.start) {\n setDraft({ start: picked, end: null })\n setSelectingEnd(true)\n setHoverDay(null)\n return\n }\n // Second click — complete range (orderRange handles reverse picks).\n setDraft(orderRange({ start: draft.start, end: picked }))\n setSelectingEnd(false)\n setHoverDay(null)\n }\n\n const shiftMonths = (delta: number) => {\n setLeftMonth((m) => m.add(delta, 'month').startOf('month'))\n }\n\n const rangeStart = toDayjs(draft.start)\n const rangeEnd = toDayjs(draft.end)\n\n const DaySlot = React.useCallback(\n (dayProps: PickersDayProps) => (\n <RangeDay\n {...dayProps}\n rangeStart={rangeStart}\n rangeEnd={rangeEnd}\n hoverDay={selectingEnd ? hoverDay : null}\n onMouseEnter={(event, d) => {\n dayProps.onMouseEnter?.(event, d)\n if (selectingEnd) setHoverDay(dayjs(d as Dayjs))\n }}\n onDaySelect={(d) => {\n handleDayClick(dayjs(d as Dayjs))\n }}\n />\n ),\n // handleDayClick closes over draft/selectingEnd; recreate when those change.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [rangeStart, rangeEnd, selectingEnd, hoverDay, draft.start],\n )\n\n const rightMonth = leftMonth.add(1, 'month')\n\n // Chip range: when open use draft (+ hover preview while picking end); else committed value.\n const endorsementStart = open ? draft.start : value.start\n const endorsementEnd = open\n ? selectingEnd && draft.start && hoverDay\n ? toDate(hoverDay)\n : selectingEnd\n ? null\n : draft.end\n : value.end\n const endorsementLabel = resolveEndorsementLabel(\n endorsementStart,\n endorsementEnd,\n showEndorsement,\n endorsement,\n endorsementUnit,\n )\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <Box sx={{ display: 'inline-flex', flexDirection: 'column', ...((sx as object) || {}) }}>\n <Box\n ref={(el: HTMLDivElement | null) => {\n anchorRef.current = el\n setAnchorEl(el)\n }}\n sx={{ display: 'inline-flex', minWidth: 280 }}\n >\n <TextField\n size=\"small\"\n fullWidth\n label={fieldLabel}\n value={typingEnabled ? inputText : committedLabel}\n placeholder={`${startLabel} – ${endLabel}`}\n disabled={mergedDisabled}\n required={mergedRequired}\n error={mergedError}\n onClick={typingEnabled ? undefined : openPicker}\n onFocus={() => {\n if (typingEnabled) {\n setFieldFocused(true)\n } else {\n openPicker()\n }\n }}\n onBlur={() => {\n if (!typingEnabled) return\n setFieldFocused(false)\n if (skipCommitOnBlurRef.current) {\n skipCommitOnBlurRef.current = false\n setInputText(committedLabel)\n return\n }\n commitTypedInput()\n }}\n onChange={(e) => {\n if (!typingEnabled) return\n setInputText(e.target.value)\n }}\n onKeyDown={(e) => {\n if (!typingEnabled) return\n if (e.key === 'Enter') {\n e.preventDefault()\n ;(e.target as HTMLInputElement).blur()\n }\n if (e.key === 'Escape') {\n e.preventDefault()\n skipCommitOnBlurRef.current = true\n setInputText(committedLabel)\n ;(e.target as HTMLInputElement).blur()\n }\n }}\n inputProps={{\n readOnly: !typingEnabled,\n 'aria-label': fieldLabel,\n 'data-testid': 'date-range-field',\n }}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\" sx={{ gap: 0.25 }}>\n {endorsementLabel ? (\n <Box\n component=\"span\"\n onMouseDown={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onClick={(e) => {\n e.stopPropagation()\n openPicker()\n }}\n sx={{ display: 'inline-flex', cursor: 'pointer' }}\n >\n <Chip\n size=\"small\"\n variant=\"outlined\"\n label={endorsementLabel}\n data-testid=\"date-range-endorsement\"\n aria-label={endorsementLabel}\n sx={endorsementChipSx}\n />\n </Box>\n ) : null}\n <IconButton\n size=\"small\"\n disabled={mergedDisabled}\n onClick={(e) => {\n e.stopPropagation()\n if (open) closePicker()\n else openPicker()\n }}\n aria-label=\"Choose date range\"\n title=\"Choose date range\"\n >\n <CalendarTodayIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n }}\n />\n </Box>\n\n <Popper\n open={open}\n anchorEl={anchorEl}\n placement=\"bottom-start\"\n style={{ zIndex: 1300 }}\n >\n <ClickAwayListener onClickAway={handleCancel}>\n <Paper\n elevation={0}\n sx={{\n mt: 1,\n borderRadius: '20px',\n background: 'var(--mui-palette-background-default)',\n border: 'solid 1px var(--mui-palette-border-1)',\n overflow: 'hidden',\n }}\n >\n <Box\n sx={{\n display: 'flex',\n alignItems: 'stretch',\n gap: 0,\n px: 1,\n pt: 1,\n flexWrap: { xs: 'wrap', sm: 'nowrap' },\n }}\n >\n <Box sx={{ width: 300 }}>\n {/*\n Custom dual-month chrome: Prev far left of popover, month label\n centered over this pane, spacer balances Next on the right pane.\n MUI calendarHeader is nulled so built-in arrows/labels never compete.\n */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n minHeight: 40,\n px: 0.5,\n }}\n >\n <IconButton\n size=\"small\"\n onClick={() => shiftMonths(-1)}\n aria-label=\"Previous month\"\n title=\"Previous month\"\n >\n <NavigateBeforeIcon fontSize=\"small\" />\n </IconButton>\n <Box sx={monthPaneLabelSx} aria-live=\"polite\">\n {leftMonth.format('MMMM YYYY')}\n </Box>\n <Box sx={navBtnSlotSx} aria-hidden />\n </Box>\n {/*\n referenceDate only seeds the initial month (useCalendarState reducer\n init). Remount via key so shiftMonths actually changes the view.\n */}\n <DateCalendar\n key={leftMonth.format('YYYY-MM')}\n value={null}\n referenceDate={leftMonth}\n onMonthChange={(m) => setLeftMonth(dayjs(m as Dayjs).startOf('month'))}\n showDaysOutsideCurrentMonth\n slots={{ day: DaySlot, calendarHeader: NullCalendarHeader }}\n sx={{ width: 300 }}\n />\n </Box>\n <Box\n sx={{\n width: '1px',\n alignSelf: 'stretch',\n bgcolor: 'var(--mui-palette-border-1)',\n display: { xs: 'none', sm: 'block' },\n }}\n />\n <Box sx={{ width: 300 }}>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n minHeight: 40,\n px: 0.5,\n }}\n >\n <Box sx={navBtnSlotSx} aria-hidden />\n <Box sx={monthPaneLabelSx} aria-live=\"polite\">\n {rightMonth.format('MMMM YYYY')}\n </Box>\n <IconButton\n size=\"small\"\n onClick={() => shiftMonths(1)}\n aria-label=\"Next month\"\n title=\"Next month\"\n >\n <NavigateNextIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n <DateCalendar\n key={rightMonth.format('YYYY-MM')}\n value={null}\n referenceDate={rightMonth}\n onMonthChange={(m) =>\n setLeftMonth(dayjs(m as Dayjs).subtract(1, 'month').startOf('month'))\n }\n showDaysOutsideCurrentMonth\n slots={{ day: DaySlot, calendarHeader: NullCalendarHeader }}\n sx={{ width: 300 }}\n />\n </Box>\n </Box>\n\n <DialogActions sx={{ px: 1.5, pb: 1, justifyContent: 'flex-end', gap: 0.5 }}>\n <IconButton data-testid=\"clear-action-button\" onClick={handleClear} title=\"clear\">\n <DeleteForeverIcon fontSize=\"small\" />\n </IconButton>\n <IconButton onClick={handleCancel} title=\"cancel\">\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n <IconButton onClick={handleAccept} title=\"accept\">\n <CheckIcon fontSize=\"small\" />\n </IconButton>\n </DialogActions>\n </Paper>\n </ClickAwayListener>\n </Popper>\n </Box>\n </LocalizationProvider>\n )\n}\n\nexport default MuiXDateRangePicker\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const datePickerTheme = {\n defaultProps: {\n slotProps: {\n popper: {\n sx: {\n \"& .MuiPaper-root\": {\n borderRadius: '20px',\n background: 'var(--mui-palette-background-default)',\n border: 'solid 1px var(--mui-palette-border-1)',\n },\n },\n }\n },\n },\n} as const satisfies MuiComponentTheme<'MuiDatePicker'>\nexport const dateTimePickerTheme = {\n defaultProps: {\n slotProps: {\n popper: {\n sx: {\n \"& .MuiPaper-root\": {\n borderRadius: '20px',\n background: 'var(--mui-palette-background-default)',\n border: 'solid 1px var(--mui-palette-border-1)',\n },\n },\n }\n },\n },\n} as const satisfies MuiComponentTheme<'MuiDateTimePicker'>\n\nexport const timePickerTheme = {\n defaultProps: {\n slotProps: {\n popper: {\n sx: {\n \"& .MuiPaper-root\": {\n borderRadius: '20px',\n background: 'var(--mui-palette-background-default)',\n border: 'solid 1px var(--mui-palette-border-1)',\n },\n },\n }\n },\n },\n} as const satisfies MuiComponentTheme<'MuiTimePicker'>\n\nexport const dateCalendarTheme = {\n defaultProps: {\n slotProps: {},\n },\n styleOverrides: {\n root: {\n borderRadius: '20px',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiDateCalendar'>\n\nexport const pickersCalendarHeaderTheme = {\n defaultProps: {\n slotProps: {\n previousIconButton: { size: 'small' },\n nextIconButton: { size: 'small' },\n switchViewIcon: { fontSize: 'small' },\n },\n },\n styleOverrides: {\n root: {},\n label: {},\n },\n} as const satisfies MuiComponentTheme<'MuiPickersCalendarHeader'>\n\nexport const pickersDayTheme = {\n defaultProps: {},\n styleOverrides: {\n root: {\n '&.Mui-selected.MuiButtonBase-root': {\n color: 'var(--mui-palette-error-main)',\n backgroundColor: 'var(--mui-palette-focus-1)',\n '&:hover': {\n backgroundColor: 'var(--mui-palette-focus-1-hover)',\n },\n },\n '&.MuiPickersDay-today': {\n borderColor: 'var(--mui-palette-focus-1)',\n },\n },\n dayOutsideMonth: {\n color: 'var(--mui-palette-text-disabled)',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiPickersDay'>\n\n/**\n * MultiSectionDigitalClock items are MenuItems. Global MuiMenuItem paints a\n * full-size `::before` fill on `.Mui-selected`, and MUI X also sets\n * `backgroundColor: primary.main` + contrast text. Together that produced\n * solid opaque pink blocks with unreadable labels. Match PickersDay soft\n * selected (readable error text + quiet focus wash; kill the ::before cover).\n */\nexport const multiSectionDigitalClockTheme = {\n defaultProps: {\n slotProps: {\n digitalClockSectionItem: {\n dense: true,\n },\n },\n },\n styleOverrides: {\n root: {\n '&': { paddingRight: '4px' },\n '& .MuiMultiSectionDigitalClockSection-root': {\n scrollbarWidth: 'inherit',\n '& .MuiMultiSectionDigitalClockSection-item, & li': {\n borderRadius: 'var(--mui-shape-borderRadius)',\n position: 'relative',\n overflow: 'hidden',\n '&::before': {\n borderRadius: 'var(--mui-shape-borderRadius)',\n content: 'none',\n display: 'none',\n backgroundColor: 'transparent',\n width: 0,\n height: 0,\n },\n '&.Mui-selected': {\n color: 'var(--mui-palette-error-main)',\n backgroundColor: 'var(--mui-palette-focus-1)',\n '&:hover, &:focus-visible': {\n backgroundColor: 'var(--mui-palette-focus-1-hover)',\n },\n '&::before': {\n content: 'none',\n display: 'none',\n backgroundColor: 'transparent',\n },\n },\n },\n },\n },\n },\n} as const satisfies MuiComponentTheme<'MuiMultiSectionDigitalClock'>\n\nexport const pickersInputBaseTheme = {\n styleOverrides: {\n root: {\n '&.Mui-focused:not(.Mui-error) fieldset.MuiPickersOutlinedInput-notchedOutline': {\n borderColor: 'var(--mui-palette-text-secondary)',\n },\n '&.MuiPickersInputBase-root': {\n '& .MuiButtonBase-root': {\n '& > svg': {\n fontSize: '1.25rem',\n },\n },\n },\n },\n },\n} as const satisfies MuiComponentTheme<'MuiPickersInputBase'>\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,IAAAA,gBAAkB;AAClB,mBAAkC;AAClC,+BAA8B;AAC9B,kCAAqC;AACrC,0BAA6B;AAC7B,0BAA6B;AAC7B,2BAA0B;AAC1B,4BAA2B;;;ACP3B,iBAA6B;AAC7B,mBAA+B;AAC/B,kBAA8B;;;ACH9B,mBAAuC;AAM9B;AADM,SAAR,SAA0B,OAAmB;AAClD,SAAO,4CAAC,aAAAC,SAAA,EAAO,GAAG,OAAO;AAC3B;;;ACPA,+BAA6C;AAC7C,oBAAkC;;;ACAlC,mBAAyB;AACzB,wBAA0B;;;ACF1B,qBAAiC;;;AD0DzB,IAAAC,sBAAA;AAvBR,IAAM,iBAAa,yBAAqC,CAAC;AAAA,EACvD,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAG,QAAQ;AACT,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT,QAAQ;AAAA,UACN,IAAI;AAAA,YACF,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,QACA,GAAG,WAAW;AAAA,MAChB;AAAA,MAEA,uDAAC,sBAAI,WAAU,QAAO,IAAI,EAAC,OAAO,cAAa,GAC7C;AAAA,QAAC,kBAAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,WAAW,CAAC,WAAW,WAAW,iBAAiB,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,UAC9E,GAAG;AAAA,UAEH;AAAA;AAAA,MACH,GACF;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,IAAO,qBAAQ;;;AExEf,kBAAwC;AAM/B,IAAAC,sBAAA;AADM,SAAR,KAAsB,EAAE,QAAQ,WAAW,GAAG,MAAM,GAAc;AACvE,SAAO,6CAAC,YAAAC,SAAA,EAAS,GAAG,OAAO,OAAc;AAC3C;;;ACPA,uBAAmC;;;ACCnC,2BAAmC;AACnC,iCAAkC;AAClC,yBAAyC;AACzC,0BAA0C;AAC1C,uBAAuC;AACvC,uBAAuC;AACvC,wBAAwC;AACxC,uBAAuC;AACvC,6BAA6C;AAC7C,2BAAmC;AACnC,4BAAoC;AACpC,wBAAkC;AAClC,oBAAoC;AACpC,qBAAqC;AACrC,0BAAmC;AACnC,kCAAsC;AACtC,iCAAkC;AAClC,4BAAuC;AACvC,0BAAuC;AACvC,+BAAqC;AACrC,iCAAiC;AACjC,kCAAsC;AACtC,gCAAmC;AACnC,oBAAkC;AAClC,4BAAsC;AACtC,gCAA+C;AAC/C,iBAAiC;AACjC,wBAAmC;AACnC,sBAAmC;AACnC,kBAAkC;AAClC,uBAAmC;AACnC,6BAAmC;AACnC,oBAAoC;AACpC,wBAAwC;AACxC,yBAAiC;AACjC,qBAAqC;AACrC,iCAAmC;AACnC,qBAAoC;AACpC,8BAAuC;AACvC,qBAAoC;AACpC,uBAAiC;AACjC,uBAAuC;AACvC,wBAAoC;AACpC,IAAAC,+BAA4C;AAC5C,iCAAwC;AACxC,sBAAqC;AACrC,mBAAmC;AACnC,qBAA0C;AAC1C,wBAAsC;AACtC,8BAAmC;AACnC,2BAAoC;AAGpC,qCAAuC;AACvC,iBAAiC;AACjC,mBAAmC;AACnC,wBAAwC;AACxC,uBAAuC;AACvC,yBAAyC;AACzC,kBAAkC;AAClC,sBAAkC;AAClC,uBAAuC;AACvC,yBAAkC;AAClC,0BAAmC;AACnC,mBAAmC;AACnC,8BAAsC;AACtC,kCAA0C;AAC1C,gCAAmC;AACnC,2BAAoC;AACpC,yBAAyC;AACzC,mBAAoC;AACpC,qBAAuC;AACvC,8BAAoC;AACpC,kBAAmC;AACnC,uBAAqC;AACrC,wBAAsC;AACtC,+BAAmC;AACnC,0BAA2C;AAC3C,kBAAmC;AACnC,wBAAqC;AACrC,kBAAmC;AACnC,uBAAmC;AACnC,sBAAsC;AACtC,qBAAsC;AACtC,sBAAuC;AACvC,0BAAmC;AACnC,+BAAwC;AACxC,6BAAiC;AACjC,8BAAkC;AAClC,gCAAwC;AACxC,qBAAqC;AACrC,yBAAyC;AACzC,sCAA8C;AAC9C,qCAA6C;AAC7C,6CAAyC;AACzC,uBAAuC;AACvC,wBAAwC;AACxC,qBAAkC;AAClC,mBAAmC;AACnC,uBAAqC;AACrC,kBAAkC;AAClC,uBAAkC;AAClC,2BAAmC;AACnC,oBAAoC;AACpC,kBAAkC;AAClC,kBAAyC;AACzC,yBAAkC;AAClC,oBAAqC;AACrC,yBAAkC;AAClC,IAAAC,gBAAmC;AACnC,+BAA+C;AAC/C,gCAAgD;AAChD,2BAA2C;AAC3C,0BAA0C;AAC1C,gCAAgD;AAChD,+BAA+C;AAC/C,2BAA2C;AAC3C,uBAAuC;AACvC,0BAA0C;AAC1C,kCAAkD;AAGlD,wBAAqC;AACrC,oBAAoC;AACpC,mBAAmC;AACnC,uBAAuC;AAGvC,iCAAsC;AACtC,yBAAyC;AACzC,4BAA4C;AAC5C,0BAA0C;AAC1C,IAAAC,iBAAoC;AACpC,2BAA2C;AAC3C,oCAAkC;AAClC,mBAAmC;AACnC,IAAAC,wBAA2C;AAE3C,sBAAsC;AACtC,yBAAyC;AACzC,mCAAmD;AACnD,gCAAgD;AAChD,IAAAC,8BAAiD;AACjD,8BAA8C;AAC9C,oBAAoC;AACpC,kBAAkC;AAClC,qBAAqC;AACrC,0BAA0C;AAC1C,6BAA6C;AAC7C,0BAA0C;AAC1C,gCAAgD;AAChD,kCAAkD;AAClD,sBAA4C;;;ARwIxB,IAAAC,sBAAA;AA1QpB,aAAAC,QAAM,OAAO,yBAAAC,OAAiB;AAG9B,IAAM,mBAAmB;AAkCzB,IAAM,UAAU,CAAC,MAA8D;AAC7E,MAAI,KAAK,QAAQ,MAAM,GAAI,QAAO;AAClC,QAAM,QAAI,aAAAD,SAAM,CAAC;AACjB,SAAO,EAAE,QAAQ,IAAI,IAAI;AAC3B;AAEA,IAAM,kBAAkB,CAAC,GAAiB,QACxC,KAAK,EAAE,QAAQ,IAAI,EAAE,OAAO,GAAG,IAAI;AAMrC,IAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAMA,IAAM,iBAAiB,CAAC,QAA0C;AAChE,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,CAAC,QAAS,QAAO;AAErB,aAAW,OAAO,oBAAoB;AACpC,UAAM,QAAI,aAAAA,SAAM,SAAS,KAAK,IAAI;AAClC,QAAI,EAAE,QAAQ,EAAG,QAAO,EAAE,QAAQ,KAAK;AAAA,EACzC;AAGA,QAAM,YAAQ,aAAAA,SAAM,OAAO;AAC3B,MAAI,MAAM,QAAQ,EAAG,QAAO,MAAM,QAAQ,KAAK;AAE/C,SAAO;AACT;AAYO,IAAM,iBAAgD,CAAC;AAAA,EAC5D,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,gBAAgB;AAAA,EAChB;AACF,MAAM;AACJ,QAAM,aAAa,cAAc;AAEjC,QAAM,eAAe,cAAc;AACnC,QAAM,CAAC,cAAc,eAAe,IAAI,cAAAE,QAAM;AAAA,IAAuB,MACnE,QAAQ,YAAY;AAAA,EACtB;AACA,QAAM,QAAQ,eAAe,QAAQ,SAAS,IAAI;AAElD,QAAM,CAAC,MAAM,OAAO,IAAI,cAAAA,QAAM,SAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAI,cAAAA,QAAM,SAAuB,KAAK;AAE5D,QAAM,iBAAiB,gBAAgB,OAAO,UAAU;AACxD,QAAM,CAAC,WAAW,YAAY,IAAI,cAAAA,QAAM,SAAS,cAAc;AAC/D,QAAM,CAAC,cAAc,eAAe,IAAI,cAAAA,QAAM,SAAS,KAAK;AAC5D,QAAM,gBAAgB,CAAC;AACvB,QAAM,sBAAsB,cAAAA,QAAM,OAAO,KAAK;AAE9C,QAAM,YAAY,cAAAA,QAAM,OAA8B,IAAI;AAC1D,QAAM,CAAC,UAAU,WAAW,IAAI,cAAAA,QAAM,SAA6B,IAAI;AAEvE,QAAM,KAAM,WAAW,aAAa,CAAC;AACrC,QAAM,iBAAiB,YAAa,GAAG;AACvC,QAAM,iBAAiB,QAAQ,GAAG,QAAQ;AAC1C,QAAM,cAAc,QAAQ,GAAG,KAAK;AACpC,QAAM,aAAa,GAAG;AAEtB,QAAM,SAAS,CAAC,SAAuB;AACrC,QAAI,CAAC,aAAc,iBAAgB,IAAI;AACvC,eAAW,IAAI;AACf,WAAO;AAAA,EACT;AAGA,gBAAAA,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC,aAAc,cAAa,cAAc;AAAA,EAChD,GAAG,CAAC,gBAAgB,YAAY,CAAC;AAEjC,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC,cAAe;AACpB,UAAM,SAAS,eAAe,SAAS;AACvC,QAAI,WAAW,WAAW;AACxB,mBAAa,cAAc;AAC3B;AAAA,IACF;AACA,UAAM,OAAO,OAAO,MAAM;AAC1B,aAAS,IAAI;AACb,iBAAa,gBAAgB,MAAM,UAAU,CAAC;AAAA,EAChD;AAEA,QAAM,aAAa,MAAM;AACvB,QAAI,eAAgB;AACpB,aAAS,KAAK;AACd,YAAQ,IAAI;AAAA,EACd;AAEA,QAAM,cAAc,MAAM;AACxB,YAAQ,KAAK;AAAA,EACf;AAEA,QAAM,eAAe,MAAM;AACzB,WAAO,KAAK;AACZ,iBAAa,gBAAgB,OAAO,UAAU,CAAC;AAC/C,gBAAY;AAAA,EACd;AAEA,QAAM,eAAe,MAAM;AACzB,aAAS,KAAK;AACd,gBAAY;AAAA,EACd;AAEA,QAAM,cAAc,MAAM;AACxB,aAAS,IAAI;AAAA,EACf;AAEA,QAAM,cAAc,MAAM;AACxB,iBAAS,aAAAF,SAAM,EAAE,QAAQ,KAAK,CAAC;AAAA,EACjC;AAEA,QAAM,uBAAuB,CAAC,MAAoB;AAChD,QAAI,CAAC,GAAG;AACN,eAAS,IAAI;AACb;AAAA,IACF;AACA,iBAAS,aAAAA,SAAM,CAAC,EAAE,QAAQ,KAAK,CAAC;AAAA,EAClC;AAEA,SACE,6CAAC,oDAAqB,aAAa,kCACjC,wDAAC,sBAAI,IAAI,EAAE,SAAS,eAAe,eAAe,UAAU,GAAK,MAAiB,CAAC,EAAG,GACpF;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,CAAC,OAA8B;AAClC,oBAAU,UAAU;AACpB,sBAAY,EAAE;AAAA,QAChB;AAAA,QACA,IAAI,EAAE,SAAS,eAAe,UAAU,IAAI;AAAA,QAE5C;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAS;AAAA,YACT;AAAA,YACA,OAAO,gBAAgB,YAAY;AAAA,YACnC,aAAa;AAAA,YACb,UAAU;AAAA,YACV,UAAU;AAAA,YACV,OAAO;AAAA,YACP;AAAA,YACA,SAAS,gBAAgB,SAAY;AAAA,YACrC,SAAS,MAAM;AACb,kBAAI,eAAe;AACjB,gCAAgB,IAAI;AAAA,cACtB,OAAO;AACL,2BAAW;AAAA,cACb;AAAA,YACF;AAAA,YACA,QAAQ,MAAM;AACZ,kBAAI,CAAC,cAAe;AACpB,8BAAgB,KAAK;AACrB,kBAAI,oBAAoB,SAAS;AAC/B,oCAAoB,UAAU;AAC9B,6BAAa,cAAc;AAC3B;AAAA,cACF;AACA,+BAAiB;AAAA,YACnB;AAAA,YACA,UAAU,CAAC,MAAM;AACf,kBAAI,CAAC,cAAe;AACpB,2BAAa,EAAE,OAAO,KAAK;AAAA,YAC7B;AAAA,YACA,WAAW,CAAC,MAAM;AAChB,kBAAI,CAAC,cAAe;AACpB,kBAAI,EAAE,QAAQ,SAAS;AACrB,kBAAE,eAAe;AAChB,gBAAC,EAAE,OAA4B,KAAK;AAAA,cACvC;AACA,kBAAI,EAAE,QAAQ,UAAU;AACtB,kBAAE,eAAe;AACjB,oCAAoB,UAAU;AAC9B,6BAAa,cAAc;AAC1B,gBAAC,EAAE,OAA4B,KAAK;AAAA,cACvC;AAAA,YACF;AAAA,YACA,YAAY;AAAA,cACV,UAAU,CAAC;AAAA,cACX,cAAc;AAAA,cACd,eAAe;AAAA,YACjB;AAAA,YACA,YAAY;AAAA,cACV,cACE,6CAAC,sBAAAG,SAAA,EAAe,UAAS,OACvB;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,UAAU;AAAA,kBACV,cAAW;AAAA,kBACX,OAAM;AAAA,kBACL,GAAI,WAAW;AAAA,kBAChB,aAAa,CAAC,MAAM;AAElB,sBAAE,eAAe;AAAA,kBACnB;AAAA,kBACA,SAAS,CAAC,MAAM;AACd,sBAAE,gBAAgB;AAClB,wBAAI,KAAM,aAAY;AAAA,wBACjB,YAAW;AAAA,kBAClB;AAAA,kBAEA,uDAAC,gCAAkB,UAAS,SAAQ;AAAA;AAAA,cACtC,GACF;AAAA,YAEJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,WAAU;AAAA,QACV,OAAO,EAAE,QAAQ,KAAK;AAAA,QAEtB,uDAAC,oCAAkB,aAAa,cAC9B;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,YACX,IAAI;AAAA,cACF,IAAI;AAAA,cACJ,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,QAAQ;AAAA,cACR,UAAU;AAAA,YACZ;AAAA,YAEA;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,kBACP,UAAU;AAAA,kBACV,6BAA2B;AAAA;AAAA,cAC7B;AAAA,cACA,8CAAC,qBAAAC,SAAA,EAAc,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,gBAAgB,YAAY,KAAK,IAAI,GACxE;AAAA,6DAAC,sBAAW,eAAY,uBAAsB,SAAS,aAAa,OAAM,SACxE,uDAAC,iCAAkB,UAAS,SAAQ,GACtC;AAAA,gBACA,6CAAC,sBAAW,eAAY,uBAAsB,SAAS,aAAa,OAAM,SACxE,uDAAC,wBAAU,UAAS,SAAQ,GAC9B;AAAA,gBACA,6CAAC,sBAAW,SAAS,cAAc,OAAM,UACvC,uDAAC,yBAAU,UAAS,SAAQ,GAC9B;AAAA,gBACA,6CAAC,sBAAW,SAAS,cAAc,OAAM,UACvC,uDAAC,wBAAU,UAAS,SAAQ,GAC9B;AAAA,iBACF;AAAA;AAAA;AAAA,QACF,GACF;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;AAEA,IAAO,yBAAQ;;;ASpVf,IAAAC,gBAAkB;AAClB,IAAAC,gBAAkC;AAClC,IAAAC,4BAA8B;AAC9B,IAAAC,+BAAqC;AACrC,IAAAC,uBAA6B;AAC7B,IAAAC,uBAA6B;AAC7B,sCAAyC;AACzC,IAAAC,wBAA0B;AAC1B,IAAAC,yBAA2B;AA6bP,IAAAC,sBAAA;AA/apB,cAAAC,QAAM,OAAO,0BAAAC,OAAiB;AAG9B,IAAM,uBAAuB;AAC7B,IAAM,0BAA0B;AAoChC,IAAMC,WAAU,CAAC,MAA8D;AAC7E,MAAI,KAAK,QAAQ,MAAM,GAAI,QAAO;AAClC,QAAM,QAAI,cAAAF,SAAM,CAAC;AACjB,SAAO,EAAE,QAAQ,IAAI,IAAI;AAC3B;AAEA,IAAM,sBAAsB,CAAC,GAAiB,QAC5C,KAAK,EAAE,QAAQ,IAAI,EAAE,OAAO,GAAG,IAAI;AAGrC,IAAMG,sBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,wBAAwB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,IAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,gBAAgB,CACpB,UACA,MACA,WACU,SAAS,KAAK,IAAI,EAAE,OAAO,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC;AAMtE,IAAM,oBAAoB,CACxB,KACA,SACiD;AACjD,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,CAAC,QAAS,QAAO;AAErB,QAAM,aAAa,QAChB,QAAQ,QAAQ,GAAG,EACnB,QAAQ,0BAA0B,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG;AAE5E,aAAW,OAAO,uBAAuB;AACvC,UAAM,QAAI,cAAAH,SAAM,YAAY,KAAK,IAAI;AACrC,QAAI,EAAE,QAAQ,EAAG,QAAO,EAAE,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,OAAO,EAAE;AAAA,EAC/D;AAEA,QAAM,OAAO,WAAW,MAAM,2BAA2B;AACzD,MAAI,MAAM;AACR,UAAM,OAAO,OAAO,KAAK,CAAC,CAAC;AAC3B,UAAM,SAAS,OAAO,KAAK,CAAC,CAAC;AAC7B,QAAI,SAAS,MAAM,OAAO,GAAI,QAAO;AAErC,QAAI,CAAC,KAAK,QAAQ,OAAO,MAAO,SAAS,KAAK,KAAK,CAAC,EAAE,WAAW,GAAI;AACnE,aAAO,EAAE,MAAM,OAAO;AAAA,IACxB;AAEA,QAAI,MAAM,OAAO;AACjB,QAAI,KAAK,cAAc,QAAQ,KAAK,cAAc,IAAI;AACpD,aAAO;AAAA,IACT;AACA,QAAI,SAAS,MAAM,KAAK,cAAc,MAAM;AAC1C,YAAM;AAAA,IACR,WAAW,SAAS,MAAM,KAAK,cAAc,MAAM;AACjD,YAAM,KAAK,cAAc,KAAK,KAAK;AAAA,IACrC;AACA,WAAO,EAAE,MAAM,KAAK,OAAO;AAAA,EAC7B;AAEA,aAAW,OAAO,CAAC,SAAS,MAAM,GAAY;AAC5C,UAAM,QAAI,cAAAA,SAAM,YAAY,KAAK,IAAI;AACrC,QAAI,EAAE,QAAQ,EAAG,QAAO,EAAE,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,OAAO,EAAE;AAAA,EAC/D;AAEA,SAAO;AACT;AAEA,IAAM,oBAAoB,CAAC,QAA0C;AACnE,QAAM,IAAI,IAAI,KAAK;AACnB,MAAI,CAAC,EAAG,QAAO;AACf,aAAW,OAAOG,qBAAoB;AACpC,UAAM,QAAI,cAAAH,SAAM,GAAG,KAAK,IAAI;AAC5B,QAAI,EAAE,QAAQ,EAAG,QAAO,EAAE,QAAQ,KAAK;AAAA,EACzC;AACA,QAAM,YAAQ,cAAAA,SAAM,CAAC;AACrB,MAAI,MAAM,QAAQ,EAAG,QAAO,MAAM,QAAQ,KAAK;AAC/C,SAAO;AACT;AAMA,IAAM,mBAAmB,CAAC,QAAyC;AACjE,QAAM,IAAI,IAAI,KAAK;AAEnB,QAAM,OAAO,EAAE,MAAM,kCAAkC;AACvD,MAAI,KAAM,QAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAGlC,QAAM,IAAI,EAAE,MAAM,+CAA+C;AACjE,MAAI,EAAG,QAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAEzB,SAAO;AACT;AASA,IAAM,qBAAqB,CACzB,KACA,SAC6B;AAC7B,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,CAAC,QAAS,QAAO;AAErB,QAAM,aAAa,QAChB,QAAQ,QAAQ,GAAG,EACnB,QAAQ,0BAA0B,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG;AAG5E,aAAW,OAAO,wBAAwB;AACxC,UAAM,QAAI,cAAAA,SAAM,YAAY,KAAK,IAAI;AACrC,QAAI,EAAE,QAAQ,EAAG,QAAO,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC;AAAA,EACnD;AAGA,QAAM,SAAS,iBAAiB,UAAU;AAC1C,MAAI,QAAQ;AACV,UAAM,WAAW,kBAAkB,OAAO,CAAC,CAAC;AAC5C,QAAI,aAAa,aAAa,YAAY,KAAM,QAAO;AACvD,UAAM,WAAW,kBAAkB,OAAO,CAAC,GAAG;AAAA,MAC5C,MAAM,KAAK;AAAA,MACX,YAAY,KAAK,UAAU,KAAK,OAAO,QAAQ,IAAI,KAAK,OAAO,KAAK,IAAI;AAAA,IAC1E,CAAC;AACD,QAAI,aAAa,UAAW,QAAO;AACnC,WAAO,cAAc,UAAU,SAAS,MAAM,SAAS,MAAM;AAAA,EAC/D;AAGA,QAAM,WAAW,kBAAkB,UAAU;AAC7C,MAAI,aAAa,aAAa,YAAY,MAAM;AAC9C,QAAI,KAAK,UAAU,KAAK,OAAO,QAAQ,GAAG;AACxC,aAAO,cAAc,UAAU,KAAK,OAAO,KAAK,GAAG,KAAK,OAAO,OAAO,CAAC;AAAA,IACzE;AACA,WAAO,cAAc,UAAU,GAAG,CAAC;AAAA,EACrC;AAGA,QAAM,YAAQ,cAAAA,SAAM,OAAO;AAC3B,MAAI,MAAM,QAAQ,EAAG,QAAO,MAAM,OAAO,CAAC,EAAE,YAAY,CAAC;AAEzD,SAAO;AACT;AAYO,IAAM,qBAAwD,CAAC;AAAA,EACpE,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,OAAO;AAAA,EACP,QAAQ;AAAA,EACR;AAAA,EACA,gBAAgB;AAAA,EAChB;AACF,MAAM;AACJ,QAAM,aAAa,eAAe,OAAO,uBAAuB;AAEhE,QAAM,eAAe,cAAc;AACnC,QAAM,CAAC,cAAc,eAAe,IAAI,cAAAI,QAAM;AAAA,IAAuB,MACnEF,SAAQ,YAAY;AAAA,EACtB;AACA,QAAM,QAAQ,eAAeA,SAAQ,SAAS,IAAI;AAElD,QAAM,CAAC,MAAM,OAAO,IAAI,cAAAE,QAAM,SAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAI,cAAAA,QAAM,SAAuB,KAAK;AAE5D,QAAM,iBAAiB,oBAAoB,OAAO,UAAU;AAC5D,QAAM,CAAC,WAAW,YAAY,IAAI,cAAAA,QAAM,SAAS,cAAc;AAC/D,QAAM,CAAC,cAAc,eAAe,IAAI,cAAAA,QAAM,SAAS,KAAK;AAC5D,QAAM,gBAAgB,CAAC;AACvB,QAAM,sBAAsB,cAAAA,QAAM,OAAO,KAAK;AAE9C,QAAM,YAAY,cAAAA,QAAM,OAA8B,IAAI;AAC1D,QAAM,CAAC,UAAU,WAAW,IAAI,cAAAA,QAAM,SAA6B,IAAI;AAEvE,QAAM,KAAM,WAAW,aAAa,CAAC;AACrC,QAAM,iBAAiB,YAAa,GAAG;AACvC,QAAM,iBAAiB,QAAQ,GAAG,QAAQ;AAC1C,QAAM,cAAc,QAAQ,GAAG,KAAK;AACpC,QAAM,aAAa,GAAG;AAEtB,QAAM,SAAS,CAAC,SAAuB;AACrC,QAAI,CAAC,aAAc,iBAAgB,IAAI;AACvC,eAAW,IAAI;AACf,WAAO;AAAA,EACT;AAGA,gBAAAA,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC,aAAc,cAAa,cAAc;AAAA,EAChD,GAAG,CAAC,gBAAgB,YAAY,CAAC;AAEjC,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC,cAAe;AACpB,UAAM,SAAS,mBAAmB,WAAW,EAAE,MAAM,QAAQ,MAAM,CAAC;AACpE,QAAI,WAAW,WAAW;AACxB,mBAAa,cAAc;AAC3B;AAAA,IACF;AACA,UAAM,OAAO,OAAO,MAAM;AAC1B,aAAS,IAAI;AACb,iBAAa,oBAAoB,MAAM,UAAU,CAAC;AAAA,EACpD;AAEA,QAAM,aAAa,MAAM;AACvB,QAAI,eAAgB;AACpB,aAAS,KAAK;AACd,YAAQ,IAAI;AAAA,EACd;AAEA,QAAM,cAAc,MAAM;AACxB,YAAQ,KAAK;AAAA,EACf;AAEA,QAAM,eAAe,MAAM;AACzB,WAAO,KAAK;AACZ,iBAAa,oBAAoB,OAAO,UAAU,CAAC;AACnD,gBAAY;AAAA,EACd;AAEA,QAAM,eAAe,MAAM;AACzB,aAAS,KAAK;AACd,gBAAY;AAAA,EACd;AAEA,QAAM,cAAc,MAAM;AACxB,aAAS,IAAI;AAAA,EACf;AAEA,QAAM,uBAAuB,CAAC,MAAoB;AAChD,QAAI,CAAC,GAAG;AACN,eAAS,IAAI;AACb;AAAA,IACF;AACA,QAAI,SAAS,MAAM,QAAQ,GAAG;AAC5B,eAAS,cAAc,GAAG,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,CAAC;AAAA,IACzD,OAAO;AAEL,YAAM,UAAM,cAAAJ,SAAM;AAClB,eAAS,cAAc,GAAG,IAAI,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC;AAAA,IACrD;AAAA,EACF;AAEA,QAAM,oBAAoB,CAAC,MAAoB;AAC7C,QAAI,CAAC,EAAG;AACR,UAAM,OAAO,SAAS,MAAM,QAAQ,IAAI,YAAQ,cAAAA,SAAM;AACtD,aAAS,cAAc,UAAM,cAAAA,SAAM,CAAC,EAAE,KAAK,OAAG,cAAAA,SAAM,CAAC,EAAE,OAAO,CAAC,CAAC;AAAA,EAClE;AAEA,QAAM,aAAa,OACd,CAAC,SAAS,WAAW,UAAU,IAC/B,CAAC,SAAS,SAAS;AAExB,QAAM,cAAc,OAAO,wBAAwB;AAEnD,SACE,6CAAC,qDAAqB,aAAa,mCACjC,wDAAC,sBAAI,IAAI,EAAE,SAAS,eAAe,eAAe,UAAU,GAAK,MAAiB,CAAC,EAAG,GACpF;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,CAAC,OAA8B;AAClC,oBAAU,UAAU;AACpB,sBAAY,EAAE;AAAA,QAChB;AAAA,QACA,IAAI,EAAE,SAAS,eAAe,UAAU,IAAI;AAAA,QAE5C;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAS;AAAA,YACT;AAAA,YACA,OAAO,gBAAgB,YAAY;AAAA,YACnC;AAAA,YACA,UAAU;AAAA,YACV,UAAU;AAAA,YACV,OAAO;AAAA,YACP;AAAA,YACA,SAAS,gBAAgB,SAAY;AAAA,YACrC,SAAS,MAAM;AACb,kBAAI,eAAe;AACjB,gCAAgB,IAAI;AAAA,cACtB,OAAO;AACL,2BAAW;AAAA,cACb;AAAA,YACF;AAAA,YACA,QAAQ,MAAM;AACZ,kBAAI,CAAC,cAAe;AACpB,8BAAgB,KAAK;AACrB,kBAAI,oBAAoB,SAAS;AAC/B,oCAAoB,UAAU;AAC9B,6BAAa,cAAc;AAC3B;AAAA,cACF;AACA,+BAAiB;AAAA,YACnB;AAAA,YACA,UAAU,CAAC,MAAM;AACf,kBAAI,CAAC,cAAe;AACpB,2BAAa,EAAE,OAAO,KAAK;AAAA,YAC7B;AAAA,YACA,WAAW,CAAC,MAAM;AAChB,kBAAI,CAAC,cAAe;AACpB,kBAAI,EAAE,QAAQ,SAAS;AACrB,kBAAE,eAAe;AAChB,gBAAC,EAAE,OAA4B,KAAK;AAAA,cACvC;AACA,kBAAI,EAAE,QAAQ,UAAU;AACtB,kBAAE,eAAe;AACjB,oCAAoB,UAAU;AAC9B,6BAAa,cAAc;AAC1B,gBAAC,EAAE,OAA4B,KAAK;AAAA,cACvC;AAAA,YACF;AAAA,YACA,YAAY;AAAA,cACV,UAAU,CAAC;AAAA,cACX,cAAc;AAAA,cACd,eAAe;AAAA,YACjB;AAAA,YACA,YAAY;AAAA,cACV,cACE,6CAAC,uBAAAK,SAAA,EAAe,UAAS,OACvB;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,UAAU;AAAA,kBACV,cAAW;AAAA,kBACX,OAAM;AAAA,kBACL,GAAI,WAAW;AAAA,kBAChB,aAAa,CAAC,MAAM;AAElB,sBAAE,eAAe;AAAA,kBACnB;AAAA,kBACA,SAAS,CAAC,MAAM;AACd,sBAAE,gBAAgB;AAClB,wBAAI,KAAM,aAAY;AAAA,wBACjB,YAAW;AAAA,kBAClB;AAAA,kBAEA,uDAAC,gCAAkB,UAAS,SAAQ;AAAA;AAAA,cACtC,GACF;AAAA,YAEJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,WAAU;AAAA,QACV,OAAO,EAAE,QAAQ,KAAK;AAAA,QAEtB,uDAAC,oCAAkB,aAAa,cAC9B;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,YACX,IAAI;AAAA,cACF,IAAI;AAAA,cACJ,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,QAAQ;AAAA,cACR,UAAU;AAAA,YACZ;AAAA,YAEA;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,IAAI;AAAA,oBACF,SAAS;AAAA,oBACT,eAAe,EAAE,IAAI,UAAU,IAAI,MAAM;AAAA,oBACzC,YAAY;AAAA,kBACd;AAAA,kBAEA;AAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,wBACP,UAAU;AAAA,wBACV,6BAA2B;AAAA;AAAA,oBAC7B;AAAA,oBACA;AAAA,sBAAC;AAAA;AAAA,wBACC,IAAI;AAAA,0BACF,IAAI;AAAA,0BACJ,IAAI;AAAA,0BACJ,YAAY;AAAA,4BACV,IAAI;AAAA,0BACN;AAAA,0BACA,WAAW;AAAA,4BACT,IAAI;AAAA,4BACJ,IAAI;AAAA,0BACN;AAAA,0BACA,SAAS;AAAA,0BACT,YAAY;AAAA,wBACd;AAAA,wBAEA;AAAA,0BAAC;AAAA;AAAA,4BACC;AAAA,4BACA,OAAO;AAAA,4BACP,UAAU;AAAA,4BACV,OAAO,CAAC,GAAG,UAAU;AAAA;AAAA,wBACvB;AAAA;AAAA,oBACF;AAAA;AAAA;AAAA,cACF;AAAA,cACA,8CAAC,sBAAAC,SAAA,EAAc,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,gBAAgB,YAAY,KAAK,IAAI,GACxE;AAAA,6DAAC,sBAAW,eAAY,uBAAsB,SAAS,aAAa,OAAM,SACxE,uDAAC,iCAAkB,UAAS,SAAQ,GACtC;AAAA,gBACA,6CAAC,sBAAW,SAAS,cAAc,OAAM,UACvC,uDAAC,yBAAU,UAAS,SAAQ,GAC9B;AAAA,gBACA,6CAAC,sBAAW,SAAS,cAAc,OAAM,UACvC,uDAAC,wBAAU,UAAS,SAAQ,GAC9B;AAAA,iBACF;AAAA;AAAA;AAAA,QACF,GACF;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;AAEA,IAAO,6BAAQ;;;ACphBf,IAAAC,gBAAkB;AAClB,IAAAC,gBAAkC;AAClC,IAAAC,4BAA8B;AAC9B,IAAAC,+BAAqC;AACrC,IAAAC,uBAA6B;AAC7B,IAAAC,mCAAyC;AACzC,IAAAC,wBAA0B;AAC1B,IAAAC,yBAA2B;AAC3B,wBAA2B;AA6TP,IAAAC,sBAAA;AAhTpB,cAAAC,QAAM,OAAO,0BAAAC,OAAiB;AAG9B,IAAM,mBAAmB;AAqCzB,IAAMC,WAAU,CAAC,MAA8D;AAC7E,MAAI,KAAK,QAAQ,MAAM,GAAI,QAAO;AAClC,QAAM,QAAI,cAAAF,SAAM,CAAC;AACjB,SAAO,EAAE,QAAQ,IAAI,IAAI;AAC3B;AAEA,IAAM,kBAAkB,CAAC,GAAiB,QACxC,KAAK,EAAE,QAAQ,IAAI,EAAE,OAAO,GAAG,IAAI;AAErC,IAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,YAAY,CAAC,QAAsB,MAAc,WAA0B;AAC/E,QAAM,OAAO,UAAU,OAAO,QAAQ,IAAI,aAAS,cAAAA,SAAM;AACzD,SAAO,KAAK,KAAK,IAAI,EAAE,OAAO,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC;AAC/D;AASA,IAAM,iBAAiB,CACrB,KACA,SAC6B;AAC7B,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,CAAC,QAAS,QAAO;AAGrB,QAAM,aAAa,QAChB,QAAQ,QAAQ,GAAG,EACnB,QAAQ,0BAA0B,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG;AAG5E,aAAW,OAAO,wBAAwB;AACxC,UAAM,QAAI,cAAAA,SAAM,YAAY,KAAK,IAAI;AACrC,QAAI,EAAE,QAAQ,EAAG,QAAO,UAAU,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,OAAO,CAAC;AAAA,EACrE;AAGA,QAAM,OAAO,WAAW,MAAM,2BAA2B;AACzD,MAAI,MAAM;AACR,UAAM,OAAO,OAAO,KAAK,CAAC,CAAC;AAC3B,UAAM,SAAS,OAAO,KAAK,CAAC,CAAC;AAC7B,QAAI,SAAS,MAAM,OAAO,GAAI,QAAO;AAGrC,QAAI,CAAC,KAAK,QAAQ,OAAO,MAAO,SAAS,KAAK,KAAK,CAAC,EAAE,WAAW,GAAI;AACnE,aAAO,UAAU,KAAK,QAAQ,MAAM,MAAM;AAAA,IAC5C;AAGA,QAAI,MAAM,OAAO;AACjB,QAAI,KAAK,UAAU,KAAK,OAAO,QAAQ,KAAK,KAAK,OAAO,KAAK,KAAK,IAAI;AACpE,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,MAAM,EAAE,KAAK,UAAU,KAAK,OAAO,QAAQ,IAAI;AAC1D,YAAM;AAAA,IACR,WAAW,SAAS,MAAM,KAAK,UAAU,KAAK,OAAO,QAAQ,GAAG;AAC9D,YAAM,KAAK,OAAO,KAAK,KAAK,KAAK,KAAK;AAAA,IACxC;AACA,WAAO,UAAU,KAAK,QAAQ,KAAK,MAAM;AAAA,EAC3C;AAGA,aAAW,OAAO,CAAC,SAAS,MAAM,GAAY;AAC5C,UAAM,QAAI,cAAAA,SAAM,YAAY,KAAK,IAAI;AACrC,QAAI,EAAE,QAAQ,EAAG,QAAO,UAAU,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,OAAO,CAAC;AAAA,EACrE;AAEA,SAAO;AACT;AAYO,IAAM,iBAAgD,CAAC;AAAA,EAC5D,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,OAAO;AAAA,EACP,QAAQ;AAAA,EACR;AAAA,EACA,gBAAgB;AAAA,EAChB;AACF,MAAM;AACJ,QAAM,aAAa,eAAe,OAAO,mBAAmB;AAE5D,QAAM,eAAe,cAAc;AACnC,QAAM,CAAC,cAAc,eAAe,IAAI,cAAAG,QAAM;AAAA,IAAuB,MACnED,SAAQ,YAAY;AAAA,EACtB;AACA,QAAM,QAAQ,eAAeA,SAAQ,SAAS,IAAI;AAElD,QAAM,CAAC,MAAM,OAAO,IAAI,cAAAC,QAAM,SAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAI,cAAAA,QAAM,SAAuB,KAAK;AAE5D,QAAM,iBAAiB,gBAAgB,OAAO,UAAU;AACxD,QAAM,CAAC,WAAW,YAAY,IAAI,cAAAA,QAAM,SAAS,cAAc;AAC/D,QAAM,CAAC,cAAc,eAAe,IAAI,cAAAA,QAAM,SAAS,KAAK;AAC5D,QAAM,gBAAgB,CAAC;AACvB,QAAM,sBAAsB,cAAAA,QAAM,OAAO,KAAK;AAE9C,QAAM,YAAY,cAAAA,QAAM,OAA8B,IAAI;AAC1D,QAAM,CAAC,UAAU,WAAW,IAAI,cAAAA,QAAM,SAA6B,IAAI;AAEvE,QAAM,KAAM,WAAW,aAAa,CAAC;AACrC,QAAM,iBAAiB,YAAa,GAAG;AACvC,QAAM,iBAAiB,QAAQ,GAAG,QAAQ;AAC1C,QAAM,cAAc,QAAQ,GAAG,KAAK;AACpC,QAAM,aAAa,GAAG;AAEtB,QAAM,SAAS,CAAC,SAAuB;AACrC,QAAI,CAAC,aAAc,iBAAgB,IAAI;AACvC,eAAW,IAAI;AACf,WAAO;AAAA,EACT;AAGA,gBAAAA,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC,aAAc,cAAa,cAAc;AAAA,EAChD,GAAG,CAAC,gBAAgB,YAAY,CAAC;AAEjC,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC,cAAe;AACpB,UAAM,SAAS,eAAe,WAAW,EAAE,MAAM,QAAQ,MAAM,CAAC;AAChE,QAAI,WAAW,WAAW;AACxB,mBAAa,cAAc;AAC3B;AAAA,IACF;AACA,UAAM,OAAO,OAAO,MAAM;AAC1B,aAAS,IAAI;AACb,iBAAa,gBAAgB,MAAM,UAAU,CAAC;AAAA,EAChD;AAEA,QAAM,aAAa,MAAM;AACvB,QAAI,eAAgB;AACpB,aAAS,KAAK;AACd,YAAQ,IAAI;AAAA,EACd;AAEA,QAAM,cAAc,MAAM;AACxB,YAAQ,KAAK;AAAA,EACf;AAEA,QAAM,eAAe,MAAM;AACzB,WAAO,KAAK;AACZ,iBAAa,gBAAgB,OAAO,UAAU,CAAC;AAC/C,gBAAY;AAAA,EACd;AAEA,QAAM,eAAe,MAAM;AACzB,aAAS,KAAK;AACd,gBAAY;AAAA,EACd;AAEA,QAAM,cAAc,MAAM;AACxB,aAAS,IAAI;AAAA,EACf;AAEA,QAAM,aAAa,OACd,CAAC,SAAS,WAAW,UAAU,IAC/B,CAAC,SAAS,SAAS;AAExB,SACE,6CAAC,qDAAqB,aAAa,mCACjC,wDAAC,sBAAI,IAAI,EAAE,SAAS,eAAe,eAAe,UAAU,GAAK,MAAiB,CAAC,EAAG,GACpF;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,CAAC,OAA8B;AAClC,oBAAU,UAAU;AACpB,sBAAY,EAAE;AAAA,QAChB;AAAA,QACA,IAAI,EAAE,SAAS,eAAe,UAAU,IAAI;AAAA,QAE5C;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAS;AAAA,YACT;AAAA,YACA,OAAO,gBAAgB,YAAY;AAAA,YACnC,aAAa,OAAO,aAAa;AAAA,YACjC,UAAU;AAAA,YACV,UAAU;AAAA,YACV,OAAO;AAAA,YACP;AAAA,YACA,SAAS,gBAAgB,SAAY;AAAA,YACrC,SAAS,MAAM;AACb,kBAAI,eAAe;AACjB,gCAAgB,IAAI;AAAA,cACtB,OAAO;AACL,2BAAW;AAAA,cACb;AAAA,YACF;AAAA,YACA,QAAQ,MAAM;AACZ,kBAAI,CAAC,cAAe;AACpB,8BAAgB,KAAK;AACrB,kBAAI,oBAAoB,SAAS;AAC/B,oCAAoB,UAAU;AAC9B,6BAAa,cAAc;AAC3B;AAAA,cACF;AACA,+BAAiB;AAAA,YACnB;AAAA,YACA,UAAU,CAAC,MAAM;AACf,kBAAI,CAAC,cAAe;AACpB,2BAAa,EAAE,OAAO,KAAK;AAAA,YAC7B;AAAA,YACA,WAAW,CAAC,MAAM;AAChB,kBAAI,CAAC,cAAe;AACpB,kBAAI,EAAE,QAAQ,SAAS;AACrB,kBAAE,eAAe;AAChB,gBAAC,EAAE,OAA4B,KAAK;AAAA,cACvC;AACA,kBAAI,EAAE,QAAQ,UAAU;AACtB,kBAAE,eAAe;AACjB,oCAAoB,UAAU;AAC9B,6BAAa,cAAc;AAC1B,gBAAC,EAAE,OAA4B,KAAK;AAAA,cACvC;AAAA,YACF;AAAA,YACA,YAAY;AAAA,cACV,UAAU,CAAC;AAAA,cACX,cAAc;AAAA,cACd,eAAe;AAAA,YACjB;AAAA,YACA,YAAY;AAAA,cACV,cACE,6CAAC,uBAAAC,SAAA,EAAe,UAAS,OACvB;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,UAAU;AAAA,kBACV,cAAW;AAAA,kBACX,OAAM;AAAA,kBACL,GAAI,WAAW;AAAA,kBAChB,aAAa,CAAC,MAAM;AAElB,sBAAE,eAAe;AAAA,kBACnB;AAAA,kBACA,SAAS,CAAC,MAAM;AACd,sBAAE,gBAAgB;AAClB,wBAAI,KAAM,aAAY;AAAA,wBACjB,YAAW;AAAA,kBAClB;AAAA,kBAEA,uDAAC,kBAAAC,SAAA,EAAe,UAAS,SAAQ;AAAA;AAAA,cACnC,GACF;AAAA,YAEJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,WAAU;AAAA,QACV,OAAO,EAAE,QAAQ,KAAK;AAAA,QAEtB,uDAAC,oCAAkB,aAAa,cAC9B;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,YACX,IAAI;AAAA,cACF,IAAI;AAAA,cACJ,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,QAAQ;AAAA,cACR,UAAU;AAAA,YACZ;AAAA,YAEA;AAAA,2DAAC,sBAAI,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GACtB;AAAA,gBAAC;AAAA;AAAA,kBACC;AAAA,kBACA,OAAO;AAAA,kBACP,UAAU,CAAC,MAAM,SAAS,QAAI,cAAAL,SAAM,CAAU,IAAI,IAAI;AAAA,kBACtD,OAAO,CAAC,GAAG,UAAU;AAAA;AAAA,cACvB,GACF;AAAA,cACA,8CAAC,sBAAAM,SAAA,EAAc,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,gBAAgB,YAAY,KAAK,IAAI,GACxE;AAAA,6DAAC,sBAAW,eAAY,uBAAsB,SAAS,aAAa,OAAM,SACxE,uDAAC,iCAAkB,UAAS,SAAQ,GACtC;AAAA,gBACA,6CAAC,sBAAW,SAAS,cAAc,OAAM,UACvC,uDAAC,yBAAU,UAAS,SAAQ,GAC9B;AAAA,gBACA,6CAAC,sBAAW,SAAS,cAAc,OAAM,UACvC,uDAAC,wBAAU,UAAS,SAAQ,GAC9B;AAAA,iBACF;AAAA;AAAA;AAAA,QACF,GACF;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;AAEA,IAAO,yBAAQ;;;ACzXf,IAAAC,gBAAkB;AAClB,IAAAC,gBAAkC;AAClC,IAAAC,4BAA8B;AAC9B,IAAAC,+BAAqC;AACrC,IAAAC,uBAA6B;AAC7B,IAAAC,uBAA6B;AAC7B,wBAAiD;AACjD,IAAAC,wBAA0B;AAC1B,IAAAC,yBAA2B;AAsVvB,IAAAC,sBAAA;AArUJ,cAAAC,QAAM,OAAO,0BAAAC,OAAiB;AAqD9B,IAAM,QAAwB,EAAE,OAAO,MAAM,KAAK,KAAK;AAEvD,IAAMC,WAAU,CAAC,MAA8C,QAAI,cAAAF,SAAM,CAAC,IAAI;AAE9E,IAAM,SAAS,CAAC,MAAiC;AAC/C,MAAI,CAAC,EAAG,QAAO;AACf,SAAO,OAAO,EAAE,WAAW,aAAa,EAAE,OAAO,IAAK;AACxD;AAEA,IAAM,aAAa,CAAC,SAAyC;AAC3D,MAAI,KAAK,SAAS,KAAK,OAAO,KAAK,MAAM,QAAQ,IAAI,KAAK,IAAI,QAAQ,GAAG;AACvE,WAAO,EAAE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAM;AAAA,EAC5C;AACA,SAAO;AACT;AAEA,IAAMG,oBAAmB;AAEzB,IAAM,YAAY,CAAC,MAA4B,QAAI,cAAAH,SAAM,CAAC,EAAE,OAAOG,iBAAgB,IAAI;AAEvF,IAAM,mBAAmB,CAAC,GAAmB,YAAoB,aAA6B;AAC5F,QAAM,IAAI,UAAU,EAAE,KAAK;AAC3B,QAAM,IAAI,UAAU,EAAE,GAAG;AACzB,MAAI,KAAK,EAAG,QAAO,GAAG,CAAC,WAAM,CAAC;AAC9B,MAAI,EAAG,QAAO,GAAG,CAAC,WAAM,QAAQ;AAChC,MAAI,EAAG,QAAO,GAAG,UAAU,WAAM,CAAC;AAClC,SAAO;AACT;AAGA,IAAMC,sBAAqB;AAAA,EACzBD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,eAAe,CAAC,QAAyC;AAC7D,QAAM,IAAI,IAAI,KAAK;AACnB,MAAI,CAAC,EAAG,QAAO;AACf,aAAW,OAAOC,qBAAoB;AACpC,UAAM,QAAI,cAAAJ,SAAM,GAAG,KAAK,IAAI;AAC5B,QAAI,EAAE,QAAQ,EAAG,QAAO,EAAE,QAAQ,KAAK,EAAE,OAAO;AAAA,EAClD;AACA,QAAM,YAAQ,cAAAA,SAAM,CAAC;AACrB,MAAI,MAAM,QAAQ,EAAG,QAAO,MAAM,QAAQ,KAAK,EAAE,OAAO;AACxD,SAAO;AACT;AAMA,IAAM,mBAAmB,CAAC,QAAyC;AACjE,QAAM,IAAI,IAAI,KAAK;AACnB,MAAI,CAAC,EAAG,QAAO;AAEf,MAAI,EAAE,SAAS,QAAG,GAAG;AACnB,UAAM,IAAI,EAAE,QAAQ,QAAG;AACvB,WAAO,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,IAAI,SAAI,MAAM,CAAC;AAAA,EAChD;AAEA,QAAM,UAAU,EAAE,MAAM,WAAW;AACnC,MAAI,QAAQ,WAAW,EAAG,QAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC;AAExD,aAAW,OAAO,CAAC,OAAO,KAAK,GAAG;AAChC,QAAI,EAAE,SAAS,GAAG,GAAG;AACnB,YAAM,IAAI,EAAE,QAAQ,GAAG;AACvB,aAAO,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC;AAAA,IAChD;AAAA,EACF;AAEA,QAAM,WAAW,EAAE,MAAM,kDAAkD;AAC3E,MAAI,SAAU,QAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AAG9C,QAAM,YAAY,EAAE,MAAM,iDAAiD;AAC3E,MAAI,UAAW,QAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC;AAEjD,SAAO;AACT;AAEA,IAAM,qBAAqB,CAAC,MAAc,UAAkB;AAC1D,QAAM,IAAI,KAAK,KAAK;AACpB,SAAO,CAAC,KAAK,EAAE,YAAY,MAAM,MAAM,KAAK,EAAE,YAAY;AAC5D;AAOA,IAAM,kBAAkB,CACtB,KACA,YACA,aAC0B;AAC1B,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,CAAC,QAAS,QAAO;AAErB,QAAM,SAAS,iBAAiB,OAAO;AACvC,MAAI,CAAC,QAAQ;AACX,QAAI,mBAAmB,SAAS,UAAU,KAAK,mBAAmB,SAAS,QAAQ,GAAG;AACpF,aAAO;AAAA,IACT;AACA,UAAM,MAAM,aAAa,OAAO;AAChC,QAAI,QAAQ,UAAW,QAAO;AAC9B,WAAO,EAAE,OAAO,KAAK,KAAK,KAAK;AAAA,EACjC;AAEA,QAAM,CAAC,GAAG,CAAC,IAAI;AACf,MAAI;AACJ,MAAI;AAEJ,MAAI,mBAAmB,GAAG,UAAU,GAAG;AACrC,YAAQ;AAAA,EACV,OAAO;AACL,UAAM,IAAI,aAAa,CAAC;AACxB,QAAI,MAAM,UAAW,QAAO;AAC5B,YAAQ;AAAA,EACV;AAEA,MAAI,mBAAmB,GAAG,QAAQ,GAAG;AACnC,UAAM;AAAA,EACR,OAAO;AACL,UAAM,IAAI,aAAa,CAAC;AACxB,QAAI,MAAM,UAAW,QAAO;AAC5B,UAAM;AAAA,EACR;AAEA,SAAO,WAAW,EAAE,OAAO,IAAI,CAAC;AAClC;AAGA,IAAM,2BAA2B,CAC/B,OACA,KACA,OAA0B,aACf;AACX,QAAM,SAAS,KAAK,IAAI,OAAG,cAAAA,SAAM,GAAG,EAAE,QAAQ,KAAK,EAAE,SAAK,cAAAA,SAAM,KAAK,EAAE,QAAQ,KAAK,GAAG,KAAK,CAAC;AAC7F,MAAI,SAAS,QAAQ;AACnB,UAAM,OAAO,SAAS;AACtB,WAAO,SAAS,IAAI,UAAU,GAAG,IAAI;AAAA,EACvC;AACA,SAAO,WAAW,IAAI,YAAY,GAAG,MAAM;AAC7C;AAMA,IAAM,0BAA0B,CAC9B,OACA,KACA,iBACA,aACA,kBAAqC,aACnB;AAClB,MAAI,CAAC,SAAS,CAAC,IAAK,QAAO;AAC3B,MAAI,oBAAoB,MAAO,QAAO;AACtC,MAAI,OAAO,gBAAgB,SAAU,QAAO;AAC5C,MAAI,OAAO,gBAAgB,WAAY,QAAO,YAAY,EAAE,OAAO,IAAI,CAAC;AACxE,SAAO,yBAAyB,OAAO,KAAK,eAAe;AAC7D;AAEA,IAAM,oBAAoB;AAAA,EACxB,QAAQ;AAAA,EACR,IAAI;AAAA,EACJ,UAAU;AAAA,EACV,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,oBAAoB,EAAE,IAAI,GAAG,UAAU,UAAU,cAAc,WAAW;AAC5E;AAQA,IAAM,WAAW,CAAC,MAAa,EAAE,QAAQ,KAAK;AAE9C,IAAM,YAAY,CAAC,GAAiB,MAAoB,CAAC,EAAE,KAAK,KAAK,EAAE,OAAO,GAAG,KAAK;AAEtF,IAAM,YAAY,CAAC,KAAY,OAAc,QAAe;AAC1D,QAAM,IAAI,SAAS,GAAG,EAAE,QAAQ;AAChC,QAAM,IAAI,SAAS,KAAK,EAAE,QAAQ;AAClC,QAAM,IAAI,SAAS,GAAG,EAAE,QAAQ;AAChC,QAAM,KAAK,KAAK,IAAI,GAAG,CAAC;AACxB,QAAM,KAAK,KAAK,IAAI,GAAG,CAAC;AACxB,SAAO,IAAI,MAAM,IAAI;AACvB;AAUA,IAAM,aAAa;AACnB,IAAM,aAAa;AACnB,IAAM,mBAAmB;AACzB,IAAM,qBAAqB;AAE3B,IAAM,iBAAiB,CAAC,YAAqB,mBAA4B;AAAA,EACvE,OAAO;AAAA;AAAA,EAEP,iBAAiB,gBAAgB,mBAAmB;AAAA,EACpD,YAAY,aAAa,MAAM;AAAA;AAAA,EAE/B,GAAI,gBACA;AAAA,IACE,WAAW,mBAAmB,kBAAkB;AAAA,EAClD,IACA,CAAC;AAAA;AAAA,EAEL,WAAW;AAAA,IACT,OAAO;AAAA,IACP,iBAAiB;AAAA,EACnB;AAAA,EACA,+BAA+B;AAAA,IAC7B,OAAO;AAAA,IACP,iBAAiB,gBAAgB,mBAAmB;AAAA,EACtD;AAAA,EACA,8DAA8D;AAAA,IAC5D,OAAO;AAAA,IACP,iBAAiB,gBAAgB,mBAAmB;AAAA,IACpD,YAAY,aAAa,MAAM;AAAA,EACjC;AACF;AAEA,IAAM,WAAW,cAAAK,QAAM,WAA6C,SAASC,UAAS,OAAO,KAAK;AAChG,QAAM,EAAE,YAAY,UAAU,UAAU,KAAK,qBAAqB,IAAI,GAAG,MAAM,IAAI;AACnF,QAAM,cAAU,cAAAN,SAAM,GAAY;AAGlC,QAAM,aACJ,cAAc,CAAC,YAAY,WAAW,WAAW;AAEnD,QAAM,UAAU,UAAU,SAAS,UAAU;AAC7C,QAAM,QAAQ,UAAU,SAAS,UAAU,KAAK,CAAC,EAAE,YAAa,cAAc;AAC9E,QAAM,WACJ,CAAC,CAAC,cACF,CAAC,CAAC,cACF,UAAU,SAAS,YAAY,UAAU;AAE3C,QAAM,aAAa,WAAW;AAC9B,QAAM,YAAY,cAAc;AAEhC,QAAM,gBAAgB,CAAC,CAAC,YAAY,UAAU,SAAS,QAAQ,KAAK,CAAC;AAGrE,MAAI,SAA0B;AAC9B,MAAI,WAAW,OAAO;AACpB,aAAS;AAAA,EACX,WAAW,WAAW,YAAY;AAChC,aAAS;AAAA,EACX,WAAW,SAAS,YAAY;AAC9B,aAAS;AAAA,EACX,WAAW,UAAU;AACnB,aAAS;AAAA,EACX;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,WAAW;AAAA,MACX,eAAa;AAAA,MACb,IAAI;AAAA,QACF;AAAA,UACE,UAAU;AAAA;AAAA,UAEV,GAAI,CAAC,aAAa,CAAC,sBACf;AAAA,YACE,WAAW;AAAA,cACT,iBAAiB;AAAA,YACnB;AAAA,UACF,IACA,CAAC;AAAA,UACL,GAAI,aAAa,CAAC,sBACd;AAAA,YACE,cAAc;AAAA,YACd,GAAG,eAAe,YAAY,aAAa;AAAA,UAC7C,IACA,CAAC;AAAA,QACP;AAAA,QACA,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC;AAAA,MAC5C;AAAA;AAAA,EACF;AAEJ,CAAC;AAGD,IAAM,kBAAkB;AAOxB,IAAM,mBAAmB;AAAA,EACvB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,OAAO;AACT;AAEA,IAAM,eAAe;AAAA,EACnB,OAAO;AAAA,EACP,YAAY;AACd;AAGA,IAAM,qBAAqB,MAAM;AAa1B,IAAM,sBAA0D,CAAC;AAAA,EACtE,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA,gBAAgB;AAClB,MAAM;AACJ,QAAM,eAAe,cAAc;AACnC,QAAM,CAAC,cAAc,eAAe,IAAI,cAAAK,QAAM;AAAA,IAC5C,gBAAgB;AAAA,EAClB;AACA,QAAM,QAAQ,eAAgB,aAAa,QAAS;AAEpD,QAAM,CAAC,MAAM,OAAO,IAAI,cAAAA,QAAM,SAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAI,cAAAA,QAAM,SAAyB,KAAK;AAC9D,QAAM,CAAC,cAAc,eAAe,IAAI,cAAAA,QAAM,SAAS,KAAK;AAC5D,QAAM,CAAC,UAAU,WAAW,IAAI,cAAAA,QAAM,SAAuB,IAAI;AACjE,QAAM,CAAC,WAAW,YAAY,IAAI,cAAAA,QAAM;AAAA,IAAgB,MACtDH,SAAQ,MAAM,KAAK,KAAKA,SAAQ,MAAM,GAAG,SAAK,cAAAF,SAAM,EAAE,QAAQ,OAAO;AAAA,EACvE;AAEA,QAAM,iBAAiB,iBAAiB,OAAO,YAAY,QAAQ;AACnE,QAAM,CAAC,WAAW,YAAY,IAAI,cAAAK,QAAM,SAAS,cAAc;AAC/D,QAAM,CAAC,cAAc,eAAe,IAAI,cAAAA,QAAM,SAAS,KAAK;AAC5D,QAAM,gBAAgB,CAAC;AACvB,QAAM,sBAAsB,cAAAA,QAAM,OAAO,KAAK;AAE9C,QAAM,YAAY,cAAAA,QAAM,OAA8B,IAAI;AAC1D,QAAM,CAAC,UAAU,WAAW,IAAI,cAAAA,QAAM,SAA6B,IAAI;AAEvE,QAAM,aAAa,SAAS,GAAG,UAAU,WAAM,QAAQ;AAEvD,QAAM,UAAW,WAAW,OAAO,WAAW,aAAa,CAAC;AAC5D,QAAM,QAAS,WAAW,KAAK,WAAW,aAAa,CAAC;AACxD,QAAM,iBACJ,YACC,WAAW,OAAO,YAClB,WAAW,KAAK,YAChB,QAAQ,YACR,MAAM;AACT,QAAM,iBAAiB,QAAQ,QAAQ,YAAY,MAAM,QAAQ;AACjE,QAAM,cAAc,QAAQ,QAAQ,SAAS,MAAM,KAAK;AAExD,QAAM,SAAS,CAAC,SAAyB;AACvC,UAAM,UAAU,WAAW,IAAI;AAC/B,QAAI,CAAC,aAAc,iBAAgB,OAAO;AAC1C,eAAW,OAAO;AAClB,WAAO;AAAA,EACT;AAGA,gBAAAA,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC,aAAc,cAAa,cAAc;AAAA,EAChD,GAAG,CAAC,gBAAgB,YAAY,CAAC;AAEjC,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC,cAAe;AACpB,UAAM,SAAS,gBAAgB,WAAW,YAAY,QAAQ;AAC9D,QAAI,WAAW,MAAM;AACnB,mBAAa,cAAc;AAC3B;AAAA,IACF;AACA,UAAM,UAAU,OAAO,MAAM;AAC7B,aAAS,OAAO;AAChB,oBAAgB,QAAQ,QAAQ,SAAS,CAAC,QAAQ,GAAG,CAAC;AACtD,iBAAa,iBAAiB,SAAS,YAAY,QAAQ,CAAC;AAAA,EAC9D;AAEA,QAAM,aAAa,MAAM;AACvB,QAAI,eAAgB;AACpB,aAAS,KAAK;AACd,oBAAgB,QAAQ,MAAM,SAAS,CAAC,MAAM,GAAG,CAAC;AAClD,gBAAY,IAAI;AAChB,iBAAaH,SAAQ,MAAM,KAAK,KAAKA,SAAQ,MAAM,GAAG,SAAK,cAAAF,SAAM,EAAE,QAAQ,OAAO,CAAC;AACnF,YAAQ,IAAI;AAAA,EACd;AAEA,QAAM,cAAc,MAAM;AACxB,YAAQ,KAAK;AACb,gBAAY,IAAI;AAAA,EAClB;AAEA,QAAM,eAAe,MAAM;AACzB,WAAO,KAAK;AACZ,gBAAY;AAAA,EACd;AAEA,QAAM,eAAe,MAAM;AACzB,aAAS,KAAK;AACd,gBAAY;AAAA,EACd;AAEA,QAAM,cAAc,MAAM;AACxB,aAAS,KAAK;AACd,oBAAgB,KAAK;AACrB,gBAAY,IAAI;AAAA,EAClB;AAEA,QAAM,iBAAiB,CAAC,QAAsB;AAC5C,QAAI,CAAC,IAAK;AACV,UAAM,SAAS,OAAO,GAAG;AACzB,QAAI,CAAC,gBAAgB,CAAC,MAAM,OAAO;AACjC,eAAS,EAAE,OAAO,QAAQ,KAAK,KAAK,CAAC;AACrC,sBAAgB,IAAI;AACpB,kBAAY,IAAI;AAChB;AAAA,IACF;AAEA,aAAS,WAAW,EAAE,OAAO,MAAM,OAAO,KAAK,OAAO,CAAC,CAAC;AACxD,oBAAgB,KAAK;AACrB,gBAAY,IAAI;AAAA,EAClB;AAEA,QAAM,cAAc,CAAC,UAAkB;AACrC,iBAAa,CAAC,MAAM,EAAE,IAAI,OAAO,OAAO,EAAE,QAAQ,OAAO,CAAC;AAAA,EAC5D;AAEA,QAAM,aAAaE,SAAQ,MAAM,KAAK;AACtC,QAAM,WAAWA,SAAQ,MAAM,GAAG;AAElC,QAAM,UAAU,cAAAG,QAAM;AAAA,IACpB,CAAC,aACC;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ;AAAA,QACA;AAAA,QACA,UAAU,eAAe,WAAW;AAAA,QACpC,cAAc,CAAC,OAAO,MAAM;AAC1B,mBAAS,eAAe,OAAO,CAAC;AAChC,cAAI,aAAc,iBAAY,cAAAL,SAAM,CAAU,CAAC;AAAA,QACjD;AAAA,QACA,aAAa,CAAC,MAAM;AAClB,6BAAe,cAAAA,SAAM,CAAU,CAAC;AAAA,QAClC;AAAA;AAAA,IACF;AAAA;AAAA;AAAA,IAIF,CAAC,YAAY,UAAU,cAAc,UAAU,MAAM,KAAK;AAAA,EAC5D;AAEA,QAAM,aAAa,UAAU,IAAI,GAAG,OAAO;AAG3C,QAAM,mBAAmB,OAAO,MAAM,QAAQ,MAAM;AACpD,QAAM,iBAAiB,OACnB,gBAAgB,MAAM,SAAS,WAC7B,OAAO,QAAQ,IACf,eACE,OACA,MAAM,MACV,MAAM;AACV,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SACE,6CAAC,qDAAqB,aAAa,mCACjC,wDAAC,sBAAI,IAAI,EAAE,SAAS,eAAe,eAAe,UAAU,GAAK,MAAiB,CAAC,EAAG,GACpF;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,CAAC,OAA8B;AAClC,oBAAU,UAAU;AACpB,sBAAY,EAAE;AAAA,QAChB;AAAA,QACA,IAAI,EAAE,SAAS,eAAe,UAAU,IAAI;AAAA,QAE5C;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAS;AAAA,YACT,OAAO;AAAA,YACP,OAAO,gBAAgB,YAAY;AAAA,YACnC,aAAa,GAAG,UAAU,WAAM,QAAQ;AAAA,YACxC,UAAU;AAAA,YACV,UAAU;AAAA,YACV,OAAO;AAAA,YACP,SAAS,gBAAgB,SAAY;AAAA,YACrC,SAAS,MAAM;AACb,kBAAI,eAAe;AACjB,gCAAgB,IAAI;AAAA,cACtB,OAAO;AACL,2BAAW;AAAA,cACb;AAAA,YACF;AAAA,YACA,QAAQ,MAAM;AACZ,kBAAI,CAAC,cAAe;AACpB,8BAAgB,KAAK;AACrB,kBAAI,oBAAoB,SAAS;AAC/B,oCAAoB,UAAU;AAC9B,6BAAa,cAAc;AAC3B;AAAA,cACF;AACA,+BAAiB;AAAA,YACnB;AAAA,YACA,UAAU,CAAC,MAAM;AACf,kBAAI,CAAC,cAAe;AACpB,2BAAa,EAAE,OAAO,KAAK;AAAA,YAC7B;AAAA,YACA,WAAW,CAAC,MAAM;AAChB,kBAAI,CAAC,cAAe;AACpB,kBAAI,EAAE,QAAQ,SAAS;AACrB,kBAAE,eAAe;AAChB,gBAAC,EAAE,OAA4B,KAAK;AAAA,cACvC;AACA,kBAAI,EAAE,QAAQ,UAAU;AACtB,kBAAE,eAAe;AACjB,oCAAoB,UAAU;AAC9B,6BAAa,cAAc;AAC1B,gBAAC,EAAE,OAA4B,KAAK;AAAA,cACvC;AAAA,YACF;AAAA,YACA,YAAY;AAAA,cACV,UAAU,CAAC;AAAA,cACX,cAAc;AAAA,cACd,eAAe;AAAA,YACjB;AAAA,YACA,YAAY;AAAA,cACV,cACE,8CAAC,uBAAAO,SAAA,EAAe,UAAS,OAAM,IAAI,EAAE,KAAK,KAAK,GAC5C;AAAA,mCACC;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,aAAa,CAAC,MAAM;AAClB,wBAAE,eAAe;AACjB,wBAAE,gBAAgB;AAAA,oBACpB;AAAA,oBACA,SAAS,CAAC,MAAM;AACd,wBAAE,gBAAgB;AAClB,iCAAW;AAAA,oBACb;AAAA,oBACA,IAAI,EAAE,SAAS,eAAe,QAAQ,UAAU;AAAA,oBAEhD;AAAA,sBAAC;AAAA;AAAA,wBACC,MAAK;AAAA,wBACL,SAAQ;AAAA,wBACR,OAAO;AAAA,wBACP,eAAY;AAAA,wBACZ,cAAY;AAAA,wBACZ,IAAI;AAAA;AAAA,oBACN;AAAA;AAAA,gBACF,IACE;AAAA,gBACJ;AAAA,kBAAC;AAAA;AAAA,oBACC,MAAK;AAAA,oBACL,UAAU;AAAA,oBACV,SAAS,CAAC,MAAM;AACd,wBAAE,gBAAgB;AAClB,0BAAI,KAAM,aAAY;AAAA,0BACjB,YAAW;AAAA,oBAClB;AAAA,oBACA,cAAW;AAAA,oBACX,OAAM;AAAA,oBAEN,uDAAC,gCAAkB,UAAS,SAAQ;AAAA;AAAA,gBACtC;AAAA,iBACF;AAAA,YAEJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,WAAU;AAAA,QACV,OAAO,EAAE,QAAQ,KAAK;AAAA,QAEtB,uDAAC,oCAAkB,aAAa,cAC9B;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,YACX,IAAI;AAAA,cACF,IAAI;AAAA,cACJ,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,QAAQ;AAAA,cACR,UAAU;AAAA,YACZ;AAAA,YAEA;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,IAAI;AAAA,oBACF,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,KAAK;AAAA,oBACL,IAAI;AAAA,oBACJ,IAAI;AAAA,oBACJ,UAAU,EAAE,IAAI,QAAQ,IAAI,SAAS;AAAA,kBACvC;AAAA,kBAEA;AAAA,kEAAC,sBAAI,IAAI,EAAE,OAAO,IAAI,GAMpB;AAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,IAAI;AAAA,4BACF,SAAS;AAAA,4BACT,YAAY;AAAA,4BACZ,WAAW;AAAA,4BACX,IAAI;AAAA,0BACN;AAAA,0BAEA;AAAA;AAAA,8BAAC;AAAA;AAAA,gCACC,MAAK;AAAA,gCACL,SAAS,MAAM,YAAY,EAAE;AAAA,gCAC7B,cAAW;AAAA,gCACX,OAAM;AAAA,gCAEN,uDAAC,iCAAmB,UAAS,SAAQ;AAAA;AAAA,4BACvC;AAAA,4BACA,6CAAC,sBAAI,IAAI,kBAAkB,aAAU,UAClC,oBAAU,OAAO,WAAW,GAC/B;AAAA,4BACA,6CAAC,sBAAI,IAAI,cAAc,eAAW,MAAC;AAAA;AAAA;AAAA,sBACrC;AAAA,sBAKA;AAAA,wBAAC;AAAA;AAAA,0BAEC,OAAO;AAAA,0BACP,eAAe;AAAA,0BACf,eAAe,CAAC,MAAM,iBAAa,cAAAP,SAAM,CAAU,EAAE,QAAQ,OAAO,CAAC;AAAA,0BACrE,6BAA2B;AAAA,0BAC3B,OAAO,EAAE,KAAK,SAAS,gBAAgB,mBAAmB;AAAA,0BAC1D,IAAI,EAAE,OAAO,IAAI;AAAA;AAAA,wBANZ,UAAU,OAAO,SAAS;AAAA,sBAOjC;AAAA,uBACF;AAAA,oBACA;AAAA,sBAAC;AAAA;AAAA,wBACC,IAAI;AAAA,0BACF,OAAO;AAAA,0BACP,WAAW;AAAA,0BACX,SAAS;AAAA,0BACT,SAAS,EAAE,IAAI,QAAQ,IAAI,QAAQ;AAAA,wBACrC;AAAA;AAAA,oBACF;AAAA,oBACA,8CAAC,sBAAI,IAAI,EAAE,OAAO,IAAI,GACpB;AAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,IAAI;AAAA,4BACF,SAAS;AAAA,4BACT,YAAY;AAAA,4BACZ,WAAW;AAAA,4BACX,IAAI;AAAA,0BACN;AAAA,0BAEA;AAAA,yEAAC,sBAAI,IAAI,cAAc,eAAW,MAAC;AAAA,4BACnC,6CAAC,sBAAI,IAAI,kBAAkB,aAAU,UAClC,qBAAW,OAAO,WAAW,GAChC;AAAA,4BACA;AAAA,8BAAC;AAAA;AAAA,gCACC,MAAK;AAAA,gCACL,SAAS,MAAM,YAAY,CAAC;AAAA,gCAC5B,cAAW;AAAA,gCACX,OAAM;AAAA,gCAEN,uDAAC,+BAAiB,UAAS,SAAQ;AAAA;AAAA,4BACrC;AAAA;AAAA;AAAA,sBACF;AAAA,sBACA;AAAA,wBAAC;AAAA;AAAA,0BAEC,OAAO;AAAA,0BACP,eAAe;AAAA,0BACf,eAAe,CAAC,MACd,iBAAa,cAAAA,SAAM,CAAU,EAAE,SAAS,GAAG,OAAO,EAAE,QAAQ,OAAO,CAAC;AAAA,0BAEtE,6BAA2B;AAAA,0BAC3B,OAAO,EAAE,KAAK,SAAS,gBAAgB,mBAAmB;AAAA,0BAC1D,IAAI,EAAE,OAAO,IAAI;AAAA;AAAA,wBARZ,WAAW,OAAO,SAAS;AAAA,sBASlC;AAAA,uBACF;AAAA;AAAA;AAAA,cACF;AAAA,cAEA,8CAAC,sBAAAQ,SAAA,EAAc,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,gBAAgB,YAAY,KAAK,IAAI,GACxE;AAAA,6DAAC,sBAAW,eAAY,uBAAsB,SAAS,aAAa,OAAM,SACxE,uDAAC,iCAAkB,UAAS,SAAQ,GACtC;AAAA,gBACA,6CAAC,sBAAW,SAAS,cAAc,OAAM,UACvC,uDAAC,yBAAU,UAAS,SAAQ,GAC9B;AAAA,gBACA,6CAAC,sBAAW,SAAS,cAAc,OAAM,UACvC,uDAAC,wBAAU,UAAS,SAAQ,GAC9B;AAAA,iBACF;AAAA;AAAA;AAAA,QACF,GACF;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;AAEA,IAAO,8BAAQ;;;ACrzBR,IAAM,kBAAkB;AAAA,EAC7B,cAAc;AAAA,IACZ,WAAW;AAAA,MACT,QAAQ;AAAA,QACN,IAAI;AAAA,UACF,oBAAoB;AAAA,YAClB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,QAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AACO,IAAM,sBAAsB;AAAA,EACjC,cAAc;AAAA,IACZ,WAAW;AAAA,MACT,QAAQ;AAAA,QACN,IAAI;AAAA,UACF,oBAAoB;AAAA,YAClB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,QAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,kBAAkB;AAAA,EAC7B,cAAc;AAAA,IACZ,WAAW;AAAA,MACT,QAAQ;AAAA,QACN,IAAI;AAAA,UACF,oBAAoB;AAAA,YAClB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,QAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,oBAAoB;AAAA,EAC/B,cAAc;AAAA,IACZ,WAAW,CAAC;AAAA,EACd;AAAA,EACA,gBAAgB;AAAA,IACd,MAAM;AAAA,MACJ,cAAc;AAAA,IAChB;AAAA,EACF;AACF;AAEO,IAAM,6BAA6B;AAAA,EACxC,cAAc;AAAA,IACZ,WAAW;AAAA,MACT,oBAAoB,EAAE,MAAM,QAAQ;AAAA,MACpC,gBAAgB,EAAE,MAAM,QAAQ;AAAA,MAChC,gBAAgB,EAAE,UAAU,QAAQ;AAAA,IACtC;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,MAAM,CAAC;AAAA,IACP,OAAO,CAAC;AAAA,EACV;AACF;AAEO,IAAM,kBAAkB;AAAA,EAC7B,cAAc,CAAC;AAAA,EACf,gBAAgB;AAAA,IACd,MAAM;AAAA,MACJ,qCAAqC;AAAA,QACnC,OAAO;AAAA,QACP,iBAAiB;AAAA,QACjB,WAAW;AAAA,UACT,iBAAiB;AAAA,QACnB;AAAA,MACF;AAAA,MACA,yBAAyB;AAAA,QACvB,aAAa;AAAA,MACf;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,OAAO;AAAA,IACT;AAAA,EACF;AACF;AASO,IAAM,gCAAgC;AAAA,EAC3C,cAAc;AAAA,IACZ,WAAW;AAAA,MACT,yBAAyB;AAAA,QACvB,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,MAAM;AAAA,MACJ,KAAK,EAAE,cAAc,MAAM;AAAA,MAC3B,8CAA8C;AAAA,QAC5C,gBAAgB;AAAA,QAChB,oDAAoD;AAAA,UAClD,cAAc;AAAA,UACd,UAAU;AAAA,UACV,UAAU;AAAA,UACV,aAAa;AAAA,YACX,cAAc;AAAA,YACd,SAAS;AAAA,YACT,SAAS;AAAA,YACT,iBAAiB;AAAA,YACjB,OAAO;AAAA,YACP,QAAQ;AAAA,UACV;AAAA,UACA,kBAAkB;AAAA,YAChB,OAAO;AAAA,YACP,iBAAiB;AAAA,YACjB,4BAA4B;AAAA,cAC1B,iBAAiB;AAAA,YACnB;AAAA,YACA,aAAa;AAAA,cACX,SAAS;AAAA,cACT,SAAS;AAAA,cACT,iBAAiB;AAAA,YACnB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,wBAAwB;AAAA,EACnC,gBAAgB;AAAA,IACd,MAAM;AAAA,MACJ,iFAAiF;AAAA,QAC/E,aAAa;AAAA,MACf;AAAA,MACA,8BAA8B;AAAA,QAC5B,yBAAyB;AAAA,UACvB,WAAW;AAAA,YACT,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":["import_react","Paper","import_jsx_runtime","MuiIconButton","import_jsx_runtime","MuiChip","import_PhotoSizeSelectLarge","import_Close","import_Person","import_DeleteForever","import_AccountTreeOutlined","import_jsx_runtime","dayjs","customParseFormat","React","InputAdornment","DialogActions","import_react","import_dayjs","import_customParseFormat","import_LocalizationProvider","import_AdapterDayjs","import_DateCalendar","import_DialogActions","import_InputAdornment","import_jsx_runtime","dayjs","customParseFormat","toDayjs","DATE_PARSE_FORMATS","React","InputAdornment","DialogActions","import_react","import_dayjs","import_customParseFormat","import_LocalizationProvider","import_AdapterDayjs","import_MultiSectionDigitalClock","import_DialogActions","import_InputAdornment","import_jsx_runtime","dayjs","customParseFormat","toDayjs","React","InputAdornment","AccessTimeIcon","DialogActions","import_react","import_dayjs","import_customParseFormat","import_LocalizationProvider","import_AdapterDayjs","import_DateCalendar","import_DialogActions","import_InputAdornment","import_jsx_runtime","dayjs","customParseFormat","toDayjs","DISPLAY_DATE_FMT","DATE_PARSE_FORMATS","React","RangeDay","InputAdornment","DialogActions"]}
|
package/dist/datePicker.mjs
CHANGED
|
@@ -1,29 +1,42 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MuiXDatePicker_default,
|
|
3
|
+
MuiXDateRangePicker_default,
|
|
3
4
|
MuiXDateTimePicker_default,
|
|
5
|
+
MuiXTimePicker_default,
|
|
4
6
|
dateCalendarTheme,
|
|
5
7
|
datePickerTheme,
|
|
6
8
|
dateTimePickerTheme,
|
|
7
9
|
multiSectionDigitalClockTheme,
|
|
8
10
|
pickersCalendarHeaderTheme,
|
|
9
11
|
pickersDayTheme,
|
|
10
|
-
pickersInputBaseTheme
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
pickersInputBaseTheme,
|
|
13
|
+
timePickerTheme
|
|
14
|
+
} from "./chunk-XAJAMVAG.mjs";
|
|
15
|
+
import "./chunk-SMD7OEUW.mjs";
|
|
16
|
+
import "./chunk-PL55YKT4.mjs";
|
|
17
|
+
import "./chunk-3DQINB57.mjs";
|
|
18
|
+
import "./chunk-3VUAM2GY.mjs";
|
|
19
|
+
import "./chunk-VYD3PDBB.mjs";
|
|
20
|
+
import "./chunk-MDAUF7IL.mjs";
|
|
21
|
+
import "./chunk-ZVFYOXDE.mjs";
|
|
22
|
+
import "./chunk-D4XPNSSI.mjs";
|
|
13
23
|
import "./chunk-4Q54P737.mjs";
|
|
14
24
|
import "./chunk-OP6LKXPA.mjs";
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-PNSJC6PC.mjs";
|
|
26
|
+
import "./chunk-AFLEG5ZC.mjs";
|
|
17
27
|
import "./chunk-FJ6ZGZIA.mjs";
|
|
18
28
|
export {
|
|
19
29
|
MuiXDatePicker_default as MuiXDatePicker,
|
|
30
|
+
MuiXDateRangePicker_default as MuiXDateRangePicker,
|
|
20
31
|
MuiXDateTimePicker_default as MuiXDateTimePicker,
|
|
32
|
+
MuiXTimePicker_default as MuiXTimePicker,
|
|
21
33
|
dateCalendarTheme,
|
|
22
34
|
datePickerTheme,
|
|
23
35
|
dateTimePickerTheme,
|
|
24
36
|
multiSectionDigitalClockTheme,
|
|
25
37
|
pickersCalendarHeaderTheme,
|
|
26
38
|
pickersDayTheme,
|
|
27
|
-
pickersInputBaseTheme
|
|
39
|
+
pickersInputBaseTheme,
|
|
40
|
+
timePickerTheme
|
|
28
41
|
};
|
|
29
42
|
//# sourceMappingURL=datePicker.mjs.map
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { DialogProps as DialogProps$1 } from '@mui/material/Dialog';
|
|
3
|
+
import { DialogTitleProps as DialogTitleProps$1 } from '@mui/material/DialogTitle';
|
|
4
|
+
import { DialogContentProps as DialogContentProps$1 } from '@mui/material/DialogContent';
|
|
5
|
+
import { DialogActionsProps as DialogActionsProps$1 } from '@mui/material/DialogActions';
|
|
6
|
+
import { DialogContentTextProps as DialogContentTextProps$1 } from '@mui/material/DialogContentText';
|
|
7
|
+
import { SxProps, Theme } from '@mui/material/styles';
|
|
8
|
+
|
|
9
|
+
type DialogProps = DialogProps$1;
|
|
10
|
+
/**
|
|
11
|
+
* Soft theme-aware Dialog — MUI Dialog API with Confirm/MuiModal quiet chrome.
|
|
12
|
+
*
|
|
13
|
+
* Drop-in for `@mui/material/Dialog` consumers: same props, soft paper
|
|
14
|
+
* (`background.paper` + hairline border) and soft backdrop.
|
|
15
|
+
*
|
|
16
|
+
* [Doc](https://mui.com/material-ui/api/dialog/)
|
|
17
|
+
*/
|
|
18
|
+
declare function Dialog({ className, slotProps, ...rest }: DialogProps): react_jsx_runtime.JSX.Element;
|
|
19
|
+
|
|
20
|
+
type DialogTitleProps = DialogTitleProps$1;
|
|
21
|
+
/**
|
|
22
|
+
* Soft Dialog title — same API as `@mui/material/DialogTitle`.
|
|
23
|
+
*/
|
|
24
|
+
declare function DialogTitle(props: DialogTitleProps): react_jsx_runtime.JSX.Element;
|
|
25
|
+
|
|
26
|
+
type DialogContentProps = DialogContentProps$1;
|
|
27
|
+
/**
|
|
28
|
+
* Soft Dialog content — same API as `@mui/material/DialogContent`.
|
|
29
|
+
*/
|
|
30
|
+
declare function DialogContent(props: DialogContentProps): react_jsx_runtime.JSX.Element;
|
|
31
|
+
|
|
32
|
+
type DialogActionsProps = DialogActionsProps$1;
|
|
33
|
+
/**
|
|
34
|
+
* Soft Dialog actions — same API as `@mui/material/DialogActions`.
|
|
35
|
+
*/
|
|
36
|
+
declare function DialogActions(props: DialogActionsProps): react_jsx_runtime.JSX.Element;
|
|
37
|
+
|
|
38
|
+
type DialogContentTextProps = DialogContentTextProps$1;
|
|
39
|
+
/**
|
|
40
|
+
* Soft Dialog content text — same API as `@mui/material/DialogContentText`.
|
|
41
|
+
*/
|
|
42
|
+
declare function DialogContentText(props: DialogContentTextProps): react_jsx_runtime.JSX.Element;
|
|
43
|
+
|
|
44
|
+
/** Soft dialog paper radius - matches Confirm quiet chrome. */
|
|
45
|
+
declare const DIALOG_PAPER_RADIUS = "16px";
|
|
46
|
+
/** Soft black elevation for light scheme (quiet, no thick chrome). */
|
|
47
|
+
declare const DIALOG_SHADOW_LIGHT = "0 1px 2px rgba(0, 0, 0, 0.10), 0 4px 12px rgba(0, 0, 0, 0.12), 0 10px 24px rgba(0, 0, 0, 0.10)";
|
|
48
|
+
/**
|
|
49
|
+
* Soft black elevation for dark scheme.
|
|
50
|
+
* Avoid palette `shadow-outset-1` here: it uses border-1 grey and reads as a pale halo.
|
|
51
|
+
*/
|
|
52
|
+
declare const DIALOG_SHADOW_DARK = "0 1px 2px rgba(0, 0, 0, 0.45), 0 4px 10px rgba(0, 0, 0, 0.50), 0 12px 28px rgba(0, 0, 0, 0.55)";
|
|
53
|
+
/** Soft/quiet Dialog paper tokens (shared by wrapper sx + theme overrides). */
|
|
54
|
+
declare const dialogPaperTokens: {
|
|
55
|
+
readonly '--dialog-bg': "var(--mui-palette-background-paper)";
|
|
56
|
+
readonly '--dialog-border': "var(--mui-palette-border-1)";
|
|
57
|
+
readonly '--dialog-shadow': "0 1px 2px rgba(0, 0, 0, 0.10), 0 4px 12px rgba(0, 0, 0, 0.12), 0 10px 24px rgba(0, 0, 0, 0.10)";
|
|
58
|
+
readonly backgroundColor: "var(--dialog-bg)";
|
|
59
|
+
readonly backgroundImage: "none";
|
|
60
|
+
readonly borderRadius: "16px";
|
|
61
|
+
readonly border: "1px solid var(--dialog-border)";
|
|
62
|
+
readonly boxShadow: "var(--dialog-shadow)";
|
|
63
|
+
readonly outline: "none";
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Soft/quiet Dialog paper.
|
|
67
|
+
* Uses elevated `background.paper` (Google-style mid-grey over near-black canvas
|
|
68
|
+
* in dark) with a hairline border - not raw white MUI defaults or thick chrome.
|
|
69
|
+
*/
|
|
70
|
+
declare const dialogPaperSx: SxProps<Theme>;
|
|
71
|
+
/** Soft glass-adjacent backdrop - same language as Confirm. */
|
|
72
|
+
declare const dialogBackdropTokens: {
|
|
73
|
+
readonly backgroundColor: "color-mix(in srgb, var(--mui-palette-common-black, #000) 36%, transparent)";
|
|
74
|
+
readonly backdropFilter: "blur(2px)";
|
|
75
|
+
};
|
|
76
|
+
declare const dialogBackdropSx: SxProps<Theme>;
|
|
77
|
+
declare const dialogTheme: {
|
|
78
|
+
readonly styleOverrides: {
|
|
79
|
+
readonly paper: {
|
|
80
|
+
readonly '[data-mui-color-scheme="dark"] &, [color-scheme="dark"] &': {
|
|
81
|
+
readonly '--dialog-shadow': "0 1px 2px rgba(0, 0, 0, 0.45), 0 4px 10px rgba(0, 0, 0, 0.50), 0 12px 28px rgba(0, 0, 0, 0.55)";
|
|
82
|
+
readonly boxShadow: "0 1px 2px rgba(0, 0, 0, 0.45), 0 4px 10px rgba(0, 0, 0, 0.50), 0 12px 28px rgba(0, 0, 0, 0.55)";
|
|
83
|
+
};
|
|
84
|
+
readonly '--dialog-bg': "var(--mui-palette-background-paper)";
|
|
85
|
+
readonly '--dialog-border': "var(--mui-palette-border-1)";
|
|
86
|
+
readonly '--dialog-shadow': "0 1px 2px rgba(0, 0, 0, 0.10), 0 4px 12px rgba(0, 0, 0, 0.12), 0 10px 24px rgba(0, 0, 0, 0.10)";
|
|
87
|
+
readonly backgroundColor: "var(--dialog-bg)";
|
|
88
|
+
readonly backgroundImage: "none";
|
|
89
|
+
readonly borderRadius: "16px";
|
|
90
|
+
readonly border: "1px solid var(--dialog-border)";
|
|
91
|
+
readonly boxShadow: "var(--dialog-shadow)";
|
|
92
|
+
readonly outline: "none";
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
declare const dialogTitleTheme: {
|
|
97
|
+
readonly styleOverrides: {
|
|
98
|
+
readonly root: {
|
|
99
|
+
readonly fontSize: "1.05rem";
|
|
100
|
+
readonly fontWeight: 600;
|
|
101
|
+
readonly padding: "20px 20px 8px";
|
|
102
|
+
readonly lineHeight: 1.35;
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
declare const dialogContentTheme: {
|
|
107
|
+
readonly styleOverrides: {
|
|
108
|
+
readonly root: {
|
|
109
|
+
readonly padding: "8px 20px 12px";
|
|
110
|
+
readonly '&.MuiDialogContent-root:first-of-type': {
|
|
111
|
+
readonly paddingTop: "16px";
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Soft secondary / Cancel button chrome for DialogActions.
|
|
118
|
+
* Matches Confirm cancel: quiet border-1 + muted text-secondary
|
|
119
|
+
* (not stark white inherit outline in dark).
|
|
120
|
+
*/
|
|
121
|
+
declare const dialogSecondaryButtonSx: {
|
|
122
|
+
textTransform: "none";
|
|
123
|
+
color: string;
|
|
124
|
+
borderColor: string;
|
|
125
|
+
'--button-color': string;
|
|
126
|
+
'--variant-outlinedColor': string;
|
|
127
|
+
'--variant-outlinedBorder': string;
|
|
128
|
+
'&:hover': {
|
|
129
|
+
color: string;
|
|
130
|
+
borderColor: string;
|
|
131
|
+
backgroundColor: string;
|
|
132
|
+
'--button-hover-border-color': string;
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
declare const dialogActionsTheme: {
|
|
136
|
+
readonly styleOverrides: {
|
|
137
|
+
readonly root: {
|
|
138
|
+
readonly padding: "8px 16px 16px";
|
|
139
|
+
readonly gap: "8px";
|
|
140
|
+
readonly '& .MuiButton-outlined.MuiButton-colorInherit': {
|
|
141
|
+
readonly textTransform: "none";
|
|
142
|
+
readonly color: string;
|
|
143
|
+
readonly borderColor: string;
|
|
144
|
+
readonly '--button-color': string;
|
|
145
|
+
readonly '--variant-outlinedColor': string;
|
|
146
|
+
readonly '--variant-outlinedBorder': string;
|
|
147
|
+
readonly '&:hover': {
|
|
148
|
+
color: string;
|
|
149
|
+
borderColor: string;
|
|
150
|
+
backgroundColor: string;
|
|
151
|
+
'--button-hover-border-color': string;
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
declare const dialogContentTextTheme: {
|
|
158
|
+
readonly styleOverrides: {
|
|
159
|
+
readonly root: {
|
|
160
|
+
readonly color: "var(--mui-palette-text-secondary)";
|
|
161
|
+
readonly fontSize: "0.875rem";
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
export { DIALOG_PAPER_RADIUS, DIALOG_SHADOW_DARK, DIALOG_SHADOW_LIGHT, Dialog, DialogActions, type DialogActionsProps, DialogContent, type DialogContentProps, DialogContentText, type DialogContentTextProps, type DialogProps, DialogTitle, type DialogTitleProps, dialogActionsTheme, dialogBackdropSx, dialogBackdropTokens, dialogContentTextTheme, dialogContentTheme, dialogPaperSx, dialogPaperTokens, dialogSecondaryButtonSx, dialogTheme, dialogTitleTheme };
|