@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/theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/_utils/_func/random.ts","../src/components/elemental/Card/src/Card/Card.tsx","../src/components/elemental/Card/src/Card/theme.tsx","../src/components/elemental/Card/src/Card/index.ts","../src/components/elemental/Card/src/index.ts","../src/components/elemental/Card/index.ts","../src/_utils/_func/array.ts","../src/_utils/_func/sx.ts","../src/_utils/_func/index.ts","../src/components/elemental/Box/src/BorderBox/index.ts","../src/components/elemental/Box/src/index.ts","../src/components/elemental/Box/index.ts","../src/components/elemental/Button/src/Button/themes.ts","../src/components/elemental/Button/src/Button/index.ts","../src/components/elemental/Tooltip/src/Tooltip/theme.tsx","../src/components/elemental/Tooltip/src/Tooltip/index.ts","../src/components/elemental/Tooltip/src/index.ts","../src/components/elemental/Tooltip/index.ts","../src/components/elemental/Button/src/IconButton/IconButton.tsx","../src/components/elemental/Button/src/IconButton/theme.ts","../src/components/elemental/Button/src/IconButton/index.ts","../src/components/elemental/Chip/src/Chip/themes.ts","../src/components/elemental/Chip/src/Chip/index.ts","../src/components/elemental/Chip/src/index.ts","../src/components/elemental/Chip/index.ts","../src/components/elemental/Button/src/TagButton/index.ts","../src/components/elemental/Button/src/index.ts","../src/components/elemental/Button/index.ts","../src/components/elemental/Typography/src/Typography.ts","../src/components/elemental/Typography/src/Variants.tsx","../src/components/elemental/Typography/src/theme.ts","../src/components/elemental/Typography/src/index.ts","../src/components/elemental/Typography/index.ts","../src/components/Icons/MuiIcon/index.ts","../src/components/elemental/Skeleton/MuiSkeleton/index.ts","../src/components/elemental/Skeleton/index.ts","../src/components/elemental/Avatar/src/_utils/_types.ts","../src/components/elemental/Avatar/src/_utils/_const.ts","../src/components/elemental/Avatar/src/_utils/index.ts","../src/components/elemental/Avatar/src/Avatar/themes.ts","../src/components/elemental/Avatar/src/Avatar/index.ts","../src/components/elemental/Badge/src/Badge/Badge.tsx","../src/components/elemental/Badge/src/Badge/theme.ts","../src/components/elemental/Badge/src/Badge/index.ts","../src/components/elemental/Badge/src/index.ts","../src/components/elemental/Badge/index.ts","../src/components/elemental/Menu/src/Menu/theme.ts","../src/components/elemental/Paper/src/Paper/themes.ts","../src/components/elemental/Paper/src/Paper/index.ts","../src/components/elemental/Paper/src/index.ts","../src/components/elemental/Paper/index.ts","../src/components/elemental/Form/src/FormLabel/theme.ts","../src/components/elemental/Form/src/FormLabel/index.ts","../src/components/elemental/Form/src/FormControlLabel/theme.ts","../src/components/elemental/Form/src/FormControlLabel/index.ts","../src/components/elemental/Form/src/themes.ts","../src/components/elemental/Form/src/index.ts","../src/components/elemental/Form/index.ts","../src/components/elemental/Divider/src/theme.ts","../src/components/elemental/Divider/src/index.ts","../src/components/elemental/Divider/index.ts","../src/components/elemental/Checkbox/src/Checkbox/theme.ts","../src/components/elemental/Checkbox/src/Checkbox/index.ts","../src/components/elemental/Checkbox/src/CheckboxGroup/CheckboxGroup.tsx","../src/components/elemental/Checkbox/src/CheckboxGroup/index.ts","../src/components/elemental/Checkbox/src/index.ts","../src/components/elemental/Checkbox/index.ts","../src/components/elemental/List/src/List/theme.ts","../src/components/elemental/List/src/List/index.ts","../src/components/elemental/List/src/index.ts","../src/components/elemental/List/index.ts","../src/components/elemental/Avatar/src/StatusAvatar/StatusAvatar.tsx","../src/components/elemental/Avatar/src/StatusAvatar/index.ts","../src/components/elemental/Avatar/src/index.ts","../src/components/elemental/Avatar/index.ts","../src/components/elemental/DatePicker/src/MuiXDatePicker.tsx","../src/components/elemental/DatePicker/src/MuiXDateTimePicker.tsx","../src/components/elemental/DatePicker/src/theme.ts","../src/components/elemental/DatePicker/src/index.ts","../src/components/elemental/DatePicker/index.ts","../src/components/elemental/Input/src/TextField/theme.ts","../src/components/elemental/Slider/src/Slider/theme.tsx","../src/components/elemental/Slider/src/Slider/index.ts","../src/components/elemental/Slider/src/index.ts","../src/components/elemental/Slider/index.ts","../src/theme/index.ts","#style-inject:#style-inject","../src/theme/styles/scroll.css","../src/theme/Provider.tsx","../src/components/compound/Alert/src/AlertProvider.tsx","../src/components/compound/Alert/src/MuiAlertVariant.tsx","../src/components/compound/Alert/src/_utils/const.ts","../src/components/compound/Alert/src/CollapsableAlert.tsx","../src/components/elemental/Collapse/src/Collapse/index.ts","../src/components/elemental/Collapse/src/Collapse/theme.tsx","../src/components/compound/Alert/src/theme.ts","../src/theme/muiTheme.ts","../src/components/elemental/AppBar/src/theme.ts","../src/components/elemental/Progress/src/theme.ts","../src/components/elemental/Select/src/MuiSelect/theme.ts","../src/components/elemental/Switch/src/Switch/themes.ts","../src/components/elemental/Tab/src/Tab/themes.ts","../src/components/elemental/ToggleButtonGroup/src/ToggleButtonGroup/themes.ts","../src/components/elemental/Stepper/src/theme.ts","../src/components/compound/Table/src/theme.ts","../src/theme/colors/darkBlue.ts","../src/theme/colors/lightBrown.ts","../src/theme/ToggleThemeButton/ToggleThemeButton.tsx","../src/theme/appScrollStyles.ts"],"sourcesContent":["export function randomStrGenerator(length=20):string{\n let result = ''\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * characters.length))\n }\n\n return result\n}\n\nexport function getRandomInt(max: number) {\n return Math.floor(Math.random() * max)\n}\nexport function getRandomBetween(min: number, max: number, isFloat = false) {\n const randomVal = Math.random() * (max - min) + min\n if (isFloat) {\n return randomVal\n }\n return Math.floor(randomVal)\n}","import MuiCard, { type CardProps } from '@mui/material/Card'\nimport CardContent, { type CardContentProps } from '@mui/material/CardContent'\n\n/**\n * A Simple Mui Card Component\n * \n * [Doc](https://mui.com/material-ui/api/card/)\n */\nexport default function Card({\n children,\n slotProps,\n ...rest\n}: CardProps & {\n slotProps?: { cardContent?: CardContentProps }\n}) {\n return (\n <MuiCard {...rest}>\n <CardContent {...slotProps?.cardContent}>\n {children}\n </CardContent>\n </MuiCard>\n )\n}","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const cardTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {},\n }\n\n} as const satisfies MuiComponentTheme<\"MuiCard\">\n\nexport const cardContentTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {\n },\n }\n} as const satisfies MuiComponentTheme<\"MuiCardContent\">\n\nexport const spotlightCardVars = {\n\t'--hover-shadow-color': 'var(--mui-palette-blink-golden)',\n} as const\n","export { default as Card } from '@mui/material/Card'\nexport {default as CardContainer} from './Card'\nexport * from './theme'\nexport {default as SpotlightCard} from './SpotlightCard'\nexport {default as CardContent} from '@mui/material/CardContent'\nexport {default as CardHeader} from '@mui/material/CardHeader'\nexport {default as CardActions} from '@mui/material/CardActions'","export * from './Card'","export * from './src'","export function hasIntersect<T>(a:T[], b:T[]) {\n return a.some((x) => b.includes(x))\n}\n/**\n * a function to get the intersection of two arrays\n */\nexport function getIntersect<T>(a:T[], b:T[]) {\n return a.filter((x) => b.includes(x))\n}\n/**\n * Check if two arrays are the same\n * even if they are in different order\n */\nexport function isSameArray<T>(a:T[], b:T[]) {\n return a.length === b.length && a.every((x) => b.includes(x))\n}\n/**\n * sort array with certain condition\n */\nexport function sortByCondi<\n T,\n K extends keyof T,\n>(array:T[], key:K, condition:(a:T[K],b:T[K])=>boolean,reverse=false) {\n const anchor = reverse ? -1 : 1\n const sorted = [...array]\n sorted.sort((a, b) => {\n if (condition(a[key], b[key])) {\n return -anchor\n } else {\n return anchor\n }\n })\n return sorted\n}\n/**\n * sort array by key\n */\nexport function sortByKey<\n T, \n K extends keyof T,\n>(array: T[], key: K, reverse = false) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const condi = (a: any, b: any) => { return a < b }\n\n const sorted = sortByCondi(array, key, condi, reverse)\n return sorted\n}\n/**\n * sort by key with a certain order\n */\nexport function sortByArr<\n T, \n K extends keyof T,\n>(array: T[], key: K, order: unknown[], reverse = false) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const condi = (a: any, b: any) => {\n return order.indexOf(a) < order.indexOf(b)\n }\n\n const sorted = sortByCondi(array, key, condi, reverse)\n return sorted\n}","import type { SxProps, Theme } from '@mui/material/styles'\n\n/** Values accepted by {@link mergeSx}: objects, callbacks, arrays (nested ok), or omitted. */\nexport type SxMergePart =\n | SxProps<Theme>\n | Record<string, unknown>\n | ReadonlyArray<SxMergePart>\n | false\n | null\n | undefined\n\nfunction flattenSx(part: unknown): unknown[] {\n if (part == null || typeof part === 'boolean') {\n return []\n }\n if (Array.isArray(part)) {\n return part.flatMap(flattenSx)\n }\n if (typeof part === 'function' || typeof part === 'object') {\n return [part]\n }\n return []\n}\n\n/**\n * Combine MUI `sx` values into one prop.\n *\n * Nested arrays are flattened (`[base, [a, b]]` → `[base, a, b]`).\n * `null` / `undefined` / `false` entries are dropped. Later parts win,\n * same as MUI's `sx` array merge.\n */\nexport function mergeSx(...parts: SxMergePart[]): SxProps<Theme> | undefined {\n const list = parts.flatMap(flattenSx)\n if (list.length === 0) {\n return undefined\n }\n if (list.length === 1) {\n return list[0] as SxProps<Theme>\n }\n return list as SxProps<Theme>\n}\n","export * from './array'\nexport * from './random'\nexport * from './sx'","export {default as BorderBox} from './BorderBox'","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","export * from './src'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const buttonTheme = {\n defaultProps: {\n variant: 'outlined',\n focusRipple: false,\n disableRipple: true,\n size: 'small',\n },\n styleOverrides: {\n root: {\n textTransform: 'capitalize',\n // MUI Button defaults to 250ms bg/color/border-color. Snap palette\n // token flips instead of interpolating. :active scale stays a snap\n // transform (no transform transition).\n transition: 'background-color 0s, border-color 0s, color 0s, box-shadow 0s',\n\n '--button-color':'var(--mui-palette-text-primary)',\n '--button-filled-bg':'var(--mui-palette-primary-background)',\n '--button-hover-border-color':'var(--mui-palette-border-hover-1)',\n\n \"--variant-outlinedColor\":\"var(--button-color)\",\n \"--variant-outlinedBg\":\"transparent\",\n\n \"--variant-containedColor\":\"var(--button-color)\",\n \"--variant-containedBg\":\"var(--button-filled-bg)\",\n\n \"--variant-textBorderColor\": 'transparent',\n \"&:hover\": {\n \"--variant-textBorderColor\":\"var(--button-hover-border-color)\",\n },\n\n \"&.MuiButton-colorError\":{\n '--button-color':'var(--mui-palette-error-main)',\n '--button-filled-bg':'var(--mui-palette-error-background)',\n '--button-hover-border-color':'var(--mui-palette-error-dark)',\n },\n \"&.MuiButton-colorInfo\":{\n '--button-color':'var(--mui-palette-info-main)',\n '--button-filled-bg':'var(--mui-palette-info-background)',\n '--button-hover-border-color':'var(--mui-palette-info-dark)',\n },\n \"&.MuiButton-colorSuccess\":{\n '--button-color':'var(--mui-palette-success-dark)',\n '--button-filled-bg':'var(--mui-palette-success-background)',\n '--button-hover-border-color':'var(--mui-palette-success-dark)',\n },\n \"&.MuiButton-colorWarning\":{\n '--button-color':'var(--mui-palette-warning-main)',\n '--button-filled-bg':'var(--mui-palette-warning-background)',\n '--button-hover-border-color':'var(--mui-palette-warning-dark)',\n },\n \"&.MuiButton-colorSystem\":{\n '--button-color':'var(--mui-palette-system-main)',\n '--button-filled-bg':'var(--mui-palette-system-background)',\n '--button-hover-border-color':'var(--mui-palette-system-dark)',\n },\n \"&.MuiButton-colorInsight\":{\n '--button-color':'var(--mui-palette-insight-main)',\n '--button-filled-bg':'var(--mui-palette-insight-background)',\n '--button-hover-border-color':'var(--mui-palette-insight-dark)',\n },\n \"&.MuiButton-colorSecondary\":{\n '--button-color':'var(--mui-palette-secondary-main)',\n '--button-filled-bg':'var(--mui-palette-secondary-background)',\n '--button-hover-border-color':'var(--mui-palette-border-hover-1)',\n },\n \"&.MuiButton-colorPrimary\":{\n '--button-color':'var(--mui-palette-primary-emphasis)',\n '--button-filled-bg':'var(--mui-palette-container-bg-primary)',\n '--button-hover-border-color':'var(--mui-palette-primary-emphasis)',\n\n '--variant-outlinedBorder': 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 62%)',\n '--variant-textColor':'var(--mui-palette-primary-emphasis)',\n '--variant-containedColor':'var(--mui-palette-text-primary)',\n\n '&.MuiButton-outlined': {\n color: 'var(--mui-palette-primary-emphasis)',\n borderColor: 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 62%)',\n '&:hover': {\n color: 'var(--mui-palette-primary-emphasis)',\n borderColor: 'var(--mui-palette-primary-emphasis)',\n backgroundColor: 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 94%)',\n },\n },\n '&.MuiButton-contained': {\n color: 'var(--mui-palette-primary-emphasis)',\n backgroundColor: 'var(--mui-palette-container-bg-primary)',\n '&:hover': {\n color: 'var(--mui-palette-primary-emphasis)',\n borderColor: 'var(--mui-palette-border-hover-1)',\n backgroundColor: 'var(--mui-palette-container-bg-primary)',\n },\n },\n '&.MuiButton-text': {\n color: 'var(--mui-palette-primary-emphasis)',\n '&:hover': {\n color: 'var(--mui-palette-primary-emphasis)',\n borderColor: 'var(--mui-palette-primary-emphasis)',\n backgroundColor: 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 94%)',\n },\n },\n },\n\n \"&:active\": {\n scale:\"0.9\",\n },\n },\n outlined: {\n \"&:hover\": {\n borderColor: 'var(--button-hover-border-color)',\n },\n },\n contained: {\n boxShadow: 'none',\n border:'1px solid transparent',\n '&:hover': {\n boxShadow: 'none',\n borderColor: 'var(--button-hover-border-color)',\n backgroundColor: 'var(--button-filled-bg)',\n },\n },\n\n text: {\n border:'1px solid transparent',\n borderColor: 'var(--variant-textBorderColor)',\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiButton\">\n\nexport const buttonBaseTheme = {\n styleOverrides: {\n root: {\n textTransform: 'capitalize',\n },\n }\n \n} as const satisfies MuiComponentTheme<\"MuiButtonBase\">","export {default as Button} from './Button'\nexport * from './themes'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const tooltipTheme = {\n defaultProps: {\n arrow: true,\n },\n styleOverrides: {\n tooltip: {},\n arrow: {},\n }\n\n} as const satisfies MuiComponentTheme<\"MuiTooltip\">\n","export {default as Tooltip} from '@mui/material/Tooltip'\nexport * from './theme'\n","export * from './Tooltip'\n","export * from './src'\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","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const iconButtonTheme = {\n defaultProps: {\n focusRipple: false,\n disableRipple: true,\n color: 'secondary',\n size: 'small',\n },\n styleOverrides: {\n root: ({theme}) =>({\n // MUI IconButton defaults to 150ms background-color. Drop color\n // interpolation; :active scale stays a snap transform.\n transition: 'background-color 0s, border-color 0s, color 0s',\n '--button-color':'var(--mui-palette-text-primary)',\n '--button-hover-border-color':'var(--mui-palette-border-hover-1)',\n \"&.MuiIconButton-colorError\":{\n '--button-color':'var(--mui-palette-error-main)',\n '--button-hover-border-color':'var(--mui-palette-error-dark)',\n },\n \"&.MuiIconButton-colorInfo\":{\n '--button-color':'var(--mui-palette-info-main)',\n '--button-hover-border-color':'var(--mui-palette-info-dark)',\n },\n \"&.MuiIconButton-colorSuccess\":{\n '--button-color':'var(--mui-palette-success-dark)',\n '--button-hover-border-color':'var(--mui-palette-success-dark)',\n },\n \"&.MuiIconButton-colorWarning\":{\n '--button-color':'var(--mui-palette-warning-main)',\n '--button-hover-border-color':'var(--mui-palette-warning-dark)',\n },\n \"&.MuiIconButton-colorSecondary\":{\n '--button-color':'var(--mui-palette-secondary-dark)',\n '--button-hover-border-color':'var(--mui-palette-secondary-main)',\n },\n \"&.MuiIconButton-colorPrimary\":{\n '--button-color':'var(--mui-palette-primary-emphasis)',\n '--button-hover-border-color':'var(--mui-palette-primary-emphasis)',\n },\n \"&.MuiIconButton-colorSystem\":{\n '--button-color':'var(--mui-palette-system-main)',\n '--button-hover-border-color':'var(--mui-palette-system-dark)',\n },\n \"&.MuiIconButton-colorInsight\":{\n '--button-color':'var(--mui-palette-insight-main)',\n '--button-hover-border-color':'var(--mui-palette-insight-dark)',\n },\n\n '--color-p':'var(--button-color)',\n '--bg': 'color-mix(in lab,rgba(255, 255, 255, 0.04) 95%,var(--color-p) 5%)',\n padding: theme.spacing(0.5),\n borderRadius: '8px',\n \n color: 'var(--color-p)',\n\n backgroundColor:'var(--bg)',\n \"&:active svg\": {\n scale:\"0.9\",\n },\n\n \"&.Mui-disabled\":{\n '--color-p':'var(--mui-palette-action-disabled)',\n '--bg': 'color-mix(in lab,rgba(255, 255, 255, 0.04) 95%,var(--color-p) 5%)',\n color: 'var(--color-p)',\n backgroundColor:'var(--bg)',\n\n '& svg.MuiSvgIcon-root':{\n color: 'var(--color-p)',\n },\n },\n\n border: '1px solid transparent',\n \"&:hover\": {\n borderColor: 'color-mix(in lab, var(--mui-palette-border-1) 80%, var(--button-hover-border-color))',\n },\n\n \"&:active\": {\n scale:\"0.9\",\n },\n }),\n },\n\n} as const satisfies MuiComponentTheme<\"MuiIconButton\">","export {default as IconButton} from './IconButton'\nexport {default as IconButtonSpin} from './IconButton.HoverSpinnin'\nexport {default as IconButtonFade} from './IconButton.Fade'\nexport * from './theme'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const chipTheme = {\n defaultProps: {\n variant: 'outlined',\n size: 'small',\n },\n styleOverrides: {\n root: ({ theme }) => ({\n '--hover-shadow-color': 'var(--mui-palette-blink-golden)',\n\n \"&.MuiChip-clickable:active\": {\n scale:\"0.9\",\n boxShadow: 'none',\n },\n \n \"& .MuiChip-label\":{\n maxWidth: '100%',\n [theme.breakpoints.up('md')]: {\n maxWidth: '20vw',\n },\n },\n \"& .MuiChip-icon, & .MuiChip-deleteIcon\":{\n color:\"inherit\",\n },\n\n '&.MuiChip-colorInfo':{'--hover-shadow-color':'var(--mui-palette-info-main)',},\n '&.MuiChip-colorError':{'--hover-shadow-color':'var(--mui-palette-error-main)',},\n '&.MuiChip-colorSuccess':{'--hover-shadow-color':'var(--mui-palette-success-dark)',},\n '&.MuiChip-colorWarning':{'--hover-shadow-color':'var(--mui-palette-warning-main)',},\n '&.MuiChip-colorSecondary':{'--hover-shadow-color':'var(--mui-palette-secondary-main)',},\n '&.MuiChip-colorPrimary':{'--hover-shadow-color':'var(--mui-palette-blink-golden)',},\n '&.MuiChip-colorSystem':{'--hover-shadow-color':'var(--mui-palette-system-main)',},\n '&.MuiChip-colorInsight':{'--hover-shadow-color':'var(--mui-palette-insight-main)',},\n\n '&.MuiChip-colorDefault': {\n color: 'var(--mui-palette-text-primary)',\n },\n\n '&.MuiChip-filled.MuiChip-colorError': {\n color: 'var(--mui-palette-background-default)',\n },\n \n /** hover effect */\n position: \"relative\",\n \"&.MuiChip-clickable:hover\": {\n boxShadow: `\n 0 4px 10px -4px var(--hover-shadow-color), \n 0px 1px 1px 0px rgba(0, 0, 0, 0.14), \n 0px 1px 3px 0px rgba(0, 0, 0, 0.12)`,\n \"&:before\": {\n opacity: 1,\n },\n },\n \"&:before\": {\n content: '\"\"',\n position: \"absolute\",\n left: 0,\n insetBlockEnd: 0,\n display: \"block\",\n width:\"100%\",\n height: \"1px\",\n opacity: 0,\n backgroundImage:\"linear-gradient(to right, transparent, var(--hover-shadow-color), transparent)\",\n transition:\"all 0.1s ease-in-out\",\n },\n }),\n }\n\n} satisfies MuiComponentTheme<\"MuiChip\">","export {default as Chip} from './Chip'\nexport * from './themes'","export * from './Chip'","export * from './src'","export {default as TagButton} from './TagButton'","export * from './Button'\nexport * from './IconButton'\nexport * from './TagButton'","export * from './src';","export { default } from '@mui/material/Typography'","import React from 'react'\nimport Typography, {type TypographyProps} from '@mui/material/Typography'\n\n/**\n * Mui Typography with variant h5\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function Header(props: { children?: React.ReactNode } & TypographyProps) {\n\treturn <Typography variant=\"h5\" {...props} />\n}\n\n\n/**\n * Mui Typography with variant h6\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function SubHeader(props: TypographyProps) {\n\treturn <Typography variant=\"h6\" {...props} />\n}\n\n/**\n * Mui Typography with variant subtitle1\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function SubTitle(props: TypographyProps) {\n\treturn <Typography variant=\"subtitle1\" {...props} />\n}\n\n/**\n * Mui Typography with variant caption\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function Subscript(props: TypographyProps) {\n\treturn (\n\t\t<Typography\n\t\t\tvariant=\"caption\"\n\t\t\t{...props}\n\t\t\tsx={{\n\t\t\t\t...props.sx,\n\t\t\t\tcolor: props.color ?? 'var(--mui-palette-text-subscript)',\n\t\t\t}}\n\t\t/>\n\t)\n}\n\n/**\n * Mui Typography with variant body\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function Body(props: TypographyProps) {\n\treturn <Typography variant=\"body1\" {...props} />\n}","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const typographyTheme = {\n styleOverrides: {\n root: ()=>({\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n \n \"&:has(svg)\":{\n display: 'inline-flex',\n alignItems: 'center',\n \"&>svg\":{\n fontSize: '1em',\n \n },\n },\n \n }),\n caption: {\n lineHeight: 1,\n },\n \n }\n\n} as const satisfies MuiComponentTheme<\"MuiTypography\">","export {default as Typography} from './Typography'\nexport * from './Variants'\nexport * from './theme'","export * from './src'","// 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 {default as Skeleton} from '@mui/material/Skeleton'\n","export {Skeleton} from './MuiSkeleton'\nexport {default as DialogSkeleton} from './DialogSkeleton'\n","export type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl';","import type { Size } from '../_utils'\n\nexport const AVATARBUTTON_STANDARD_DIMENSIONs = {\n xs:\"36px\",\n sm: \"100px\",\n md: \"120px\",\n lg: \"200px\",\n xl: \"240px\",\n} as const satisfies Record<Size, string>;\n\nexport const AVATAR_SIZEs = {\n xs: \"20px\",\n sm: \"24px\",\n md: \"40px\",\n lg: \"56px\",\n xl: \"80px\",\n} as const satisfies Record<Size, string>;\n\nexport const AVATAR_SX = {\n column:{\n stackSX:{\n xs: {gap: 0.5},\n sm: {gap: 0.5},\n md: {gap: 0.75},\n lg: {gap: 1},\n xl: {gap: 1},\n },\n fontSize: \"0.6rem\",\n },\n row:{\n stackSX:{\n xs: {gap: 0.75},\n sm: {gap: 0.75},\n md: {gap: 1},\n lg: {gap: 1.5},\n xl: {gap: 2},\n },\n fontSize: \"0.8rem\",\n }\n} as const satisfies {\n [key in 'column' | 'row']: {\n stackSX: Record<Size, {gap:number}>,\n fontSize: string,\n }\n};","export * from './_types'\nexport * from './_const'","import type { MuiComponentTheme } from '@/_utils/_types'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\nexport const avatarTheme = {\n styleOverrides: {\n root: {\n '--avatar-bg': 'var(--mui-palette-action-selected)',\n '--avatar-color': 'var(--mui-palette-text-primary)',\n backgroundColor: 'var(--avatar-bg)',\n color: 'var(--avatar-color)',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiAvatar'>\n\n/** Static palette aliases for AvatarButton root element */\nexport const avatarButtonRootSx: SxProps<Theme> = {\n '--avatar-button-text': 'var(--mui-palette-text-primary)',\n '--avatar-hover-icon-color': 'var(--mui-palette-text-subscript)',\n} as const satisfies SxProps<Theme>\n","export {\n default,\n default as Avatar,\n NameSkel,\n} from './Avatar'\nexport {default as AvatarButton} from './AvatarButton'\nexport * from './themes'","import React from 'react'\nimport MuiBadge from '@mui/material/Badge'\n\ntype BadgeProps = {\n style_variant?: 'filled' | 'outlined';\n}\n/**\n * A styled Mui Badge component\n * \n * [Doc](https://mui.com/material-ui/api/badge/)\n * \n * @example\n * ```tsx\n * <MuiBadge badgeContent={4}>\n * <IconButton>\n * <MailIcon/>\n * </IconButton>\n * </MuiBadge>\n * ```\n */\nexport default function Badge(p: \n React.ComponentProps<typeof MuiBadge> \n & BadgeProps\n) {\n const {style_variant, variant, className, ...rest} = p;\n const badge_var_class = \n style_variant === 'outlined' ? 'badge-outlined'\n : style_variant === 'filled' ? 'badge-filled'\n : 'badge-outlined';\n\n return <MuiBadge {...rest} variant={variant} className={badge_var_class + (className ? ` ${className}` : '')} />\n}\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const badgeTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {\n \"& .MuiBadge-badge\": {\n background: 'var(--badge-bg-color)',\n color: 'var(--badge-text-color)',\n border: '1px solid var(--badge-br-color)',\n backdropFilter: 'blur(2px)',\n maxWidth: '50px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n justifyContent: 'flex-start',\n },\n \"&.badge-outlined,&\":{\n '--badge-bg-color': 'transparent',\n },\n \"&.badge-filled\":{\n '--badge-bg-color': 'var(--mui-palette-secondary-main)',\n '--badge-text-color': 'var(--mui-palette-background-default)',\n },\n\n '--badge-text-color': 'var(--mui-palette-secondary-main)',\n '--badge-br-color': 'var(--mui-palette-secondary-main)',\n\n /** primary */\n \"& .MuiBadge-colorPrimary\":{\n '--badge-br-color': 'var(--mui-palette-primary-emphasis)',\n '--badge-text-color': 'var(--mui-palette-primary-emphasis)',\n },\n \"&.badge-filled .MuiBadge-colorPrimary\":{\n '--badge-bg-color': 'var(--mui-palette-primary-emphasis)',\n '--badge-text-color': 'var(--mui-palette-primary-contrast)',\n },\n\n /** secondary */\n \"&.badge-filled .MuiBadge-colorSecondary\":{\n '--badge-bg-color': 'var(--mui-palette-secondary-main)',\n '--badge-text-color': 'var(--mui-palette-background-default)',\n },\n \"& .MuiBadge-colorSecondary\":{\n '--badge-br-color': 'var(--mui-palette-secondary-main)',\n '--badge-text-color': 'var(--mui-palette-secondary-main)',\n },\n\n /** error */\n \"&.badge-filled .MuiBadge-colorError\":{\n '--badge-bg-color': 'var(--mui-palette-error-main)',\n '--badge-text-color': 'var(--mui-palette-background-default)',\n },\n \"& .MuiBadge-colorError\":{\n '--badge-br-color': 'var(--mui-palette-error-main)',\n '--badge-text-color': 'var(--mui-palette-error-main)',\n },\n /** info */\n \"&.badge-filled .MuiBadge-colorInfo\":{\n '--badge-bg-color': 'var(--mui-palette-info-main)',\n '--badge-text-color': 'var(--mui-palette-info-contrastText)',\n },\n \"& .MuiBadge-colorInfo\":{\n '--badge-br-color': 'var(--mui-palette-info-main)',\n '--badge-text-color': 'var(--mui-palette-info-main)',\n },\n /** success */\n \"&.badge-filled .MuiBadge-colorSuccess\":{\n '--badge-bg-color': 'var(--mui-palette-success-main)',\n '--badge-text-color': 'var(--mui-palette-success-contrastText)',\n },\n \"& .MuiBadge-colorSuccess\":{\n '--badge-br-color': 'var(--mui-palette-success-main)',\n '--badge-text-color': 'var(--mui-palette-success-main)',\n },\n /** warning */\n \"&.badge-filled .MuiBadge-colorWarning\":{\n '--badge-bg-color': 'var(--mui-palette-warning-main)',\n '--badge-text-color': 'var(--mui-palette-warning-contrastText)',\n },\n \"& .MuiBadge-colorWarning\":{\n '--badge-br-color': 'var(--mui-palette-warning-main)',\n '--badge-text-color': 'var(--mui-palette-warning-main)',\n },\n /** system */\n \"&.badge-filled .MuiBadge-colorSystem\":{\n '--badge-bg-color': 'var(--mui-palette-system-main)',\n '--badge-text-color': 'var(--mui-palette-system-contrastText)',\n },\n \"& .MuiBadge-colorSystem\":{\n '--badge-br-color': 'var(--mui-palette-system-main)',\n '--badge-text-color': 'var(--mui-palette-system-main)',\n },\n /** insight */\n \"&.badge-filled .MuiBadge-colorInsight\":{\n '--badge-bg-color': 'var(--mui-palette-insight-main)',\n '--badge-text-color': 'var(--mui-palette-insight-contrastText)',\n },\n \"& .MuiBadge-colorInsight\":{\n '--badge-br-color': 'var(--mui-palette-insight-main)',\n '--badge-text-color': 'var(--mui-palette-insight-main)',\n },\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiBadge\">","export {default as Badge} from './Badge'\nexport * from './theme'\nexport * from './theme'","export * from './Badge'","export * from './src'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const menuItemTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {\n '--menu-item-hover-bg': 'var(--mui-palette-background-hover-1)',\n '--menu-item-selected-bg': 'var(--mui-palette-focus-1)',\n\n \"&:hover\":{\n backgroundColor:\"var(--menu-item-hover-bg)\",\n },\n \"&.Mui-selected:before\":{\n width:\"100%\",\n height:\"100%\",\n content:\"''\",\n position:\"absolute\",\n left:0,\n top:0,\n backgroundColor:\"var(--menu-item-selected-bg)\",\n overflow:\"hidden\",\n },\n\n \"& svg\":{\n fontSize:\"1.2rem\",\n },\n \n },\n\n }\n\n} as const satisfies MuiComponentTheme<\"MuiMenuItem\">\n\nexport const menuTheme = {\n styleOverrides: {\n \n },\n} as const satisfies MuiComponentTheme<\"MuiMenu\">","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const paperTheme = {\n defaultProps: {\n variant: 'elevation',\n },\n styleOverrides: {\n root: {\n '--paper-bg': 'var(--mui-palette-background-default)',\n backgroundColor: 'var(--paper-bg)',\n },\n outlined: {\n '--paper-border-color': 'var(--mui-palette-border-1)',\n border: '1px solid var(--paper-border-color)',\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiPaper\">","export { default as Paper } from './Paper';\nexport { default as ShinyPaper } from './ShinyPaper';\nexport * from './themes'","export * from './Paper'","export * from './src'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const formLabelTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: ({\n '--form-label-color': 'var(--mui-palette-text-secondary)',\n color: 'var(--form-label-color)',\n \n maxWidth: \"100%\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n\n \"&.MuiFormLabel-colorSuccess\":{\n color:\"var(--mui-palette-success-main)\",\n },\n \"&.MuiFormLabel-colorError\":{\n color:\"var(--mui-palette-error-main)\",\n },\n \"&.MuiFormLabel-colorInfo\":{\n color:\"var(--mui-palette-info-main)\",\n },\n \"&.MuiFormLabel-colorWarning\":{\n color:\"var(--mui-palette-warning-main)\",\n },\n \"&.MuiFormLabel-colorPrimary\":{\n '--form-label-color':\"var(--mui-palette-primary-emphasis)\",\n color:\"var(--form-label-color)\",\n },\n \"&.MuiFormLabel-colorSecondary\":{\n color:\"var(--mui-palette-secondary-main)\",\n },\n \"&.Mui-disabled\":{\n color:\"var(--mui-palette-text-disabled)\",\n },\n \"&.Mui-error\":{ \n color:\"var(--mui-palette-error-main)\", \n },\n }),\n }\n\n} as const satisfies MuiComponentTheme<\"MuiFormLabel\">","export {default as FormLabel} from './FormLabel'\nexport * from './theme'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const formControlLabelTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: ({\n '--form-control-label-color': 'var(--mui-palette-text-primary)',\n color: 'var(--form-control-label-color)',\n\n maxWidth: \"100%\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n\n \"&.Mui-disabled\":{\n color:\"var(--mui-palette-text-disabled)\",\n },\n }),\n }\n\n} as const satisfies MuiComponentTheme<\"MuiFormControlLabel\">","export {default as FormControlLabel} from './FormControlLabel'\nexport * from './theme'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const formHelperTextTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {\n color: 'var(--mui-palette-text-subscript)',\n }\n },\n} as const satisfies MuiComponentTheme<\"MuiFormHelperText\">","export * from './FormLabel'\n\nexport * from './FormControlLabel'\n\nexport {default as FormControl} from '@mui/material/FormControl'\nexport {default as FormHelperText} from '@mui/material/FormHelperText'\nexport {default as InputAdornment} from '@mui/material/InputAdornment'\nexport {default as InputLabel} from '@mui/material/InputLabel'\nexport * from './themes'","export * from './src'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const dividerTheme = {\n\n styleOverrides: {\n root: {\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiDivider\">","export {default as Divider} from '@mui/material/Divider'\nexport * from './theme'\nexport * from './theme'","export * from './src'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const checkboxTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {\n '--checkbox-color': 'var(--mui-palette-text-grey-1)',\n '--checkbox-selected-bg':'var(--mui-palette-primary-emphasis)',\n\n color: 'var(--checkbox-color)',\n\n \"&.MuiCheckbox-colorPrimary\":{\n '--checkbox-selected-bg': 'var(--mui-palette-primary-emphasis)',\n },\n\n \"&.MuiCheckbox-colorError\":{\n '--checkbox-color': 'var(--mui-palette-error-main)',\n },\n\n \"&.Mui-checked, &.MuiCheckbox-indeterminate\": {\n color: 'var(--checkbox-selected-bg)',\n\n \"&.MuiCheckbox-colorError\":{\n color: 'var(--mui-palette-error-main)',\n }\n },\n\n // check label\n [`&.MuiCheckbox-root + .MuiFormControlLabel-label,\n &.MuiCheckbox-root + .MuiFormControlLabel-label .MuiFormLabel-root\n `]: {\n fontSize: 'inherit',\n },\n },\n },\n} satisfies MuiComponentTheme<'MuiCheckbox'>","export {default as Checkbox} from '@mui/material/Checkbox'\nexport * from './theme'","import { FormControl as MuiFormControl, FormControlLabel as MuiFormControlLabel, FormHelperText as MuiFormHelperText, FormLabel as MuiFormLabel } from '@/ele/Form'\nimport { type FormControlProps } from '@mui/material/FormControl'\nimport MuiFormGroup, { type FormGroupProps } from '@mui/material/FormGroup'\nimport { Box, Stack as MuiStack } from '@/ele/Box'\n\nimport { Checkbox as MuiCheckBox } from '../Checkbox'\nimport { mergeSx } from '@/_utils/_func'\n\nexport interface CheckOptionType{\n id:string;\n label:string;\n}\ntype CheckedStateValue = CheckOptionType['id'][]\ntype OnCheck = (option:CheckOptionType)=>void\n\nexport default function CheckboxGroup({\n error,\n required = false,\n options,\n setCheckedIds,\n title,\n titleSuffix,\n inputProps,\n checkedIds,\n helperText,\n errorText,\n direction = \"row\",\n slotProps = {},\n}: {\n error?: boolean,\n title?: React.ComponentProps<typeof MuiFormLabel>['children'],\n titleSuffix?: React.ComponentProps<typeof MuiFormLabel>['children'],\n options: CheckOptionType[];\n setCheckedIds?: React.Dispatch<React.SetStateAction<CheckedStateValue>>;\n checkedIds: CheckedStateValue;\n required?: boolean,\n helperText?: string,\n errorText?: string,\n direction?: 'row' | 'column',\n inputProps?: NonNullable<React.ComponentProps<typeof MuiCheckBox>['slotProps']>['input'],\n slotProps?: {\n fieldset?: Partial<FormControlProps>,\n group?: Partial<Omit<FormGroupProps, \"row\">>,\n }\n}) {\n\n const onCheck:OnCheck = (option:CheckOptionType) => {\n if(!setCheckedIds)return;\n\n setCheckedIds(old=>{\n if(old.includes(option.id)){\n return old.filter(v=>v!==option.id)\n }else{\n return [...old,option.id]\n }\n })\n }\n\n const onCheckAll = () => {\n if(!setCheckedIds)return;\n\n if(checkedIds.length === options.length){\n setCheckedIds([])\n }else{\n setCheckedIds(options.map(o=>o.id))\n }\n }\n\n return (\n <MuiFormControl required={required} error={error}\n component=\"fieldset\" variant=\"standard\"\n\n {...slotProps?.fieldset}\n sx={mergeSx({ maxWidth:\"100%\" }, slotProps?.fieldset?.sx)}>\n <MuiFormGroup {...slotProps?.group} row={false}>\n <Parent onCheckAll={onCheckAll} \n\n isMoreThanOne={options.length>1}\n ceckedSize={checkedIds.length}\n allOptionsSize={options.length}\n\n error={!!error}\n required={required}\n title={title} titleSuffix={titleSuffix}\n />\n <OptionsCheckbox \n direction={direction}\n options={options}\n selectedValues={checkedIds}\n onCheck={onCheck}\n inputProps={inputProps}\n error={!!error}\n />\n\n {(helperText || errorText) && <MuiFormHelperText error={!!error}>{errorText ? errorText : helperText}</MuiFormHelperText>}\n </MuiFormGroup>\n </MuiFormControl>\n )\n}\n\n// CHANGE 3: Refactored sub-component to use state array\nfunction OptionsCheckbox(p:{\n direction: 'row' | 'column',\n options: CheckOptionType[],\n selectedValues: CheckedStateValue, // Receive state array\n onCheck?:OnCheck,\n inputProps?: NonNullable<React.ComponentProps<typeof MuiCheckBox>['slotProps']>['input'],\n error?: boolean,\n\n}){\n const {direction, options, onCheck, inputProps, error, selectedValues} = p;\n \n return (\n <MuiStack direction={direction} spacing={1} maxWidth=\"100%\" ml={1}>\n {options.map((option,index) => {\n // Determine checked state by checking if value exists in array\n const isChecked = selectedValues.includes(option.id);\n \n return (\n <MuiFormControlLabel\n sx={{\n gap:0.5,marginLeft:0,\n maxWidth:\"100%\",\n }}\n key={index}\n color={error ? 'error' : 'primary'}\n control={\n <MuiCheckBox \n sx={{p:0}}\n value={option.id} \n checked={isChecked} \n onChange={onCheck ?\n () => onCheck(option)\n : undefined\n }\n slotProps={{\n input: inputProps\n }}\n\n color={error ? 'error' : 'primary'}\n />\n }\n label={option.label}\n />\n )\n })}\n </MuiStack>\n )\n}\n\nfunction Parent(p:{\n onCheckAll?: () => void,\n isMoreThanOne: boolean,\n error:boolean,\n required?: boolean,\n title: React.ReactNode,\n titleSuffix?: React.ReactNode,\n ceckedSize: number,\n allOptionsSize: number,\n}){\n const {\n onCheckAll, isMoreThanOne, \n error, required, title, titleSuffix,\n ceckedSize, allOptionsSize\n } = p;\n \n return (\n isMoreThanOne?<MuiFormControlLabel\n sx={{\n gap:0.5,marginLeft:0,\n }}\n control={\n <MuiCheckBox \n sx={{p:0}}\n indeterminate={ceckedSize>0 && ceckedSize<allOptionsSize}\n checked={ceckedSize === allOptionsSize}\n onChange={()=>{\n if(onCheckAll)onCheckAll()\n }}\n color={error ? 'error' : 'primary'}\n />\n }\n label={\n <ParentLabel\n required={required}\n title={title}\n titleSuffix={titleSuffix} \n />\n }\n />\n :<ParentLabel\n required={required}\n title={title}\n titleSuffix={titleSuffix} \n />\n )\n}\n\nfunction ParentLabel(p:{\n required?: boolean,\n title: React.ReactNode,\n titleSuffix?: React.ReactNode,\n}){\n const { required, title, titleSuffix } = p;\n \n return (\n <Box \n sx={{display:\"flex\",alignItems:\"center\",gap:1, maxWidth:\"100%\"}}\n >\n <MuiFormLabel sx={{display: 'flex', alignItems: 'center', gap: 1, width: '100%', '& .MuiFormLabel-asterisk': { display: 'none' }}}>\n <Box sx={{display: 'inline-flex', alignItems: 'center', gap: 0.5}}>\n <Box sx={{flexGrow:0}}>{title}</Box>\n {required && <Box component=\"span\" sx={{ color: 'inherit', fontWeight: 'bold' }}>*</Box>}\n </Box>\n {titleSuffix && <Box sx={{flexShrink:0, display: 'inline-flex'}}>{titleSuffix}</Box>}\n </MuiFormLabel>\n </Box>\n )\n}","export {default as CheckboxGroup} from './CheckboxGroup'\nexport * from './CheckboxGroup'","export * from './Checkbox'\nexport * from './CheckboxGroup'","export * from './src'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const listItemIconTheme = {\n styleOverrides: {\n root: ()=>({\n '--list-item-icon-color': 'var(--mui-palette-text-primary)',\n color: 'var(--list-item-icon-color)',\n }),\n }\n\n} as const satisfies MuiComponentTheme<\"MuiListItemIcon\">\n\nexport const listItemTextTheme = {\n styleOverrides: {\n root: ()=>({\n }),\n }\n\n} as const satisfies MuiComponentTheme<\"MuiListItemText\">\n\nexport const listItemButtonTheme = {\n styleOverrides: {\n root: {\n '--list-item-button-bg-hover': 'var(--mui-palette-background-hover-1)',\n '--list-item-button-bg-ripple': 'color-mix(in lab, var(--list-item-button-bg-hover) 50%, var(--mui-palette-focus-1))',\n\n \"&.MuiButtonBase-root.MuiListItemButton-root\":{\n transition:\"none\",\n // background:\"var(--mui-palette-background-hover-1)\",\n \n \"&:hover\":{\n background:\"var(--list-item-button-bg-hover)\",\n },\n \"& .MuiTouchRipple-root\":{\n color:\"var(--list-item-button-bg-ripple)\",\n },\n },\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiListItemButton\">\n\nexport const listItemTheme = {\n styleOverrides: {\n root: {\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiListItem\">\n\nexport const listItemSubheaderTheme = {\n styleOverrides: {\n root: {},\n }\n\n} as const satisfies MuiComponentTheme<\"MuiListSubheader\">","export {default as List} from '@mui/material/List'\nexport {default as ListSubheader} from '@mui/material/ListSubheader'\nexport {default as ListItemIcon} from '@mui/material/ListItemIcon'\nexport {default as ListItemText} from '@mui/material/ListItemText'\nexport {default as ListItemButton} from '@mui/material/ListItemButton'\nexport {default as ListItem} from '@mui/material/ListItem'\n\nexport {default as TransferList} from './TransferList'\nexport * from './theme'","export * from './List'","export * from './src'","'use client'\nimport { styled } from '@mui/material/styles'\nimport { Badge } from '@/ele/Badge'\n\nimport { useMenu, MenuPopper } from '@/ele/Menu'\n\nimport { Avatar, AvatarButton } from '../Avatar'\nimport { statusAvatarRootSx } from './theme'\nimport { mergeSx } from '@/_utils/_func'\n\n// all the status that can be changed except offline\nconst USER_STATUSs = {\n online: 'online',\n away: 'away',\n busy: 'busy',\n offline: 'offline',\n invisible: 'invisible',\n} as const\nconst changable_status = Object.values(USER_STATUSs).filter(s=>s!=='offline')\ntype UserStatusTypes = typeof USER_STATUSs[keyof typeof USER_STATUSs]\n\n/**\n * StatusAvatar\n * @description: avatar of the participant with status\n * @param status - status of the participant\n * @param src - src of the avatar\n * @param name - name of the participant\n * \n * user status will be shown as a dot on the avatar\n */\nexport function Renderer(props:{\n status:UserStatusTypes;\n statusEditable?:boolean;\n handleStatusChange?:((status:UserStatusTypes)=>void);\n name:string;\n src?:string;\n\n slotProps?:{\n badge?:React.ComponentProps<typeof Badge>;\n avatar?:Partial<React.ComponentProps<typeof Avatar>>;\n avatarButton?:Partial<React.ComponentProps<typeof AvatarButton>>;\n };\n}){\n const {\n name, src,\n status, handleStatusChange,\n statusEditable,\n slotProps,\n } = props\n\n const p = useMenu({\n multiple: false,\n initSelected: [status],\n })\n return (\n <>\n <StyledBadge \n\n status={status}\n overlap=\"circular\"\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n variant=\"dot\"\n\n sx={mergeSx(statusAvatarRootSx, {\n height:\"fit-content\",\n })}\n >\n {statusEditable\n ?<AvatarButton name={name} src={src} {...slotProps?.avatarButton} onClick={p.onTriggerClickHandler}/>\n :<Avatar name={name} src={src} {...slotProps?.avatar} displayName={false}/>\n }\n </StyledBadge>\n <MenuPopper\n openMenuProps={p}\n options={changable_status.map((s)=>({\n id: s,\n label: s,\n onClick:()=>{\n p.closeHandler()\n if(handleStatusChange) handleStatusChange(s)\n },\n }))}\n />\n </>\n )\n}\nexport const status = USER_STATUSs\nexport type Status = UserStatusTypes\n\n/**\n * StyledBadge\n * @description: styled badge for the avatar\n * @param status - status of the participant\n * \n * use css variables to set the color and animation of the badge\n */\nconst StyledBadge = styled(Badge,{\n shouldForwardProp: p=> p!==\"status\"\n})<{status:UserStatusTypes}>(() => ({\n '& .MuiBadge-badge': {\n width:\"15%\",\n height:\"15%\",\n minWidth: '10px',\n minHeight: '10px',\n borderRadius: '50%',\n borderColor:\"transparent\",\n backgroundColor: 'var(--color)',\n color: 'var(--color)',\n boxShadow: `0 0 0 2px var(--status-badge-shadow)`,\n display:\"var(--display)\",\n '&::after': {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n animation: 'var(--animate)',\n border: '1px solid currentColor',\n content: '\"\"',\n },\n },\n '@keyframes ripple': {\n '0%': {\n transform: 'scale(.8)',\n opacity: 1,\n },\n '100%': {\n transform: 'scale(2.4)',\n opacity: 0,\n },\n },\n\n variants:[\n {\n props: {status:USER_STATUSs.online},\n style: {\n '--color': 'var(--status-color-online)',\n '--animate': 'ripple 1.2s infinite ease-in-out', // ripple animation\n '--display': 'block', // show the dot\n },\n },\n {\n props: {status:USER_STATUSs.away},\n style: {\n '--color': 'var(--status-color-away)',\n '--animate': 'none', // no animation\n '--display': 'block', // show the dot\n },\n },\n {\n props: {status:USER_STATUSs.busy},\n style: {\n '--color': 'var(--status-color-busy)',\n '--animate': 'none', // no animation\n '--display': 'block', // show the dot\n },\n },\n {\n props: {status:USER_STATUSs.offline,},\n style: {\n '--color': 'var(--status-color-offline)',\n '--animate': 'none', // no animation\n '--display': 'block', // show the dot\n },\n },\n {\n props: {status:USER_STATUSs.invisible,},\n style: {\n '--color': 'var(--status-color-offline)',\n '--animate': 'none', // no animation\n '--display': 'block', // show the dot\n },\n },\n ]\n}))\n","export * as StatusAvatar from './StatusAvatar'","export * from './Avatar'\nexport * from './StatusAvatar'\n// re-export internal utility types (e.g. Size)\nexport * from './_utils'","export * from './src'\nexport type { Size } from './src/_utils/_types'","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 { 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'>","export { default as MuiXDatePicker } from './MuiXDatePicker'\nexport * from './MuiXDatePicker'\nexport { default as MuiXDateTimePicker } from './MuiXDateTimePicker'\nexport * from './MuiXDateTimePicker'\nexport * from './theme'","export * from './src'\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const textFieldTheme = {\n defaultProps: {\n size: 'small',\n },\n\n styleOverrides: {\n root: {\n \"& fieldset\": {\n borderColor: 'var(--mui-palette-text-secondary)',\n \n },\n \"& .MuiOutlinedInput-root.Mui-focused:not(.Mui-error) fieldset\": {\n borderColor: 'var(--mui-palette-text-secondary)',\n },\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiTextField\">\n\nexport const inputBaseTheme = {\n styleOverrides: {\n root: {\n \"&.MuiInputBase-root::after\": {\n borderColor: 'var(--mui-palette-text-secondary)',\n },\n \"&.MuiInputBase-root::before\": {\n borderColor: 'var(--mui-palette-text-secondary)',\n },\n\n },\n\n },\n} as const satisfies MuiComponentTheme<\"MuiInputBase\">","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const sliderTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {\n color: 'var(--mui-palette-primary-emphasis)',\n },\n rail: {\n backgroundColor: 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 76%)',\n },\n track: {\n border: 'none',\n backgroundColor: 'currentColor',\n },\n thumb: {\n width: \"15px\",\n backgroundColor: 'currentColor',\n boxShadow: \"none\",\n borderRadius: '5px',\n '&:hover, &.Mui-focusVisible, &.Mui-active': {\n boxShadow: \"none\",\n },\n },\n mark: () => ({\n backgroundColor: 'var(--mui-palette-background-disabled)',\n height: \"3px\",\n width: \"10px\",\n '&.MuiSlider-markActive': {\n opacity: 1,\n },\n }),\n markLabel: {\n color: \"var(--mui-palette-text-secondary)\",\n \"&.MuiSlider-markLabelActive\": {\n color: \"var(--mui-palette-text-primary)\",\n }\n },\n valueLabel: {\n lineHeight: 1,\n fontSize: \"9px\",\n background: 'unset',\n padding: 0,\n width: \"24px\",\n height: \"24px\",\n borderRadius: '50% 50% 50% 0',\n backgroundColor: \"var(--mui-palette-warning-background)\",\n color: \"var(--mui-palette-warning-dark)\",\n transformOrigin: 'bottom left',\n transform: 'translate(50%, -100%) rotate(-45deg) scale(0)',\n border: `1px solid var(--mui-palette-warning-dark)`,\n '&::before': { display: 'none' },\n '&.MuiSlider-valueLabelOpen': {\n transform: 'translate(50%, -100%) rotate(-45deg) scale(1)',\n },\n '& > *': {\n transform: 'rotate(45deg)',\n },\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiSlider\">\n","export {default as Slider} from '@mui/material/Slider'\nexport * from './theme'\n","export * from './Slider'\n","export * from './src'\n","import './styles/scroll.css';\n\nexport {default as ThemeProvider} from './Provider';\nexport {default as ToggleThemeButton} from './ToggleThemeButton';\nexport type { AppThemeProviderProps } from './Provider';\nexport { appScrollSurfaceAttribute } from './appScrollStyles';\nexport {theme, createAppTheme} from './muiTheme';\nexport type { ValueOf, ExtractByType, MuiComponentTheme } from '@/_utils/_types';","\n export default function styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === 'undefined') return\n \n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n \n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n }\n ","import styleInject from '#style-inject';styleInject(\":root[color-scheme=light] {\\n --scroll-thumb-visible: color-mix(in srgb, var(--mui-palette-secondary-main), transparent 62%);\\n --scroll-thumb-hover-visible: color-mix(in srgb, var(--mui-palette-secondary-dark), transparent 48%);\\n --scroll-bg-color: transparent;\\n --scroll-thumb-color: transparent;\\n --scroll-thumb-hover-color: transparent;\\n --scroll-track-color: transparent;\\n}\\n:root[color-scheme=dark] {\\n --scroll-thumb-visible: color-mix(in srgb, var(--mui-palette-grey-500), transparent 44%);\\n --scroll-thumb-hover-visible: color-mix(in lab, var(--mui-palette-secondary-dark) 16%, transparent 36%);\\n --scroll-bg-color: transparent;\\n --scroll-thumb-color: transparent;\\n --scroll-thumb-hover-color: transparent;\\n --scroll-track-color: transparent;\\n}\\n*:hover {\\n --scroll-bg-color: transparent;\\n --scroll-thumb-color: var(--scroll-thumb-visible);\\n --scroll-thumb-hover-color: var(--scroll-thumb-hover-visible);\\n --scroll-track-color: transparent;\\n}\\n*:hover * {\\n --scroll-bg-color: transparent;\\n --scroll-thumb-color: transparent;\\n --scroll-thumb-hover-color: transparent;\\n --scroll-track-color: transparent;\\n}\\n*:hover *:hover {\\n --scroll-bg-color: transparent;\\n --scroll-thumb-color: var(--scroll-thumb-visible);\\n --scroll-thumb-hover-color: var(--scroll-thumb-hover-visible);\\n --scroll-track-color: transparent;\\n}\\n[data-chat-surface]:focus-within [data-scroll-surface] {\\n --scroll-bg-color: transparent;\\n --scroll-thumb-color: var(--scroll-thumb-visible);\\n --scroll-thumb-hover-color: var(--scroll-thumb-hover-visible);\\n --scroll-track-color: transparent;\\n}\\n::-webkit-scrollbar-corner {\\n background: var(--mui-palette-background-default);\\n}\\n::-webkit-scrollbar {\\n width: 8px;\\n height: 8px;\\n}\\n::-webkit-scrollbar-track {\\n background: transparent;\\n}\\n::-webkit-scrollbar-track:horizontal {\\n background: transparent;\\n}\\n::-webkit-scrollbar-thumb {\\n background:\\n linear-gradient(\\n to right,\\n transparent 0%,\\n transparent 25%,\\n var(--scroll-thumb-color) 25%,\\n var(--scroll-thumb-color) 75%,\\n transparent 75%,\\n transparent 100%);\\n border: none;\\n border-radius: 10px;\\n}\\n::-webkit-scrollbar-thumb:horizontal {\\n background:\\n linear-gradient(\\n to bottom,\\n transparent 0%,\\n transparent 25%,\\n var(--scroll-thumb-color) 25%,\\n var(--scroll-thumb-color) 75%,\\n transparent 75%,\\n transparent 100%);\\n}\\n::-webkit-scrollbar-thumb:hover {\\n background:\\n linear-gradient(\\n to right,\\n transparent 0%,\\n transparent 25%,\\n var(--scroll-thumb-hover-color) 25%,\\n var(--scroll-thumb-hover-color) 75%,\\n transparent 75%,\\n transparent 100%);\\n}\\n::-webkit-scrollbar-thumb:horizontal:hover {\\n background:\\n linear-gradient(\\n to bottom,\\n transparent 0%,\\n transparent 25%,\\n var(--scroll-thumb-hover-color) 25%,\\n var(--scroll-thumb-hover-color) 75%,\\n transparent 75%,\\n transparent 100%);\\n}\\n.disable-scrollbars::-webkit-scrollbar,\\n.disable-scrollbars::-webkit-scrollbar-track,\\n.disable-scrollbars::-webkit-scrollbar-thumb {\\n background: transparent;\\n}\\n\")","import React from 'react';\nimport createCache from '@emotion/cache';\nimport { CacheProvider } from '@emotion/react';\nimport { ThemeProvider as MuiThemeProvider, type Theme, type ThemeOptions } from '@mui/material/styles';\nimport { CssBaseline, GlobalStyles } from '@mui/material';\nimport { AlertProvider } from '@/compound/Alert';\n\nimport { createAppTheme } from './muiTheme';\n\nconst appEmotionCache = createCache({\n key: 'sdui',\n speedy: true,\n});\n\nconst globalStyles = {\n // Font styles\n 'html, body': {\n fontFamily: \"'Roboto', 'Helvetica Neue', Arial, sans-serif\",\n WebkitFontSmoothing: 'antialiased',\n MozOsxFontSmoothing: 'grayscale',\n color: 'var(--mui-palette-text-primary)',\n },\n 'h1,h2,h3,h4,h5,h6,h7, .h1, .h2,.h3,.h4,.h5,.h6': {\n wordBreak: 'break-word',\n lineHeight: 1.35,\n },\n label: {\n color: 'var(--mui-palette-text-primary)',\n },\n p: {\n fontSize: '15px',\n color: 'var(--mui-palette-text-primary)',\n cursor: 'text',\n },\n // Nested content inside clickable hosts inherits the host cursor\n // (covers ListItemButton, Button, IconButton, AccordionSummary, etc.).\n 'button *, a *, [role=\"button\"] *, .MuiButtonBase-root *': {\n cursor: 'inherit',\n },\n a: {\n color: 'var(--mui-palette-text-href)', // Assuming this var exists from theme\n cursor: 'pointer',\n },\n '*::selection': {\n backgroundColor: 'var(--mui-palette-focus-1)',\n color: 'var(--mui-palette-text-primary)',\n textShadow: 'none',\n },\n '*::-moz-selection': {\n backgroundColor: 'var(--mui-palette-focus-1)',\n color: 'var(--mui-palette-text-primary)',\n textShadow: 'none',\n },\n\n // Layout styles\n html: {\n height: '100%',\n width: '100%',\n margin: 0,\n padding: 0,\n boxSizing: 'border-box',\n },\n 'html > body': {\n height: '100%',\n width: '100%',\n backgroundColor: 'transparent',\n },\n};\n\nexport type AppThemeProviderProps = {\n children: React.ReactNode;\n theme?: Theme;\n muiThemeOptions?: ThemeOptions;\n defaultMode?: 'light' | 'dark' | 'system';\n /** Pass `null` to skip localStorage (Playground3 stage iframes). */\n storageManager?: null;\n};\n\n/**\n * CssVarsProvider re-renders on `setMode` so it can flip the color-scheme\n * attribute. Memoize the app tree so that swap stays a CSS-variable change\n * instead of rebuilding tables, editors, and other heavy compounds.\n */\nconst ThemeTree = React.memo(function ThemeTree({ children }: { children: React.ReactNode }) {\n return (\n <AlertProvider>\n <CssBaseline />\n <GlobalStyles styles={globalStyles} />\n {children}\n </AlertProvider>\n );\n});\n\nexport default function ThemeProvider({\n children,\n theme: customTheme,\n muiThemeOptions,\n defaultMode,\n storageManager,\n}: AppThemeProviderProps) {\n const resolvedTheme = React.useMemo(() => {\n if (customTheme) {\n return customTheme;\n }\n\n return createAppTheme(muiThemeOptions);\n }, [customTheme, muiThemeOptions]);\n\n return (\n <CacheProvider value={appEmotionCache}>\n {/* Skip 250ms color lerp while color-scheme flips. Button/IconButton\n also drop color transitions for other token changes. */}\n <MuiThemeProvider\n theme={resolvedTheme}\n defaultMode={defaultMode}\n storageManager={storageManager}\n disableTransitionOnChange\n >\n <ThemeTree>{children}</ThemeTree>\n </MuiThemeProvider>\n </CacheProvider>\n );\n}\n","'use client'\nimport React from 'react'\nimport { SnackbarProvider, type SnackbarProviderProps } from 'notistack'\nimport { MuiAlertVariant } from './MuiAlertVariant'\nimport { CollapsableAlert } from './CollapsableAlert'\nimport { ALERT_VARIANTs, DEFAULTs } from './_utils'\n\nconst ALERT_COMPONENTS: SnackbarProviderProps['Components'] = {\n [ALERT_VARIANTs.info]: MuiAlertVariant,\n [ALERT_VARIANTs.warning]: MuiAlertVariant,\n [ALERT_VARIANTs.success]: MuiAlertVariant,\n [ALERT_VARIANTs.error]: MuiAlertVariant,\n [ALERT_VARIANTs.system]: MuiAlertVariant,\n [ALERT_VARIANTs.insight]: MuiAlertVariant,\n [ALERT_VARIANTs.collapsable]: CollapsableAlert,\n}\n\n/**\n * AlertProvider - Context provider for the alert system\n * Sets up notistack with all custom alert variant components\n * Should wrap the entire application or specific sections that need alerts\n */\nexport const AlertProvider = React.memo(function AlertProvider({ children }: { children: React.ReactNode }) {\n return (\n <SnackbarProvider\n maxSnack={DEFAULTs.PROVIDER_CONFIGs.maxSnack}\n anchorOrigin={DEFAULTs.ANCHOR_ORIGIN}\n Components={ALERT_COMPONENTS}\n >\n {children}\n </SnackbarProvider>\n )\n})\n","'use client'\nimport { forwardRef, useCallback } from 'react'\nimport { useSnackbar, CustomContentProps } from 'notistack'\nimport Alert from '@mui/material/Alert'\n\nimport { type AlertOptions, ALERT_VARIANTs } from './_utils'\n\n// Map custom variants to MUI Alert severity / color\nconst variantToSeverity = {\n [ALERT_VARIANTs.info]: 'info',\n [ALERT_VARIANTs.warning]: 'warning',\n [ALERT_VARIANTs.success]: 'success',\n [ALERT_VARIANTs.error]: 'error',\n [ALERT_VARIANTs.system]: 'system',\n [ALERT_VARIANTs.insight]: 'insight',\n [ALERT_VARIANTs.collapsable]: 'info', // Default to info for collapsable\n} as const\n\ntype MuiSeverity = 'info' | 'warning' | 'success' | 'error' | 'system' | 'insight'\n\nexport const MuiAlertVariant = forwardRef<HTMLDivElement, CustomContentProps & AlertOptions>(\n (props, ref) => {\n const { id, message, variant, icon, style } = props\n const { closeSnackbar } = useSnackbar()\n\n const handleDismiss = useCallback(() => {\n closeSnackbar(id)\n }, [id, closeSnackbar])\n\n // Convert custom variant to MUI severity\n const severity = variantToSeverity[variant as keyof typeof variantToSeverity] || 'info' as MuiSeverity\n\n return (\n <Alert\n ref={ref}\n severity={severity}\n onClose={handleDismiss}\n icon={icon}\n style={style}\n >\n {message}\n </Alert>\n )\n }\n)\n","export const ALERT_VARIANTs = {\n info: 'myInfo',\n warning: 'myWarning',\n success: 'mySuccess',\n error: 'myError',\n system: 'mySystem',\n insight: 'myInsight',\n collapsable: 'myCollapsable',\n} as const\n\nexport const DEFAULTs = {\n AUTO_HIDE_DURATION: 3000,\n ANCHOR_ORIGIN: { horizontal: \"right\" as const, vertical: \"top\" as const },\n PROVIDER_CONFIGs: {\n maxSnack: 3,\n dense: true,\n preventDuplicate: true,\n autoHideDuration: 3000,\n }\n} as const\n\nexport const ERRORs = {\n invalid_variant: 'Invalid alert variant provided',\n enqueue_failed: 'Failed to enqueue alert',\n missing_message: 'Message is required for alert',\n missing_component_props: 'Component props are required for collapsible alert',\n} as const\n","'use client'\nimport { forwardRef, useState, useCallback } from 'react'\nimport { CustomContentProps, useSnackbar } from 'notistack'\nimport CardActions from '@mui/material/CardActions'\nimport type { BoxProps } from '@mui/material/Box'\nimport { CardContainer } from '@/ele/Card'\nimport { Collapse } from '@/ele/Collapse'\nimport { IconButton } from '@/ele/Button'\nimport { Typography } from '@/ele/Typography'\nimport { Box } from '@/ele/Box'\nimport { ExpandMoreIcon, CloseIcon } from '@/icons/MuiIcon'\nimport { type CollapsableAlertOptions } from './_utils'\nimport { collapsableAlertRootSx } from './theme'\nimport { mergeSx } from '@/_utils/_func'\n\nexport const CollapsableAlert = forwardRef<HTMLDivElement, CustomContentProps & CollapsableAlertOptions>(\n ({ id, componentProps, componentWrapperProps, style }, ref) => {\n const [expanded, setExpanded] = useState(false)\n const { closeSnackbar } = useSnackbar()\n\n const handleExpandClick = useCallback(() => {\n setExpanded((oldExpanded) => !oldExpanded)\n }, [])\n\n const handleDismiss = useCallback(() => {\n closeSnackbar(id)\n }, [id, closeSnackbar])\n\n // Extract Renderer and other props following original pattern\n const {\n Renderer,\n ...restCollapse\n } = componentWrapperProps || {}\n\n return (\n <CardContainer \n ref={ref}\n style={style}\n sx={mergeSx(collapsableAlertRootSx, {\n \"&.MuiPaper-root\": {\n background: 'var(--collapse-bg)',\n backdropFilter: \"blur(9px)\",\n transition: \"all 0.3s ease-in-out, color 0s\",\n color: \"text.primary\",\n height: \"fit-content\",\n border: `1px solid var(--collapse-border)`,\n },\n })}\n >\n <CardActions \n sx={{\n justifyContent: \"space-between\",\n padding: '4px 8px',\n }}\n >\n <Typography\n variant=\"body2\"\n sx={{\n color: \"var(--collapse-title-color)\",\n paddingLeft: \"8px\",\n fontWeight: 600\n }}\n >\n {componentProps?.title || 'Alert Title'}\n </Typography>\n <Box sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n }}>\n <IconButton\n aria-label=\"Show more\"\n size=\"small\"\n onClick={handleExpandClick}\n >\n <ExpandMoreIcon \n style={{\n transform: expanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: 'transform 0.3s ease-in-out'\n }}\n sx={{fontSize:\"1rem\"}}\n />\n </IconButton>\n <IconButton\n size=\"small\"\n aria-label=\"close\"\n onClick={handleDismiss}\n >\n <CloseIcon sx={{fontSize:\"1rem\"}} />\n </IconButton>\n </Box>\n </CardActions>\n \n <Collapse in={expanded} timeout=\"auto\" unmountOnExit>\n {/* restCollapse holds caller-supplied BoxProps forwarded through componentWrapperProps */}\n <Box\n {...(restCollapse as BoxProps)}\n sx={mergeSx((restCollapse as BoxProps).sx, { px:2, pb:2 })}\n >\n {Renderer && <Renderer {...componentProps} />}\n {!Renderer && (\n <Box sx={{ p: 2 }}>\n {componentProps?.children || 'Collapsible content'}\n </Box>\n )}\n </Box>\n </Collapse>\n </CardContainer>\n )\n }\n)\n","export {default as Collapse} from '@mui/material/Collapse'\nexport * from './theme'\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const collapseTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {},\n }\n\n} as const satisfies MuiComponentTheme<\"MuiCollapse\">\n","\nimport type { MuiComponentTheme } from '@/_utils/_types'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\n/**\n * Root-level CSS variable aliases for the CollapsableAlert compound element.\n * Declare here once — all child elements consume via `var(--*)`.\n */\nexport const collapsableAlertRootSx: SxProps<Theme> = {\n '--collapse-bg': 'var(--mui-palette-container-bg-1)',\n '--collapse-border': 'var(--mui-palette-border-1)',\n '--collapse-title-color': 'var(--mui-palette-text-primary)',\n}\n\nexport const alertTheme = {\n styleOverrides: {\n root: ({ theme }) => ({\n '--alert-bgc': theme.palette.background.paper, // Default background color\n '--alert-color': theme.palette.text.primary, // Default text color\n\n whiteSpace: \"normal\", // Allow wrapping for custom components\n alignItems: 'center', // Center content vertically\n borderRadius: 'var(--mui-shape-borderRadius)', // Use theme border radius\n backgroundColor: 'var(--alert-bgc)', // Use theme background color\n color: 'var(--alert-color)', // Use theme text color\n border: '1px solid var(--alert-color)', // Border using text color for contrast\n \n \"& .MuiAlert-icon\": {\n color: \"var(--alert-icon-color, currentColor)\", // Use CSS variable for icon color\n padding: '8px 0', \n },\n \"& .MuiAlert-message\": {\n flex: 1, \n width: '100%', // Ensure message takes width\n padding: '8px 0',\n },\n \"& .MuiButtonBase-root\": {\n '--button-color': 'var(--alert-icon-color)',\n },\n\n \"&.MuiAlert-standardError\": {\n '--alert-icon-color': 'var(--mui-palette-error-main)',\n '--alert-bgc': 'var(--mui-palette-error-background, var(--mui-palette-error-dark))',\n '--alert-color': theme.palette.error.main,\n },\n \"&.MuiAlert-standardSuccess\": {\n '--alert-icon-color': 'var(--mui-palette-success-main)',\n '--alert-bgc': 'var(--mui-palette-success-background, var(--mui-palette-success-dark))',\n '--alert-color': theme.palette.success.main,\n },\n \"&.MuiAlert-standardWarning\": {\n '--alert-bgc': 'var(--mui-palette-warning-background, var(--mui-palette-warning-dark))', \n '--alert-color': theme.palette.warning.main,\n \"--alert-icon-color\": \"var(--mui-palette-warning-main)\",\n },\n \"&.MuiAlert-standardInfo\": {\n '--alert-bgc': 'var(--mui-palette-info-background, var(--mui-palette-info-dark))',\n '--alert-color': theme.palette.info.main,\n \"--alert-icon-color\": \"var(--mui-palette-info-main)\",\n },\n \"&.MuiAlert-standardSystem\": {\n '--alert-icon-color': 'var(--mui-palette-system-main)',\n '--alert-bgc': 'var(--mui-palette-system-background, var(--mui-palette-system-dark))',\n '--alert-color': theme.palette.system.main,\n },\n \"&.MuiAlert-standardInsight\": {\n '--alert-icon-color': 'var(--mui-palette-insight-main)',\n '--alert-bgc': 'var(--mui-palette-insight-background, var(--mui-palette-insight-dark))',\n '--alert-color': theme.palette.insight.main,\n },\n \"&.MuiAlert-filledSystem\": {\n '--alert-icon-color': 'var(--mui-palette-system-contrastText)',\n '--alert-bgc': 'var(--mui-palette-Alert-systemFilledBg, var(--mui-palette-system-main))',\n '--alert-color': 'var(--mui-palette-Alert-systemFilledColor, var(--mui-palette-system-contrastText))',\n },\n \"&.MuiAlert-filledInsight\": {\n '--alert-icon-color': 'var(--mui-palette-insight-contrastText)',\n '--alert-bgc': 'var(--mui-palette-Alert-insightFilledBg, var(--mui-palette-insight-main))',\n '--alert-color': 'var(--mui-palette-Alert-insightFilledColor, var(--mui-palette-insight-contrastText))',\n },\n \"&.MuiAlert-outlinedSystem\": {\n '--alert-icon-color': 'var(--mui-palette-system-main)',\n '--alert-bgc': 'transparent',\n '--alert-color': theme.palette.system.main,\n },\n \"&.MuiAlert-outlinedInsight\": {\n '--alert-icon-color': 'var(--mui-palette-insight-main)',\n '--alert-bgc': 'transparent',\n '--alert-color': theme.palette.insight.main,\n },\n }),\n },\n} as const satisfies MuiComponentTheme<\"MuiAlert\">\n","import { createTheme, type ThemeOptions } from '@mui/material/styles';\n\nimport { alertTheme } from '@/compound/Alert';\nimport { appBarTheme } from '../components/elemental/AppBar/src/theme';\nimport { avatarTheme } from '@/ele/Avatar';\nimport { badgeTheme } from '@/ele/Badge';\nimport { \n buttonTheme, \n buttonBaseTheme,\n iconButtonTheme,\n} from '@/ele/Button';\nimport { cardTheme, cardContentTheme } from '@/ele/Card';\nimport { checkboxTheme } from '@/ele/Checkbox';\nimport { chipTheme } from '@/ele/Chip';\nimport { collapseTheme } from '@/ele/Collapse';\nimport { \n dateCalendarTheme, pickersCalendarHeaderTheme,\n multiSectionDigitalClockTheme, pickersDayTheme,\n datePickerTheme, dateTimePickerTheme,\n pickersInputBaseTheme,\n} from '@/ele/DatePicker';\nimport { dividerTheme } from '@/ele/Divider';\nimport { formLabelTheme, formControlLabelTheme, formHelperTextTheme } from '@/ele/Form';\nimport { textFieldTheme, inputBaseTheme } from '@/ele/Input';\nimport {\n listItemTheme,\n listItemIconTheme,\n listItemTextTheme,\n listItemButtonTheme,\n listItemSubheaderTheme,\n} from '@/ele/List';\nimport { menuItemTheme, menuTheme } from '../components/elemental/Menu/src/Menu/theme';\nimport { paperTheme } from '@/ele/Paper';\nimport { linearProgressTheme, circularProgressTheme } from '@/ele/Progress';\nimport { selectTheme } from '@/ele/Select';\nimport { sliderTheme } from '@/ele/Slider';\nimport { switchTheme } from '@/ele/Switch';\nimport { tabTheme, tabsTheme } from '@/ele/Tab';\nimport { toggleButtonGroupTheme, toggleButtonTheme } from '@/ele/ToggleButtonGroup'\nimport { tooltipTheme } from '@/ele/Tooltip';\nimport { typographyTheme } from '@/ele/Typography';\nimport { stepperTheme, stepTheme, stepLabelTheme, stepConnectorTheme, stepIconTheme, stepButtonTheme } from '@/ele/Stepper';\nimport {\n tableTheme,\n tableContainerTheme,\n tableHeadTheme,\n tableCellTheme,\n tablePaginationTheme,\n tableSortLabelTheme,\n} from '@/compound/Table';\n\nimport { muiPalette as darkBlueMuiPalette } from './colors/darkBlue';\nimport { muiPalette as lightBrownMuiPalette } from './colors/lightBrown';\n\n// import './styles/font.css';\n// import './styles/layout.css';\n\nconst baseThemeOptions: ThemeOptions = {\n cssVariables: {\n colorSchemeSelector: '[color-scheme=\"%s\"]',\n },\n colorSchemes: {\n light: lightBrownMuiPalette,\n dark: darkBlueMuiPalette,\n },\n breakpoints: {\n values: {\n xs: 0,\n sm: 600,\n md: 600,\n lg: 1200,\n xl: 1536,\n },\n },\n shape: {\n borderRadius: 8,\n },\n // Customize your theme here if needed\n components: {\n // Let hosts own the page canvas — CssBaseline would otherwise paint\n // body with palette.background.default on every ThemeProvider mount.\n MuiCssBaseline: {\n styleOverrides: {\n body: {\n backgroundColor: 'transparent',\n '@media print': {\n backgroundColor: 'transparent',\n },\n },\n },\n },\n // alert\n MuiAlert: alertTheme,\n // app bar\n MuiAppBar: appBarTheme,\n // avatar\n MuiAvatar: avatarTheme,\n // badge\n MuiBadge: badgeTheme,\n // buttons\n MuiButton: buttonTheme,\n MuiButtonBase: buttonBaseTheme,\n MuiToggleButtonGroup: toggleButtonGroupTheme,\n MuiToggleButton: toggleButtonTheme,\n // card\n MuiCard: cardTheme,\n MuiCardContent: cardContentTheme,\n // checkbox\n MuiCheckbox: checkboxTheme,\n // chips\n MuiChip: chipTheme,\n // collapse\n MuiCollapse: collapseTheme,\n // date picker\n MuiDateCalendar: dateCalendarTheme,\n MuiPickersCalendarHeader: pickersCalendarHeaderTheme,\n MuiMultiSectionDigitalClock: multiSectionDigitalClockTheme,\n MuiPickersDay: pickersDayTheme,\n MuiDatePicker: datePickerTheme,\n MuiDateTimePicker: dateTimePickerTheme,\n MuiPickersInputBase: pickersInputBaseTheme,\n // divider\n MuiDivider: dividerTheme,\n // form\n MuiFormLabel: formLabelTheme,\n MuiFormControlLabel: formControlLabelTheme,\n MuiFormHelperText: formHelperTextTheme,\n // IconButton\n MuiIconButton: iconButtonTheme,\n // input\n MuiTextField: textFieldTheme,\n MuiInputBase: inputBaseTheme,\n // list\n MuiListItem: listItemTheme,\n MuiListItemIcon: listItemIconTheme,\n MuiListItemText: listItemTextTheme,\n MuiListItemButton: listItemButtonTheme,\n MuiListSubheader: listItemSubheaderTheme,\n // menu\n MuiMenuItem: menuItemTheme,\n MuiMenu: menuTheme,\n // paper\n MuiPaper: paperTheme,\n // progress\n MuiLinearProgress: linearProgressTheme,\n MuiCircularProgress: circularProgressTheme,\n // select\n MuiSelect: selectTheme,\n // slider\n MuiSlider: sliderTheme,\n // switch\n MuiSwitch: switchTheme,\n // tab\n MuiTab: tabTheme,\n MuiTabs: tabsTheme,\n // tooltip\n MuiTooltip: tooltipTheme,\n // typography\n MuiTypography: typographyTheme,\n // stepper components\n MuiStepper: stepperTheme,\n MuiStep: stepTheme,\n MuiStepLabel: stepLabelTheme,\n MuiStepConnector: stepConnectorTheme,\n MuiStepIcon: stepIconTheme,\n MuiStepButton: stepButtonTheme,\n // table\n MuiTable: tableTheme,\n MuiTableContainer: tableContainerTheme,\n MuiTableHead: tableHeadTheme,\n MuiTableCell: tableCellTheme,\n MuiTablePagination: tablePaginationTheme,\n MuiTableSortLabel: tableSortLabelTheme,\n },\n};\n\nexport const createAppTheme = (options?: ThemeOptions) => createTheme(baseThemeOptions, options ?? {});\n\nexport const theme = createAppTheme();","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const appBarTheme = {\n defaultProps: {\n position: 'sticky',\n color: 'transparent',\n elevation: 0,\n },\n styleOverrides: {\n root: {\n '--appbar-bg': 'color-mix(in srgb, var(--mui-palette-background-paper), transparent 8%)',\n '--appbar-border-color': 'var(--mui-palette-divider)',\n '--appbar-blur': '10px',\n backgroundColor: 'var(--appbar-bg)',\n borderBottom: '1px solid var(--appbar-border-color)',\n backdropFilter: 'saturate(120%) blur(var(--appbar-blur))',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiAppBar'>\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const linearProgressTheme = {\n defaultProps: {},\n styleOverrides: {\n root: {\n '--progress-bg': 'var(--mui-palette-background-grey-1)',\n '--progress-color': 'color-mix(in srgb, var(--mui-palette-blink-shiny), transparent 50%)',\n borderRadius: 4, \n backgroundColor: 'var(--progress-bg)',\n },\n bar: {\n borderRadius: 4,\n backgroundColor: 'var(--progress-color)',\n },\n dashed: {\n '--mui-palette-LinearProgress-primaryBg': 'var(--progress-bg)',\n },\n }\n} as const satisfies MuiComponentTheme<'MuiLinearProgress'>\n\nexport const circularProgressTheme = {\n defaultProps: {},\n styleOverrides: {\n root: {\n '--progress-color': 'color-mix(in srgb, var(--mui-palette-blink-shiny), transparent 20%)',\n '--progress-bg': 'var(--mui-palette-background-grey-1)',\n color: 'var(--progress-color)',\n },\n circle: {\n stroke: 'var(--progress-color)',\n color: 'var(--progress-color)',\n },\n }\n} as const satisfies MuiComponentTheme<'MuiCircularProgress'>\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const selectTheme = {\n defaultProps: {},\n styleOverrides: {\n root: ({\n \"&.Mui-focused fieldset.MuiOutlinedInput-notchedOutline\": {\n borderColor: \"var(--mui-palette-text-secondary)\",\n }\n })\n },\n} as const satisfies MuiComponentTheme<\"MuiSelect\">\n","import type { MuiComponentTheme } from '@/_utils/_types'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\n/** MuiSwitch tokens: inset track, stable thumb, emphasis only on the on-track. */\n\nexport const switchTheme = {\n defaultProps: {\n disableFocusRipple: true,\n disableRipple: true,\n disableTouchRipple: true,\n \n },\n styleOverrides: {\n root: {\n '--switch-thumb': 'color-mix(in lab, var(--mui-palette-background-default) 72%, var(--mui-palette-text-primary) 28%)',\n '--switch-thumb-on': 'var(--mui-palette-background-default)',\n '--switch-track-off': 'var(--mui-palette-background-grey-1)',\n '--switch-track-on': 'var(--mui-palette-primary-emphasis)',\n '--switch-track-on-disabled': 'color-mix(in lab, var(--switch-track-on) 28%, var(--mui-palette-background-default))',\n overflow: 'visible',\n width: 40,\n height: 22,\n padding: 0,\n '&:has(.MuiSwitch-colorError)': {\n '--switch-track-on': 'var(--mui-palette-error-main)',\n },\n '&:has(.MuiSwitch-colorSuccess)': {\n '--switch-track-on': 'var(--mui-palette-success-main)',\n },\n '&:has(.MuiSwitch-colorWarning)': {\n '--switch-track-on': 'var(--mui-palette-warning-main)',\n },\n '&:has(.MuiSwitch-colorInfo)': {\n '--switch-track-on': 'var(--mui-palette-info-main)',\n },\n '&:has(.MuiSwitch-colorSystem)': {\n '--switch-track-on': 'var(--mui-palette-system-main)',\n },\n '&:has(.MuiSwitch-colorInsight)': {\n '--switch-track-on': 'var(--mui-palette-insight-main)',\n },\n '&:has(.MuiSwitch-colorSecondary)': {\n '--switch-track-on': 'var(--mui-palette-secondary-main)',\n },\n '& .MuiSwitch-switchBase': {\n boxSizing: 'border-box',\n top: 0,\n left: 0,\n padding: 2,\n width: 22,\n height: 22,\n color: 'var(--switch-thumb)',\n transition: 'transform 160ms ease',\n '&:hover': {\n backgroundColor: 'transparent',\n },\n '&.Mui-checked': {\n transform: 'translateX(18px)',\n color: 'var(--switch-thumb-on)',\n '& .MuiSwitch-thumb': {\n backgroundColor: 'var(--switch-thumb-on)',\n },\n },\n '&.Mui-checked + .MuiSwitch-track': {\n backgroundColor: 'var(--switch-track-on)',\n opacity: 1,\n },\n '&.Mui-checked.Mui-disabled + .MuiSwitch-track': {\n backgroundColor: 'var(--switch-track-on-disabled)',\n },\n '&.Mui-focusVisible': {\n outline: '2px solid var(--mui-palette-focus-1)',\n outlineOffset: 2,\n },\n },\n '& .MuiSwitch-thumb': {\n width: 18,\n height: 18,\n boxShadow: 'none',\n backgroundColor: 'var(--switch-thumb)',\n },\n '& .MuiSwitch-track': {\n width: '100%',\n height: '100%',\n borderRadius: 11,\n opacity: 1,\n backgroundColor: 'var(--switch-track-off)',\n transition: 'background-color 160ms ease',\n '&::before, &::after': {\n display: 'none',\n content: 'none',\n backgroundImage: 'none',\n },\n },\n '&.MuiSwitch-sizeSmall': {\n width: 32,\n height: 18,\n '& .MuiSwitch-switchBase': {\n padding: 2,\n width: 18,\n height: 18,\n '&.Mui-checked': {\n transform: 'translateX(14px)',\n },\n },\n '& .MuiSwitch-thumb': {\n width: 14,\n height: 14,\n },\n '& .MuiSwitch-track': {\n borderRadius: 9,\n },\n },\n },\n },\n} as const satisfies MuiComponentTheme<'MuiSwitch'>\n\n/** Static palette aliases for MuiSwitch wrapper root element */\nexport const muiSwitchRootSx: SxProps<Theme> = {\n '--switch-label-color': 'var(--mui-palette-text-grey-1)',\n '--switch-error-track-bg': 'var(--mui-palette-error-main)',\n alignItems: 'flex-start',\n '& .MuiFormControlLabel-root': {\n gap: '8px',\n margin: 0,\n alignItems: 'center',\n overflow: 'visible',\n maxWidth: 'none',\n },\n '& .MuiFormControlLabel-root.MuiFormControlLabel-labelPlacementStart, & .MuiFormControlLabel-root.MuiFormControlLabel-labelPlacementEnd, & .MuiFormControlLabel-root.MuiFormControlLabel-labelPlacementTop, & .MuiFormControlLabel-root.MuiFormControlLabel-labelPlacementBottom': {\n margin: 0,\n },\n '& .MuiFormControlLabel-label': {\n fontSize: '12px',\n userSelect: 'none',\n color: 'var(--switch-label-color)',\n overflow: 'visible',\n textOverflow: 'clip',\n flexShrink: 0,\n },\n '&.Mui-error .MuiSwitch-track': {\n backgroundColor: 'var(--switch-error-track-bg)',\n },\n} as const satisfies SxProps<Theme>\n\n/** Wrapper tokens for SwitchSoft (same control as Switch, label/error only). */\nexport const switchSoftRootSx: SxProps<Theme> = {\n ...muiSwitchRootSx,\n '--switch-label-color': 'var(--mui-palette-text-primary)',\n} as const satisfies SxProps<Theme>\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const tabTheme = {\n defaultProps: {\n disableRipple: true,\n },\n styleOverrides: {\n root: ({ theme }) => ({\n minHeight: 44,\n minWidth: 0,\n paddingInline: theme.spacing(1.5),\n paddingBlock: theme.spacing(1),\n borderRadius: theme.shape.borderRadius,\n textTransform: 'none',\n fontWeight: theme.typography.fontWeightMedium,\n color: 'var(--mui-palette-text-secondary)',\n transition: theme.transitions.create(['color', 'background-color'], {\n duration: theme.transitions.duration.shorter,\n }),\n '&:hover': {\n color: 'var(--mui-palette-primary-emphasis)',\n backgroundColor: 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 92%)',\n },\n '&.Mui-selected': {\n color: 'var(--mui-palette-primary-emphasis)',\n backgroundColor: 'transparent',\n },\n '&.Mui-selected:hover': {\n backgroundColor: 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 94%)',\n },\n '&.Mui-disabled': {\n color: 'var(--mui-palette-text-disabled)',\n },\n }),\n },\n} as const satisfies MuiComponentTheme<'MuiTab'>\n\nexport const tabsTheme = {\n styleOverrides: {\n root: {\n minHeight: 44,\n },\n list: {\n gap: 4,\n },\n indicator: {\n height: 3,\n borderRadius: 999,\n backgroundColor: 'var(--mui-palette-primary-emphasis)',\n },\n scrollButtons: {\n color: 'var(--mui-palette-text-secondary)',\n '&.Mui-disabled': {\n opacity: 0.4,\n },\n },\n },\n} as const satisfies MuiComponentTheme<'MuiTabs'>","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const toggleButtonGroupTheme = {\n defaultProps:{\n \n },\n styleOverrides: {\n root: ({theme}) => ({\n width: 'fit-content',\n maxWidth: '100%',\n\n border:\"none\",\n boxShadow:\"var(--mui-palette-shadow-border-1)\",\n padding: theme.spacing(0.5),\n borderRadius:\"10px\",\n gap:theme.spacing(0.5),\n }),\n }\n} as const satisfies MuiComponentTheme<\"MuiToggleButtonGroup\">\n\nexport const toggleButtonTheme = {\n defaultProps: {\n disableRipple: false,\n },\n styleOverrides: {\n root: () => ({\n '--unselected-hover-bg': 'var(--mui-palette-background-hover-1)',\n '--selected-bg': 'var(--mui-palette-focus-1)',\n '--selected-hover-bg': 'color-mix(in lab, var(--selected-bg), var(--unselected-hover-bg) 30%)',\n '--disabled-bg': 'var(--mui-palette-background-disabled)',\n '--disabled-color': 'var(--mui-palette-text-disabled)',\n '--c': 'var(--mui-palette-text-primary)',\n\n border:\"none\",\n textTransform:\"none\",\n padding:\"0px\",\n overflow:\"hidden\",\n color:\"var(--c)\",\n maxWidth:\"200px\",\n\n [`\n &.MuiButtonBase-root, \n &.MuiToggleButtonGroup.MuiButtonBase-root,\n &.MuiToggleButtonGroup-middleButton.MuiButtonBase-root,\n &.MuiToggleButtonGroup-firstButton.MuiButtonBase-root,\n &.MuiToggleButtonGroup-lastButton.MuiButtonBase-root`]:{\n borderRadius:\"8px\",\n },\n\n \"&:hover\":{\n backgroundColor:\"var(--unselected-hover-bg)\",\n },\n\n \"&.Mui-selected\":{\n background:\"var(--selected-bg)\",\n transition:\"background 0.3s\",\n \"&:hover\":{\n background:\"var(--selected-hover-bg)\",\n },\n \"&.Mui-disabled\":{\n background:\"var(--disabled-bg)\",\n },\n },\n \"&.Mui-disabled\":{\n color:\"var(--disabled-color)\",\n border:\"none\",\n },\n\n \"& svg\":{\n fontSize:\"inherit\",\n },\n\n \"&.Mui-error\":{ \n \"--c\":'var(--mui-palette-error-main)', \n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-error-main), var(--mui-palette-background-hover-1) 87%)',\n },\n \"&.MuiToggleButton-info\":{ \n \"--c\":'var(--mui-palette-info-main)', \n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-info-main), var(--mui-palette-background-hover-1) 84%)',\n },\n \"&.MuiToggleButton-success\":{ \n \"--c\":'var(--mui-palette-success-dark)', \n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-success-dark), var(--mui-palette-background-hover-1) 77%)',\n },\n \"&.MuiToggleButton-warning\":{ \n \"--c\":'var(--mui-palette-warning-main)', \n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-warning-main), var(--mui-palette-background-hover-1) 82%)',\n },\n \"&.MuiToggleButton-primary\":{\n \"--c\":'var(--mui-palette-primary-emphasis)',\n \"--selected-bg\": 'color-mix(in lab, var(--mui-palette-container-bg-primary), var(--mui-palette-primary-emphasis) 26%)',\n \"--selected-hover-bg\": 'color-mix(in lab, var(--selected-bg), var(--mui-palette-primary-emphasis) 18%)',\n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-primary-emphasis), var(--mui-palette-background-hover-1) 84%)',\n },\n \"&.MuiToggleButton-secondary\":{ \"--c\":'var(--mui-palette-secondary-main)', },\n }),\n }\n} as const satisfies MuiComponentTheme<\"MuiToggleButton\">","import type { MuiComponentTheme } from '@/_utils/_types'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\n// we export theme constants for each related MUI component so the\n// top-level theme file can include them and allow downstream consumers\n// to target the stepper pieces independently.\n\n/** Static palette aliases for StandardStepper root element */\nexport const standardStepperRootSx: SxProps<Theme> = {\n '--stepper-connector-color': 'var(--mui-palette-divider)',\n '--stepper-connector-dashed': 'var(--mui-palette-blink-shiny)',\n '--stepper-connector-success': 'var(--mui-palette-success-dark)',\n '--stepper-connector-error': 'var(--mui-palette-error-dark)',\n} as const satisfies SxProps<Theme>\n\nexport const stepperTheme = {\n defaultProps: {},\n styleOverrides: {\n root: () => ({\n // nothing specific by default\n }),\n },\n} as const satisfies MuiComponentTheme<'MuiStepper'>;\n\nexport const stepTheme = {\n defaultProps: {},\n styleOverrides: {\n root: {\n // keep minimal styling here; consumers can override via theme\n },\n },\n} as const satisfies MuiComponentTheme<'MuiStep'>;\n\nexport const stepLabelTheme = {\n defaultProps: {},\n styleOverrides: {\n root: ({theme}) => ({\n \"& .MuiStepLabel-label.MuiStepLabel-alternativeLabel\": {\n marginTop: theme.spacing(1),\n },\n '& .MuiStepLabel-label': {\n \"&.Mui-completed\": {\n color: 'var(--mui-palette-success-dark)',\n },\n \"&.Mui-active\": {\n color: 'var(--mui-palette-blink-shiny)',\n },\n \"&.Mui-error\": {\n color: 'var(--mui-palette-error-dark)',\n },\n },\n }),\n iconContainer: {\n },\n },\n} as const satisfies MuiComponentTheme<'MuiStepLabel'>;\n\nexport const stepConnectorTheme = {\n defaultProps: {},\n styleOverrides: {\n root: () => ({\n \"&.MuiStepConnector-horizontal\": {\n height: '16px',\n },\n }),\n },\n} as const satisfies MuiComponentTheme<'MuiStepConnector'>;\n\nexport const stepIconTheme = {\n defaultProps: {},\n styleOverrides: {\n root: () => ({\n \"&.Mui-completed\": {\n color: 'var(--mui-palette-success-main)',\n },\n \"&.Mui-active\": {\n color: 'var(--mui-palette-focus-1)',\n },\n }),\n },\n} as const satisfies MuiComponentTheme<'MuiStepIcon'>;\n\nexport const stepButtonTheme = {\n defaultProps: {},\n styleOverrides: {\n root: () => ({\n // no default customizations yet\n }),\n },\n} as const satisfies MuiComponentTheme<'MuiStepButton'>;\n","import type { MuiComponentTheme } from '@/_utils/_types';\nimport { styled } from '@mui/material';\nimport { Box } from '@/ele/Box';\n\nexport const TableStyledWrapper = styled(Box)({\n '--table-bg': 'var(--mui-palette-background-paper)',\n '--table-divider-color': 'var(--mui-palette-divider)',\n '--table-pinned-shadow-left': `1px 0 0 var(--mui-palette-divider)`,\n '--table-pinned-shadow-right': `-1px 0 0 var(--mui-palette-divider)`,\n '--table-pinned-header-z-index': 4,\n '--table-pinned-cell-z-index': 2,\n '--table-header-font-weight': 'var(--mui-typography-fontWeightBold)',\n '--table-sort-label-active-color': 'var(--mui-palette-text-primary)',\n '--table-sort-label-icon-color': 'var(--mui-palette-error-light)',\n '--table-dragger-bar-hover-color': 'var(--mui-palette-focus-1)',\n '--table-drragger-bar-hover-width': '4px',\n '--table-empty-min-height': '200px',\n '--table-empty-icon-color': 'var(--mui-palette-text-disabled)',\n '--table-empty-text-color': 'var(--mui-palette-text-secondary)',\n '--table-empty-description-color': 'var(--mui-palette-text-disabled)',\n});\n\nexport const tableTheme = {\n styleOverrides: {\n root: {\n borderCollapse: 'separate',\n borderSpacing: 0,\n tableLayout: 'fixed',\n backgroundColor: 'var(--table-bg, var(--mui-palette-background-paper))',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiTable'>;\n\nexport const tableContainerTheme = {\n styleOverrides: {\n root: {\n width: '100%',\n overflowX: 'auto',\n containerType: 'inline-size',\n containerName: 'sdui-table',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiTableContainer'>;\n\nexport const tableHeadTheme = {\n styleOverrides: {\n root: {\n backgroundColor: 'var(--table-bg, var(--mui-palette-background-paper))',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiTableHead'>;\n\nexport const tableSortLabelTheme = {\n styleOverrides: {\n root: {\n '&.Mui-active': {\n color: 'var(--table-sort-label-active-color)',\n \"& .MuiTableSortLabel-icon\": {\n color: 'var(--table-sort-label-icon-color)',\n },\n },\n \"& .MuiTableSortLabel-icon\": {\n color: 'var(--table-sort-label-icon-color)',\n },\n },\n },\n} as const satisfies MuiComponentTheme<'MuiTableSortLabel'>;\n\nexport const tableCellTheme = {\n defaultProps: {\n size: 'small',\n },\n styleOverrides: {\n root: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n verticalAlign: 'middle',\n borderBottomColor: 'var(--table-divider-color, var(--mui-palette-divider))',\n backgroundColor: 'transparent',\n },\n head: {\n fontWeight: 'var(--table-header-font-weight, 700)',\n backgroundColor: 'var(--table-bg, var(--mui-palette-background-paper))',\n '& [data-table-filter-trigger]': {\n transition: 'opacity 120ms ease',\n },\n '@media (hover: hover) and (pointer: fine)': {\n '& [data-table-filter-trigger]': {\n opacity: 0,\n },\n '&:hover [data-table-filter-trigger]': {\n opacity: 1,\n },\n '& [data-table-filter-trigger]:focus-visible': {\n opacity: 1,\n },\n '& [data-table-filter-trigger][data-active=\"true\"]': {\n opacity: 1,\n },\n },\n },\n },\n} as const satisfies MuiComponentTheme<'MuiTableCell'>;\n\nexport const tablePaginationTheme = {\n styleOverrides: {\n root: {\n borderTop: '1px solid var(--table-divider-color, var(--mui-palette-divider))',\n },\n actions: ({ theme }) => ({\n display: 'flex',\n gap: theme.spacing(1),\n marginRight: theme.spacing(0.5),\n }),\n },\n} as const satisfies MuiComponentTheme<'MuiTablePagination'>;\n\nexport const tableEmptyCellSx = {\n p: 0,\n width: '100%',\n borderBottom: 'none',\n whiteSpace: 'normal',\n overflow: 'visible',\n textAlign: 'center',\n verticalAlign: 'middle',\n} as const;\n\nexport const TablePlaceholderRoot = styled(Box)({\n position: 'sticky',\n left: 0,\n boxSizing: 'border-box',\n width: '100cqi',\n maxWidth: '100%',\n minHeight: 'var(--table-empty-min-height)',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n padding: '32px 24px',\n textAlign: 'center',\n whiteSpace: 'normal',\n});\n","\nimport { \n type ColorTheme, \n type ColorSystemOptions \n} from \"./_utils\"\n\nconst themeColor = {\n themeType: \"dark\",\n name: \"darkBlue\",\n\n colorScheme:{\n primary:{\n 1: \"rgba(2, 17, 33, 1)\",\n 2: \"rgba(20, 40, 65, 1)\",\n 3: \"rgba(40, 80, 110, 1)\",\n 4: \"rgba(65, 110, 140, 1)\",\n 5: \"rgba(90, 140, 170, 1)\",\n 6: \"rgba(115, 170, 200, 1)\",\n main: 5,\n },\n secondary:{\n 1: \"rgba(250, 250, 255, 1)\",\n 2: \"rgba(245, 245, 255, 1)\",\n 3: \"rgba(200, 235, 240, 1)\",\n 4: \"rgba(165, 220, 225, 1)\",\n 5: \"rgba(125, 200, 210, 1)\",\n 6: \"rgba(20, 215, 215, 1)\",\n main: 5,\n },\n\n error: {\n text: \"rgba(255, 0, 100, 1)\",\n background: \"rgba(35, 0, 10, 1)\",\n },\n warning: {\n text: \"rgba(230, 190, 125, 1)\",\n background: \"rgba(45, 25, 1, 1)\",\n },\n info: {\n text:\"rgba(100, 180, 255, 1)\",\n background: \"rgba(10, 30, 55, 1)\",\n },\n success: {\n text: \"rgba(100, 255, 150, 1)\",\n background: \"rgba(10, 50, 30, 1)\",\n },\n system: {\n text: \"rgba(45, 212, 191, 1)\",\n background: \"rgba(0, 40, 35, 1)\",\n },\n insight: {\n text: \"rgba(167, 139, 250, 1)\",\n background: \"rgba(30, 15, 55, 1)\",\n },\n\n focus: \"rgba(255, 47, 122, 0.42)\",\n disabled: \"rgba(91, 94, 97, 1)\",\n background: {\n default: \"rgb(29, 29, 29, 1)\",\n disabled: \"rgba(43, 43, 43, 0.3)\",\n },\n text: {\n primary: \"rgba(240, 240, 255, 1)\",\n secondary: \"rgba(180, 200, 220, 1)\",\n subscript: \"rgba(137, 137, 150, 1)\",\n href: \"rgba(255, 0, 153, 1)\",\n },\n },\n \n\n} as const satisfies ColorTheme\n\nexport const muiPalette = {\n palette: {\n mode: \"dark\",\n primary: {\n dark: themeColor.colorScheme.primary[1],\n main: themeColor.colorScheme.primary[themeColor.colorScheme.primary.main],\n light: themeColor.colorScheme.primary[6],\n },\n secondary: {\n dark: themeColor.colorScheme.secondary[6],\n main: themeColor.colorScheme.secondary[themeColor.colorScheme.secondary.main],\n light: themeColor.colorScheme.secondary[1],\n },\n error: {\n main: themeColor.colorScheme.error.text,\n },\n warning: {\n main: themeColor.colorScheme.warning.text,\n },\n info: {\n main: themeColor.colorScheme.info.text,\n },\n success: {\n main: themeColor.colorScheme.success.text,\n },\n system: {\n main: themeColor.colorScheme.system.text,\n light: \"rgba(80, 230, 210, 1)\",\n dark: \"rgba(20, 160, 145, 1)\",\n contrastText: \"rgba(0, 0, 0, 0.87)\",\n },\n insight: {\n main: themeColor.colorScheme.insight.text,\n light: \"rgba(190, 170, 255, 1)\",\n dark: \"rgba(130, 100, 220, 1)\",\n contrastText: \"rgba(0, 0, 0, 0.87)\",\n },\n background: {\n default: themeColor.colorScheme.background.default,\n },\n text: {\n primary: themeColor.colorScheme.text.primary,\n secondary: themeColor.colorScheme.text.secondary,\n disabled: themeColor.colorScheme.disabled,\n },\n action: {\n disabledBackground: themeColor.colorScheme.background.disabled,\n },\n\n \"secondary-transparent-1\": `color-mix(in lab, ${themeColor.colorScheme.primary[5]}, transparent 35%)`,\n\n \"focus-1\": themeColor.colorScheme.focus,\n \"focus-1-hover\": \"rgba(166, 4, 67, .2)\",\n \"focus-soft-1\": `color-mix(in lab, var(--mui-palette-secondary-main), transparent 88%)`,\n\n \"primary-emphasis\": `color-mix(in lab, ${themeColor.colorScheme.primary[6]}, ${themeColor.colorScheme.secondary[5]} 35%)`,\n \"primary-contrast\": themeColor.colorScheme.background.default,\n\n \"success-background\": themeColor.colorScheme.success.background,\n \"info-background\": themeColor.colorScheme.info.background,\n \"error-background\": themeColor.colorScheme.error.background,\n \"warning-background\": themeColor.colorScheme.warning.background,\n \"system-background\": themeColor.colorScheme.system.background,\n \"insight-background\": themeColor.colorScheme.insight.background,\n\n Alert: {\n // Mirror MUI dark Alert roles: Color = lightened text, FilledBg = dark, IconColor = main.\n systemColor: `color-mix(in srgb, ${themeColor.colorScheme.system.text}, #fff 55%)`,\n insightColor: `color-mix(in srgb, ${themeColor.colorScheme.insight.text}, #fff 55%)`,\n systemFilledBg: \"rgba(20, 160, 145, 1)\",\n insightFilledBg: \"rgba(130, 100, 220, 1)\",\n systemFilledColor: \"rgba(0, 0, 0, 0.87)\",\n insightFilledColor: \"rgba(0, 0, 0, 0.87)\",\n systemStandardBg: themeColor.colorScheme.system.background,\n insightStandardBg: themeColor.colorScheme.insight.background,\n systemIconColor: themeColor.colorScheme.system.text,\n insightIconColor: themeColor.colorScheme.insight.text,\n },\n \n \"border-1\": \"rgba(102, 102, 102, 0.5)\",\n \"border-hover-1\": \"rgba(45, 98, 145, 0.47)\",\n \"border-disabled\": \"rgba(201, 201, 201, 0.2)\",\n \"shadow-border-1\": `inset 0 0 0px 2px var(--mui-palette-border-1)`,\n \"shadow-outset-1\": `0px 1px 2px 0px var(--mui-palette-border-1),\n 1px 2px 4px 0px var(--mui-palette-border-1),\n 2px 4px 8px 0px var(--mui-palette-border-1),\n 2px 4px 16px 0px var(--mui-palette-border-1)`,\n\n \"background-hover-1\": \"color-mix(in lab, transparent , var(--mui-palette-secondary-dark) 10%)\",\n \"background-hover-2\": \"color-mix(in lab, var(--mui-palette-primary-dark), var(--mui-palette-secondary-dark) 50%)\",\n \"background-disabled\": themeColor.colorScheme.background.disabled,\n \"background-grey-1\": \"rgba(75, 75, 75, 0.72)\",\n \"container-bg-1\": \"color-mix(in lab, var(--mui-palette-background-default), var(--mui-palette-background-grey-1) 80%)\",\n \"container-bg-primary\": themeColor.colorScheme.primary[1],\n \"container-bg-secondary\": `rgba(0, 0, 0, .314)`,\n\n \"text-subscript\": `color-mix(in lab, ${themeColor.colorScheme.text.subscript}, var(--mui-palette-primary-light) 50%)`, \n \"text-href\": `${themeColor.colorScheme.text.href}`,\n // \"text-disabled\"\n \"text-hover\": themeColor.colorScheme.secondary[6],\n \"text-grey-1\": \"rgba(150, 150, 150, 1)\",\n\n \"blink-golden\": \"rgba(248, 161, 0, 1)\",\n \"blink-secondary\": \"color-mix(in lab, var(--mui-palette-secondary-main), #414141a6 50%)\",\n \"blink-shiny\": \"rgb(45, 210, 216)\",\n\n \"transparent-primary-light\": `color-mix(in lab, ${themeColor.colorScheme.primary[6]}, transparent 45%)`,\n \"transparent-secondary-light\": `color-mix(in lab, ${themeColor.colorScheme.secondary[6]}, transparent 45%)`,\n },\n} as const satisfies ColorSystemOptions","\nimport { \n type ColorTheme, \n type ColorSystemOptions \n} from \"./_utils\"\n\nexport const themeColor = {\n themeType: \"light\",\n name: \"lightBrown\",\n\n colorScheme:{\n primary:{\n 1: \"rgba(255, 255, 255, 1)\",\n 2: \"rgba(255, 255, 220, 1)\",\n 3: \"rgba(255, 245, 215, 1)\",\n 4: \"rgba(255, 241, 211,1)\",\n 5: \"rgba(180, 136, 74, 1)\",\n 6: \"rgba(168, 124, 66, 1)\",\n main: 5,\n },\n secondary:{\n 1: \"rgba(35, 10, 25, 1)\",\n 2: \"rgba(45, 20, 30, 1)\",\n 3: \"rgba(75, 20, 30, 1)\",\n 4: \"rgba(105, 45, 40, 1)\",\n 5: \"rgba(130, 60, 40, 1)\",\n 6: \"rgba(165, 105, 65, 1)\",\n main: 4,\n },\n\n error: {\n text: \"rgba(255, 45, 120, 1)\",\n background: \"rgba(255, 220, 230, 1)\",\n },\n warning: {\n text: \"rgba(240, 169, 56, 1)\",\n background: \"rgba(255, 241, 211, 1)\",\n },\n info: {\n text: \"rgba(100, 180, 255, 1)\",\n background: \"rgba(237, 252, 255, 1)\",\n },\n success: {\n text: \"rgba(49, 161, 85, 1)\",\n background: \"rgba(237, 255, 238, 1)\",\n },\n system: {\n text: \"rgba(13, 148, 136, 1)\",\n background: \"rgba(204, 251, 241, 1)\",\n },\n insight: {\n text: \"rgba(124, 58, 237, 1)\",\n background: \"rgba(237, 233, 254, 1)\",\n },\n\n focus: \"rgba(255, 47, 122, 0.31)\",\n disabled: \"rgba(196, 191, 187, 1)\",\n background: {\n default: \"rgba(255, 255, 255, 1)\",\n disabled: \"rgba(150, 150, 150, 0.12)\",\n },\n text: {\n primary: \"rgba(35, 10, 25, 1)\",\n secondary: \"rgba(194, 178, 167, 1)\",\n subscript: \"rgba(92, 92, 92, 1)\",\n href: \"rgba(255, 0, 153, 1)\",\n },\n },\n\n} as const satisfies ColorTheme\n\nexport const muiPalette = {\n palette: {\n mode: \"light\",\n primary: {\n dark: themeColor.colorScheme.primary[6],\n main: themeColor.colorScheme.primary[themeColor.colorScheme.primary.main],\n light: themeColor.colorScheme.primary[1],\n },\n secondary: {\n dark: themeColor.colorScheme.secondary[3],\n main: themeColor.colorScheme.secondary[themeColor.colorScheme.secondary.main],\n light: themeColor.colorScheme.secondary[6],\n },\n error: {\n main: themeColor.colorScheme.error.text,\n },\n warning: {\n main: themeColor.colorScheme.warning.text,\n },\n info: {\n main: themeColor.colorScheme.info.text,\n },\n success: {\n main: themeColor.colorScheme.success.text,\n },\n system: {\n main: themeColor.colorScheme.system.text,\n light: \"rgba(45, 180, 168, 1)\",\n dark: \"rgba(10, 120, 110, 1)\",\n contrastText: \"rgba(255, 255, 255, 1)\",\n },\n insight: {\n main: themeColor.colorScheme.insight.text,\n light: \"rgba(148, 90, 245, 1)\",\n dark: \"rgba(100, 40, 200, 1)\",\n contrastText: \"rgba(255, 255, 255, 1)\",\n },\n background: {\n default: themeColor.colorScheme.background.default,\n },\n text: {\n primary: themeColor.colorScheme.text.primary,\n secondary: themeColor.colorScheme.text.secondary,\n disabled: themeColor.colorScheme.disabled,\n },\n action: {\n disabledBackground: themeColor.colorScheme.background.disabled,\n },\n\n \"secondary-transparent-1\": `color-mix(in lab, ${themeColor.colorScheme.secondary[6]}, transparent 65%)`,\n\n \"focus-1\": themeColor.colorScheme.focus,\n \"focus-1-hover\": \"rgba(255, 175, 204, .38)\",\n \"focus-soft-1\": 'color-mix(in lab, var(--mui-palette-secondary-dark), transparent 90%)',\n\n \"primary-emphasis\": `color-mix(in lab, ${themeColor.colorScheme.secondary[4]}, ${themeColor.colorScheme.primary[6]} 28%)`,\n \"primary-contrast\": themeColor.colorScheme.primary[1],\n\n \"success-background\": themeColor.colorScheme.success.background,\n \"info-background\": themeColor.colorScheme.info.background,\n \"error-background\": themeColor.colorScheme.error.background,\n \"warning-background\": themeColor.colorScheme.warning.background,\n \"system-background\": themeColor.colorScheme.system.background,\n \"insight-background\": themeColor.colorScheme.insight.background,\n\n Alert: {\n // Mirror MUI Alert token roles: Color (standard text), FilledBg, IconColor, StandardBg.\n systemColor: `color-mix(in srgb, ${themeColor.colorScheme.system.text}, #000 40%)`,\n insightColor: `color-mix(in srgb, ${themeColor.colorScheme.insight.text}, #000 40%)`,\n systemFilledBg: themeColor.colorScheme.system.text,\n insightFilledBg: themeColor.colorScheme.insight.text,\n systemFilledColor: \"rgba(255, 255, 255, 1)\",\n insightFilledColor: \"rgba(255, 255, 255, 1)\",\n systemStandardBg: themeColor.colorScheme.system.background,\n insightStandardBg: themeColor.colorScheme.insight.background,\n systemIconColor: themeColor.colorScheme.system.text,\n insightIconColor: themeColor.colorScheme.insight.text,\n },\n \n \"border-1\": \"rgba(201, 201, 201, 0.5)\",\n \"border-hover-1\": \"rgba(46, 18, 30, 0.47)\",\n \"border-disabled\": \"rgba(138, 138, 138, 0.19)\",\n \"shadow-border-1\": `inset 0 0 0px 2px var(--mui-palette-border-1)`,\n \"shadow-outset-1\": `0px 1px 2px 0px var(--mui-palette-border-1),\n 1px 2px 4px 0px var(--mui-palette-border-1),\n 2px 4px 8px 0px var(--mui-palette-border-1),\n 2px 4px 16px 0px var(--mui-palette-border-1)`,\n\n \"background-hover-1\": \"color-mix(in lab, transparent , var(--mui-palette-secondary-dark) 10%)\",\n \"background-hover-2\": \"color-mix(in lab, var(--mui-palette-primary-light) , var(--mui-palette-secondary-dark) 10%)\",\n \"background-disabled\": themeColor.colorScheme.background.disabled,\n \"background-grey-1\": \"rgba(55, 55, 55, 0.20)\",\n \"container-bg-1\": \"color-mix(in lab, var(--mui-palette-background-default), transparent 20%)\",\n // legacy helpers for chat container backgrounds\n \"container-bg-primary\": themeColor.colorScheme.primary[4],\n \"container-bg-secondary\": 'rgba(255, 249, 241, .525)',\n\n \"text-subscript\": `color-mix(in lab, ${themeColor.colorScheme.text.subscript}, var(--mui-palette-primary-main) 50%)`, \n \"text-href\": `${themeColor.colorScheme.text.href}`, // \"text-disabled\"\n \"text-hover\": \"rgba(36, 9, 24, 1)\",\n \"text-grey-1\": \"color-mix(in lab, var(--mui-palette-secondary-dark), rgba(120, 120, 120, 1) 80%)\",\n\n \"blink-golden\": \"rgba(248, 161, 0, 1)\",\n \"blink-secondary\": \"color-mix(in lab, var(--mui-palette-secondary-main), #e4e4e4a6 50%)\",\n \"blink-shiny\": \"rgb(250, 60, 177)\",\n\n \"transparent-primary-light\": `color-mix(in lab, ${themeColor.colorScheme.primary[6]}, transparent 45%)`,\n \"transparent-secondary-light\": `color-mix(in lab, ${themeColor.colorScheme.secondary[6]}, transparent 45%)`,\n },\n} as const satisfies ColorSystemOptions","import React from 'react';\nimport { useColorScheme } from '@mui/material/styles';\n\nimport { IconButton } from '@/ele/Button'\nimport { Skeleton } from '@/ele/Skeleton'\nimport { Tooltip } from '@/ele/Tooltip'\nimport { MoonIcon, SunIcon } from '@/icons/MuiIcon'\n\nexport type ToggleThemeButtonRenderMode = 'auto' | 'client' | 'server';\n\nexport interface ToggleThemeButtonProps {\n forceRenderMode?: Exclude<ToggleThemeButtonRenderMode, 'auto'>;\n}\n\nfunction resolveRenderMode(forceRenderMode?: ToggleThemeButtonProps['forceRenderMode']): ToggleThemeButtonRenderMode {\n if (forceRenderMode) {\n return forceRenderMode;\n }\n\n return typeof window === 'undefined' ? 'server' : 'client';\n}\n\nfunction getCurrentMode(mode: ReturnType<typeof useColorScheme>['mode']) {\n if (mode !== 'system' && mode !== undefined) {\n return mode;\n }\n\n if (typeof window === 'undefined') {\n return 'light';\n }\n\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n}\n\nfunction applyColorScheme(nextMode: 'light' | 'dark') {\n if (typeof document === 'undefined') {\n return;\n }\n document.documentElement.setAttribute('color-scheme', nextMode);\n}\n\nfunction commitMode(setMode: (mode: 'light' | 'dark') => void, nextMode: 'light' | 'dark') {\n const commit = () => setMode(nextMode);\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(() => {\n requestAnimationFrame(commit);\n });\n return;\n }\n setTimeout(commit, 0);\n}\n\nexport default function ToggleButton({ forceRenderMode }: ToggleThemeButtonProps) {\n const { mode, setMode } = useColorScheme();\n const renderMode = resolveRenderMode(forceRenderMode);\n const resolvedMode = getCurrentMode(mode);\n const [displayedMode, setDisplayedMode] = React.useState(resolvedMode);\n\n React.useEffect(() => {\n setDisplayedMode(resolvedMode);\n }, [resolvedMode]);\n\n if (renderMode === 'server') {\n return <Skeleton variant=\"rounded\" width={34} height={34} />;\n }\n\n const nextMode = displayedMode === 'dark' ? 'light' : 'dark';\n const label = `Switch to ${nextMode} mode`;\n\n function toggle() {\n setDisplayedMode(nextMode);\n applyColorScheme(nextMode);\n commitMode(setMode, nextMode);\n }\n\n return (\n <Tooltip title={label}>\n <IconButton\n aria-label={label}\n onClick={toggle}\n color=\"primary\"\n size=\"medium\"\n sx={{\n '--button-color': 'var(--mui-palette-primary-emphasis)',\n '--button-hover-border-color': 'var(--mui-palette-primary-emphasis)',\n '&:active': { scale: '1' },\n '&:active svg': { scale: '1' },\n }}\n >\n {displayedMode === 'dark' ? <SunIcon /> : <MoonIcon />}\n </IconButton>\n </Tooltip>\n );\n}\n","export const appScrollSurfaceAttribute = 'data-scroll-surface';\n"],"mappings":"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AFb,IAAAC,cAAA;AAAA;AAAA;AAEO,IAAM,kBAAkB;AAAA,MAC7B,gBAAgB;AAAA,QACd,MAAM,OAAK;AAAA,UACT,cAAc;AAAA,UACd,UAAU;AAAA,UAEV,cAAa;AAAA,YACX,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,SAAQ;AAAA,cACN,UAAU;AAAA,YAEZ;AAAA,UACF;AAAA,QAEF;AAAA,QACA,SAAS;AAAA,UACP,YAAY;AAAA,QACd;AAAA,MAEF;AAAA,IAEF;AAAA;AAAA;;;ACxBA,IAAAC,YAAA;AAAA;AAAA;AAAA;AACA;AACA,IAAAC;AAAA;AAAA;;;ACFA,IAAAC,mBAAA;AAAA;AAAA;AAAA,IAAAC;AAAA;AAAA;;;ACAA,IACA,sBACA,4BACA,oBACA,qBACA,kBACA,kBACA,mBACA,kBACA,wBACA,sBACA,uBACA,mBACA,eACA,gBACA,qBACA,6BACA,4BACA,uBACA,qBACA,0BACA,4BACA,6BACA,2BACA,eACA,uBACA,2BACA,YACA,mBACA,iBACA,aACA,kBACA,wBACA,eACA,mBACA,oBACA,gBACA,4BACA,gBACA,yBACA,gBACA,kBACA,kBACA,mBACAC,8BACA,4BACA,iBACA,cACA,gBACA,mBACA,yBACA,sBAGA,gCACA,YACA,cACA,mBACA,kBACA,oBACA,aACA,iBACA,kBACA,oBACA,qBACA,cACA,yBACA,6BACA,2BACA,sBACA,oBACA,cACA,gBACA,yBACA,aACA,kBACA,mBACA,0BACA,qBACA,aACA,mBACA,aACA,kBACA,iBACA,gBACA,iBACA,qBACA,0BACA,wBACA,yBACA,2BACA,gBACA,oBACA,iCACA,gCACA,wCACA,kBACA,mBACA,gBACA,cACA,kBACA,aACA,kBACA,sBACA,eACA,aACA,aACA,oBACA,eACA,oBACAC,eACA,0BACA,2BACA,sBACA,qBACA,2BACA,0BACA,sBACA,kBACA,qBACA,6BAGA,mBACA,eACA,cACA,kBAGA,4BACA,oBACA,uBACA,qBACAC,gBACA,sBACA,+BACA,cACAC,uBAEA,iBACA,oBACA,8BACA,2BACAC,6B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","names":["MuiCard","CardContent","import_jsx_runtime","import_Card","import_CardContent","init_Card","init_Card","init_Card","init_src","init_src","init_theme","init_theme","init_src","init_Tooltip","init_src","import_react","import_jsx_runtime","init_Tooltip","MuiIconButton","init_theme","theme","init_IconButton","init_theme","init_themes","theme","init_themes","init_src","init_Chip","init_src","init_src","init_IconButton","init_Button","init_src","import_Typography","import_jsx_runtime","init_theme","init_src","init_theme","init_Typography","init_src","import_PhotoSizeSelectLarge","import_Close","import_Person","import_DeleteForever","import_AccountTreeOutlined","init_themes","init_themes","MuiBadge","import_jsx_runtime","init_theme","init_Badge","init_theme","init_src","init_Badge","init_Badge","init_src","init_theme","init_themes","init_themes","init_src","init_Paper","init_src","init_theme","init_theme","init_theme","init_theme","init_themes","init_src","init_themes","init_src","init_theme","init_src","init_theme","init_src","init_theme","init_theme","import_jsx_runtime","init_CheckboxGroup","init_src","init_CheckboxGroup","init_Checkbox","init_src","init_theme","init_theme","init_src","init_List","init_src","import_jsx_runtime","init_Badge","init_StatusAvatar","init_src","init_StatusAvatar","init_Avatar","init_src","import_jsx_runtime","import_LocalizationProvider","import_AdapterDayjs","import_jsx_runtime","init_theme","init_src","init_theme","init_src","init_theme","init_theme","init_theme","init_src","init_Slider","init_src","import_react","import_styles","import_material","import_react","import_notistack","Alert","import_react","import_notistack","import_CardActions","init_Card","init_Button","init_Typography","theme","import_jsx_runtime","CardActions","import_jsx_runtime","React","AlertProvider","import_styles","init_Avatar","init_Badge","init_Button","init_Card","init_Checkbox","init_Chip","init_List","init_theme","init_Paper","init_Slider","theme","theme","init_Tooltip","init_Typography","theme","theme","themeColor","muiPalette","muiPalette","import_jsx_runtime","createCache","React","ThemeTree","MuiThemeProvider","import_react","import_styles","init_Button","init_Tooltip","import_jsx_runtime","React"]}
|
|
1
|
+
{"version":3,"sources":["../src/_utils/_func/array.ts","../src/_utils/_func/random.ts","../src/_utils/_func/sx.ts","../src/_utils/_func/index.ts","../src/components/elemental/Box/src/BorderBox/index.ts","../src/components/elemental/Box/src/index.ts","../src/components/elemental/Box/index.ts","../src/components/elemental/Button/src/Button/Button.tsx","../src/components/elemental/Button/src/Button/themes.ts","../src/components/elemental/Button/src/Button/index.ts","../src/components/elemental/Tooltip/src/Tooltip/theme.tsx","../src/components/elemental/Tooltip/src/Tooltip/index.ts","../src/components/elemental/Tooltip/src/index.ts","../src/components/elemental/Tooltip/index.ts","../src/components/elemental/Button/src/IconButton/IconButton.tsx","../src/components/elemental/Button/src/IconButton/theme.ts","../src/components/elemental/Button/src/IconButton/index.ts","../src/components/elemental/Chip/src/Chip/themes.ts","../src/components/elemental/Chip/src/Chip/index.ts","../src/components/elemental/Chip/src/index.ts","../src/components/elemental/Chip/index.ts","../src/components/elemental/Button/src/TagButton/index.ts","../src/components/elemental/Button/src/index.ts","../src/components/elemental/Button/index.ts","../src/components/elemental/Typography/src/Typography.ts","../src/components/elemental/Typography/src/Variants.tsx","../src/components/elemental/Typography/src/theme.ts","../src/components/elemental/Typography/src/index.ts","../src/components/elemental/Typography/index.ts","../src/components/Icons/MuiIcon/index.ts","../src/components/elemental/Skeleton/MuiSkeleton/index.ts","../src/components/elemental/Skeleton/index.ts","../src/components/elemental/Avatar/src/_utils/_types.ts","../src/components/elemental/Avatar/src/_utils/_const.ts","../src/components/elemental/Avatar/src/_utils/index.ts","../src/components/elemental/Avatar/src/Avatar/themes.ts","../src/components/elemental/Avatar/src/Avatar/index.ts","../src/components/elemental/Badge/src/Badge/Badge.tsx","../src/components/elemental/Badge/src/Badge/theme.ts","../src/components/elemental/Badge/src/Badge/index.ts","../src/components/elemental/Badge/src/index.ts","../src/components/elemental/Badge/index.ts","../src/components/elemental/Menu/src/Menu/theme.ts","../src/components/elemental/Paper/src/Paper/themes.ts","../src/components/elemental/Paper/src/Paper/index.ts","../src/components/elemental/Paper/src/index.ts","../src/components/elemental/Paper/index.ts","../src/components/elemental/Form/src/FormLabel/theme.ts","../src/components/elemental/Form/src/FormLabel/index.ts","../src/components/elemental/Form/src/FormControlLabel/theme.ts","../src/components/elemental/Form/src/FormControlLabel/index.ts","../src/components/elemental/Form/src/themes.ts","../src/components/elemental/Form/src/index.ts","../src/components/elemental/Form/index.ts","../src/components/elemental/Card/src/Card/theme.tsx","../src/components/elemental/Card/src/Card/index.ts","../src/components/elemental/Card/src/index.ts","../src/components/elemental/Card/index.ts","../src/components/elemental/Divider/src/theme.ts","../src/components/elemental/Divider/src/index.ts","../src/components/elemental/Divider/index.ts","../src/components/elemental/Checkbox/src/Checkbox/theme.ts","../src/components/elemental/Checkbox/src/Checkbox/index.ts","../src/components/elemental/Checkbox/src/CheckboxGroup/CheckboxGroup.tsx","../src/components/elemental/Checkbox/src/CheckboxGroup/index.ts","../src/components/elemental/Checkbox/src/index.ts","../src/components/elemental/Checkbox/index.ts","../src/components/elemental/List/src/List/theme.ts","../src/components/elemental/List/src/List/index.ts","../src/components/elemental/List/src/index.ts","../src/components/elemental/List/index.ts","../src/components/elemental/Avatar/src/StatusAvatar/StatusAvatar.tsx","../src/components/elemental/Avatar/src/StatusAvatar/index.ts","../src/components/elemental/Avatar/src/index.ts","../src/components/elemental/Avatar/index.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/theme.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/index.ts","../src/components/elemental/Input/src/TextField/theme.ts","../src/components/elemental/Input/src/TextField/index.ts","../src/components/elemental/Autocomplete/src/Autocomplete/theme.ts","../src/components/elemental/Autocomplete/src/Autocomplete/index.ts","../src/components/elemental/Autocomplete/src/index.ts","../src/components/elemental/Autocomplete/index.ts","../src/components/elemental/Input/src/PopperInput/index.ts","../src/components/elemental/Input/src/StackInput/index.ts","../src/components/elemental/Input/src/TelPhoneInput/index.ts","../src/components/elemental/Input/src/index.ts","../src/components/elemental/Input/index.ts","../src/components/elemental/DatePicker/src/MuiXDatePicker.tsx","../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","../src/components/elemental/DatePicker/src/index.ts","../src/components/elemental/DatePicker/index.ts","../src/components/elemental/Progress/src/LinearProgress.tsx","../src/components/elemental/Progress/src/CircularProgress.tsx","../src/components/elemental/Progress/src/theme.ts","../src/components/elemental/Progress/src/index.ts","../src/components/elemental/Progress/index.ts","../src/components/elemental/Slider/src/Slider/theme.tsx","../src/components/elemental/Slider/src/Slider/index.ts","../src/components/elemental/Slider/src/index.ts","../src/components/elemental/Slider/index.ts","../src/theme/index.ts","#style-inject:#style-inject","../src/theme/styles/scroll.css","../src/theme/Provider.tsx","../src/components/compound/Alert/src/AlertProvider.tsx","../src/components/compound/Alert/src/MuiAlertVariant.tsx","../src/components/compound/Alert/src/_utils/const.ts","../src/components/compound/Alert/src/AlertStyleVariantContext.tsx","../src/components/compound/Alert/src/SoftAlertContent.tsx","../src/components/compound/Alert/src/theme.ts","../src/components/compound/Alert/src/CollapsableAlert.tsx","../src/components/elemental/Collapse/src/Collapse/index.ts","../src/components/elemental/Collapse/src/Collapse/theme.tsx","../src/components/compound/Confirm/src/ConfirmDialog.tsx","../src/components/compound/Confirm/src/theme.ts","../src/components/compound/Confirm/src/ConfirmProvider.tsx","../src/components/compound/Confirm/src/confirmBus.ts","../src/theme/muiTheme.ts","../src/components/elemental/AppBar/src/theme.ts","../src/components/elemental/Dialog/src/Dialog/theme.ts","../src/components/elemental/Select/src/MuiSelect/theme.ts","../src/components/elemental/Switch/src/Switch/themes.ts","../src/components/elemental/Tab/src/Tab/themes.ts","../src/components/elemental/ToggleButtonGroup/src/ToggleButtonGroup/themes.ts","../src/components/elemental/Stepper/src/theme.ts","../src/components/compound/Table/src/theme.ts","../src/theme/colors/darkBlue.ts","../src/theme/colors/lightBrown.ts","../src/theme/ToggleThemeButton/ToggleThemeButton.tsx","../src/theme/appScrollStyles.ts"],"sourcesContent":["export function hasIntersect<T>(a:T[], b:T[]) {\n return a.some((x) => b.includes(x))\n}\n/**\n * a function to get the intersection of two arrays\n */\nexport function getIntersect<T>(a:T[], b:T[]) {\n return a.filter((x) => b.includes(x))\n}\n/**\n * Check if two arrays are the same\n * even if they are in different order\n */\nexport function isSameArray<T>(a:T[], b:T[]) {\n return a.length === b.length && a.every((x) => b.includes(x))\n}\n/**\n * sort array with certain condition\n */\nexport function sortByCondi<\n T,\n K extends keyof T,\n>(array:T[], key:K, condition:(a:T[K],b:T[K])=>boolean,reverse=false) {\n const anchor = reverse ? -1 : 1\n const sorted = [...array]\n sorted.sort((a, b) => {\n if (condition(a[key], b[key])) {\n return -anchor\n } else {\n return anchor\n }\n })\n return sorted\n}\n/**\n * sort array by key\n */\nexport function sortByKey<\n T, \n K extends keyof T,\n>(array: T[], key: K, reverse = false) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const condi = (a: any, b: any) => { return a < b }\n\n const sorted = sortByCondi(array, key, condi, reverse)\n return sorted\n}\n/**\n * sort by key with a certain order\n */\nexport function sortByArr<\n T, \n K extends keyof T,\n>(array: T[], key: K, order: unknown[], reverse = false) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const condi = (a: any, b: any) => {\n return order.indexOf(a) < order.indexOf(b)\n }\n\n const sorted = sortByCondi(array, key, condi, reverse)\n return sorted\n}","export function randomStrGenerator(length=20):string{\n let result = ''\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * characters.length))\n }\n\n return result\n}\n\nexport function getRandomInt(max: number) {\n return Math.floor(Math.random() * max)\n}\nexport function getRandomBetween(min: number, max: number, isFloat = false) {\n const randomVal = Math.random() * (max - min) + min\n if (isFloat) {\n return randomVal\n }\n return Math.floor(randomVal)\n}","import type { SxProps, Theme } from '@mui/material/styles'\n\n/** Values accepted by {@link mergeSx}: objects, callbacks, arrays (nested ok), or omitted. */\nexport type SxMergePart =\n | SxProps<Theme>\n | Record<string, unknown>\n | ReadonlyArray<SxMergePart>\n | false\n | null\n | undefined\n\nfunction flattenSx(part: unknown): unknown[] {\n if (part == null || typeof part === 'boolean') {\n return []\n }\n if (Array.isArray(part)) {\n return part.flatMap(flattenSx)\n }\n if (typeof part === 'function' || typeof part === 'object') {\n return [part]\n }\n return []\n}\n\n/**\n * Combine MUI `sx` values into one prop.\n *\n * Nested arrays are flattened (`[base, [a, b]]` → `[base, a, b]`).\n * `null` / `undefined` / `false` entries are dropped. Later parts win,\n * same as MUI's `sx` array merge.\n */\nexport function mergeSx(...parts: SxMergePart[]): SxProps<Theme> | undefined {\n const list = parts.flatMap(flattenSx)\n if (list.length === 0) {\n return undefined\n }\n if (list.length === 1) {\n return list[0] as SxProps<Theme>\n }\n return list as SxProps<Theme>\n}\n","export * from './array'\nexport * from './random'\nexport * from './sx'","export {default as BorderBox} from './BorderBox'","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","export * from './src'","import React from 'react';\n\nimport MuiButton from '@mui/material/Button';\nimport { Box } from '@/ele/Box';\nimport { mergeSx } from '@/_utils/_func';\n\n/**\n * A modified MUI Button that truncates long text with ellipsis.\n * \n * [Doc](https://mui.com/material-ui/react-button/)\n * [API](https://mui.com/material-ui/api/button/)\n */\nexport default function Button(p:\n React.ComponentProps<typeof MuiButton> & {\n slotProps?: {\n innerBox?: React.ComponentProps<typeof Box>\n }\n }) {\n const {children, slotProps, ...rest} = p\n const {sx, ...boxRest} = slotProps?.innerBox ?? {}\n return <MuiButton {...rest}>\n <Box \n {...boxRest}\n sx={mergeSx(\n {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'pre',\n },\n sx,\n )}>\n {children}\n </Box>\n </MuiButton>\n}","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const buttonTheme = {\n defaultProps: {\n variant: 'outlined',\n focusRipple: false,\n disableRipple: true,\n size: 'small',\n },\n styleOverrides: {\n root: {\n textTransform: 'capitalize',\n // MUI Button defaults to 250ms bg/color/border-color. Snap palette\n // token flips instead of interpolating. :active scale stays a snap\n // transform (no transform transition).\n transition: 'background-color 0s, border-color 0s, color 0s, box-shadow 0s',\n\n '--button-color':'var(--mui-palette-text-primary)',\n '--button-filled-bg':'var(--mui-palette-primary-background)',\n '--button-hover-border-color':'var(--mui-palette-border-hover-1)',\n\n \"--variant-outlinedColor\":\"var(--button-color)\",\n \"--variant-outlinedBg\":\"transparent\",\n\n \"--variant-containedColor\":\"var(--button-color)\",\n \"--variant-containedBg\":\"var(--button-filled-bg)\",\n\n \"--variant-textBorderColor\": 'transparent',\n \"&:hover\": {\n \"--variant-textBorderColor\":\"var(--button-hover-border-color)\",\n },\n\n \"&.MuiButton-colorError\":{\n '--button-color':'var(--mui-palette-error-main)',\n '--button-filled-bg':'var(--mui-palette-error-background)',\n '--button-hover-border-color':'var(--mui-palette-error-dark)',\n },\n \"&.MuiButton-colorInfo\":{\n '--button-color':'var(--mui-palette-info-main)',\n '--button-filled-bg':'var(--mui-palette-info-background)',\n '--button-hover-border-color':'var(--mui-palette-info-dark)',\n },\n \"&.MuiButton-colorSuccess\":{\n '--button-color':'var(--mui-palette-success-dark)',\n '--button-filled-bg':'var(--mui-palette-success-background)',\n '--button-hover-border-color':'var(--mui-palette-success-dark)',\n },\n \"&.MuiButton-colorWarning\":{\n '--button-color':'var(--mui-palette-warning-main)',\n '--button-filled-bg':'var(--mui-palette-warning-background)',\n '--button-hover-border-color':'var(--mui-palette-warning-dark)',\n },\n \"&.MuiButton-colorSystem\":{\n '--button-color':'var(--mui-palette-system-main)',\n '--button-filled-bg':'var(--mui-palette-system-background)',\n '--button-hover-border-color':'var(--mui-palette-system-dark)',\n },\n \"&.MuiButton-colorInsight\":{\n '--button-color':'var(--mui-palette-insight-main)',\n '--button-filled-bg':'var(--mui-palette-insight-background)',\n '--button-hover-border-color':'var(--mui-palette-insight-dark)',\n },\n \"&.MuiButton-colorSecondary\":{\n '--button-color':'var(--mui-palette-secondary-main)',\n '--button-filled-bg':'var(--mui-palette-secondary-background)',\n '--button-hover-border-color':'var(--mui-palette-border-hover-1)',\n },\n \"&.MuiButton-colorPrimary\":{\n '--button-color':'var(--mui-palette-primary-emphasis)',\n '--button-filled-bg':'var(--mui-palette-container-bg-primary)',\n '--button-hover-border-color':'var(--mui-palette-primary-emphasis)',\n\n '--variant-outlinedBorder': 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 62%)',\n '--variant-textColor':'var(--mui-palette-primary-emphasis)',\n '--variant-containedColor':'var(--mui-palette-text-primary)',\n\n '&.MuiButton-outlined': {\n color: 'var(--mui-palette-primary-emphasis)',\n borderColor: 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 62%)',\n '&:hover': {\n color: 'var(--mui-palette-primary-emphasis)',\n borderColor: 'var(--mui-palette-primary-emphasis)',\n backgroundColor: 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 94%)',\n },\n },\n '&.MuiButton-contained': {\n color: 'var(--mui-palette-primary-emphasis)',\n backgroundColor: 'var(--mui-palette-container-bg-primary)',\n '&:hover': {\n color: 'var(--mui-palette-primary-emphasis)',\n borderColor: 'var(--mui-palette-border-hover-1)',\n backgroundColor: 'var(--mui-palette-container-bg-primary)',\n },\n },\n '&.MuiButton-text': {\n color: 'var(--mui-palette-primary-emphasis)',\n '&:hover': {\n color: 'var(--mui-palette-primary-emphasis)',\n borderColor: 'var(--mui-palette-primary-emphasis)',\n backgroundColor: 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 94%)',\n },\n },\n },\n\n \"&:active\": {\n scale:\"0.9\",\n },\n },\n outlined: {\n \"&:hover\": {\n borderColor: 'var(--button-hover-border-color)',\n },\n },\n contained: {\n boxShadow: 'none',\n border:'1px solid transparent',\n '&:hover': {\n boxShadow: 'none',\n borderColor: 'var(--button-hover-border-color)',\n backgroundColor: 'var(--button-filled-bg)',\n },\n },\n\n text: {\n border:'1px solid transparent',\n borderColor: 'var(--variant-textBorderColor)',\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiButton\">\n\nexport const buttonBaseTheme = {\n styleOverrides: {\n root: {\n textTransform: 'capitalize',\n },\n }\n \n} as const satisfies MuiComponentTheme<\"MuiButtonBase\">","export {default as Button} from './Button'\nexport * from './themes'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const tooltipTheme = {\n defaultProps: {\n arrow: true,\n },\n styleOverrides: {\n tooltip: {},\n arrow: {},\n }\n\n} as const satisfies MuiComponentTheme<\"MuiTooltip\">\n","export {default as Tooltip} from '@mui/material/Tooltip'\nexport * from './theme'\n","export * from './Tooltip'\n","export * from './src'\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","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const iconButtonTheme = {\n defaultProps: {\n focusRipple: false,\n disableRipple: true,\n color: 'secondary',\n size: 'small',\n },\n styleOverrides: {\n root: ({theme}) =>({\n // MUI IconButton defaults to 150ms background-color. Drop color\n // interpolation; :active scale stays a snap transform.\n transition: 'background-color 0s, border-color 0s, color 0s',\n '--button-color':'var(--mui-palette-text-primary)',\n '--button-hover-border-color':'var(--mui-palette-border-hover-1)',\n \"&.MuiIconButton-colorError\":{\n '--button-color':'var(--mui-palette-error-main)',\n '--button-hover-border-color':'var(--mui-palette-error-dark)',\n },\n \"&.MuiIconButton-colorInfo\":{\n '--button-color':'var(--mui-palette-info-main)',\n '--button-hover-border-color':'var(--mui-palette-info-dark)',\n },\n \"&.MuiIconButton-colorSuccess\":{\n '--button-color':'var(--mui-palette-success-dark)',\n '--button-hover-border-color':'var(--mui-palette-success-dark)',\n },\n \"&.MuiIconButton-colorWarning\":{\n '--button-color':'var(--mui-palette-warning-main)',\n '--button-hover-border-color':'var(--mui-palette-warning-dark)',\n },\n \"&.MuiIconButton-colorSecondary\":{\n '--button-color':'var(--mui-palette-secondary-dark)',\n '--button-hover-border-color':'var(--mui-palette-secondary-main)',\n },\n \"&.MuiIconButton-colorPrimary\":{\n '--button-color':'var(--mui-palette-primary-emphasis)',\n '--button-hover-border-color':'var(--mui-palette-primary-emphasis)',\n },\n \"&.MuiIconButton-colorSystem\":{\n '--button-color':'var(--mui-palette-system-main)',\n '--button-hover-border-color':'var(--mui-palette-system-dark)',\n },\n \"&.MuiIconButton-colorInsight\":{\n '--button-color':'var(--mui-palette-insight-main)',\n '--button-hover-border-color':'var(--mui-palette-insight-dark)',\n },\n\n '--color-p':'var(--button-color)',\n '--bg': 'color-mix(in lab,rgba(255, 255, 255, 0.04) 95%,var(--color-p) 5%)',\n padding: theme.spacing(0.5),\n borderRadius: '8px',\n \n color: 'var(--color-p)',\n\n backgroundColor:'var(--bg)',\n \"&:active svg\": {\n scale:\"0.9\",\n },\n\n \"&.Mui-disabled\":{\n '--color-p':'var(--mui-palette-action-disabled)',\n '--bg': 'color-mix(in lab,rgba(255, 255, 255, 0.04) 95%,var(--color-p) 5%)',\n color: 'var(--color-p)',\n backgroundColor:'var(--bg)',\n\n '& svg.MuiSvgIcon-root':{\n color: 'var(--color-p)',\n },\n },\n\n border: '1px solid transparent',\n \"&:hover\": {\n borderColor: 'color-mix(in lab, var(--mui-palette-border-1) 80%, var(--button-hover-border-color))',\n },\n\n \"&:active\": {\n scale:\"0.9\",\n },\n }),\n },\n\n} as const satisfies MuiComponentTheme<\"MuiIconButton\">","export {default as IconButton} from './IconButton'\nexport {default as IconButtonSpin} from './IconButton.HoverSpinnin'\nexport {default as IconButtonFade} from './IconButton.Fade'\nexport * from './theme'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const chipTheme = {\n defaultProps: {\n variant: 'outlined',\n size: 'small',\n },\n styleOverrides: {\n root: ({ theme }) => ({\n '--hover-shadow-color': 'var(--mui-palette-blink-golden)',\n\n \"&.MuiChip-clickable:active\": {\n scale:\"0.9\",\n boxShadow: 'none',\n },\n \n \"& .MuiChip-label\":{\n maxWidth: '100%',\n [theme.breakpoints.up('md')]: {\n maxWidth: '20vw',\n },\n },\n \"& .MuiChip-icon, & .MuiChip-deleteIcon\":{\n color:\"inherit\",\n },\n\n '&.MuiChip-colorInfo':{'--hover-shadow-color':'var(--mui-palette-info-main)',},\n '&.MuiChip-colorError':{'--hover-shadow-color':'var(--mui-palette-error-main)',},\n '&.MuiChip-colorSuccess':{'--hover-shadow-color':'var(--mui-palette-success-dark)',},\n '&.MuiChip-colorWarning':{'--hover-shadow-color':'var(--mui-palette-warning-main)',},\n '&.MuiChip-colorSecondary':{'--hover-shadow-color':'var(--mui-palette-secondary-main)',},\n '&.MuiChip-colorPrimary':{'--hover-shadow-color':'var(--mui-palette-blink-golden)',},\n '&.MuiChip-colorSystem':{'--hover-shadow-color':'var(--mui-palette-system-main)',},\n '&.MuiChip-colorInsight':{'--hover-shadow-color':'var(--mui-palette-insight-main)',},\n\n '&.MuiChip-colorDefault': {\n color: 'var(--mui-palette-text-primary)',\n },\n\n '&.MuiChip-filled.MuiChip-colorError': {\n color: 'var(--mui-palette-background-default)',\n },\n \n /** hover effect */\n position: \"relative\",\n \"&.MuiChip-clickable:hover\": {\n boxShadow: `\n 0 4px 10px -4px var(--hover-shadow-color), \n 0px 1px 1px 0px rgba(0, 0, 0, 0.14), \n 0px 1px 3px 0px rgba(0, 0, 0, 0.12)`,\n \"&:before\": {\n opacity: 1,\n },\n },\n \"&:before\": {\n content: '\"\"',\n position: \"absolute\",\n left: 0,\n insetBlockEnd: 0,\n display: \"block\",\n width:\"100%\",\n height: \"1px\",\n opacity: 0,\n backgroundImage:\"linear-gradient(to right, transparent, var(--hover-shadow-color), transparent)\",\n transition:\"all 0.1s ease-in-out\",\n },\n }),\n }\n\n} satisfies MuiComponentTheme<\"MuiChip\">","export {default as Chip} from './Chip'\nexport * from './themes'","export * from './Chip'","export * from './src'","export {default as TagButton} from './TagButton'","export * from './Button'\nexport * from './IconButton'\nexport * from './TagButton'","export * from './src';","export { default } from '@mui/material/Typography'","import React from 'react'\nimport Typography, {type TypographyProps} from '@mui/material/Typography'\n\n/**\n * Mui Typography with variant h5\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function Header(props: { children?: React.ReactNode } & TypographyProps) {\n\treturn <Typography variant=\"h5\" {...props} />\n}\n\n\n/**\n * Mui Typography with variant h6\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function SubHeader(props: TypographyProps) {\n\treturn <Typography variant=\"h6\" {...props} />\n}\n\n/**\n * Mui Typography with variant subtitle1\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function SubTitle(props: TypographyProps) {\n\treturn <Typography variant=\"subtitle1\" {...props} />\n}\n\n/**\n * Mui Typography with variant caption\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function Subscript(props: TypographyProps) {\n\treturn (\n\t\t<Typography\n\t\t\tvariant=\"caption\"\n\t\t\t{...props}\n\t\t\tsx={{\n\t\t\t\t...props.sx,\n\t\t\t\tcolor: props.color ?? 'var(--mui-palette-text-subscript)',\n\t\t\t}}\n\t\t/>\n\t)\n}\n\n/**\n * Mui Typography with variant body\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function Body(props: TypographyProps) {\n\treturn <Typography variant=\"body1\" {...props} />\n}","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const typographyTheme = {\n styleOverrides: {\n root: ()=>({\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n \n \"&:has(svg)\":{\n display: 'inline-flex',\n alignItems: 'center',\n \"&>svg\":{\n fontSize: '1em',\n \n },\n },\n \n }),\n caption: {\n lineHeight: 1,\n },\n \n }\n\n} as const satisfies MuiComponentTheme<\"MuiTypography\">","export {default as Typography} from './Typography'\nexport * from './Variants'\nexport * from './theme'","export * from './src'","// 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 {default as Skeleton} from '@mui/material/Skeleton'\n","export {Skeleton} from './MuiSkeleton'\nexport {default as DialogSkeleton} from './DialogSkeleton'\nexport { SoftSkeleton } from './SoftSkeleton'\nexport type { SoftSkeletonPreset, SoftSkeletonProps } from './SoftSkeleton'\n","export type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl';","import type { Size } from '../_utils'\n\nexport const AVATARBUTTON_STANDARD_DIMENSIONs = {\n xs:\"36px\",\n sm: \"100px\",\n md: \"120px\",\n lg: \"200px\",\n xl: \"240px\",\n} as const satisfies Record<Size, string>;\n\nexport const AVATAR_SIZEs = {\n xs: \"20px\",\n sm: \"24px\",\n md: \"40px\",\n lg: \"56px\",\n xl: \"80px\",\n} as const satisfies Record<Size, string>;\n\nexport const AVATAR_SX = {\n column:{\n stackSX:{\n xs: {gap: 0.5},\n sm: {gap: 0.5},\n md: {gap: 0.75},\n lg: {gap: 1},\n xl: {gap: 1},\n },\n fontSize: \"0.6rem\",\n },\n row:{\n stackSX:{\n xs: {gap: 0.75},\n sm: {gap: 0.75},\n md: {gap: 1},\n lg: {gap: 1.5},\n xl: {gap: 2},\n },\n fontSize: \"0.8rem\",\n }\n} as const satisfies {\n [key in 'column' | 'row']: {\n stackSX: Record<Size, {gap:number}>,\n fontSize: string,\n }\n};","export * from './_types'\nexport * from './_const'","import type { MuiComponentTheme } from '@/_utils/_types'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\nexport const avatarTheme = {\n styleOverrides: {\n root: {\n '--avatar-bg': 'var(--mui-palette-action-selected)',\n '--avatar-color': 'var(--mui-palette-text-primary)',\n backgroundColor: 'var(--avatar-bg)',\n color: 'var(--avatar-color)',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiAvatar'>\n\n/** Static palette aliases for AvatarButton root element */\nexport const avatarButtonRootSx: SxProps<Theme> = {\n '--avatar-button-text': 'var(--mui-palette-text-primary)',\n '--avatar-hover-icon-color': 'var(--mui-palette-text-subscript)',\n} as const satisfies SxProps<Theme>\n","export {\n default,\n default as Avatar,\n NameSkel,\n} from './Avatar'\nexport {default as AvatarButton} from './AvatarButton'\nexport * from './themes'","import React from 'react'\nimport MuiBadge from '@mui/material/Badge'\n\ntype BadgeProps = {\n style_variant?: 'filled' | 'outlined';\n}\n/**\n * A styled Mui Badge component\n * \n * [Doc](https://mui.com/material-ui/api/badge/)\n * \n * @example\n * ```tsx\n * <MuiBadge badgeContent={4}>\n * <IconButton>\n * <MailIcon/>\n * </IconButton>\n * </MuiBadge>\n * ```\n */\nexport default function Badge(p: \n React.ComponentProps<typeof MuiBadge> \n & BadgeProps\n) {\n const {style_variant, variant, className, ...rest} = p;\n const badge_var_class = \n style_variant === 'outlined' ? 'badge-outlined'\n : style_variant === 'filled' ? 'badge-filled'\n : 'badge-outlined';\n\n return <MuiBadge {...rest} variant={variant} className={badge_var_class + (className ? ` ${className}` : '')} />\n}\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const badgeTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {\n \"& .MuiBadge-badge\": {\n background: 'var(--badge-bg-color)',\n color: 'var(--badge-text-color)',\n border: '1px solid var(--badge-br-color)',\n backdropFilter: 'blur(2px)',\n maxWidth: '50px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n justifyContent: 'flex-start',\n },\n \"&.badge-outlined,&\":{\n '--badge-bg-color': 'transparent',\n },\n \"&.badge-filled\":{\n '--badge-bg-color': 'var(--mui-palette-secondary-main)',\n '--badge-text-color': 'var(--mui-palette-background-default)',\n },\n\n '--badge-text-color': 'var(--mui-palette-secondary-main)',\n '--badge-br-color': 'var(--mui-palette-secondary-main)',\n\n /** primary */\n \"& .MuiBadge-colorPrimary\":{\n '--badge-br-color': 'var(--mui-palette-primary-emphasis)',\n '--badge-text-color': 'var(--mui-palette-primary-emphasis)',\n },\n \"&.badge-filled .MuiBadge-colorPrimary\":{\n '--badge-bg-color': 'var(--mui-palette-primary-emphasis)',\n '--badge-text-color': 'var(--mui-palette-primary-contrast)',\n },\n\n /** secondary */\n \"&.badge-filled .MuiBadge-colorSecondary\":{\n '--badge-bg-color': 'var(--mui-palette-secondary-main)',\n '--badge-text-color': 'var(--mui-palette-background-default)',\n },\n \"& .MuiBadge-colorSecondary\":{\n '--badge-br-color': 'var(--mui-palette-secondary-main)',\n '--badge-text-color': 'var(--mui-palette-secondary-main)',\n },\n\n /** error */\n \"&.badge-filled .MuiBadge-colorError\":{\n '--badge-bg-color': 'var(--mui-palette-error-main)',\n '--badge-text-color': 'var(--mui-palette-background-default)',\n },\n \"& .MuiBadge-colorError\":{\n '--badge-br-color': 'var(--mui-palette-error-main)',\n '--badge-text-color': 'var(--mui-palette-error-main)',\n },\n /** info */\n \"&.badge-filled .MuiBadge-colorInfo\":{\n '--badge-bg-color': 'var(--mui-palette-info-main)',\n '--badge-text-color': 'var(--mui-palette-info-contrastText)',\n },\n \"& .MuiBadge-colorInfo\":{\n '--badge-br-color': 'var(--mui-palette-info-main)',\n '--badge-text-color': 'var(--mui-palette-info-main)',\n },\n /** success */\n \"&.badge-filled .MuiBadge-colorSuccess\":{\n '--badge-bg-color': 'var(--mui-palette-success-main)',\n '--badge-text-color': 'var(--mui-palette-success-contrastText)',\n },\n \"& .MuiBadge-colorSuccess\":{\n '--badge-br-color': 'var(--mui-palette-success-main)',\n '--badge-text-color': 'var(--mui-palette-success-main)',\n },\n /** warning */\n \"&.badge-filled .MuiBadge-colorWarning\":{\n '--badge-bg-color': 'var(--mui-palette-warning-main)',\n '--badge-text-color': 'var(--mui-palette-warning-contrastText)',\n },\n \"& .MuiBadge-colorWarning\":{\n '--badge-br-color': 'var(--mui-palette-warning-main)',\n '--badge-text-color': 'var(--mui-palette-warning-main)',\n },\n /** system */\n \"&.badge-filled .MuiBadge-colorSystem\":{\n '--badge-bg-color': 'var(--mui-palette-system-main)',\n '--badge-text-color': 'var(--mui-palette-system-contrastText)',\n },\n \"& .MuiBadge-colorSystem\":{\n '--badge-br-color': 'var(--mui-palette-system-main)',\n '--badge-text-color': 'var(--mui-palette-system-main)',\n },\n /** insight */\n \"&.badge-filled .MuiBadge-colorInsight\":{\n '--badge-bg-color': 'var(--mui-palette-insight-main)',\n '--badge-text-color': 'var(--mui-palette-insight-contrastText)',\n },\n \"& .MuiBadge-colorInsight\":{\n '--badge-br-color': 'var(--mui-palette-insight-main)',\n '--badge-text-color': 'var(--mui-palette-insight-main)',\n },\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiBadge\">","export {default as Badge} from './Badge'\nexport * from './theme'\nexport * from './theme'","export * from './Badge'","export * from './src'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const menuItemTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {\n '--menu-item-hover-bg': 'var(--mui-palette-background-hover-1)',\n '--menu-item-selected-bg': 'var(--mui-palette-focus-1)',\n\n \"&:hover\":{\n backgroundColor:\"var(--menu-item-hover-bg)\",\n },\n \"&.Mui-selected:before\":{\n width:\"100%\",\n height:\"100%\",\n content:\"''\",\n position:\"absolute\",\n left:0,\n top:0,\n backgroundColor:\"var(--menu-item-selected-bg)\",\n overflow:\"hidden\",\n },\n\n \"& svg\":{\n fontSize:\"1.2rem\",\n },\n \n },\n\n }\n\n} as const satisfies MuiComponentTheme<\"MuiMenuItem\">\n\nexport const menuTheme = {\n styleOverrides: {\n \n },\n} as const satisfies MuiComponentTheme<\"MuiMenu\">","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const paperTheme = {\n defaultProps: {\n variant: 'elevation',\n },\n styleOverrides: {\n root: {\n '--paper-bg': 'var(--mui-palette-background-default)',\n backgroundColor: 'var(--paper-bg)',\n },\n outlined: {\n '--paper-border-color': 'var(--mui-palette-border-1)',\n border: '1px solid var(--paper-border-color)',\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiPaper\">","export { default as Paper } from './Paper';\nexport { default as ShinyPaper } from './ShinyPaper';\nexport * from './themes'","export * from './Paper'","export * from './src'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const formLabelTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: ({\n '--form-label-color': 'var(--mui-palette-text-secondary)',\n color: 'var(--form-label-color)',\n \n maxWidth: \"100%\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n\n \"&.MuiFormLabel-colorSuccess\":{\n color:\"var(--mui-palette-success-main)\",\n },\n \"&.MuiFormLabel-colorError\":{\n color:\"var(--mui-palette-error-main)\",\n },\n \"&.MuiFormLabel-colorInfo\":{\n color:\"var(--mui-palette-info-main)\",\n },\n \"&.MuiFormLabel-colorWarning\":{\n color:\"var(--mui-palette-warning-main)\",\n },\n \"&.MuiFormLabel-colorPrimary\":{\n '--form-label-color':\"var(--mui-palette-primary-emphasis)\",\n color:\"var(--form-label-color)\",\n },\n \"&.MuiFormLabel-colorSecondary\":{\n color:\"var(--mui-palette-secondary-main)\",\n },\n \"&.Mui-disabled\":{\n color:\"var(--mui-palette-text-disabled)\",\n },\n \"&.Mui-error\":{ \n color:\"var(--mui-palette-error-main)\", \n },\n }),\n }\n\n} as const satisfies MuiComponentTheme<\"MuiFormLabel\">","export {default as FormLabel} from './FormLabel'\nexport * from './theme'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const formControlLabelTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: ({\n '--form-control-label-color': 'var(--mui-palette-text-primary)',\n color: 'var(--form-control-label-color)',\n\n maxWidth: \"100%\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n\n \"&.Mui-disabled\":{\n color:\"var(--mui-palette-text-disabled)\",\n },\n }),\n }\n\n} as const satisfies MuiComponentTheme<\"MuiFormControlLabel\">","export {default as FormControlLabel} from './FormControlLabel'\nexport * from './theme'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const formHelperTextTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {\n color: 'var(--mui-palette-text-subscript)',\n }\n },\n} as const satisfies MuiComponentTheme<\"MuiFormHelperText\">","export * from './FormLabel'\n\nexport * from './FormControlLabel'\n\nexport {default as FormControl} from '@mui/material/FormControl'\nexport {default as FormHelperText} from '@mui/material/FormHelperText'\nexport {default as InputAdornment} from '@mui/material/InputAdornment'\nexport {default as InputLabel} from '@mui/material/InputLabel'\nexport * from './themes'","export * from './src'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const cardTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {},\n }\n\n} as const satisfies MuiComponentTheme<\"MuiCard\">\n\nexport const cardContentTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {\n },\n }\n} as const satisfies MuiComponentTheme<\"MuiCardContent\">\n\nexport const spotlightCardVars = {\n\t'--hover-shadow-color': 'var(--mui-palette-blink-golden)',\n} as const\n","export { default as Card } from '@mui/material/Card'\nexport {default as CardContainer} from './Card'\nexport * from './theme'\nexport {default as SpotlightCard} from './SpotlightCard'\nexport {default as CardContent} from '@mui/material/CardContent'\nexport {default as CardHeader} from '@mui/material/CardHeader'\nexport {default as CardActions} from '@mui/material/CardActions'","export * from './Card'","export * from './src'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const dividerTheme = {\n\n styleOverrides: {\n root: {\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiDivider\">","export {default as Divider} from '@mui/material/Divider'\nexport * from './theme'\nexport * from './theme'","export * from './src'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const checkboxTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {\n '--checkbox-color': 'var(--mui-palette-text-grey-1)',\n '--checkbox-selected-bg':'var(--mui-palette-primary-emphasis)',\n\n color: 'var(--checkbox-color)',\n\n \"&.MuiCheckbox-colorPrimary\":{\n '--checkbox-selected-bg': 'var(--mui-palette-primary-emphasis)',\n },\n\n \"&.MuiCheckbox-colorError\":{\n '--checkbox-color': 'var(--mui-palette-error-main)',\n },\n\n \"&.Mui-checked, &.MuiCheckbox-indeterminate\": {\n color: 'var(--checkbox-selected-bg)',\n\n \"&.MuiCheckbox-colorError\":{\n color: 'var(--mui-palette-error-main)',\n }\n },\n\n // check label\n [`&.MuiCheckbox-root + .MuiFormControlLabel-label,\n &.MuiCheckbox-root + .MuiFormControlLabel-label .MuiFormLabel-root\n `]: {\n fontSize: 'inherit',\n },\n },\n },\n} satisfies MuiComponentTheme<'MuiCheckbox'>","export {default as Checkbox} from '@mui/material/Checkbox'\nexport * from './theme'","import { FormControl as MuiFormControl, FormControlLabel as MuiFormControlLabel, FormHelperText as MuiFormHelperText, FormLabel as MuiFormLabel } from '@/ele/Form'\nimport { type FormControlProps } from '@mui/material/FormControl'\nimport MuiFormGroup, { type FormGroupProps } from '@mui/material/FormGroup'\nimport { Box, Stack as MuiStack } from '@/ele/Box'\n\nimport { Checkbox as MuiCheckBox } from '../Checkbox'\nimport { mergeSx } from '@/_utils/_func'\n\nexport interface CheckOptionType{\n id:string;\n label:string;\n}\ntype CheckedStateValue = CheckOptionType['id'][]\ntype OnCheck = (option:CheckOptionType)=>void\n\nexport default function CheckboxGroup({\n error,\n required = false,\n options,\n setCheckedIds,\n title,\n titleSuffix,\n inputProps,\n checkedIds,\n helperText,\n errorText,\n direction = \"row\",\n slotProps = {},\n}: {\n error?: boolean,\n title?: React.ComponentProps<typeof MuiFormLabel>['children'],\n titleSuffix?: React.ComponentProps<typeof MuiFormLabel>['children'],\n options: CheckOptionType[];\n setCheckedIds?: React.Dispatch<React.SetStateAction<CheckedStateValue>>;\n checkedIds: CheckedStateValue;\n required?: boolean,\n helperText?: string,\n errorText?: string,\n direction?: 'row' | 'column',\n inputProps?: NonNullable<React.ComponentProps<typeof MuiCheckBox>['slotProps']>['input'],\n slotProps?: {\n fieldset?: Partial<FormControlProps>,\n group?: Partial<Omit<FormGroupProps, \"row\">>,\n }\n}) {\n\n const onCheck:OnCheck = (option:CheckOptionType) => {\n if(!setCheckedIds)return;\n\n setCheckedIds(old=>{\n if(old.includes(option.id)){\n return old.filter(v=>v!==option.id)\n }else{\n return [...old,option.id]\n }\n })\n }\n\n const onCheckAll = () => {\n if(!setCheckedIds)return;\n\n if(checkedIds.length === options.length){\n setCheckedIds([])\n }else{\n setCheckedIds(options.map(o=>o.id))\n }\n }\n\n return (\n <MuiFormControl required={required} error={error}\n component=\"fieldset\" variant=\"standard\"\n\n {...slotProps?.fieldset}\n sx={mergeSx({ maxWidth:\"100%\" }, slotProps?.fieldset?.sx)}>\n <MuiFormGroup {...slotProps?.group} row={false}>\n <Parent onCheckAll={onCheckAll} \n\n isMoreThanOne={options.length>1}\n ceckedSize={checkedIds.length}\n allOptionsSize={options.length}\n\n error={!!error}\n required={required}\n title={title} titleSuffix={titleSuffix}\n />\n <OptionsCheckbox \n direction={direction}\n options={options}\n selectedValues={checkedIds}\n onCheck={onCheck}\n inputProps={inputProps}\n error={!!error}\n />\n\n {(helperText || errorText) && <MuiFormHelperText error={!!error}>{errorText ? errorText : helperText}</MuiFormHelperText>}\n </MuiFormGroup>\n </MuiFormControl>\n )\n}\n\n// CHANGE 3: Refactored sub-component to use state array\nfunction OptionsCheckbox(p:{\n direction: 'row' | 'column',\n options: CheckOptionType[],\n selectedValues: CheckedStateValue, // Receive state array\n onCheck?:OnCheck,\n inputProps?: NonNullable<React.ComponentProps<typeof MuiCheckBox>['slotProps']>['input'],\n error?: boolean,\n\n}){\n const {direction, options, onCheck, inputProps, error, selectedValues} = p;\n \n return (\n <MuiStack direction={direction} spacing={1} maxWidth=\"100%\" ml={1}>\n {options.map((option,index) => {\n // Determine checked state by checking if value exists in array\n const isChecked = selectedValues.includes(option.id);\n \n return (\n <MuiFormControlLabel\n sx={{\n gap:0.5,marginLeft:0,\n maxWidth:\"100%\",\n }}\n key={index}\n color={error ? 'error' : 'primary'}\n control={\n <MuiCheckBox \n sx={{p:0}}\n value={option.id} \n checked={isChecked} \n onChange={onCheck ?\n () => onCheck(option)\n : undefined\n }\n slotProps={{\n input: inputProps\n }}\n\n color={error ? 'error' : 'primary'}\n />\n }\n label={option.label}\n />\n )\n })}\n </MuiStack>\n )\n}\n\nfunction Parent(p:{\n onCheckAll?: () => void,\n isMoreThanOne: boolean,\n error:boolean,\n required?: boolean,\n title: React.ReactNode,\n titleSuffix?: React.ReactNode,\n ceckedSize: number,\n allOptionsSize: number,\n}){\n const {\n onCheckAll, isMoreThanOne, \n error, required, title, titleSuffix,\n ceckedSize, allOptionsSize\n } = p;\n \n return (\n isMoreThanOne?<MuiFormControlLabel\n sx={{\n gap:0.5,marginLeft:0,\n }}\n control={\n <MuiCheckBox \n sx={{p:0}}\n indeterminate={ceckedSize>0 && ceckedSize<allOptionsSize}\n checked={ceckedSize === allOptionsSize}\n onChange={()=>{\n if(onCheckAll)onCheckAll()\n }}\n color={error ? 'error' : 'primary'}\n />\n }\n label={\n <ParentLabel\n required={required}\n title={title}\n titleSuffix={titleSuffix} \n />\n }\n />\n :<ParentLabel\n required={required}\n title={title}\n titleSuffix={titleSuffix} \n />\n )\n}\n\nfunction ParentLabel(p:{\n required?: boolean,\n title: React.ReactNode,\n titleSuffix?: React.ReactNode,\n}){\n const { required, title, titleSuffix } = p;\n \n return (\n <Box \n sx={{display:\"flex\",alignItems:\"center\",gap:1, maxWidth:\"100%\"}}\n >\n <MuiFormLabel sx={{display: 'flex', alignItems: 'center', gap: 1, width: '100%', '& .MuiFormLabel-asterisk': { display: 'none' }}}>\n <Box sx={{display: 'inline-flex', alignItems: 'center', gap: 0.5}}>\n <Box sx={{flexGrow:0}}>{title}</Box>\n {required && <Box component=\"span\" sx={{ color: 'inherit', fontWeight: 'bold' }}>*</Box>}\n </Box>\n {titleSuffix && <Box sx={{flexShrink:0, display: 'inline-flex'}}>{titleSuffix}</Box>}\n </MuiFormLabel>\n </Box>\n )\n}","export {default as CheckboxGroup} from './CheckboxGroup'\nexport * from './CheckboxGroup'","export * from './Checkbox'\nexport * from './CheckboxGroup'","export * from './src'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const listItemIconTheme = {\n styleOverrides: {\n root: ()=>({\n '--list-item-icon-color': 'var(--mui-palette-text-primary)',\n color: 'var(--list-item-icon-color)',\n }),\n }\n\n} as const satisfies MuiComponentTheme<\"MuiListItemIcon\">\n\nexport const listItemTextTheme = {\n styleOverrides: {\n root: ()=>({\n }),\n }\n\n} as const satisfies MuiComponentTheme<\"MuiListItemText\">\n\nexport const listItemButtonTheme = {\n styleOverrides: {\n root: {\n '--list-item-button-bg-hover': 'var(--mui-palette-background-hover-1)',\n '--list-item-button-bg-ripple': 'color-mix(in lab, var(--list-item-button-bg-hover) 50%, var(--mui-palette-focus-1))',\n\n \"&.MuiButtonBase-root.MuiListItemButton-root\":{\n transition:\"none\",\n // background:\"var(--mui-palette-background-hover-1)\",\n \n \"&:hover\":{\n background:\"var(--list-item-button-bg-hover)\",\n },\n \"& .MuiTouchRipple-root\":{\n color:\"var(--list-item-button-bg-ripple)\",\n },\n },\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiListItemButton\">\n\nexport const listItemTheme = {\n styleOverrides: {\n root: {\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiListItem\">\n\nexport const listItemSubheaderTheme = {\n styleOverrides: {\n root: {},\n }\n\n} as const satisfies MuiComponentTheme<\"MuiListSubheader\">","export {default as List} from '@mui/material/List'\nexport {default as ListSubheader} from '@mui/material/ListSubheader'\nexport {default as ListItemIcon} from '@mui/material/ListItemIcon'\nexport {default as ListItemText} from '@mui/material/ListItemText'\nexport {default as ListItemButton} from '@mui/material/ListItemButton'\nexport {default as ListItem} from '@mui/material/ListItem'\n\nexport {default as TransferList} from './TransferList'\nexport * from './theme'","export * from './List'","export * from './src'","'use client'\nimport { styled } from '@mui/material/styles'\nimport { Badge } from '@/ele/Badge'\n\nimport { useMenu, MenuPopper } from '@/ele/Menu'\n\nimport { Avatar, AvatarButton } from '../Avatar'\nimport { statusAvatarRootSx } from './theme'\nimport { mergeSx } from '@/_utils/_func'\n\n// all the status that can be changed except offline\nconst USER_STATUSs = {\n online: 'online',\n away: 'away',\n busy: 'busy',\n offline: 'offline',\n invisible: 'invisible',\n} as const\nconst changable_status = Object.values(USER_STATUSs).filter(s=>s!=='offline')\ntype UserStatusTypes = typeof USER_STATUSs[keyof typeof USER_STATUSs]\n\n/**\n * StatusAvatar\n * @description: avatar of the participant with status\n * @param status - status of the participant\n * @param src - src of the avatar\n * @param name - name of the participant\n * \n * user status will be shown as a dot on the avatar\n */\nexport function Renderer(props:{\n status:UserStatusTypes;\n statusEditable?:boolean;\n handleStatusChange?:((status:UserStatusTypes)=>void);\n name:string;\n src?:string;\n\n slotProps?:{\n badge?:React.ComponentProps<typeof Badge>;\n avatar?:Partial<React.ComponentProps<typeof Avatar>>;\n avatarButton?:Partial<React.ComponentProps<typeof AvatarButton>>;\n };\n}){\n const {\n name, src,\n status, handleStatusChange,\n statusEditable,\n slotProps,\n } = props\n\n const p = useMenu({\n multiple: false,\n initSelected: [status],\n })\n return (\n <>\n <StyledBadge \n\n status={status}\n overlap=\"circular\"\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n variant=\"dot\"\n\n sx={mergeSx(statusAvatarRootSx, {\n height:\"fit-content\",\n })}\n >\n {statusEditable\n ?<AvatarButton name={name} src={src} {...slotProps?.avatarButton} onClick={p.onTriggerClickHandler}/>\n :<Avatar name={name} src={src} {...slotProps?.avatar} displayName={false}/>\n }\n </StyledBadge>\n <MenuPopper\n openMenuProps={p}\n options={changable_status.map((s)=>({\n id: s,\n label: s,\n onClick:()=>{\n p.closeHandler()\n if(handleStatusChange) handleStatusChange(s)\n },\n }))}\n />\n </>\n )\n}\nexport const status = USER_STATUSs\nexport type Status = UserStatusTypes\n\n/**\n * StyledBadge\n * @description: styled badge for the avatar\n * @param status - status of the participant\n * \n * use css variables to set the color and animation of the badge\n */\nconst StyledBadge = styled(Badge,{\n shouldForwardProp: p=> p!==\"status\"\n})<{status:UserStatusTypes}>(() => ({\n '& .MuiBadge-badge': {\n width:\"15%\",\n height:\"15%\",\n minWidth: '10px',\n minHeight: '10px',\n borderRadius: '50%',\n borderColor:\"transparent\",\n backgroundColor: 'var(--color)',\n color: 'var(--color)',\n boxShadow: `0 0 0 2px var(--status-badge-shadow)`,\n display:\"var(--display)\",\n '&::after': {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n animation: 'var(--animate)',\n border: '1px solid currentColor',\n content: '\"\"',\n },\n },\n '@keyframes ripple': {\n '0%': {\n transform: 'scale(.8)',\n opacity: 1,\n },\n '100%': {\n transform: 'scale(2.4)',\n opacity: 0,\n },\n },\n\n variants:[\n {\n props: {status:USER_STATUSs.online},\n style: {\n '--color': 'var(--status-color-online)',\n '--animate': 'ripple 1.2s infinite ease-in-out', // ripple animation\n '--display': 'block', // show the dot\n },\n },\n {\n props: {status:USER_STATUSs.away},\n style: {\n '--color': 'var(--status-color-away)',\n '--animate': 'none', // no animation\n '--display': 'block', // show the dot\n },\n },\n {\n props: {status:USER_STATUSs.busy},\n style: {\n '--color': 'var(--status-color-busy)',\n '--animate': 'none', // no animation\n '--display': 'block', // show the dot\n },\n },\n {\n props: {status:USER_STATUSs.offline,},\n style: {\n '--color': 'var(--status-color-offline)',\n '--animate': 'none', // no animation\n '--display': 'block', // show the dot\n },\n },\n {\n props: {status:USER_STATUSs.invisible,},\n style: {\n '--color': 'var(--status-color-offline)',\n '--animate': 'none', // no animation\n '--display': 'block', // show the dot\n },\n },\n ]\n}))\n","export * as StatusAvatar from './StatusAvatar'","export * from './Avatar'\nexport * from './StatusAvatar'\n// re-export internal utility types (e.g. Size)\nexport * from './_utils'","export * from './src'\nexport type { Size } from './src/_utils/_types'","import type { SxProps, Theme } from '@mui/material/styles'\nimport { styled } from '@mui/material/styles'\nimport { Box } from '@/ele/Box'\n\n/**\n * Static palette aliases shared across GitHubPicker styled components.\n * Children consume these variables; they do not re-declare palette refs.\n */\nexport const gitHubPickerRootStyle = {\n\t'--option-subscript': 'var(--mui-palette-text-subscript)',\n\t'--picker-focus-soft': 'color-mix(in lab, var(--mui-palette-focus-soft-1), transparent 18%)',\n\t'--picker-focus': 'var(--mui-palette-focus-1)',\n '--picker-border': 'color-mix(in lab, var(--mui-palette-common-white), transparent 94%)',\n\t'--picker-border-hover': 'var(--mui-palette-border-hover-1)',\n\t'--picker-border-emphasis': 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 50%)',\n\t'--picker-text': 'var(--mui-palette-text-primary)',\n\t'--picker-text-secondary': 'var(--mui-palette-text-secondary)',\n\t'--picker-text-disabled': 'var(--mui-palette-text-disabled)',\n\t// Night: lift above near-black canvas (Google search-bar mid-grey glass).\n\t'--picker-surface': 'color-mix(in lab, var(--mui-palette-common-white), transparent 87%)',\n\t'--picker-paper-bg': 'color-mix(in lab, var(--mui-palette-common-white), transparent 84%)',\n\t'--picker-hover-bg': 'var(--mui-palette-background-hover-1)',\n\t'--picker-chip-bg': 'color-mix(in lab, var(--mui-palette-secondary-main), transparent 88%)',\n\t'--picker-chip-border': 'color-mix(in lab, var(--mui-palette-common-white), transparent 94%)',\n\t'--picker-chip-shadow': 'inset 0 1px 0 color-mix(in lab, var(--mui-palette-common-white), transparent 88%), inset 0 0 0 1px color-mix(in lab, var(--mui-palette-common-white), transparent 91%)',\n\t'--picker-error': 'var(--mui-palette-error-main)',\n\t// Dark closed field: true mid glass — between washed and dim.\n\t'--picker-highlight': 'color-mix(in lab, var(--mui-palette-common-white), transparent 92%)',\n\t'--picker-sheen': 'none',\n\t'--picker-shadow': [\n\t\t'0 18px 48px color-mix(in srgb, var(--mui-palette-common-black), transparent 72%)',\n\t\t'0 0 0 1px color-mix(in srgb, var(--mui-palette-common-black), transparent 88%)',\n\t].join(', '),\n\t'--picker-focus-ring': 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 82%)',\n\t'--picker-check': 'var(--mui-palette-primary-emphasis)',\n\t'--picker-search-bg': 'var(--mui-palette-background-hover-1)',\n\t'--picker-search-shadow': 'inset 0 1px 0 var(--picker-highlight)',\n\t'--picker-search-border': 'color-mix(in lab, var(--picker-highlight), transparent 40%)',\n\t'--picker-divider': 'var(--mui-palette-divider)',\n\t'--picker-icon-well': 'color-mix(in lab, var(--mui-palette-background-hover-1), transparent 20%)',\n\t'--picker-blur': '8px',\n\t'--picker-glass': 'saturate(1.15) blur(var(--picker-blur))',\n\t'[color-scheme=light] &': {\n\t\t'--picker-blur': '10px',\n\t\t'--picker-glass': 'saturate(1.08) blur(var(--picker-blur))',\n\t\t'--picker-surface': 'color-mix(in lab, var(--mui-palette-common-white), transparent 46%)',\n\t\t'--picker-paper-bg': 'color-mix(in lab, var(--mui-palette-common-white), transparent 48%)',\n\t\t'--picker-highlight': 'color-mix(in lab, var(--mui-palette-common-white), transparent 55%)',\n\t\t'--picker-sheen': 'none',\n\t\t'--picker-border': 'color-mix(in lab, var(--mui-palette-border-1), transparent 95%)',\n\t\t'--picker-chip-bg': 'color-mix(in lab, var(--mui-palette-common-white), transparent 32%)',\n\t\t'--picker-chip-border': 'color-mix(in lab, var(--mui-palette-common-black), transparent 94%)',\n\t\t'--picker-chip-shadow': 'inset 0 1px 0 color-mix(in lab, var(--mui-palette-common-white), transparent 40%), inset 0 0 0 1px color-mix(in lab, var(--mui-palette-common-black), transparent 92%)',\n\t\t'--picker-search-bg': 'color-mix(in lab, var(--mui-palette-common-black), transparent 95%)',\n\t\t'--picker-search-shadow': 'inset 0 1px 1px color-mix(in lab, var(--mui-palette-common-black), transparent 92%)',\n\t\t'--picker-search-border': 'color-mix(in lab, var(--mui-palette-common-black), transparent 93%)',\n\t\t'--picker-focus-soft': 'color-mix(in lab, var(--mui-palette-common-black), transparent 95%)',\n\t\t'--picker-hover-bg': 'color-mix(in lab, var(--mui-palette-common-black), transparent 96%)',\n\t\t'--picker-shadow': [\n\t\t\t'inset 0 1px 0 color-mix(in lab, var(--mui-palette-common-white), transparent 28%)',\n\t\t\t'0 1px 2px color-mix(in srgb, var(--mui-palette-common-black), transparent 90%)',\n\t\t\t'0 10px 28px color-mix(in srgb, var(--mui-palette-common-black), transparent 86%)',\n\t\t].join(', '),\n\t\t'--picker-field-shadow': [\n\t\t\t'inset 0 1px 0 color-mix(in lab, var(--mui-palette-common-white), transparent 28%)',\n\t\t\t'0 8px 22px color-mix(in srgb, var(--mui-palette-common-black), transparent 88%)',\n\t\t].join(', '),\n\t\t'--picker-icon-well': 'color-mix(in lab, var(--mui-palette-common-black), transparent 96%)',\n\t},\n} as const\n\nexport const gitHubPickerRootSx = {\n\t...gitHubPickerRootStyle,\n} as const satisfies SxProps<Theme>\n\n/**\n * Quiet elevated field chrome — soft 1px borders, glass fill above dark canvas.\n * Matches soft Autocomplete / TextField UseForm siblings (no thick outlines,\n * no loud primary glow). Error uses a muted mix + light wash, not a hard red ring.\n */\nconst pickerFieldQuietShadow = [\n\t'inset 0 1px 0 var(--picker-highlight)',\n\t'0 1px 2px color-mix(in srgb, var(--mui-palette-common-black), transparent 82%)',\n].join(', ')\n\nexport const PickerField = styled(Box, {\n\tshouldForwardProp: (prop) =>\n\t\tprop !== 'open'\n\t\t&& prop !== 'error'\n\t\t&& prop !== 'disabled',\n})<{ open?: boolean; error?: boolean; disabled?: boolean }>({\n\t...gitHubPickerRootStyle,\n\tboxSizing: 'border-box',\n\twidth: '100%',\n\tminWidth: 240,\n\tdisplay: 'flex',\n\tflexDirection: 'column',\n\tgap: 8,\n\tpadding: '10px 12px 12px',\n\tborderRadius: 12,\n\tborder: '1px solid var(--picker-field-border)',\n\tbackgroundColor: 'var(--picker-field-bg, var(--picker-surface))',\n\tbackgroundImage: 'var(--picker-sheen)',\n\tbackdropFilter: 'var(--picker-glass)',\n\tWebkitBackdropFilter: 'var(--picker-glass)',\n\tcursor: 'var(--picker-field-cursor)',\n\toutline: 'none',\n\tboxShadow: 'var(--picker-field-shadow)',\n\ttransition: 'border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease',\n\t'& *': {\n\t\tcursor: 'inherit',\n\t},\n\t'--picker-field-border': 'var(--picker-border)',\n\t'--picker-field-shadow': pickerFieldQuietShadow,\n\t'--picker-field-cursor': 'pointer',\n\t'&:hover': {\n\t\t'--picker-field-border': 'var(--picker-border-hover)',\n\t},\n\t'&:focus-visible': {\n\t\t'--picker-field-border': 'color-mix(in lab, var(--mui-palette-text-secondary), transparent 35%)',\n\t\t'--picker-field-shadow': pickerFieldQuietShadow,\n\t},\n\tvariants: [\n\t\t{\n\t\t\tprops: { open: true },\n\t\t\tstyle: {\n\t\t\t\t'--picker-field-border': 'color-mix(in lab, var(--mui-palette-text-secondary), transparent 35%)',\n\t\t\t\t'--picker-field-shadow': pickerFieldQuietShadow,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprops: { error: true },\n\t\t\tstyle: {\n\t\t\t\t// Soft / quiet error — 1px muted mix + light wash (FileUpload language).\n\t\t\t\t'--picker-field-border': 'color-mix(in srgb, var(--picker-error) 55%, var(--picker-border))',\n\t\t\t\t'--picker-field-bg': 'color-mix(in srgb, var(--picker-error) 8%, var(--picker-surface))',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprops: { disabled: true },\n\t\t\tstyle: {\n\t\t\t\t'--picker-field-cursor': 'default',\n\t\t\t\topacity: 0.58,\n\t\t\t\tpointerEvents: 'none',\n\t\t\t},\n\t\t},\n\t],\n})\n\nexport const OptionBox = styled(Box, {\n\tshouldForwardProp: (prop) =>\n\t\tprop !== 'selected'\n\t\t&& prop !== 'isIconClickable'\n\t\t&& prop !== 'disabled'\n\t\t&& prop !== 'disableBR'\n})<{ selected: boolean; isIconClickable: boolean; disabled: boolean; disableBR?: boolean }>({\n\t...gitHubPickerRootStyle,\n\twidth: '100%',\n\tpadding: 0,\n\tbackgroundColor: 'var(--bg)',\n\tborder: '1px solid var(--bd)',\n\tborderRadius: 'var(--br)',\n\tboxShadow: 'var(--chip-shadow)',\n\tcursor: 'var(--curosr)',\n\t'--bg': 'transparent',\n\t'--bd': 'transparent',\n\t'--br': '10px',\n\t'--chip-shadow': 'none',\n\t'--ai': 'flex-start',\n\t'--curosr': 'pointer',\n\t'& *': {\n\t\tcursor: 'inherit',\n\t},\n\tvariants: [\n\t\t{\n\t\t\tprops: { isIconClickable: true },\n\t\t\tstyle: {\n\t\t\t\twidth: 'auto',\n\t\t\t\tmaxWidth: '100%',\n\t\t\t\t'--bg': 'var(--picker-chip-bg)',\n\t\t\t\t'--bd': 'var(--picker-chip-border)',\n\t\t\t\t'--br': '999px',\n\t\t\t\t'--chip-shadow': 'var(--picker-chip-shadow)',\n\t\t\t\t'--ai': 'center',\n\t\t\t\t'--curosr': 'pointer',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprops: { isIconClickable: false },\n\t\t\tstyle: {\n\t\t\t\t'--bg': 'transparent',\n\t\t\t\t'--bd': 'transparent',\n\t\t\t\t'--ai': 'flex-start',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprops: { disabled: true },\n\t\t\tstyle: {\n\t\t\t\t'--curosr': 'default',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprops: { disabled: false },\n\t\t\tstyle: {\n\t\t\t\t'--curosr': 'pointer',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprops: { disableBR: true },\n\t\t\tstyle: {\n\t\t\t\t'--br': 0,\n\t\t\t},\n\t\t},\n\t],\n})\n","export {default as GitHubPicker, type GitHubPickerVariant, type GitHubPickerColor} from './GitHubPicker'\nexport { OptionClass, type OptionParams, } from './_utils'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const textFieldTheme = {\n defaultProps: {\n size: 'small',\n },\n\n styleOverrides: {\n root: {\n \"& fieldset\": {\n borderColor: 'var(--mui-palette-text-secondary)',\n \n },\n \"& .MuiOutlinedInput-root.Mui-focused:not(.Mui-error) fieldset\": {\n borderColor: 'var(--mui-palette-text-secondary)',\n },\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiTextField\">\n\nexport const inputBaseTheme = {\n styleOverrides: {\n root: {\n \"&.MuiInputBase-root::after\": {\n borderColor: 'var(--mui-palette-text-secondary)',\n },\n \"&.MuiInputBase-root::before\": {\n borderColor: 'var(--mui-palette-text-secondary)',\n },\n\n },\n\n },\n} as const satisfies MuiComponentTheme<\"MuiInputBase\">","export {default as TextField} from '@mui/material/TextField'\nexport * from './theme'","import type { SxProps, Theme } from '@mui/material/styles'\nimport { autocompleteClasses } from '@mui/material/Autocomplete'\nimport { gitHubPickerRootStyle } from '../GitHubPicker/theme'\n\n/**\n * Soft / quiet glass field chrome shared with GitHubPicker OptionBox / PickerField.\n * Skyer preference: 1px borders, no thick outlines.\n */\nexport const autocompleteGlassVars = {\n ...gitHubPickerRootStyle,\n} as const\n\n/**\n * Stock MUI AutocompleteGroupLabel path (ListSubheader defaults):\n * sticky + top: -8. Quieter solid fill (paper mixed toward glass paper-bg) so\n * the bar is less contrasted than opaque paper, still solid enough to cover\n * scroll — no header backdrop-filter. Soft-glass stays on Paper/listbox only.\n * Top corners match Paper radius (14). Soft quiet border. No listbox padding-top gutter / -28px.\n */\nexport const autocompleteGroupLabelSx = {\n position: 'sticky' as const,\n top: -8,\n zIndex: 2,\n lineHeight: '28px',\n // Flush listbox horizontal padding (4px) so top radius meets Paper edges.\n margin: 0,\n mx: '-4px',\n fontSize: 11,\n fontWeight: 600,\n letterSpacing: '0.04em',\n textTransform: 'uppercase' as const,\n color: 'var(--picker-text-secondary)',\n // Quieter than opaque paper — closer to glass paper; still covers scroll. No blur.\n background: 'color-mix(in lab, var(--mui-palette-background-paper), var(--picker-paper-bg) 36%)',\n backgroundColor: 'color-mix(in lab, var(--mui-palette-background-paper), var(--picker-paper-bg) 36%)',\n backdropFilter: 'none',\n WebkitBackdropFilter: 'none',\n borderTopLeftRadius: 14,\n borderTopRightRadius: 14,\n borderBottom: '1px solid color-mix(in lab, var(--picker-border), transparent 28%)',\n boxShadow: 'none',\n // Was 1.5 + listbox 4px ≈ 16px inset; keep text after flush.\n px: 2,\n py: 0,\n} as const satisfies SxProps<Theme>\n\nexport const autocompleteRootSx = {\n ...autocompleteGlassVars,\n width: '100%',\n [`& .${autocompleteClasses.root}`]: {\n width: '100%',\n },\n // Outlined like TextField / Select / Date / Time — quiet 1px border, no elevation shadow.\n '& .MuiOutlinedInput-root': {\n borderRadius: '12px',\n backgroundColor: 'transparent',\n backdropFilter: 'none',\n WebkitBackdropFilter: 'none',\n boxShadow: 'none',\n transition: 'border-color 160ms ease',\n '& fieldset': {\n borderWidth: '1px',\n // Match sibling outlined inputs (TextField / Select theme).\n borderColor: 'var(--mui-palette-text-secondary)',\n },\n '&:hover fieldset': {\n borderWidth: '1px',\n borderColor: 'var(--mui-palette-text-secondary)',\n },\n '&.Mui-focused fieldset': {\n borderWidth: '1px',\n borderColor: 'var(--mui-palette-text-secondary)',\n },\n '&.Mui-error fieldset': {\n borderWidth: '1px',\n // Quiet error — muted mix, not a loud thick outline.\n borderColor: 'color-mix(in srgb, var(--picker-error) 55%, var(--mui-palette-text-secondary))',\n },\n '&.Mui-disabled': {\n opacity: 0.58,\n },\n },\n '& .MuiAutocomplete-tag': {\n margin: '2px',\n },\n // Quiet gap between clear X and popup indicator (avoid flush teal icons).\n // MUI defaults marginRight: -2 on both indicators — that cancels a 4px gap.\n [`& .${autocompleteClasses.endAdornment}`]: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n [`& .${autocompleteClasses.clearIndicator}, & .${autocompleteClasses.popupIndicator}`]: {\n marginRight: '0 !important',\n },\n} as const satisfies SxProps<Theme>\n\nexport const autocompletePaperSx = {\n ...autocompleteGlassVars,\n borderRadius: '14px',\n border: '1px solid var(--picker-border)',\n backgroundColor: 'var(--picker-paper-bg)',\n backgroundImage: 'none',\n boxShadow: 'var(--picker-shadow)',\n backdropFilter: 'var(--picker-glass)',\n WebkitBackdropFilter: 'var(--picker-glass)',\n mt: 0.5,\n overflow: 'hidden',\n} as const satisfies SxProps<Theme>\n\nexport const autocompleteListboxSx = {\n ...autocompleteGlassVars,\n // Keep existing quiet padding — no extra padding-top gutter / no margin-top: -28px.\n padding: '6px 4px',\n maxHeight: 280,\n [`& .${autocompleteClasses.option}`]: {\n margin: '2px 6px',\n borderRadius: '10px',\n minHeight: 0,\n padding: '8px 10px',\n '&[aria-selected=\"true\"]': {\n backgroundColor: 'var(--picker-focus-soft)',\n boxShadow: 'inset 0 1px 0 var(--picker-highlight)',\n },\n '&.Mui-focused, &:hover': {\n backgroundColor: 'var(--picker-hover-bg)',\n },\n },\n // Stock AutocompleteGroupLabel — beat paper fill via listbox descendant + theme.\n [`& .${autocompleteClasses.groupLabel}`]: {\n ...autocompleteGroupLabelSx,\n },\n [`& .${autocompleteClasses.groupUl}`]: {\n padding: 0,\n margin: 0,\n },\n} as const satisfies SxProps<Theme>\n\nexport const autocompleteChipSx = {\n ...autocompleteGlassVars,\n height: 24,\n borderRadius: '999px',\n backgroundColor: 'var(--picker-chip-bg)',\n border: '1px solid var(--picker-chip-border)',\n boxShadow: 'var(--picker-chip-shadow)',\n '& .MuiChip-label': {\n px: 1,\n fontSize: 12,\n },\n '& .MuiChip-deleteIcon': {\n fontSize: 16,\n color: 'var(--picker-text-secondary)',\n '&:hover': {\n color: 'var(--picker-text)',\n },\n },\n} as const satisfies SxProps<Theme>\n\n/** Compact muted empty row inside soft-glass menu — no dashed EmptyState frame. */\nexport const autocompleteEmptySx = {\n ...autocompleteGlassVars,\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n px: 1.75,\n py: 1.25,\n minHeight: 0,\n border: 'none',\n background: 'transparent',\n boxShadow: 'none',\n} as const satisfies SxProps<Theme>\n\nexport const autocompleteLoadingSx = {\n px: 1.5,\n py: 1.25,\n} as const satisfies SxProps<Theme>\n\n/** Theme override for MuiAutocomplete — soft focus, quiet borders. */\nexport const autocompleteTheme = {\n defaultProps: {\n size: 'small' as const,\n },\n styleOverrides: {\n root: {\n [`& .MuiOutlinedInput-root`]: {\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderWidth: '1px',\n },\n },\n },\n paper: {\n borderRadius: '14px',\n },\n // Stock GroupLabel slot: quiet solid fill, Paper top radius, no backdrop-filter; keep MUI top: -8.\n groupLabel: {\n position: 'sticky',\n top: -8,\n zIndex: 2,\n lineHeight: '28px',\n margin: 0,\n mx: '-4px',\n background: 'color-mix(in lab, var(--mui-palette-background-paper), var(--picker-paper-bg) 36%)',\n backgroundColor: 'color-mix(in lab, var(--mui-palette-background-paper), var(--picker-paper-bg) 36%)',\n backdropFilter: 'none',\n WebkitBackdropFilter: 'none',\n borderTopLeftRadius: 14,\n borderTopRightRadius: 14,\n borderBottom: '1px solid color-mix(in lab, var(--picker-border), transparent 28%)',\n boxShadow: 'none',\n px: 2,\n },\n },\n} as const\n","export { default as Autocomplete } from './Autocomplete'\nexport type { AutocompleteOption, AutocompleteProps } from './types'\nexport {\n autocompleteGlassVars,\n autocompleteRootSx,\n autocompletePaperSx,\n autocompleteListboxSx,\n autocompleteChipSx,\n autocompleteGroupLabelSx,\n autocompleteTheme,\n} from './theme'\n","export * from \"./GitHubPicker\"\nexport * from \"./Autocomplete\"\n","export * from './src'","export {default as PopperInput} from './PopperInput'\nexport type {PopperInputRef} from './PopperInput'\n","export {default as StackInput} from './StackInput'","export {default as TelPhoneInput} from './TelPhoneInput'","export * from './PopperInput'\nexport * from './StackInput'\nexport * from './TelPhoneInput'\nexport * from './TextField'\nexport {default as LineInput} from './LineInput'\n","export * from './src'","'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","'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","export { default as MuiXDatePicker } from './MuiXDatePicker'\nexport * from './MuiXDatePicker'\nexport { default as MuiXDateTimePicker } from './MuiXDateTimePicker'\nexport * from './MuiXDateTimePicker'\nexport { default as MuiXTimePicker } from './MuiXTimePicker'\nexport * from './MuiXTimePicker'\nexport { default as MuiXDateRangePicker } from './MuiXDateRangePicker'\nexport * from './MuiXDateRangePicker'\nexport * from './theme'\n","export * from './src'\n","import React from 'react';\nimport MuiLinearProgress, { LinearProgressProps as MuiLinearProgressProps } from '@mui/material/LinearProgress';\n\nexport type LinearProgressProps = MuiLinearProgressProps;\n\nexport const LinearProgress: React.FC<LinearProgressProps> = (props) => {\n return <MuiLinearProgress {...props} />;\n};\n","import React from 'react';\nimport MuiCircularProgress, { CircularProgressProps as MuiCircularProgressProps } from '@mui/material/CircularProgress';\n\nexport type CircularProgressProps = MuiCircularProgressProps;\n\nexport const CircularProgress: React.FC<CircularProgressProps> = (props) => {\n return <MuiCircularProgress {...props} />;\n};\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const linearProgressTheme = {\n defaultProps: {},\n styleOverrides: {\n root: {\n '--progress-bg': 'var(--mui-palette-background-grey-1)',\n '--progress-color': 'color-mix(in srgb, var(--mui-palette-blink-shiny), transparent 50%)',\n borderRadius: 4, \n backgroundColor: 'var(--progress-bg)',\n },\n bar: {\n borderRadius: 4,\n backgroundColor: 'var(--progress-color)',\n },\n dashed: {\n '--mui-palette-LinearProgress-primaryBg': 'var(--progress-bg)',\n },\n }\n} as const satisfies MuiComponentTheme<'MuiLinearProgress'>\n\nexport const circularProgressTheme = {\n defaultProps: {},\n styleOverrides: {\n root: {\n '--progress-color': 'color-mix(in srgb, var(--mui-palette-blink-shiny), transparent 20%)',\n '--progress-bg': 'var(--mui-palette-background-grey-1)',\n color: 'var(--progress-color)',\n },\n circle: {\n stroke: 'var(--progress-color)',\n color: 'var(--progress-color)',\n },\n }\n} as const satisfies MuiComponentTheme<'MuiCircularProgress'>\n","export * from './LinearProgress';\nexport * from './CircularProgress';\nexport * from './theme';\n\n","export * from './src';\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const sliderTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {\n color: 'var(--mui-palette-primary-emphasis)',\n },\n rail: {\n backgroundColor: 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 76%)',\n },\n track: {\n border: 'none',\n backgroundColor: 'currentColor',\n },\n thumb: {\n width: \"15px\",\n backgroundColor: 'currentColor',\n boxShadow: \"none\",\n borderRadius: '5px',\n '&:hover, &.Mui-focusVisible, &.Mui-active': {\n boxShadow: \"none\",\n },\n },\n mark: () => ({\n backgroundColor: 'var(--mui-palette-background-disabled)',\n height: \"3px\",\n width: \"10px\",\n '&.MuiSlider-markActive': {\n opacity: 1,\n },\n }),\n markLabel: {\n color: \"var(--mui-palette-text-secondary)\",\n \"&.MuiSlider-markLabelActive\": {\n color: \"var(--mui-palette-text-primary)\",\n }\n },\n valueLabel: {\n lineHeight: 1,\n fontSize: \"9px\",\n background: 'unset',\n padding: 0,\n width: \"24px\",\n height: \"24px\",\n borderRadius: '50% 50% 50% 0',\n backgroundColor: \"var(--mui-palette-warning-background)\",\n color: \"var(--mui-palette-warning-dark)\",\n transformOrigin: 'bottom left',\n transform: 'translate(50%, -100%) rotate(-45deg) scale(0)',\n border: `1px solid var(--mui-palette-warning-dark)`,\n '&::before': { display: 'none' },\n '&.MuiSlider-valueLabelOpen': {\n transform: 'translate(50%, -100%) rotate(-45deg) scale(1)',\n },\n '& > *': {\n transform: 'rotate(45deg)',\n },\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiSlider\">\n","export {default as Slider} from '@mui/material/Slider'\nexport * from './theme'\n","export * from './Slider'\n","export * from './src'\n","import './styles/scroll.css';\n\nexport {default as ThemeProvider} from './Provider';\nexport {default as ToggleThemeButton} from './ToggleThemeButton';\nexport type { AppThemeProviderProps } from './Provider';\nexport { appScrollSurfaceAttribute } from './appScrollStyles';\nexport {theme, createAppTheme} from './muiTheme';\nexport type { ValueOf, ExtractByType, MuiComponentTheme } from '@/_utils/_types';","\n export default function styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === 'undefined') return\n \n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n \n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n }\n ","import styleInject from '#style-inject';styleInject(\":root[color-scheme=light] {\\n --scroll-thumb-visible: color-mix(in srgb, var(--mui-palette-secondary-main), transparent 62%);\\n --scroll-thumb-hover-visible: color-mix(in srgb, var(--mui-palette-secondary-dark), transparent 48%);\\n --scroll-bg-color: transparent;\\n --scroll-thumb-color: transparent;\\n --scroll-thumb-hover-color: transparent;\\n --scroll-track-color: transparent;\\n}\\n:root[color-scheme=dark] {\\n --scroll-thumb-visible: color-mix(in srgb, var(--mui-palette-grey-500), transparent 44%);\\n --scroll-thumb-hover-visible: color-mix(in lab, var(--mui-palette-secondary-dark) 16%, transparent 36%);\\n --scroll-bg-color: transparent;\\n --scroll-thumb-color: transparent;\\n --scroll-thumb-hover-color: transparent;\\n --scroll-track-color: transparent;\\n}\\n*:hover {\\n --scroll-bg-color: transparent;\\n --scroll-thumb-color: var(--scroll-thumb-visible);\\n --scroll-thumb-hover-color: var(--scroll-thumb-hover-visible);\\n --scroll-track-color: transparent;\\n}\\n*:hover * {\\n --scroll-bg-color: transparent;\\n --scroll-thumb-color: transparent;\\n --scroll-thumb-hover-color: transparent;\\n --scroll-track-color: transparent;\\n}\\n*:hover *:hover {\\n --scroll-bg-color: transparent;\\n --scroll-thumb-color: var(--scroll-thumb-visible);\\n --scroll-thumb-hover-color: var(--scroll-thumb-hover-visible);\\n --scroll-track-color: transparent;\\n}\\n[data-chat-surface]:focus-within [data-scroll-surface] {\\n --scroll-bg-color: transparent;\\n --scroll-thumb-color: var(--scroll-thumb-visible);\\n --scroll-thumb-hover-color: var(--scroll-thumb-hover-visible);\\n --scroll-track-color: transparent;\\n}\\n::-webkit-scrollbar-corner {\\n background: var(--mui-palette-background-default);\\n}\\n::-webkit-scrollbar {\\n width: 8px;\\n height: 8px;\\n}\\n::-webkit-scrollbar-track {\\n background: transparent;\\n}\\n::-webkit-scrollbar-track:horizontal {\\n background: transparent;\\n}\\n::-webkit-scrollbar-thumb {\\n background:\\n linear-gradient(\\n to right,\\n transparent 0%,\\n transparent 25%,\\n var(--scroll-thumb-color) 25%,\\n var(--scroll-thumb-color) 75%,\\n transparent 75%,\\n transparent 100%);\\n border: none;\\n border-radius: 10px;\\n}\\n::-webkit-scrollbar-thumb:horizontal {\\n background:\\n linear-gradient(\\n to bottom,\\n transparent 0%,\\n transparent 25%,\\n var(--scroll-thumb-color) 25%,\\n var(--scroll-thumb-color) 75%,\\n transparent 75%,\\n transparent 100%);\\n}\\n::-webkit-scrollbar-thumb:hover {\\n background:\\n linear-gradient(\\n to right,\\n transparent 0%,\\n transparent 25%,\\n var(--scroll-thumb-hover-color) 25%,\\n var(--scroll-thumb-hover-color) 75%,\\n transparent 75%,\\n transparent 100%);\\n}\\n::-webkit-scrollbar-thumb:horizontal:hover {\\n background:\\n linear-gradient(\\n to bottom,\\n transparent 0%,\\n transparent 25%,\\n var(--scroll-thumb-hover-color) 25%,\\n var(--scroll-thumb-hover-color) 75%,\\n transparent 75%,\\n transparent 100%);\\n}\\n.disable-scrollbars::-webkit-scrollbar,\\n.disable-scrollbars::-webkit-scrollbar-track,\\n.disable-scrollbars::-webkit-scrollbar-thumb {\\n background: transparent;\\n}\\n\")","import React from 'react';\nimport createCache from '@emotion/cache';\nimport { CacheProvider } from '@emotion/react';\nimport { ThemeProvider as MuiThemeProvider, type Theme, type ThemeOptions } from '@mui/material/styles';\nimport { CssBaseline, GlobalStyles } from '@mui/material';\nimport { AlertProvider } from '@/compound/Alert';\nimport { ConfirmProvider } from '@/compound/Confirm';\n\nimport { createAppTheme } from './muiTheme';\n\nconst appEmotionCache = createCache({\n key: 'sdui',\n speedy: true,\n});\n\nconst globalStyles = {\n // Font styles\n 'html, body': {\n fontFamily: \"'Roboto', 'Helvetica Neue', Arial, sans-serif\",\n WebkitFontSmoothing: 'antialiased',\n MozOsxFontSmoothing: 'grayscale',\n color: 'var(--mui-palette-text-primary)',\n },\n 'h1,h2,h3,h4,h5,h6,h7, .h1, .h2,.h3,.h4,.h5,.h6': {\n wordBreak: 'break-word',\n lineHeight: 1.35,\n },\n label: {\n color: 'var(--mui-palette-text-primary)',\n },\n p: {\n fontSize: '15px',\n color: 'var(--mui-palette-text-primary)',\n cursor: 'text',\n },\n // Nested content inside clickable hosts inherits the host cursor\n // (covers ListItemButton, Button, IconButton, AccordionSummary, etc.).\n 'button *, a *, [role=\"button\"] *, .MuiButtonBase-root *': {\n cursor: 'inherit',\n },\n a: {\n color: 'var(--mui-palette-text-href)', // Assuming this var exists from theme\n cursor: 'pointer',\n },\n '*::selection': {\n backgroundColor: 'var(--mui-palette-focus-1)',\n color: 'var(--mui-palette-text-primary)',\n textShadow: 'none',\n },\n '*::-moz-selection': {\n backgroundColor: 'var(--mui-palette-focus-1)',\n color: 'var(--mui-palette-text-primary)',\n textShadow: 'none',\n },\n\n // Layout styles\n html: {\n height: '100%',\n width: '100%',\n margin: 0,\n padding: 0,\n boxSizing: 'border-box',\n },\n 'html > body': {\n height: '100%',\n width: '100%',\n backgroundColor: 'transparent',\n },\n};\n\nexport type AppThemeProviderProps = {\n children: React.ReactNode;\n theme?: Theme;\n muiThemeOptions?: ThemeOptions;\n defaultMode?: 'light' | 'dark' | 'system';\n /** Pass `null` to skip localStorage (Playground3 stage iframes). */\n storageManager?: null;\n};\n\n/**\n * CssVarsProvider re-renders on `setMode` so it can flip the color-scheme\n * attribute. Memoize the app tree so that swap stays a CSS-variable change\n * instead of rebuilding tables, editors, and other heavy compounds.\n */\nconst ThemeTree = React.memo(function ThemeTree({ children }: { children: React.ReactNode }) {\n return (\n <AlertProvider>\n <ConfirmProvider>\n <CssBaseline />\n <GlobalStyles styles={globalStyles} />\n {children}\n </ConfirmProvider>\n </AlertProvider>\n );\n});\n\nexport default function ThemeProvider({\n children,\n theme: customTheme,\n muiThemeOptions,\n defaultMode,\n storageManager,\n}: AppThemeProviderProps) {\n const resolvedTheme = React.useMemo(() => {\n if (customTheme) {\n return customTheme;\n }\n\n return createAppTheme(muiThemeOptions);\n }, [customTheme, muiThemeOptions]);\n\n return (\n <CacheProvider value={appEmotionCache}>\n {/* Skip 250ms color lerp while color-scheme flips. Button/IconButton\n also drop color transitions for other token changes. */}\n <MuiThemeProvider\n theme={resolvedTheme}\n defaultMode={defaultMode}\n storageManager={storageManager}\n disableTransitionOnChange\n >\n <ThemeTree>{children}</ThemeTree>\n </MuiThemeProvider>\n </CacheProvider>\n );\n}\n","'use client'\nimport React from 'react'\nimport { SnackbarProvider, type SnackbarProviderProps } from 'notistack'\nimport { MuiAlertVariant } from './MuiAlertVariant'\nimport { CollapsableAlert } from './CollapsableAlert'\nimport { AlertStyleVariantContext } from './AlertStyleVariantContext'\nimport { ALERT_VARIANTs, DEFAULTs, type AlertStyleVariant } from './_utils'\n\nconst ALERT_COMPONENTS: SnackbarProviderProps['Components'] = {\n [ALERT_VARIANTs.info]: MuiAlertVariant,\n [ALERT_VARIANTs.warning]: MuiAlertVariant,\n [ALERT_VARIANTs.success]: MuiAlertVariant,\n [ALERT_VARIANTs.error]: MuiAlertVariant,\n [ALERT_VARIANTs.system]: MuiAlertVariant,\n [ALERT_VARIANTs.insight]: MuiAlertVariant,\n [ALERT_VARIANTs.collapsable]: CollapsableAlert,\n}\n\nexport type AlertProviderProps = {\n children: React.ReactNode\n /**\n * Default chrome for enqueued alerts when `styleVariant` is omitted.\n * Soft = quiet glass (default); classic = filled MUI Alert.\n * Per-call `styleVariant` always wins.\n */\n defaultStyleVariant?: AlertStyleVariant\n}\n\n/**\n * AlertProvider - Context provider for the alert system\n * Sets up notistack with all custom alert variant components\n * Should wrap the entire application or specific sections that need alerts\n */\nexport const AlertProvider = React.memo(function AlertProvider({\n children,\n defaultStyleVariant = DEFAULTs.STYLE_VARIANT,\n}: AlertProviderProps) {\n return (\n <AlertStyleVariantContext.Provider value={defaultStyleVariant}>\n <SnackbarProvider\n maxSnack={DEFAULTs.PROVIDER_CONFIGs.maxSnack}\n anchorOrigin={DEFAULTs.ANCHOR_ORIGIN}\n Components={ALERT_COMPONENTS}\n >\n {children}\n </SnackbarProvider>\n </AlertStyleVariantContext.Provider>\n )\n})\n","'use client'\nimport { forwardRef, useCallback } from 'react'\nimport { useSnackbar, CustomContentProps } from 'notistack'\nimport Alert from '@mui/material/Alert'\nimport { Box } from '@/ele/Box'\nimport { Button } from '@/ele/Button'\n\nimport { type AlertOptions, ALERT_VARIANTs, DEFAULTs } from './_utils'\nimport { useAlertStyleVariantDefault } from './AlertStyleVariantContext'\nimport { SoftAlertContent } from './SoftAlertContent'\n\n// Map custom variants to MUI Alert severity / color\nconst variantToSeverity = {\n [ALERT_VARIANTs.info]: 'info',\n [ALERT_VARIANTs.warning]: 'warning',\n [ALERT_VARIANTs.success]: 'success',\n [ALERT_VARIANTs.error]: 'error',\n [ALERT_VARIANTs.system]: 'system',\n [ALERT_VARIANTs.insight]: 'insight',\n [ALERT_VARIANTs.collapsable]: 'info', // Default to info for collapsable\n} as const\n\ntype MuiSeverity = 'info' | 'warning' | 'success' | 'error' | 'system' | 'insight'\n\nexport const MuiAlertVariant = forwardRef<HTMLDivElement, CustomContentProps & AlertOptions>(\n (props, ref) => {\n const {\n id,\n message,\n variant,\n icon,\n style,\n styleVariant: styleVariantProp,\n alertAction,\n action: actionProp,\n } = props as CustomContentProps & AlertOptions & { alertAction?: AlertOptions['action'] }\n const action = alertAction ?? actionProp\n const providerDefault = useAlertStyleVariantDefault()\n const styleVariant = styleVariantProp ?? providerDefault ?? DEFAULTs.STYLE_VARIANT\n const { closeSnackbar } = useSnackbar()\n\n const handleDismiss = useCallback(() => {\n closeSnackbar(id)\n }, [id, closeSnackbar])\n\n const handleAction = useCallback(() => {\n action?.onClick()\n closeSnackbar(id)\n }, [action, closeSnackbar, id])\n\n if (styleVariant === 'soft') {\n return (\n <SoftAlertContent\n ref={ref}\n {...props}\n alertAction={action}\n />\n )\n }\n\n // Convert custom variant to MUI severity\n const severity = variantToSeverity[variant as keyof typeof variantToSeverity] || 'info' as MuiSeverity\n\n return (\n <Alert\n ref={ref}\n severity={severity}\n onClose={handleDismiss}\n icon={icon}\n style={style}\n data-style-variant=\"classic\"\n data-testid=\"classic-alert\"\n action={\n action ? (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Button\n size=\"small\"\n variant=\"text\"\n onClick={handleAction}\n sx={{\n minWidth: 'auto',\n color: 'var(--alert-icon-color, inherit)',\n textTransform: 'none',\n fontWeight: 600,\n }}\n >\n {action.label}\n </Button>\n </Box>\n ) : undefined\n }\n >\n {message}\n </Alert>\n )\n }\n)\n","export const ALERT_VARIANTs = {\n info: 'myInfo',\n warning: 'myWarning',\n success: 'mySuccess',\n error: 'myError',\n system: 'mySystem',\n insight: 'myInsight',\n collapsable: 'myCollapsable',\n} as const\n\nexport const ALERT_STYLE_VARIANTs = {\n soft: 'soft',\n classic: 'classic',\n} as const\n\nexport const DEFAULTs = {\n AUTO_HIDE_DURATION: 3000,\n /** Quiet glass toast look is the default snackbar chrome. */\n STYLE_VARIANT: 'soft' as const,\n ANCHOR_ORIGIN: { horizontal: \"right\" as const, vertical: \"top\" as const },\n PROVIDER_CONFIGs: {\n maxSnack: 3,\n dense: true,\n preventDuplicate: true,\n autoHideDuration: 3000,\n }\n} as const\n\nexport const ERRORs = {\n invalid_variant: 'Invalid alert variant provided',\n enqueue_failed: 'Failed to enqueue alert',\n missing_message: 'Message is required for alert',\n missing_component_props: 'Component props are required for collapsible alert',\n} as const\n","'use client'\nimport React from 'react'\nimport { DEFAULTs, type AlertStyleVariant } from './_utils'\n\nexport const AlertStyleVariantContext = React.createContext<AlertStyleVariant>(\n DEFAULTs.STYLE_VARIANT,\n)\n\nexport function useAlertStyleVariantDefault(): AlertStyleVariant {\n return React.useContext(AlertStyleVariantContext)\n}\n","'use client'\nimport { forwardRef, useCallback } from 'react'\nimport { useSnackbar, type CustomContentProps } from 'notistack'\nimport { Box } from '@/ele/Box'\nimport { Typography } from '@/ele/Typography'\nimport { Button, IconButton } from '@/ele/Button'\nimport {\n AutoAwesomeRoundedIcon,\n CheckCircleIcon,\n CloseIcon,\n ErrorOutlineOutlinedIcon,\n InfoOutlinedIcon,\n SettingIcon,\n WarningOutlinedIcon,\n} from '@/icons/MuiIcon'\nimport { ALERT_VARIANTs, type AlertAction, type AlertOptions } from './_utils'\nimport { softAlertAccentBarSx, softAlertIconSx, softAlertItemRootSx } from './theme'\n\nconst VARIANT_ICON = {\n [ALERT_VARIANTs.success]: CheckCircleIcon,\n [ALERT_VARIANTs.error]: ErrorOutlineOutlinedIcon,\n [ALERT_VARIANTs.warning]: WarningOutlinedIcon,\n [ALERT_VARIANTs.info]: InfoOutlinedIcon,\n [ALERT_VARIANTs.system]: SettingIcon,\n [ALERT_VARIANTs.insight]: AutoAwesomeRoundedIcon,\n [ALERT_VARIANTs.collapsable]: InfoOutlinedIcon,\n} as const\n\nconst VARIANT_DATA = {\n [ALERT_VARIANTs.success]: 'success',\n [ALERT_VARIANTs.error]: 'error',\n [ALERT_VARIANTs.warning]: 'warning',\n [ALERT_VARIANTs.info]: 'info',\n [ALERT_VARIANTs.system]: 'system',\n [ALERT_VARIANTs.insight]: 'insight',\n [ALERT_VARIANTs.collapsable]: 'info',\n} as const\n\nexport type SoftAlertContentProps = CustomContentProps &\n Pick<AlertOptions, 'icon'> & {\n /** Wired from AlertOptions.action via enqueue (lertAction avoids notistack SharedProps.action clash). */\n alertAction?: AlertAction\n }\n\n/**\n * Soft/quiet glass snackbar content — former Toast look, owned by Alert/notistack.\n */\nexport const SoftAlertContent = forwardRef<HTMLDivElement, SoftAlertContentProps>(\n function SoftAlertContent(props, ref) {\n const { id, message, variant, icon, style, alertAction: action } = props\n const { closeSnackbar } = useSnackbar()\n\n const handleDismiss = useCallback(() => {\n closeSnackbar(id)\n }, [id, closeSnackbar])\n\n const handleAction = useCallback(() => {\n action?.onClick()\n closeSnackbar(id)\n }, [action, closeSnackbar, id])\n\n const Icon =\n VARIANT_ICON[variant as keyof typeof VARIANT_ICON] ?? InfoOutlinedIcon\n const dataVariant =\n VARIANT_DATA[variant as keyof typeof VARIANT_DATA] ?? 'info'\n\n return (\n <Box\n ref={ref}\n role=\"status\"\n aria-live=\"polite\"\n data-variant={dataVariant}\n data-style-variant=\"soft\"\n data-testid=\"soft-alert\"\n style={style}\n sx={softAlertItemRootSx}\n >\n <Box sx={softAlertAccentBarSx} aria-hidden />\n {icon === null ? null : icon !== undefined ? (\n <Box sx={{ display: 'flex', flexShrink: 0, color: 'var(--soft-alert-accent)' }}>\n {icon}\n </Box>\n ) : (\n <Icon sx={softAlertIconSx} aria-hidden />\n )}\n <Box sx={{ flex: 1, minWidth: 0 }}>\n {typeof message === 'string' ? (\n <Typography variant=\"body2\" sx={{ m: 0, lineHeight: 1.4 }}>\n {message}\n </Typography>\n ) : (\n message\n )}\n </Box>\n {action ? (\n <Button\n size=\"small\"\n variant=\"text\"\n onClick={handleAction}\n sx={{\n flexShrink: 0,\n alignSelf: 'center',\n minWidth: 'auto',\n color: 'var(--soft-alert-accent)',\n textTransform: 'none',\n fontWeight: 600,\n lineHeight: 1.25,\n }}\n >\n {action.label}\n </Button>\n ) : null}\n <IconButton\n size=\"small\"\n aria-label=\"Close\"\n onClick={handleDismiss}\n sx={{\n flexShrink: 0,\n alignSelf: 'center',\n p: 0.25,\n color: 'var(--mui-palette-text-secondary)',\n }}\n >\n <CloseIcon sx={{ fontSize: '1rem' }} />\n </IconButton>\n </Box>\n )\n },\n)\n","import type { MuiComponentTheme } from '@/_utils/_types'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\n/**\n * Classic denser collapsable — solid paper sibling to soft glass.\n * Quiet border-1, subtle elevation, no harsh gray icon squares.\n */\nexport const collapsableAlertClassicRootSx: SxProps<Theme> = {\n '--collapse-bg': 'var(--mui-palette-background-paper)',\n '--collapse-border': 'var(--mui-palette-border-1)',\n '--collapse-title-color': 'var(--mui-palette-text-primary)',\n '--collapse-shadow':\n '0 1px 2px rgba(15, 23, 42, 0.05), 0 2px 8px rgba(15, 23, 42, 0.04)',\n\n pointerEvents: 'auto',\n display: 'flex',\n flexDirection: 'column',\n minWidth: 280,\n maxWidth: 'min(420px, calc(100vw - 24px))',\n width: '100%',\n borderRadius: '10px',\n border: '1px solid var(--collapse-border)',\n backgroundColor: 'var(--collapse-bg)',\n color: 'var(--collapse-title-color)',\n boxShadow: 'var(--collapse-shadow)',\n boxSizing: 'border-box',\n overflow: 'hidden',\n\n '[color-scheme=\"dark\"] &': {\n '--collapse-bg': 'var(--mui-palette-container-bg-1, var(--mui-palette-background-paper))',\n '--collapse-shadow':\n '0 1px 2px rgba(0, 0, 0, 0.22), 0 2px 8px rgba(0, 0, 0, 0.16)',\n },\n}\n\n/** @deprecated Use collapsableAlertClassicRootSx / collapsableAlertSoftRootSx. */\nexport const collapsableAlertRootSx = collapsableAlertClassicRootSx\n\n/**\n * Soft/quiet glass collapsable — matches SoftAlertContent language:\n * border-1, glass blur, soft night shadow, 12px radius. No harsh Paper squares.\n */\nexport const collapsableAlertSoftRootSx: SxProps<Theme> = {\n '--collapse-bg': 'color-mix(in srgb, var(--mui-palette-background-paper) 88%, transparent)',\n '--collapse-border': 'var(--mui-palette-border-1)',\n '--collapse-title-color': 'var(--mui-palette-text-primary)',\n '--collapse-shadow':\n '0 1px 2px rgba(15, 23, 42, 0.04), 0 4px 12px rgba(15, 23, 42, 0.06)',\n\n pointerEvents: 'auto',\n display: 'flex',\n flexDirection: 'column',\n minWidth: 280,\n maxWidth: 'min(420px, calc(100vw - 24px))',\n width: '100%',\n borderRadius: '12px',\n border: '1px solid var(--collapse-border)',\n backgroundColor: 'var(--collapse-bg)',\n color: 'var(--collapse-title-color)',\n boxShadow: 'var(--collapse-shadow)',\n backdropFilter: 'blur(10px)',\n WebkitBackdropFilter: 'blur(10px)',\n boxSizing: 'border-box',\n overflow: 'hidden',\n\n '[color-scheme=\"dark\"] &': {\n '--collapse-shadow':\n '0 1px 2px rgba(0, 0, 0, 0.18), 0 4px 12px rgba(0, 0, 0, 0.14)',\n },\n}\n\nexport const collapsableSoftHeaderSx: SxProps<Theme> = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 1,\n px: 1.5,\n py: 1.25,\n minHeight: 40,\n}\n\n/** Classic denser header — solid, slightly taller hit area than soft. */\nexport const collapsableClassicHeaderSx: SxProps<Theme> = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 1,\n px: 1.5,\n py: 1.125,\n minHeight: 44,\n}\n\n/** Ghost icon buttons — no gray square hit targets. */\nexport const collapsableSoftIconButtonSx: SxProps<Theme> = {\n flexShrink: 0,\n p: 0.25,\n color: 'var(--mui-palette-text-secondary)',\n backgroundColor: 'transparent',\n borderRadius: '8px',\n '&:hover': {\n backgroundColor: 'color-mix(in srgb, var(--mui-palette-text-primary) 6%, transparent)',\n },\n}\n\n/**\n * Classic denser ghost icons — still no harsh gray squares;\n * slightly stronger hover wash than soft.\n */\nexport const collapsableClassicIconButtonSx: SxProps<Theme> = {\n flexShrink: 0,\n p: 0.375,\n color: 'var(--mui-palette-text-secondary)',\n backgroundColor: 'transparent',\n borderRadius: '8px',\n '&:hover': {\n backgroundColor: 'color-mix(in srgb, var(--mui-palette-text-primary) 8%, transparent)',\n color: 'var(--mui-palette-text-primary)',\n },\n}\n\nexport const collapsableSoftPanelSx: SxProps<Theme> = {\n px: 1.5,\n pb: 1.5,\n pt: 0.75,\n borderTop: '1px solid var(--collapse-border)',\n}\n\n/** Classic expand panel — quiet divider, denser tinted content area. */\nexport const collapsableClassicPanelSx: SxProps<Theme> = {\n px: 1.5,\n pb: 1.5,\n pt: 1,\n borderTop: '1px solid var(--collapse-border)',\n backgroundColor:\n 'color-mix(in srgb, var(--mui-palette-text-primary) 2.5%, var(--collapse-bg))',\n}\n\n/**\n * Soft/quiet glass alert — matches former Toast chrome:\n * quiet border-1, glass blur, accent bar, soft night shadow. No thick severity outlines.\n */\nexport const softAlertItemRootSx: SxProps<Theme> = {\n '--soft-alert-bg': 'color-mix(in srgb, var(--mui-palette-background-paper) 88%, transparent)',\n '--soft-alert-border': 'var(--mui-palette-border-1)',\n '--soft-alert-fg': 'var(--mui-palette-text-primary)',\n '--soft-alert-accent': 'var(--mui-palette-info-main)',\n '--soft-alert-shadow':\n '0 1px 2px rgba(15, 23, 42, 0.04), 0 4px 12px rgba(15, 23, 42, 0.06)',\n\n pointerEvents: 'auto',\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n px: 1.5,\n py: 1.25,\n minWidth: 280,\n maxWidth: 'min(420px, calc(100vw - 24px))',\n borderRadius: '12px',\n border: '1px solid var(--soft-alert-border)',\n backgroundColor: 'var(--soft-alert-bg)',\n color: 'var(--soft-alert-fg)',\n boxShadow: 'var(--soft-alert-shadow)',\n backdropFilter: 'blur(10px)',\n WebkitBackdropFilter: 'blur(10px)',\n boxSizing: 'border-box',\n\n '[color-scheme=\"dark\"] &': {\n '--soft-alert-shadow':\n '0 1px 2px rgba(0, 0, 0, 0.18), 0 4px 12px rgba(0, 0, 0, 0.14)',\n },\n\n '&[data-variant=success]': {\n '--soft-alert-accent': 'var(--mui-palette-success-main)',\n },\n '&[data-variant=error]': {\n '--soft-alert-accent': 'var(--mui-palette-error-main)',\n },\n '&[data-variant=warning]': {\n '--soft-alert-accent': 'var(--mui-palette-warning-main)',\n },\n '&[data-variant=info]': {\n '--soft-alert-accent': 'var(--mui-palette-info-main)',\n },\n '&[data-variant=system]': {\n '--soft-alert-accent': 'var(--mui-palette-system-main)',\n },\n '&[data-variant=insight]': {\n '--soft-alert-accent': 'var(--mui-palette-insight-main)',\n },\n}\n\nexport const softAlertAccentBarSx: SxProps<Theme> = {\n width: 3,\n alignSelf: 'stretch',\n borderRadius: 2,\n backgroundColor: 'var(--soft-alert-accent)',\n flexShrink: 0,\n opacity: 0.85,\n}\n\nexport const softAlertIconSx: SxProps<Theme> = {\n color: 'var(--soft-alert-accent)',\n fontSize: '1.25rem',\n flexShrink: 0,\n}\n\n/** Classic MUI Alert severity fill + colored border (legacy notistack look). */\nexport const alertTheme = {\n styleOverrides: {\n root: ({ theme }) => ({\n '--alert-bgc': theme.palette.background.paper, // Default background color\n '--alert-color': theme.palette.text.primary, // Default text color\n\n whiteSpace: \"normal\", // Allow wrapping for custom components\n alignItems: 'center', // Center content vertically\n borderRadius: 'var(--mui-shape-borderRadius)', // Use theme border radius\n backgroundColor: 'var(--alert-bgc)', // Use theme background color\n color: 'var(--alert-color)', // Use theme text color\n border: '1px solid var(--alert-color)', // Border using text color for contrast\n \n \"& .MuiAlert-icon\": {\n color: \"var(--alert-icon-color, currentColor)\", // Use CSS variable for icon color\n padding: '8px 0', \n },\n \"& .MuiAlert-message\": {\n flex: 1, \n width: '100%', // Ensure message takes width\n padding: '8px 0',\n },\n \"& .MuiButtonBase-root\": {\n '--button-color': 'var(--alert-icon-color)',\n },\n\n \"&.MuiAlert-standardError\": {\n '--alert-icon-color': 'var(--mui-palette-error-main)',\n '--alert-bgc': 'var(--mui-palette-error-background, var(--mui-palette-error-dark))',\n '--alert-color': theme.palette.error.main,\n },\n \"&.MuiAlert-standardSuccess\": {\n '--alert-icon-color': 'var(--mui-palette-success-main)',\n '--alert-bgc': 'var(--mui-palette-success-background, var(--mui-palette-success-dark))',\n '--alert-color': theme.palette.success.main,\n },\n \"&.MuiAlert-standardWarning\": {\n '--alert-bgc': 'var(--mui-palette-warning-background, var(--mui-palette-warning-dark))', \n '--alert-color': theme.palette.warning.main,\n \"--alert-icon-color\": \"var(--mui-palette-warning-main)\",\n },\n \"&.MuiAlert-standardInfo\": {\n '--alert-bgc': 'var(--mui-palette-info-background, var(--mui-palette-info-dark))',\n '--alert-color': theme.palette.info.main,\n \"--alert-icon-color\": \"var(--mui-palette-info-main)\",\n },\n \"&.MuiAlert-standardSystem\": {\n '--alert-icon-color': 'var(--mui-palette-system-main)',\n '--alert-bgc': 'var(--mui-palette-system-background, var(--mui-palette-system-dark))',\n '--alert-color': theme.palette.system.main,\n },\n \"&.MuiAlert-standardInsight\": {\n '--alert-icon-color': 'var(--mui-palette-insight-main)',\n '--alert-bgc': 'var(--mui-palette-insight-background, var(--mui-palette-insight-dark))',\n '--alert-color': theme.palette.insight.main,\n },\n \"&.MuiAlert-filledSystem\": {\n '--alert-icon-color': 'var(--mui-palette-system-contrastText)',\n '--alert-bgc': 'var(--mui-palette-Alert-systemFilledBg, var(--mui-palette-system-main))',\n '--alert-color': 'var(--mui-palette-Alert-systemFilledColor, var(--mui-palette-system-contrastText))',\n },\n \"&.MuiAlert-filledInsight\": {\n '--alert-icon-color': 'var(--mui-palette-insight-contrastText)',\n '--alert-bgc': 'var(--mui-palette-Alert-insightFilledBg, var(--mui-palette-insight-main))',\n '--alert-color': 'var(--mui-palette-Alert-insightFilledColor, var(--mui-palette-insight-contrastText))',\n },\n \"&.MuiAlert-outlinedSystem\": {\n '--alert-icon-color': 'var(--mui-palette-system-main)',\n '--alert-bgc': 'transparent',\n '--alert-color': theme.palette.system.main,\n },\n \"&.MuiAlert-outlinedInsight\": {\n '--alert-icon-color': 'var(--mui-palette-insight-main)',\n '--alert-bgc': 'transparent',\n '--alert-color': theme.palette.insight.main,\n },\n }),\n },\n} as const satisfies MuiComponentTheme<\"MuiAlert\">\n","'use client'\nimport { forwardRef, useState, useCallback } from 'react'\nimport { CustomContentProps, useSnackbar } from 'notistack'\nimport type { BoxProps } from '@mui/material/Box'\nimport { Collapse } from '@/ele/Collapse'\nimport { IconButton } from '@/ele/Button'\nimport { Typography } from '@/ele/Typography'\nimport { Box } from '@/ele/Box'\nimport { ExpandMoreIcon, CloseIcon } from '@/icons/MuiIcon'\nimport { type CollapsableAlertOptions, DEFAULTs } from './_utils'\nimport { useAlertStyleVariantDefault } from './AlertStyleVariantContext'\nimport {\n collapsableAlertClassicRootSx,\n collapsableAlertSoftRootSx,\n collapsableClassicHeaderSx,\n collapsableClassicIconButtonSx,\n collapsableClassicPanelSx,\n collapsableSoftHeaderSx,\n collapsableSoftIconButtonSx,\n collapsableSoftPanelSx,\n} from './theme'\nimport { mergeSx } from '@/_utils/_func'\n\nexport const CollapsableAlert = forwardRef<\n HTMLDivElement,\n CustomContentProps & CollapsableAlertOptions\n>(function CollapsableAlert(\n { id, componentProps, componentWrapperProps, style, styleVariant: styleVariantProp },\n ref,\n) {\n const [expanded, setExpanded] = useState(false)\n const { closeSnackbar } = useSnackbar()\n const providerDefault = useAlertStyleVariantDefault()\n const styleVariant =\n styleVariantProp ?? providerDefault ?? DEFAULTs.STYLE_VARIANT\n const isSoft = styleVariant === 'soft'\n\n const handleExpandClick = useCallback(() => {\n setExpanded((oldExpanded) => !oldExpanded)\n }, [])\n\n const handleDismiss = useCallback(() => {\n closeSnackbar(id)\n }, [id, closeSnackbar])\n\n const { Renderer, ...restCollapse } = componentWrapperProps || {}\n\n const titleNode = componentProps?.title || 'Alert Title'\n\n const iconButtonSx = isSoft\n ? collapsableSoftIconButtonSx\n : collapsableClassicIconButtonSx\n\n const iconButtons = (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 0.25,\n flexShrink: 0,\n }}\n >\n <IconButton\n aria-label=\"Show more\"\n size=\"small\"\n onClick={handleExpandClick}\n sx={iconButtonSx}\n >\n <ExpandMoreIcon\n style={{\n transform: expanded ? 'rotate(180deg)' : 'rotate(0deg)',\n transition: 'transform 0.3s ease-in-out',\n }}\n sx={{ fontSize: '1rem' }}\n />\n </IconButton>\n <IconButton\n size=\"small\"\n aria-label=\"Close\"\n onClick={handleDismiss}\n sx={iconButtonSx}\n >\n <CloseIcon sx={{ fontSize: '1rem' }} />\n </IconButton>\n </Box>\n )\n\n const body = (\n <Collapse in={expanded} timeout=\"auto\" unmountOnExit>\n <Box\n {...(restCollapse as BoxProps)}\n sx={mergeSx(\n isSoft ? collapsableSoftPanelSx : collapsableClassicPanelSx,\n (restCollapse as BoxProps).sx,\n )}\n >\n {Renderer ? <Renderer {...componentProps} /> : null}\n {!Renderer && (\n <Box sx={{ py: 0.25 }}>\n {componentProps?.children || 'Collapsible content'}\n </Box>\n )}\n </Box>\n </Collapse>\n )\n\n return (\n <Box\n ref={ref}\n style={style}\n role=\"status\"\n aria-live=\"polite\"\n data-style-variant={isSoft ? 'soft' : 'classic'}\n data-testid={isSoft ? 'collapsable-alert-soft' : 'collapsable-alert-classic'}\n sx={isSoft ? collapsableAlertSoftRootSx : collapsableAlertClassicRootSx}\n >\n <Box sx={isSoft ? collapsableSoftHeaderSx : collapsableClassicHeaderSx}>\n <Typography\n variant=\"body2\"\n sx={{\n color: 'var(--collapse-title-color)',\n fontWeight: 600,\n lineHeight: 1.4,\n m: 0,\n minWidth: 0,\n flex: 1,\n }}\n >\n {titleNode}\n </Typography>\n {iconButtons}\n </Box>\n {body}\n </Box>\n )\n})\n","export {default as Collapse} from '@mui/material/Collapse'\nexport * from './theme'\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const collapseTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {},\n }\n\n} as const satisfies MuiComponentTheme<\"MuiCollapse\">\n","'use client'\nimport { useCallback, useEffect, useId } from 'react'\nimport { Box } from '@/ele/Box'\nimport { Typography } from '@/ele/Typography'\nimport { Button } from '@/ele/Button'\nimport type { ConfirmDialogProps } from './types'\nimport { confirmBackdropSx, confirmPaperSx } from './theme'\n\n/**\n * Soft confirm modal. Esc and Cancel resolve as cancel.\n * Use controlled props, or the promise-style `confirm()` helper.\n */\nexport function ConfirmDialog({\n open,\n title,\n body,\n confirmLabel = 'Confirm',\n cancelLabel = 'Cancel',\n danger = false,\n loading = false,\n onConfirm,\n onCancel,\n}: ConfirmDialogProps) {\n const titleId = useId()\n const bodyId = useId()\n const cancelBtnId = useId()\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (!open) return\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n if (!loading) onCancel()\n }\n },\n [open, loading, onCancel],\n )\n\n useEffect(() => {\n if (!open) return\n document.addEventListener('keydown', handleKeyDown, true)\n const t = window.setTimeout(() => {\n document.getElementById(cancelBtnId)?.focus()\n }, 0)\n return () => {\n document.removeEventListener('keydown', handleKeyDown, true)\n window.clearTimeout(t)\n }\n }, [open, handleKeyDown, cancelBtnId])\n\n if (!open) return null\n\n return (\n <Box\n role=\"presentation\"\n sx={confirmBackdropSx}\n onClick={(e) => {\n if (e.target === e.currentTarget && !loading) onCancel()\n }}\n data-testid=\"confirm-backdrop\"\n >\n <Box\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={body ? bodyId : undefined}\n sx={confirmPaperSx}\n data-testid=\"confirm-dialog\"\n onClick={(e) => e.stopPropagation()}\n >\n <Typography\n id={titleId}\n variant=\"h6\"\n component=\"h2\"\n sx={{ m: 0, fontSize: '1.05rem', fontWeight: 600 }}\n >\n {title}\n </Typography>\n {body ? (\n <Typography\n id={bodyId}\n variant=\"body2\"\n color=\"text.secondary\"\n sx={{ m: 0 }}\n >\n {body}\n </Typography>\n ) : null}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'flex-end',\n gap: 1,\n mt: 0.5,\n }}\n >\n <Button\n id={cancelBtnId}\n variant=\"outlined\"\n color=\"inherit\"\n onClick={onCancel}\n disabled={loading}\n sx={{\n textTransform: 'none',\n borderColor: 'var(--mui-palette-border-1)',\n }}\n >\n {cancelLabel}\n </Button>\n <Button\n variant=\"contained\"\n color={danger ? 'error' : 'primary'}\n onClick={onConfirm}\n disabled={loading}\n sx={{ textTransform: 'none' }}\n >\n {confirmLabel}\n </Button>\n </Box>\n </Box>\n </Box>\n )\n}\n","import type { SxProps, Theme } from '@mui/material/styles'\n\n/** Soft confirm modal surface — quiet border, soft radius. */\nexport const confirmPaperSx: SxProps<Theme> = {\n '--confirm-bg': 'var(--mui-palette-background-paper)',\n '--confirm-border': 'var(--mui-palette-border-1)',\n '--confirm-shadow': 'var(--mui-palette-shadow-outset-1, 0 8px 28px rgba(0,0,0,0.12))',\n\n outline: 'none',\n width: 'min(420px, calc(100vw - 32px))',\n maxWidth: '95vw',\n borderRadius: '16px',\n border: '1px solid var(--confirm-border)',\n backgroundColor: 'var(--confirm-bg)',\n boxShadow: 'var(--confirm-shadow)',\n p: 2.5,\n display: 'flex',\n flexDirection: 'column',\n gap: 1.5,\n boxSizing: 'border-box',\n}\n\nexport const confirmBackdropSx: SxProps<Theme> = {\n position: 'fixed',\n inset: 0,\n zIndex: (theme) => theme.zIndex.modal,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n p: 2,\n backgroundColor: 'color-mix(in srgb, var(--mui-palette-common-black, #000) 36%, transparent)',\n backdropFilter: 'blur(2px)',\n}\n","'use client'\nimport React, { useCallback, useSyncExternalStore } from 'react'\nimport { ConfirmDialog } from './ConfirmDialog'\nimport {\n getConfirmRequest,\n settleConfirm,\n subscribeConfirm,\n} from './confirmBus'\n\nexport type ConfirmProviderProps = {\n children?: React.ReactNode\n}\n\n/**\n * Host for the imperative confirm() helper.\n */\nexport function ConfirmProvider({ children }: ConfirmProviderProps) {\n const request = useSyncExternalStore(\n subscribeConfirm,\n getConfirmRequest,\n getConfirmRequest,\n )\n\n const onConfirm = useCallback(() => settleConfirm(true), [])\n const onCancel = useCallback(() => settleConfirm(false), [])\n\n return (\n <>\n {children}\n <ConfirmDialog\n open={!!request}\n title={request?.title ?? ''}\n body={request?.body}\n confirmLabel={request?.confirmLabel}\n cancelLabel={request?.cancelLabel}\n danger={request?.danger}\n onConfirm={onConfirm}\n onCancel={onCancel}\n />\n </>\n )\n}\n","import type { ConfirmOptions, ConfirmRequest } from './types'\n\ntype Listener = (request: ConfirmRequest | null) => void\n\nlet current: ConfirmRequest | null = null\nconst listeners = new Set<Listener>()\n\nfunction emit() {\n listeners.forEach((l) => l(current))\n}\n\nexport function subscribeConfirm(listener: Listener): () => void {\n listeners.add(listener)\n listener(current)\n return () => {\n listeners.delete(listener)\n }\n}\n\nexport function getConfirmRequest(): ConfirmRequest | null {\n return current\n}\n\nexport function requestConfirm(options: ConfirmOptions): Promise<boolean> {\n // Resolve any pending confirm as cancelled when a new one opens\n if (current) {\n current.resolve(false)\n }\n\n return new Promise<boolean>((resolve) => {\n current = { ...options, resolve }\n emit()\n })\n}\n\nexport function settleConfirm(value: boolean) {\n if (!current) return\n const req = current\n current = null\n emit()\n req.resolve(value)\n}\n","import { createTheme, type ThemeOptions } from '@mui/material/styles';\n\nimport { alertTheme } from '@/compound/Alert';\nimport { appBarTheme } from '../components/elemental/AppBar/src/theme';\nimport { avatarTheme } from '@/ele/Avatar';\nimport { badgeTheme } from '@/ele/Badge';\nimport { \n buttonTheme, \n buttonBaseTheme,\n iconButtonTheme,\n} from '@/ele/Button';\nimport { cardTheme, cardContentTheme } from '@/ele/Card';\nimport { checkboxTheme } from '@/ele/Checkbox';\nimport { chipTheme } from '@/ele/Chip';\nimport { autocompleteTheme } from '@/ele/Autocomplete';\nimport { collapseTheme } from '@/ele/Collapse';\nimport { \n dateCalendarTheme, pickersCalendarHeaderTheme,\n multiSectionDigitalClockTheme, pickersDayTheme,\n datePickerTheme, dateTimePickerTheme, timePickerTheme,\n pickersInputBaseTheme,\n} from '@/ele/DatePicker';\nimport { dividerTheme } from '@/ele/Divider';\nimport {\n dialogTheme,\n dialogTitleTheme,\n dialogContentTheme,\n dialogActionsTheme,\n dialogContentTextTheme,\n} from '@/ele/Dialog';\nimport { formLabelTheme, formControlLabelTheme, formHelperTextTheme } from '@/ele/Form';\nimport { textFieldTheme, inputBaseTheme } from '@/ele/Input';\nimport {\n listItemTheme,\n listItemIconTheme,\n listItemTextTheme,\n listItemButtonTheme,\n listItemSubheaderTheme,\n} from '@/ele/List';\nimport { menuItemTheme, menuTheme } from '../components/elemental/Menu/src/Menu/theme';\nimport { paperTheme } from '@/ele/Paper';\nimport { linearProgressTheme, circularProgressTheme } from '@/ele/Progress';\nimport { selectTheme } from '@/ele/Select';\nimport { sliderTheme } from '@/ele/Slider';\nimport { switchTheme } from '@/ele/Switch';\nimport { tabTheme, tabsTheme } from '@/ele/Tab';\nimport { toggleButtonGroupTheme, toggleButtonTheme } from '@/ele/ToggleButtonGroup'\nimport { tooltipTheme } from '@/ele/Tooltip';\nimport { typographyTheme } from '@/ele/Typography';\nimport { stepperTheme, stepTheme, stepLabelTheme, stepConnectorTheme, stepIconTheme, stepButtonTheme } from '@/ele/Stepper';\nimport {\n tableTheme,\n tableContainerTheme,\n tableHeadTheme,\n tableCellTheme,\n tablePaginationTheme,\n tableSortLabelTheme,\n} from '@/compound/Table';\n\nimport { muiPalette as darkBlueMuiPalette } from './colors/darkBlue';\nimport { muiPalette as lightBrownMuiPalette } from './colors/lightBrown';\n\n// import './styles/font.css';\n// import './styles/layout.css';\n\nconst baseThemeOptions: ThemeOptions = {\n cssVariables: {\n colorSchemeSelector: '[color-scheme=\"%s\"]',\n },\n colorSchemes: {\n light: lightBrownMuiPalette,\n dark: darkBlueMuiPalette,\n },\n breakpoints: {\n values: {\n xs: 0,\n sm: 600,\n md: 600,\n lg: 1200,\n xl: 1536,\n },\n },\n shape: {\n borderRadius: 8,\n },\n // Customize your theme here if needed\n components: {\n // Let hosts own the page canvas — CssBaseline would otherwise paint\n // body with palette.background.default on every ThemeProvider mount.\n MuiCssBaseline: {\n styleOverrides: {\n body: {\n backgroundColor: 'transparent',\n '@media print': {\n backgroundColor: 'transparent',\n },\n },\n },\n },\n // alert\n MuiAlert: alertTheme,\n // app bar\n MuiAppBar: appBarTheme,\n // avatar\n MuiAvatar: avatarTheme,\n // badge\n MuiBadge: badgeTheme,\n // buttons\n MuiButton: buttonTheme,\n MuiButtonBase: buttonBaseTheme,\n MuiToggleButtonGroup: toggleButtonGroupTheme,\n MuiToggleButton: toggleButtonTheme,\n // card\n MuiCard: cardTheme,\n MuiCardContent: cardContentTheme,\n // checkbox\n MuiCheckbox: checkboxTheme,\n // chips\n MuiChip: chipTheme,\n MuiAutocomplete: autocompleteTheme,\n // collapse\n MuiCollapse: collapseTheme,\n // date picker\n MuiDateCalendar: dateCalendarTheme,\n MuiPickersCalendarHeader: pickersCalendarHeaderTheme,\n MuiMultiSectionDigitalClock: multiSectionDigitalClockTheme,\n MuiPickersDay: pickersDayTheme,\n MuiDatePicker: datePickerTheme,\n MuiDateTimePicker: dateTimePickerTheme,\n MuiTimePicker: timePickerTheme,\n MuiPickersInputBase: pickersInputBaseTheme,\n // divider\n MuiDivider: dividerTheme,\n // dialog (soft quiet chrome)\n MuiDialog: dialogTheme,\n MuiDialogTitle: dialogTitleTheme,\n MuiDialogContent: dialogContentTheme,\n MuiDialogActions: dialogActionsTheme,\n MuiDialogContentText: dialogContentTextTheme,\n // form\n MuiFormLabel: formLabelTheme,\n MuiFormControlLabel: formControlLabelTheme,\n MuiFormHelperText: formHelperTextTheme,\n // IconButton\n MuiIconButton: iconButtonTheme,\n // input\n MuiTextField: textFieldTheme,\n MuiInputBase: inputBaseTheme,\n // list\n MuiListItem: listItemTheme,\n MuiListItemIcon: listItemIconTheme,\n MuiListItemText: listItemTextTheme,\n MuiListItemButton: listItemButtonTheme,\n MuiListSubheader: listItemSubheaderTheme,\n // menu\n MuiMenuItem: menuItemTheme,\n MuiMenu: menuTheme,\n // paper\n MuiPaper: paperTheme,\n // progress\n MuiLinearProgress: linearProgressTheme,\n MuiCircularProgress: circularProgressTheme,\n // select\n MuiSelect: selectTheme,\n // slider\n MuiSlider: sliderTheme,\n // switch\n MuiSwitch: switchTheme,\n // tab\n MuiTab: tabTheme,\n MuiTabs: tabsTheme,\n // tooltip\n MuiTooltip: tooltipTheme,\n // typography\n MuiTypography: typographyTheme,\n // stepper components\n MuiStepper: stepperTheme,\n MuiStep: stepTheme,\n MuiStepLabel: stepLabelTheme,\n MuiStepConnector: stepConnectorTheme,\n MuiStepIcon: stepIconTheme,\n MuiStepButton: stepButtonTheme,\n // table\n MuiTable: tableTheme,\n MuiTableContainer: tableContainerTheme,\n MuiTableHead: tableHeadTheme,\n MuiTableCell: tableCellTheme,\n MuiTablePagination: tablePaginationTheme,\n MuiTableSortLabel: tableSortLabelTheme,\n },\n};\n\nexport const createAppTheme = (options?: ThemeOptions) => createTheme(baseThemeOptions, options ?? {});\n\nexport const theme = createAppTheme();","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const appBarTheme = {\n defaultProps: {\n position: 'sticky',\n color: 'transparent',\n elevation: 0,\n },\n styleOverrides: {\n root: {\n '--appbar-bg': 'color-mix(in srgb, var(--mui-palette-background-paper), transparent 8%)',\n '--appbar-border-color': 'var(--mui-palette-divider)',\n '--appbar-blur': '10px',\n backgroundColor: 'var(--appbar-bg)',\n borderBottom: '1px solid var(--appbar-border-color)',\n backdropFilter: 'saturate(120%) blur(var(--appbar-blur))',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiAppBar'>\n","import type { SxProps, Theme } from '@mui/material/styles'\nimport type { MuiComponentTheme } from '@/_utils/_types'\n\n/** Soft dialog paper radius - matches Confirm quiet chrome. */\nexport const DIALOG_PAPER_RADIUS = '16px'\n\n/** Soft black elevation for light scheme (quiet, no thick chrome). */\nexport const DIALOG_SHADOW_LIGHT =\n '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)'\n\n/**\n * Soft black elevation for dark scheme.\n * Avoid palette `shadow-outset-1` here: it uses border-1 grey and reads as a pale halo.\n */\nexport const DIALOG_SHADOW_DARK =\n '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)'\n\nconst dialogDarkShadowSx = {\n '[data-mui-color-scheme=\"dark\"] &, [color-scheme=\"dark\"] &': {\n '--dialog-shadow': DIALOG_SHADOW_DARK,\n boxShadow: DIALOG_SHADOW_DARK,\n },\n} as const\n\n/** Soft/quiet Dialog paper tokens (shared by wrapper sx + theme overrides). */\nexport const dialogPaperTokens = {\n '--dialog-bg': 'var(--mui-palette-background-paper)',\n '--dialog-border': 'var(--mui-palette-border-1)',\n '--dialog-shadow': DIALOG_SHADOW_LIGHT,\n\n backgroundColor: 'var(--dialog-bg)',\n // Kill MUI Paper dark-mode elevation overlay so paper stays a flat soft surface.\n backgroundImage: 'none',\n borderRadius: DIALOG_PAPER_RADIUS,\n border: '1px solid var(--dialog-border)',\n boxShadow: 'var(--dialog-shadow)',\n outline: 'none',\n} as const\n\n/**\n * Soft/quiet Dialog paper.\n * Uses elevated `background.paper` (Google-style mid-grey over near-black canvas\n * in dark) with a hairline border - not raw white MUI defaults or thick chrome.\n */\nexport const dialogPaperSx: SxProps<Theme> = {\n ...dialogPaperTokens,\n ...dialogDarkShadowSx,\n}\n\n/** Soft glass-adjacent backdrop - same language as Confirm. */\nexport const dialogBackdropTokens = {\n backgroundColor:\n 'color-mix(in srgb, var(--mui-palette-common-black, #000) 36%, transparent)',\n backdropFilter: 'blur(2px)',\n} as const\n\nexport const dialogBackdropSx: SxProps<Theme> = dialogBackdropTokens\n\nexport const dialogTheme = {\n styleOverrides: {\n paper: {\n ...dialogPaperTokens,\n ...dialogDarkShadowSx,\n },\n },\n} as const satisfies MuiComponentTheme<'MuiDialog'>\n\nexport const dialogTitleTheme = {\n styleOverrides: {\n root: {\n fontSize: '1.05rem',\n fontWeight: 600,\n padding: '20px 20px 8px',\n lineHeight: 1.35,\n },\n },\n} as const satisfies MuiComponentTheme<'MuiDialogTitle'>\n\nexport const dialogContentTheme = {\n styleOverrides: {\n root: {\n padding: '8px 20px 12px',\n '&.MuiDialogContent-root:first-of-type': {\n paddingTop: '16px',\n },\n },\n },\n} as const satisfies MuiComponentTheme<'MuiDialogContent'>\n\n/**\n * Soft secondary / Cancel button chrome for DialogActions.\n * Matches Confirm cancel: quiet border-1 + muted text-secondary\n * (not stark white inherit outline in dark).\n */\nexport const dialogSecondaryButtonSx = {\n textTransform: 'none' as const,\n color: 'var(--mui-palette-text-secondary)',\n borderColor: 'var(--mui-palette-border-1)',\n '--button-color': 'var(--mui-palette-text-secondary)',\n '--variant-outlinedColor': 'var(--mui-palette-text-secondary)',\n '--variant-outlinedBorder': 'var(--mui-palette-border-1)',\n '&:hover': {\n color: 'var(--mui-palette-text-secondary)',\n borderColor: 'var(--mui-palette-border-hover-1)',\n backgroundColor: 'var(--mui-palette-background-hover-1)',\n '--button-hover-border-color': 'var(--mui-palette-border-hover-1)',\n },\n}\n\nexport const dialogActionsTheme = {\n styleOverrides: {\n root: {\n padding: '8px 16px 16px',\n gap: '8px',\n // Soften default Cancel pattern (outlined + inherit) inside Dialog only.\n // Do not restyle primary/error/etc. outlined buttons or global Buttons.\n '& .MuiButton-outlined.MuiButton-colorInherit': {\n ...dialogSecondaryButtonSx,\n },\n },\n },\n} as const satisfies MuiComponentTheme<'MuiDialogActions'>\n\nexport const dialogContentTextTheme = {\n styleOverrides: {\n root: {\n color: 'var(--mui-palette-text-secondary)',\n fontSize: '0.875rem',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiDialogContentText'>\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const selectTheme = {\n defaultProps: {},\n styleOverrides: {\n root: ({\n \"&.Mui-focused fieldset.MuiOutlinedInput-notchedOutline\": {\n borderColor: \"var(--mui-palette-text-secondary)\",\n }\n })\n },\n} as const satisfies MuiComponentTheme<\"MuiSelect\">\n","import type { MuiComponentTheme } from '@/_utils/_types'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\n/** MuiSwitch tokens: inset track, stable thumb, emphasis only on the on-track. */\n\nexport const switchTheme = {\n defaultProps: {\n disableFocusRipple: true,\n disableRipple: true,\n disableTouchRipple: true,\n \n },\n styleOverrides: {\n root: {\n '--switch-thumb': 'color-mix(in lab, var(--mui-palette-background-default) 72%, var(--mui-palette-text-primary) 28%)',\n '--switch-thumb-on': 'var(--mui-palette-background-default)',\n '--switch-track-off': 'var(--mui-palette-background-grey-1)',\n '--switch-track-on': 'var(--mui-palette-primary-emphasis)',\n '--switch-track-on-disabled': 'color-mix(in lab, var(--switch-track-on) 28%, var(--mui-palette-background-default))',\n overflow: 'visible',\n width: 40,\n height: 22,\n padding: 0,\n '&:has(.MuiSwitch-colorError)': {\n '--switch-track-on': 'var(--mui-palette-error-main)',\n },\n '&:has(.MuiSwitch-colorSuccess)': {\n '--switch-track-on': 'var(--mui-palette-success-main)',\n },\n '&:has(.MuiSwitch-colorWarning)': {\n '--switch-track-on': 'var(--mui-palette-warning-main)',\n },\n '&:has(.MuiSwitch-colorInfo)': {\n '--switch-track-on': 'var(--mui-palette-info-main)',\n },\n '&:has(.MuiSwitch-colorSystem)': {\n '--switch-track-on': 'var(--mui-palette-system-main)',\n },\n '&:has(.MuiSwitch-colorInsight)': {\n '--switch-track-on': 'var(--mui-palette-insight-main)',\n },\n '&:has(.MuiSwitch-colorSecondary)': {\n '--switch-track-on': 'var(--mui-palette-secondary-main)',\n },\n '& .MuiSwitch-switchBase': {\n boxSizing: 'border-box',\n top: 0,\n left: 0,\n padding: 2,\n width: 22,\n height: 22,\n color: 'var(--switch-thumb)',\n transition: 'transform 160ms ease',\n '&:hover': {\n backgroundColor: 'transparent',\n },\n '&.Mui-checked': {\n transform: 'translateX(18px)',\n color: 'var(--switch-thumb-on)',\n '& .MuiSwitch-thumb': {\n backgroundColor: 'var(--switch-thumb-on)',\n },\n },\n '&.Mui-checked + .MuiSwitch-track': {\n backgroundColor: 'var(--switch-track-on)',\n opacity: 1,\n },\n '&.Mui-checked.Mui-disabled + .MuiSwitch-track': {\n backgroundColor: 'var(--switch-track-on-disabled)',\n },\n '&.Mui-focusVisible': {\n outline: '2px solid var(--mui-palette-focus-1)',\n outlineOffset: 2,\n },\n },\n '& .MuiSwitch-thumb': {\n width: 18,\n height: 18,\n boxShadow: 'none',\n backgroundColor: 'var(--switch-thumb)',\n },\n '& .MuiSwitch-track': {\n width: '100%',\n height: '100%',\n borderRadius: 11,\n opacity: 1,\n backgroundColor: 'var(--switch-track-off)',\n transition: 'background-color 160ms ease',\n '&::before, &::after': {\n display: 'none',\n content: 'none',\n backgroundImage: 'none',\n },\n },\n '&.MuiSwitch-sizeSmall': {\n width: 32,\n height: 18,\n '& .MuiSwitch-switchBase': {\n padding: 2,\n width: 18,\n height: 18,\n '&.Mui-checked': {\n transform: 'translateX(14px)',\n },\n },\n '& .MuiSwitch-thumb': {\n width: 14,\n height: 14,\n },\n '& .MuiSwitch-track': {\n borderRadius: 9,\n },\n },\n },\n },\n} as const satisfies MuiComponentTheme<'MuiSwitch'>\n\n/** Static palette aliases for MuiSwitch wrapper root element */\nexport const muiSwitchRootSx: SxProps<Theme> = {\n '--switch-label-color': 'var(--mui-palette-text-grey-1)',\n '--switch-error-track-bg': 'var(--mui-palette-error-main)',\n alignItems: 'flex-start',\n '& .MuiFormControlLabel-root': {\n gap: '8px',\n margin: 0,\n alignItems: 'center',\n overflow: 'visible',\n maxWidth: 'none',\n },\n '& .MuiFormControlLabel-root.MuiFormControlLabel-labelPlacementStart, & .MuiFormControlLabel-root.MuiFormControlLabel-labelPlacementEnd, & .MuiFormControlLabel-root.MuiFormControlLabel-labelPlacementTop, & .MuiFormControlLabel-root.MuiFormControlLabel-labelPlacementBottom': {\n margin: 0,\n },\n '& .MuiFormControlLabel-label': {\n fontSize: '12px',\n userSelect: 'none',\n color: 'var(--switch-label-color)',\n overflow: 'visible',\n textOverflow: 'clip',\n flexShrink: 0,\n },\n '&.Mui-error .MuiSwitch-track': {\n backgroundColor: 'var(--switch-error-track-bg)',\n },\n} as const satisfies SxProps<Theme>\n\n/** Wrapper tokens for SwitchSoft (same control as Switch, label/error only). */\nexport const switchSoftRootSx: SxProps<Theme> = {\n ...muiSwitchRootSx,\n '--switch-label-color': 'var(--mui-palette-text-primary)',\n} as const satisfies SxProps<Theme>\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const tabTheme = {\n defaultProps: {\n disableRipple: true,\n },\n styleOverrides: {\n root: ({ theme }) => ({\n minHeight: 44,\n minWidth: 0,\n paddingInline: theme.spacing(1.5),\n paddingBlock: theme.spacing(1),\n borderRadius: theme.shape.borderRadius,\n textTransform: 'none',\n fontWeight: theme.typography.fontWeightMedium,\n color: 'var(--mui-palette-text-secondary)',\n transition: theme.transitions.create(['color', 'background-color'], {\n duration: theme.transitions.duration.shorter,\n }),\n '&:hover': {\n color: 'var(--mui-palette-primary-emphasis)',\n backgroundColor: 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 92%)',\n },\n '&.Mui-selected': {\n color: 'var(--mui-palette-primary-emphasis)',\n backgroundColor: 'transparent',\n },\n '&.Mui-selected:hover': {\n backgroundColor: 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 94%)',\n },\n '&.Mui-disabled': {\n color: 'var(--mui-palette-text-disabled)',\n },\n }),\n },\n} as const satisfies MuiComponentTheme<'MuiTab'>\n\nexport const tabsTheme = {\n styleOverrides: {\n root: {\n minHeight: 44,\n },\n list: {\n gap: 4,\n },\n indicator: {\n height: 3,\n borderRadius: 999,\n backgroundColor: 'var(--mui-palette-primary-emphasis)',\n },\n scrollButtons: {\n color: 'var(--mui-palette-text-secondary)',\n '&.Mui-disabled': {\n opacity: 0.4,\n },\n },\n },\n} as const satisfies MuiComponentTheme<'MuiTabs'>","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const toggleButtonGroupTheme = {\n defaultProps:{\n \n },\n styleOverrides: {\n root: ({theme}) => ({\n width: 'fit-content',\n maxWidth: '100%',\n\n border:\"none\",\n boxShadow:\"var(--mui-palette-shadow-border-1)\",\n padding: theme.spacing(0.5),\n borderRadius:\"10px\",\n gap:theme.spacing(0.5),\n }),\n }\n} as const satisfies MuiComponentTheme<\"MuiToggleButtonGroup\">\n\nexport const toggleButtonTheme = {\n defaultProps: {\n disableRipple: false,\n },\n styleOverrides: {\n root: () => ({\n '--unselected-hover-bg': 'var(--mui-palette-background-hover-1)',\n '--selected-bg': 'var(--mui-palette-focus-1)',\n '--selected-hover-bg': 'color-mix(in lab, var(--selected-bg), var(--unselected-hover-bg) 30%)',\n '--disabled-bg': 'var(--mui-palette-background-disabled)',\n '--disabled-color': 'var(--mui-palette-text-disabled)',\n '--c': 'var(--mui-palette-text-primary)',\n\n border:\"none\",\n textTransform:\"none\",\n padding:\"0px\",\n overflow:\"hidden\",\n color:\"var(--c)\",\n maxWidth:\"200px\",\n\n [`\n &.MuiButtonBase-root, \n &.MuiToggleButtonGroup.MuiButtonBase-root,\n &.MuiToggleButtonGroup-middleButton.MuiButtonBase-root,\n &.MuiToggleButtonGroup-firstButton.MuiButtonBase-root,\n &.MuiToggleButtonGroup-lastButton.MuiButtonBase-root`]:{\n borderRadius:\"8px\",\n },\n\n \"&:hover\":{\n backgroundColor:\"var(--unselected-hover-bg)\",\n },\n\n \"&.Mui-selected\":{\n background:\"var(--selected-bg)\",\n transition:\"background 0.3s\",\n \"&:hover\":{\n background:\"var(--selected-hover-bg)\",\n },\n \"&.Mui-disabled\":{\n background:\"var(--disabled-bg)\",\n },\n },\n \"&.Mui-disabled\":{\n color:\"var(--disabled-color)\",\n border:\"none\",\n },\n\n \"& svg\":{\n fontSize:\"inherit\",\n },\n\n \"&.Mui-error\":{ \n \"--c\":'var(--mui-palette-error-main)', \n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-error-main), var(--mui-palette-background-hover-1) 87%)',\n },\n \"&.MuiToggleButton-info\":{ \n \"--c\":'var(--mui-palette-info-main)', \n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-info-main), var(--mui-palette-background-hover-1) 84%)',\n },\n \"&.MuiToggleButton-success\":{ \n \"--c\":'var(--mui-palette-success-dark)', \n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-success-dark), var(--mui-palette-background-hover-1) 77%)',\n },\n \"&.MuiToggleButton-warning\":{ \n \"--c\":'var(--mui-palette-warning-main)', \n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-warning-main), var(--mui-palette-background-hover-1) 82%)',\n },\n \"&.MuiToggleButton-primary\":{\n \"--c\":'var(--mui-palette-primary-emphasis)',\n \"--selected-bg\": 'color-mix(in lab, var(--mui-palette-container-bg-primary), var(--mui-palette-primary-emphasis) 26%)',\n \"--selected-hover-bg\": 'color-mix(in lab, var(--selected-bg), var(--mui-palette-primary-emphasis) 18%)',\n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-primary-emphasis), var(--mui-palette-background-hover-1) 84%)',\n },\n \"&.MuiToggleButton-secondary\":{ \"--c\":'var(--mui-palette-secondary-main)', },\n }),\n }\n} as const satisfies MuiComponentTheme<\"MuiToggleButton\">","import type { MuiComponentTheme } from '@/_utils/_types'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\n// we export theme constants for each related MUI component so the\n// top-level theme file can include them and allow downstream consumers\n// to target the stepper pieces independently.\n\n/** Static palette aliases for StandardStepper root element */\nexport const standardStepperRootSx: SxProps<Theme> = {\n '--stepper-connector-color': 'var(--mui-palette-divider)',\n '--stepper-connector-dashed': 'var(--mui-palette-blink-shiny)',\n '--stepper-connector-success': 'var(--mui-palette-success-dark)',\n '--stepper-connector-error': 'var(--mui-palette-error-dark)',\n} as const satisfies SxProps<Theme>\n\nexport const stepperTheme = {\n defaultProps: {},\n styleOverrides: {\n root: () => ({\n // nothing specific by default\n }),\n },\n} as const satisfies MuiComponentTheme<'MuiStepper'>;\n\nexport const stepTheme = {\n defaultProps: {},\n styleOverrides: {\n root: {\n // keep minimal styling here; consumers can override via theme\n },\n },\n} as const satisfies MuiComponentTheme<'MuiStep'>;\n\nexport const stepLabelTheme = {\n defaultProps: {},\n styleOverrides: {\n root: ({theme}) => ({\n \"& .MuiStepLabel-label.MuiStepLabel-alternativeLabel\": {\n marginTop: theme.spacing(1),\n },\n '& .MuiStepLabel-label': {\n \"&.Mui-completed\": {\n color: 'var(--mui-palette-success-dark)',\n },\n \"&.Mui-active\": {\n color: 'var(--mui-palette-blink-shiny)',\n },\n \"&.Mui-error\": {\n color: 'var(--mui-palette-error-dark)',\n },\n },\n }),\n iconContainer: {\n },\n },\n} as const satisfies MuiComponentTheme<'MuiStepLabel'>;\n\nexport const stepConnectorTheme = {\n defaultProps: {},\n styleOverrides: {\n root: () => ({\n \"&.MuiStepConnector-horizontal\": {\n height: '16px',\n },\n }),\n },\n} as const satisfies MuiComponentTheme<'MuiStepConnector'>;\n\nexport const stepIconTheme = {\n defaultProps: {},\n styleOverrides: {\n root: () => ({\n \"&.Mui-completed\": {\n color: 'var(--mui-palette-success-main)',\n },\n \"&.Mui-active\": {\n color: 'var(--mui-palette-focus-1)',\n },\n }),\n },\n} as const satisfies MuiComponentTheme<'MuiStepIcon'>;\n\nexport const stepButtonTheme = {\n defaultProps: {},\n styleOverrides: {\n root: () => ({\n // no default customizations yet\n }),\n },\n} as const satisfies MuiComponentTheme<'MuiStepButton'>;\n","import type { MuiComponentTheme } from '@/_utils/_types';\nimport { styled } from '@mui/material';\nimport { Box } from '@/ele/Box';\n\nexport const TableStyledWrapper = styled(Box)({\n '--table-bg': 'var(--mui-palette-background-paper)',\n '--table-divider-color': 'var(--mui-palette-divider)',\n '--table-pinned-shadow-left': `1px 0 0 var(--mui-palette-divider)`,\n '--table-pinned-shadow-right': `-1px 0 0 var(--mui-palette-divider)`,\n '--table-pinned-header-z-index': 4,\n '--table-pinned-cell-z-index': 2,\n '--table-header-font-weight': 'var(--mui-typography-fontWeightBold)',\n '--table-sort-label-active-color': 'var(--mui-palette-text-primary)',\n '--table-sort-label-icon-color': 'var(--mui-palette-error-light)',\n '--table-dragger-bar-hover-color': 'var(--mui-palette-focus-1)',\n '--table-drragger-bar-hover-width': '4px',\n '--table-empty-min-height': '200px',\n '--table-empty-icon-color': 'var(--mui-palette-text-disabled)',\n '--table-empty-text-color': 'var(--mui-palette-text-secondary)',\n '--table-empty-description-color': 'var(--mui-palette-text-disabled)',\n});\n\nexport const tableTheme = {\n styleOverrides: {\n root: {\n borderCollapse: 'separate',\n borderSpacing: 0,\n tableLayout: 'fixed',\n backgroundColor: 'var(--table-bg, var(--mui-palette-background-paper))',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiTable'>;\n\nexport const tableContainerTheme = {\n styleOverrides: {\n root: {\n width: '100%',\n overflowX: 'auto',\n containerType: 'inline-size',\n containerName: 'sdui-table',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiTableContainer'>;\n\nexport const tableHeadTheme = {\n styleOverrides: {\n root: {\n backgroundColor: 'var(--table-bg, var(--mui-palette-background-paper))',\n },\n },\n} as const satisfies MuiComponentTheme<'MuiTableHead'>;\n\nexport const tableSortLabelTheme = {\n styleOverrides: {\n root: {\n '&.Mui-active': {\n color: 'var(--table-sort-label-active-color)',\n \"& .MuiTableSortLabel-icon\": {\n color: 'var(--table-sort-label-icon-color)',\n },\n },\n \"& .MuiTableSortLabel-icon\": {\n color: 'var(--table-sort-label-icon-color)',\n },\n },\n },\n} as const satisfies MuiComponentTheme<'MuiTableSortLabel'>;\n\nexport const tableCellTheme = {\n defaultProps: {\n size: 'small',\n },\n styleOverrides: {\n root: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n verticalAlign: 'middle',\n borderBottomColor: 'var(--table-divider-color, var(--mui-palette-divider))',\n backgroundColor: 'transparent',\n },\n head: {\n fontWeight: 'var(--table-header-font-weight, 700)',\n backgroundColor: 'var(--table-bg, var(--mui-palette-background-paper))',\n '& [data-table-filter-trigger]': {\n transition: 'opacity 120ms ease',\n },\n '@media (hover: hover) and (pointer: fine)': {\n '& [data-table-filter-trigger]': {\n opacity: 0,\n },\n '&:hover [data-table-filter-trigger]': {\n opacity: 1,\n },\n '& [data-table-filter-trigger]:focus-visible': {\n opacity: 1,\n },\n '& [data-table-filter-trigger][data-active=\"true\"]': {\n opacity: 1,\n },\n },\n },\n },\n} as const satisfies MuiComponentTheme<'MuiTableCell'>;\n\nexport const tablePaginationTheme = {\n styleOverrides: {\n root: {\n borderTop: '1px solid var(--table-divider-color, var(--mui-palette-divider))',\n },\n actions: ({ theme }) => ({\n display: 'flex',\n gap: theme.spacing(1),\n marginRight: theme.spacing(0.5),\n }),\n },\n} as const satisfies MuiComponentTheme<'MuiTablePagination'>;\n\nexport const tableEmptyCellSx = {\n p: 0,\n width: '100%',\n borderBottom: 'none',\n whiteSpace: 'normal',\n overflow: 'visible',\n textAlign: 'center',\n verticalAlign: 'middle',\n} as const;\n\nexport const TablePlaceholderRoot = styled(Box)({\n position: 'sticky',\n left: 0,\n boxSizing: 'border-box',\n width: '100cqi',\n maxWidth: '100%',\n minHeight: 'var(--table-empty-min-height)',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n padding: '32px 24px',\n textAlign: 'center',\n whiteSpace: 'normal',\n});\n","\nimport { \n type ColorTheme, \n type ColorSystemOptions \n} from \"./_utils\"\n\nconst themeColor = {\n themeType: \"dark\",\n name: \"darkBlue\",\n\n colorScheme:{\n primary:{\n 1: \"rgba(2, 17, 33, 1)\",\n 2: \"rgba(20, 40, 65, 1)\",\n 3: \"rgba(40, 80, 110, 1)\",\n 4: \"rgba(65, 110, 140, 1)\",\n 5: \"rgba(90, 140, 170, 1)\",\n 6: \"rgba(115, 170, 200, 1)\",\n main: 5,\n },\n secondary:{\n 1: \"rgba(250, 250, 255, 1)\",\n 2: \"rgba(245, 245, 255, 1)\",\n 3: \"rgba(200, 235, 240, 1)\",\n 4: \"rgba(165, 220, 225, 1)\",\n 5: \"rgba(125, 200, 210, 1)\",\n 6: \"rgba(20, 215, 215, 1)\",\n main: 5,\n },\n\n error: {\n text: \"rgba(255, 0, 100, 1)\",\n background: \"rgba(35, 0, 10, 1)\",\n },\n warning: {\n text: \"rgba(230, 190, 125, 1)\",\n background: \"rgba(45, 25, 1, 1)\",\n },\n info: {\n text:\"rgba(100, 180, 255, 1)\",\n background: \"rgba(10, 30, 55, 1)\",\n },\n success: {\n text: \"rgba(100, 255, 150, 1)\",\n background: \"rgba(10, 50, 30, 1)\",\n },\n system: {\n text: \"rgba(45, 212, 191, 1)\",\n background: \"rgba(0, 40, 35, 1)\",\n },\n insight: {\n text: \"rgba(167, 139, 250, 1)\",\n background: \"rgba(30, 15, 55, 1)\",\n },\n\n focus: \"rgba(255, 47, 122, 0.42)\",\n disabled: \"rgba(91, 94, 97, 1)\",\n background: {\n default: \"rgb(32, 33, 36, 1)\",\n disabled: \"rgba(43, 43, 43, 0.3)\",\n },\n text: {\n primary: \"rgba(240, 240, 255, 1)\",\n secondary: \"rgba(180, 200, 220, 1)\",\n subscript: \"rgba(137, 137, 150, 1)\",\n href: \"rgba(255, 0, 153, 1)\",\n },\n },\n \n\n} as const satisfies ColorTheme\n\nexport const muiPalette = {\n palette: {\n mode: \"dark\",\n primary: {\n dark: themeColor.colorScheme.primary[1],\n main: themeColor.colorScheme.primary[themeColor.colorScheme.primary.main],\n light: themeColor.colorScheme.primary[6],\n },\n secondary: {\n dark: themeColor.colorScheme.secondary[6],\n main: themeColor.colorScheme.secondary[themeColor.colorScheme.secondary.main],\n light: themeColor.colorScheme.secondary[1],\n },\n error: {\n main: themeColor.colorScheme.error.text,\n },\n warning: {\n main: themeColor.colorScheme.warning.text,\n },\n info: {\n main: themeColor.colorScheme.info.text,\n },\n success: {\n main: themeColor.colorScheme.success.text,\n },\n system: {\n main: themeColor.colorScheme.system.text,\n light: \"rgba(80, 230, 210, 1)\",\n dark: \"rgba(20, 160, 145, 1)\",\n contrastText: \"rgba(0, 0, 0, 0.87)\",\n },\n insight: {\n main: themeColor.colorScheme.insight.text,\n light: \"rgba(190, 170, 255, 1)\",\n dark: \"rgba(130, 100, 220, 1)\",\n contrastText: \"rgba(0, 0, 0, 0.87)\",\n },\n background: {\n default: themeColor.colorScheme.background.default,\n // Elevated mid-grey above near-black canvas (Google #303134 hierarchy).\n paper: \"rgb(48, 49, 52, 1)\",\n },\n text: {\n primary: themeColor.colorScheme.text.primary,\n secondary: themeColor.colorScheme.text.secondary,\n disabled: themeColor.colorScheme.disabled,\n },\n action: {\n disabledBackground: themeColor.colorScheme.background.disabled,\n },\n\n \"secondary-transparent-1\": `color-mix(in lab, ${themeColor.colorScheme.primary[5]}, transparent 35%)`,\n\n \"focus-1\": themeColor.colorScheme.focus,\n \"focus-1-hover\": \"rgba(166, 4, 67, .2)\",\n \"focus-soft-1\": `color-mix(in lab, var(--mui-palette-secondary-main), transparent 88%)`,\n\n \"primary-emphasis\": `color-mix(in lab, ${themeColor.colorScheme.primary[6]}, ${themeColor.colorScheme.secondary[5]} 35%)`,\n \"primary-contrast\": themeColor.colorScheme.background.default,\n\n \"success-background\": themeColor.colorScheme.success.background,\n \"info-background\": themeColor.colorScheme.info.background,\n \"error-background\": themeColor.colorScheme.error.background,\n \"warning-background\": themeColor.colorScheme.warning.background,\n \"system-background\": themeColor.colorScheme.system.background,\n \"insight-background\": themeColor.colorScheme.insight.background,\n\n Alert: {\n // Mirror MUI dark Alert roles: Color = lightened text, FilledBg = dark, IconColor = main.\n systemColor: `color-mix(in srgb, ${themeColor.colorScheme.system.text}, #fff 55%)`,\n insightColor: `color-mix(in srgb, ${themeColor.colorScheme.insight.text}, #fff 55%)`,\n systemFilledBg: \"rgba(20, 160, 145, 1)\",\n insightFilledBg: \"rgba(130, 100, 220, 1)\",\n systemFilledColor: \"rgba(0, 0, 0, 0.87)\",\n insightFilledColor: \"rgba(0, 0, 0, 0.87)\",\n systemStandardBg: themeColor.colorScheme.system.background,\n insightStandardBg: themeColor.colorScheme.insight.background,\n systemIconColor: themeColor.colorScheme.system.text,\n insightIconColor: themeColor.colorScheme.insight.text,\n },\n \n \"border-1\": \"rgba(102, 102, 102, 0.5)\",\n \"border-hover-1\": \"rgba(45, 98, 145, 0.47)\",\n \"border-disabled\": \"rgba(201, 201, 201, 0.2)\",\n \"shadow-border-1\": `inset 0 0 0px 2px var(--mui-palette-border-1)`,\n \"shadow-outset-1\": `0px 1px 2px 0px var(--mui-palette-border-1),\n 1px 2px 4px 0px var(--mui-palette-border-1),\n 2px 4px 8px 0px var(--mui-palette-border-1),\n 2px 4px 16px 0px var(--mui-palette-border-1)`,\n\n \"background-hover-1\": \"color-mix(in lab, transparent , var(--mui-palette-secondary-dark) 10%)\",\n \"background-hover-2\": \"color-mix(in lab, var(--mui-palette-primary-dark), var(--mui-palette-secondary-dark) 50%)\",\n \"background-disabled\": themeColor.colorScheme.background.disabled,\n \"background-grey-1\": \"rgba(75, 75, 75, 0.72)\",\n \"container-bg-1\": \"color-mix(in lab, var(--mui-palette-background-default), var(--mui-palette-background-grey-1) 80%)\",\n \"container-bg-primary\": themeColor.colorScheme.primary[1],\n \"container-bg-secondary\": `rgba(0, 0, 0, .314)`,\n\n \"text-subscript\": `color-mix(in lab, ${themeColor.colorScheme.text.subscript}, var(--mui-palette-primary-light) 50%)`, \n \"text-href\": `${themeColor.colorScheme.text.href}`,\n // \"text-disabled\"\n \"text-hover\": themeColor.colorScheme.secondary[6],\n \"text-grey-1\": \"rgba(150, 150, 150, 1)\",\n\n \"blink-golden\": \"rgba(248, 161, 0, 1)\",\n \"blink-secondary\": \"color-mix(in lab, var(--mui-palette-secondary-main), #414141a6 50%)\",\n \"blink-shiny\": \"rgb(45, 210, 216)\",\n\n \"transparent-primary-light\": `color-mix(in lab, ${themeColor.colorScheme.primary[6]}, transparent 45%)`,\n \"transparent-secondary-light\": `color-mix(in lab, ${themeColor.colorScheme.secondary[6]}, transparent 45%)`,\n },\n} as const satisfies ColorSystemOptions","\nimport { \n type ColorTheme, \n type ColorSystemOptions \n} from \"./_utils\"\n\nexport const themeColor = {\n themeType: \"light\",\n name: \"lightBrown\",\n\n colorScheme:{\n primary:{\n 1: \"rgba(255, 255, 255, 1)\",\n 2: \"rgba(255, 255, 220, 1)\",\n 3: \"rgba(255, 245, 215, 1)\",\n 4: \"rgba(255, 241, 211,1)\",\n 5: \"rgba(180, 136, 74, 1)\",\n 6: \"rgba(168, 124, 66, 1)\",\n main: 5,\n },\n secondary:{\n 1: \"rgba(35, 10, 25, 1)\",\n 2: \"rgba(45, 20, 30, 1)\",\n 3: \"rgba(75, 20, 30, 1)\",\n 4: \"rgba(105, 45, 40, 1)\",\n 5: \"rgba(130, 60, 40, 1)\",\n 6: \"rgba(165, 105, 65, 1)\",\n main: 4,\n },\n\n error: {\n text: \"rgba(255, 45, 120, 1)\",\n background: \"rgba(255, 220, 230, 1)\",\n },\n warning: {\n text: \"rgba(240, 169, 56, 1)\",\n background: \"rgba(255, 241, 211, 1)\",\n },\n info: {\n text: \"rgba(100, 180, 255, 1)\",\n background: \"rgba(237, 252, 255, 1)\",\n },\n success: {\n text: \"rgba(49, 161, 85, 1)\",\n background: \"rgba(237, 255, 238, 1)\",\n },\n system: {\n text: \"rgba(13, 148, 136, 1)\",\n background: \"rgba(204, 251, 241, 1)\",\n },\n insight: {\n text: \"rgba(124, 58, 237, 1)\",\n background: \"rgba(237, 233, 254, 1)\",\n },\n\n focus: \"rgba(255, 47, 122, 0.31)\",\n disabled: \"rgba(196, 191, 187, 1)\",\n background: {\n default: \"rgba(255, 255, 255, 1)\",\n disabled: \"rgba(150, 150, 150, 0.12)\",\n },\n text: {\n primary: \"rgba(35, 10, 25, 1)\",\n secondary: \"rgba(194, 178, 167, 1)\",\n subscript: \"rgba(92, 92, 92, 1)\",\n href: \"rgba(255, 0, 153, 1)\",\n },\n },\n\n} as const satisfies ColorTheme\n\nexport const muiPalette = {\n palette: {\n mode: \"light\",\n primary: {\n dark: themeColor.colorScheme.primary[6],\n main: themeColor.colorScheme.primary[themeColor.colorScheme.primary.main],\n light: themeColor.colorScheme.primary[1],\n },\n secondary: {\n dark: themeColor.colorScheme.secondary[3],\n main: themeColor.colorScheme.secondary[themeColor.colorScheme.secondary.main],\n light: themeColor.colorScheme.secondary[6],\n },\n error: {\n main: themeColor.colorScheme.error.text,\n },\n warning: {\n main: themeColor.colorScheme.warning.text,\n },\n info: {\n main: themeColor.colorScheme.info.text,\n },\n success: {\n main: themeColor.colorScheme.success.text,\n },\n system: {\n main: themeColor.colorScheme.system.text,\n light: \"rgba(45, 180, 168, 1)\",\n dark: \"rgba(10, 120, 110, 1)\",\n contrastText: \"rgba(255, 255, 255, 1)\",\n },\n insight: {\n main: themeColor.colorScheme.insight.text,\n light: \"rgba(148, 90, 245, 1)\",\n dark: \"rgba(100, 40, 200, 1)\",\n contrastText: \"rgba(255, 255, 255, 1)\",\n },\n background: {\n default: themeColor.colorScheme.background.default,\n },\n text: {\n primary: themeColor.colorScheme.text.primary,\n secondary: themeColor.colorScheme.text.secondary,\n disabled: themeColor.colorScheme.disabled,\n },\n action: {\n disabledBackground: themeColor.colorScheme.background.disabled,\n },\n\n \"secondary-transparent-1\": `color-mix(in lab, ${themeColor.colorScheme.secondary[6]}, transparent 65%)`,\n\n \"focus-1\": themeColor.colorScheme.focus,\n \"focus-1-hover\": \"rgba(255, 175, 204, .38)\",\n \"focus-soft-1\": 'color-mix(in lab, var(--mui-palette-secondary-dark), transparent 90%)',\n\n \"primary-emphasis\": `color-mix(in lab, ${themeColor.colorScheme.secondary[4]}, ${themeColor.colorScheme.primary[6]} 28%)`,\n \"primary-contrast\": themeColor.colorScheme.primary[1],\n\n \"success-background\": themeColor.colorScheme.success.background,\n \"info-background\": themeColor.colorScheme.info.background,\n \"error-background\": themeColor.colorScheme.error.background,\n \"warning-background\": themeColor.colorScheme.warning.background,\n \"system-background\": themeColor.colorScheme.system.background,\n \"insight-background\": themeColor.colorScheme.insight.background,\n\n Alert: {\n // Mirror MUI Alert token roles: Color (standard text), FilledBg, IconColor, StandardBg.\n systemColor: `color-mix(in srgb, ${themeColor.colorScheme.system.text}, #000 40%)`,\n insightColor: `color-mix(in srgb, ${themeColor.colorScheme.insight.text}, #000 40%)`,\n systemFilledBg: themeColor.colorScheme.system.text,\n insightFilledBg: themeColor.colorScheme.insight.text,\n systemFilledColor: \"rgba(255, 255, 255, 1)\",\n insightFilledColor: \"rgba(255, 255, 255, 1)\",\n systemStandardBg: themeColor.colorScheme.system.background,\n insightStandardBg: themeColor.colorScheme.insight.background,\n systemIconColor: themeColor.colorScheme.system.text,\n insightIconColor: themeColor.colorScheme.insight.text,\n },\n \n \"border-1\": \"rgba(201, 201, 201, 0.5)\",\n \"border-hover-1\": \"rgba(46, 18, 30, 0.47)\",\n \"border-disabled\": \"rgba(138, 138, 138, 0.19)\",\n \"shadow-border-1\": `inset 0 0 0px 2px var(--mui-palette-border-1)`,\n \"shadow-outset-1\": `0px 1px 2px 0px var(--mui-palette-border-1),\n 1px 2px 4px 0px var(--mui-palette-border-1),\n 2px 4px 8px 0px var(--mui-palette-border-1),\n 2px 4px 16px 0px var(--mui-palette-border-1)`,\n\n \"background-hover-1\": \"color-mix(in lab, transparent , var(--mui-palette-secondary-dark) 10%)\",\n \"background-hover-2\": \"color-mix(in lab, var(--mui-palette-primary-light) , var(--mui-palette-secondary-dark) 10%)\",\n \"background-disabled\": themeColor.colorScheme.background.disabled,\n \"background-grey-1\": \"rgba(55, 55, 55, 0.20)\",\n \"container-bg-1\": \"color-mix(in lab, var(--mui-palette-background-default), transparent 20%)\",\n // legacy helpers for chat container backgrounds\n \"container-bg-primary\": themeColor.colorScheme.primary[4],\n \"container-bg-secondary\": 'rgba(255, 249, 241, .525)',\n\n \"text-subscript\": `color-mix(in lab, ${themeColor.colorScheme.text.subscript}, var(--mui-palette-primary-main) 50%)`, \n \"text-href\": `${themeColor.colorScheme.text.href}`, // \"text-disabled\"\n \"text-hover\": \"rgba(36, 9, 24, 1)\",\n \"text-grey-1\": \"color-mix(in lab, var(--mui-palette-secondary-dark), rgba(120, 120, 120, 1) 80%)\",\n\n \"blink-golden\": \"rgba(248, 161, 0, 1)\",\n \"blink-secondary\": \"color-mix(in lab, var(--mui-palette-secondary-main), #e4e4e4a6 50%)\",\n \"blink-shiny\": \"rgb(250, 60, 177)\",\n\n \"transparent-primary-light\": `color-mix(in lab, ${themeColor.colorScheme.primary[6]}, transparent 45%)`,\n \"transparent-secondary-light\": `color-mix(in lab, ${themeColor.colorScheme.secondary[6]}, transparent 45%)`,\n },\n} as const satisfies ColorSystemOptions","import React from 'react';\nimport { useColorScheme } from '@mui/material/styles';\n\nimport { IconButton } from '@/ele/Button'\nimport { Skeleton } from '@/ele/Skeleton'\nimport { Tooltip } from '@/ele/Tooltip'\nimport { MoonIcon, SunIcon } from '@/icons/MuiIcon'\n\nexport type ToggleThemeButtonRenderMode = 'auto' | 'client' | 'server';\n\nexport interface ToggleThemeButtonProps {\n forceRenderMode?: Exclude<ToggleThemeButtonRenderMode, 'auto'>;\n}\n\nfunction resolveRenderMode(forceRenderMode?: ToggleThemeButtonProps['forceRenderMode']): ToggleThemeButtonRenderMode {\n if (forceRenderMode) {\n return forceRenderMode;\n }\n\n return typeof window === 'undefined' ? 'server' : 'client';\n}\n\nfunction getCurrentMode(mode: ReturnType<typeof useColorScheme>['mode']) {\n if (mode !== 'system' && mode !== undefined) {\n return mode;\n }\n\n if (typeof window === 'undefined') {\n return 'light';\n }\n\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n}\n\nfunction applyColorScheme(nextMode: 'light' | 'dark') {\n if (typeof document === 'undefined') {\n return;\n }\n document.documentElement.setAttribute('color-scheme', nextMode);\n}\n\nfunction commitMode(setMode: (mode: 'light' | 'dark') => void, nextMode: 'light' | 'dark') {\n const commit = () => setMode(nextMode);\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(() => {\n requestAnimationFrame(commit);\n });\n return;\n }\n setTimeout(commit, 0);\n}\n\nexport default function ToggleButton({ forceRenderMode }: ToggleThemeButtonProps) {\n const { mode, setMode } = useColorScheme();\n const renderMode = resolveRenderMode(forceRenderMode);\n const resolvedMode = getCurrentMode(mode);\n const [displayedMode, setDisplayedMode] = React.useState(resolvedMode);\n\n React.useEffect(() => {\n setDisplayedMode(resolvedMode);\n }, [resolvedMode]);\n\n if (renderMode === 'server') {\n return <Skeleton variant=\"rounded\" width={34} height={34} />;\n }\n\n const nextMode = displayedMode === 'dark' ? 'light' : 'dark';\n const label = `Switch to ${nextMode} mode`;\n\n function toggle() {\n setDisplayedMode(nextMode);\n applyColorScheme(nextMode);\n commitMode(setMode, nextMode);\n }\n\n return (\n <Tooltip title={label}>\n <IconButton\n aria-label={label}\n onClick={toggle}\n color=\"primary\"\n size=\"medium\"\n sx={{\n '--button-color': 'var(--mui-palette-primary-emphasis)',\n '--button-hover-border-color': 'var(--mui-palette-primary-emphasis)',\n '&:active': { scale: '1' },\n '&:active svg': { scale: '1' },\n }}\n >\n {displayedMode === 'dark' ? <SunIcon /> : <MoonIcon />}\n </IconButton>\n </Tooltip>\n );\n}\n","export const appScrollSurfaceAttribute = 'data-scroll-surface';\n"],"mappings":"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ACA,IAAAC;AAAA;AAAA;;;ACFA,IAAAC,mBAAA;AAAA;AAAA;AAAA,IAAAC;AAAA;AAAA;;;ACAA,IACA,sBACA,4BACA,oBACA,qBACA,kBACA,kBACA,mBACA,kBACA,wBACA,sBACA,uBACA,mBACA,eACA,gBACA,qBACA,6BACA,4BACA,uBACA,qBACA,0BACA,4BACA,6BACA,2BACA,eACA,uBACA,2BACA,YACA,mBACA,iBACA,aACA,kBACA,wBACA,eACA,mBACA,oBACA,gBACA,4BACA,gBACA,yBACA,gBACA,kBACA,kBACA,mBACAC,8BACA,4BACA,iBACA,cACA,gBACA,mBACA,yBACA,sBAGA,gCACA,YACA,cACA,mBACA,kBACA,oBACA,aACA,iBACA,kBACA,oBACA,qBACA,cACA,yBACA,6BACA,2BACA,sBACA,oBACA,cACA,gBACA,yBACA,aACA,kBACA,mBACA,0BACA,qBACA,aACA,mBACA,aACA,kBACA,iBACA,gBACA,iBACA,qBACA,0BACA,wBACA,yBACA,2BACA,gBACA,oBACA,iCACA,gCACA,wCACA,kBACA,mBACA,gBACA,cACA,kBACA,aACA,kBACA,sBACA,eACA,aACA,aACA,oBACA,eACA,oBACAC,eACA,0BACA,2BACA,sBACA,qBACA,2BACA,0BACA,sBACA,kBACA,qBACA,6BAGA,mBACA,eACA,cACA,kBAGA,4BACA,oBACA,uBACA,qBACAC,gBACA,sBACA,+BACA,cACAC,uBAEA,iBACA,oBACA,8BACA,2BACAC,6BACA,yBACA,eACA,aACA,gBACA,qBACA,wBACA,qBACA,2BACA,6BACA;AAzJA;AAAA;AAAA;AACA,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,+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","names":["MuiButton","init_Button","init_src","init_Tooltip","init_src","import_jsx_runtime","init_Tooltip","MuiIconButton","init_theme","theme","init_IconButton","init_theme","init_themes","theme","init_themes","init_src","init_Chip","init_src","init_src","init_Button","init_IconButton","init_Button","init_src","import_Typography","import_jsx_runtime","init_theme","init_src","init_theme","init_Typography","init_src","import_PhotoSizeSelectLarge","import_Close","import_Person","import_DeleteForever","import_AccountTreeOutlined","init_themes","init_themes","MuiBadge","import_jsx_runtime","init_theme","init_Badge","init_theme","init_src","init_Badge","init_Badge","init_src","init_theme","init_themes","init_themes","init_src","init_Paper","init_src","init_theme","init_theme","init_theme","init_theme","init_themes","init_src","init_themes","init_src","init_theme","init_theme","init_src","init_Card","init_src","init_theme","init_src","init_theme","init_src","init_theme","init_theme","import_jsx_runtime","init_CheckboxGroup","init_src","init_CheckboxGroup","init_Checkbox","init_src","init_theme","init_theme","init_src","init_List","init_src","import_jsx_runtime","init_Badge","init_StatusAvatar","init_src","init_StatusAvatar","init_Avatar","init_src","import_styles","init_theme","init_theme","init_theme","init_theme","init_theme","init_src","init_Autocomplete","init_src","init_src","init_src","import_react","import_InputAdornment","import_jsx_runtime","dayjs","customParseFormat","import_react","import_dayjs","import_customParseFormat","import_LocalizationProvider","import_AdapterDayjs","import_DateCalendar","import_DialogActions","import_InputAdornment","import_jsx_runtime","dayjs","customParseFormat","import_react","import_dayjs","import_customParseFormat","import_LocalizationProvider","import_AdapterDayjs","import_MultiSectionDigitalClock","import_DialogActions","import_InputAdornment","import_jsx_runtime","dayjs","customParseFormat","import_react","import_dayjs","import_customParseFormat","import_LocalizationProvider","import_AdapterDayjs","import_DateCalendar","import_DialogActions","import_InputAdornment","import_jsx_runtime","dayjs","customParseFormat","React","RangeDay","current","init_theme","init_src","init_theme","init_src","import_jsx_runtime","import_jsx_runtime","init_theme","init_src","init_theme","init_src","init_theme","init_theme","init_src","init_Slider","init_src","import_react","import_styles","import_material","import_react","import_notistack","import_react","import_notistack","init_Button","import_react","React","import_react","init_Typography","init_Button","theme","import_jsx_runtime","SoftAlertContent","import_jsx_runtime","Alert","import_react","import_notistack","init_Button","init_Typography","import_jsx_runtime","CollapsableAlert","import_jsx_runtime","React","AlertProvider","import_react","init_Typography","init_Button","theme","import_jsx_runtime","import_react","import_jsx_runtime","import_styles","init_Avatar","init_Badge","init_Button","init_Card","init_Checkbox","init_Chip","init_Autocomplete","init_List","init_theme","init_Paper","init_Slider","theme","theme","init_Tooltip","init_Typography","theme","theme","themeColor","muiPalette","muiPalette","import_jsx_runtime","createCache","React","ThemeTree","MuiThemeProvider","import_react","import_styles","init_Button","init_Tooltip","import_jsx_runtime","React"]}
|