@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/autocomplete.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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/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/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/Chip.tsx","../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/theme.ts","../src/components/elemental/Button/src/TagButton/TagButton.tsx","../src/components/elemental/Button/src/TagButton/index.ts","../src/components/elemental/Button/src/index.ts","../src/components/elemental/Button/index.ts","../src/components/elemental/Overlay/src/index.ts","../src/components/elemental/Overlay/index.ts","../src/components/Icons/MuiIcon/index.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/theme.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/OptionRenderer.tsx","../src/components/elemental/Autocomplete/src/GitHubPicker/states/states.tsx","../src/components/elemental/Autocomplete/src/GitHubPicker/states/index.ts","../src/components/elemental/Paper/src/Paper/Paper.tsx","../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/Autocomplete/src/GitHubPicker/popperTheme.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/_utils/_const.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/_utils/OptionClass.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/_utils/index.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/PopperMenu.tsx","../src/components/elemental/Autocomplete/index.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/GitHubPicker.tsx","../src/components/elemental/Badge/src/Badge/Badge.tsx","../src/components/elemental/Autocomplete/src/GitHubPicker/index.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'","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'","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 MuiChip, { type ChipProps } from '@mui/material/Chip'\n\n/**\n * A wrapper for Mui Chip\n */\nexport default function Chip({ color = 'default', ...props }: ChipProps) {\n return <MuiChip {...props} color={color} />\n}\n","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 const tagButtonVars = {\n\t'--tag-color': 'var(--mui-palette-text-grey-1)',\n\t'--tag-bg': 'var(--mui-palette-background-grey-1)',\n\t'--tag-bg-hover': 'var(--mui-palette-focus-soft-1)',\n} as const\n","'use client'\nimport { Chip } from '@/ele/Chip'\nimport { styled } from '@mui/material/styles'\nimport { tagButtonVars } from './theme'\n\n/**\n * A styled Mui Chip component\n * \n * [Doc](https://mui.com/material-ui/react-chip/)\n */\nconst TagButton = styled(Chip,{\n \n})(() => ({\n ...tagButtonVars,\n\n '&.MuiChip-root':{\n maxWidth: 'fit-content',\n textTransform: 'lowercase',\n color:'var(--tag-color)',\n fontStyle: 'italic',\n padding: '2px 4px',\n \n border:'none',\n borderRadius: 'var(--mui-shape-borderRadius)', // use theme shape token\n fontSize: '12px',\n lineHeight: '16px',\n height:'auto',\n width:'auto',\n boxShadow:'none',\n gap:'2px',\n \n background:'var(--tag-bg)',\n transition: 'none',\n \n borderWidth: '0px',\n '&.MuiChip-clickable:hover': {\n background: 'var(--tag-bg-hover)',\n boxShadow: 'none',\n },\n '& .MuiChip-icon': {\n color: 'var(--tag-color)',\n fontSize: '1rem',\n margin:'0',\n padding:'0',\n },\n '& .MuiChip-label': {\n padding: '0 1px',\n\n margin:'0',\n marginRight:'4px',\n },\n '& .MuiChip-deleteIcon': {\n fontSize: '1rem',\n borderRadius: '50%',\n color: 'var(--tag-color)',\n margin:'0',\n },\n\n '& .MuiSvgIcon-root':{\n fontSize: '1em',\n }\n },\n}))\nexport default TagButton","export {default as TagButton} from './TagButton'","export * from './Button'\nexport * from './IconButton'\nexport * from './TagButton'","export * from './src';","export { default as ClickAwayListener } from '@mui/material/ClickAwayListener';\nexport { default as Popper } from '@mui/material/Popper';\n","export * from './src';\n","// display\nexport {default as ArrowIcon} from '@mui/icons-material/ArrowRightAlt'\nexport {default as FileIcon} from '@mui/icons-material/DescriptionOutlined'\nexport {default as DescriptionIcon} from '@mui/icons-material/Description'\nexport {default as PictureAsPdfIcon} from '@mui/icons-material/PictureAsPdf'\nexport {default as AudioFileIcon} from '@mui/icons-material/AudioFile'\nexport {default as VideoFileIcon} from '@mui/icons-material/VideoFile'\nexport {default as TableChartIcon} from '@mui/icons-material/TableChart'\nexport {default as FolderZipIcon} from '@mui/icons-material/FolderZip'\nexport {default as InsertDriveFileIcon} from '@mui/icons-material/InsertDriveFile'\nexport {default as ImageIcon} from '@mui/icons-material/ImageOutlined'\nexport {default as LayersIcon} from '@mui/icons-material/LayersOutlined'\nexport {default as TextIcon} from '@mui/icons-material/TextFormat'\nexport {default as RemoveIcon} from '@mui/icons-material/Remove'\nexport {default as AddFileIcon} from '@mui/icons-material/PostAdd'\nexport {default as ErrorIcon} from '@mui/icons-material/ErrorOutline'\nexport {default as QuestionIcon} from '@mui/icons-material/QuestionMarkOutlined'\nexport {default as RoomIcon} from '@mui/icons-material/MeetingRoomOutlined'\nexport {default as BlacklistIcon} from '@mui/icons-material/PlaylistRemove'\nexport {default as WhitelistIcon} from '@mui/icons-material/ChecklistRtl'\nexport {default as NoImageIcon} from '@mui/icons-material/HideImageOutlined'\nexport {default as EyeIcon} from '@mui/icons-material/RemoveRedEyeTwoTone'\nexport {default as CropSizeIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as AdminIcon} from '@mui/icons-material/LockPersonOutlined'\nexport {default as UserIcon} from '@mui/icons-material/Person'\nexport {default as EmoticonIcon} from '@mui/icons-material/InsertEmoticon'\nexport {default as DisabledSelectionIcon} from '@mui/icons-material/RemoveDoneOutlined'\nexport {default as TagIcon} from '@mui/icons-material/Tag'\nexport {default as AudioIcon} from '@mui/icons-material/Audiotrack'\nexport {default as VideoIcon} from '@mui/icons-material/Videocam'\nexport {default as CodeIcon} from '@mui/icons-material/Code'\nexport {default as ChartIcon} from '@mui/icons-material/Equalizer'\nexport {default as TableIcon} from '@mui/icons-material/PivotTableChart'\nexport {default as SearchIcon} from '@mui/icons-material/Search'\nexport {default as DataObjectIcon} from '@mui/icons-material/DataObject'\nexport {default as A2ZIcon} from '@mui/icons-material/SortByAlpha'\nexport {default as ThumbUpIcon} from '@mui/icons-material/ThumbUp'\nexport {default as MoneyIcon} from '@mui/icons-material/AttachMoneyOutlined'\nexport {default as ServerIcon} from '@mui/icons-material/Storage'\nexport {default as CerticateIcon} from '@mui/icons-material/WorkspacePremium'\nexport {default as NumberIcon} from '@mui/icons-material/Numbers'\nexport {default as SumIcon} from '@mui/icons-material/Functions'\nexport {default as LightBulbIcon} from '@mui/icons-material/Lightbulb'\nexport {default as RotateIcon} from '@mui/icons-material/CropRotate'\nexport {default as ImageSzieScaleIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as CollectionIcon} from '@mui/icons-material/CollectionsBookmark'\nexport {default as HistoryIcon} from '@mui/icons-material/Schedule'\nexport {default as StyleIcon} from '@mui/icons-material/Style'\nexport {default as ARHorizontalIcon} from '@mui/icons-material/Crop169'\nexport {default as ARSquareIcon} from '@mui/icons-material/CropSquare'\nexport {default as VoiceIcon} from '@mui/icons-material/GraphicEqRounded'\nexport {default as MemoryIcon} from '@mui/icons-material/MemoryRounded'\n\n// button\nexport {default as AddCircleIcon} from '@mui/icons-material/AddCircleOutlineRounded'\nexport {default as AddIcon} from '@mui/icons-material/Add'\nexport {default as CloseIcon} from '@mui/icons-material/Close'\nexport {default as ExpandMoreIcon} from '@mui/icons-material/ExpandMore'\nexport {default as AutorenewIcon} from '@mui/icons-material/Autorenew'\nexport {default as CheckCircleIcon} from '@mui/icons-material/CheckCircle'\nexport {default as MenuIcon} from '@mui/icons-material/Menu'\nexport {default as MoreIcon} from '@mui/icons-material/MoreVert'\nexport {default as MoreHorizIcon} from '@mui/icons-material/MoreHoriz'\nexport {default as CopyIcon} from '@mui/icons-material/ContentCopy'\nexport {default as PasteIcon} from '@mui/icons-material/ContentPaste'\nexport {default as CloudIcon} from '@mui/icons-material/Cloud'\nexport {default as DownloadIcon} from '@mui/icons-material/DownloadOutlined'\nexport {default as DownloadDoneIcon} from '@mui/icons-material/DownloadDoneOutlined'\nexport {default as StartIcon} from '@mui/icons-material/StarBorderOutlined'\nexport {default as DeleteIcon} from '@mui/icons-material/DeleteForever'\nexport {default as LayerClearIcon } from '@mui/icons-material/LayersClear'\nexport {default as CheckIcon } from '@mui/icons-material/Check'\nexport {default as CheckAllIcon } from '@mui/icons-material/DoneAll'\nexport {default as PowerIcon } from '@mui/icons-material/PowerSettingsNew'\nexport {default as SendIcon } from '@mui/icons-material/Send'\nexport {default as ZoomInIcon } from '@mui/icons-material/ZoomInMap'\nexport {default as ZoomOutIcon } from '@mui/icons-material/ZoomOutMap'\nexport {default as ToolIcon } from '@mui/icons-material/HomeRepairService'\nexport {default as ConstructionIcon } from '@mui/icons-material/Construction'\nexport {default as HelpIcon } from '@mui/icons-material/Help'\nexport {default as ReportIcon } from '@mui/icons-material/EmojiFlags'\nexport {default as EditIcon } from '@mui/icons-material/Edit'\nexport {default as ForkIcon } from '@mui/icons-material/ForkRight'\nexport {default as SettingIcon } from '@mui/icons-material/Settings'\nexport {default as RestoreIcon } from '@mui/icons-material/Restore'\nexport {default as EditListIcon } from '@mui/icons-material/EditNote'\nexport {default as HomeIcon } from '@mui/icons-material/HomeOutlined'\nexport {default as EnterRoomIcon } from '@mui/icons-material/ExitToAppOutlined'\nexport {default as SunIcon} from '@mui/icons-material/WbSunnyOutlined'\nexport {default as MoonIcon} from '@mui/icons-material/DarkModeOutlined'\nexport {default as AttachFileIcon} from '@mui/icons-material/AttachFileOutlined'\nexport {default as NoteAddIcon} from '@mui/icons-material/NoteAdd'\nexport {default as CloudUploadIcon} from '@mui/icons-material/CloudUpload'\nexport {default as DoubleRightArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRight'\nexport {default as DoubleLeftArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowLeft'\nexport {default as DoubleArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRightRounded'\nexport {default as FitScreenIcon} from '@mui/icons-material/FitScreen'\nexport {default as FullscreenIcon} from '@mui/icons-material/Fullscreen'\nexport {default as TestIcon} from '@mui/icons-material/Biotech'\nexport {default as ShareIcon} from '@mui/icons-material/Share'\nexport {default as FilterIcon} from '@mui/icons-material/FilterAlt'\nexport {default as SyncIcon} from '@mui/icons-material/Sync'\nexport {default as PlayIcon} from '@mui/icons-material/PlayArrow'\nexport {default as PauseIcon} from '@mui/icons-material/PauseOutlined'\nexport {default as RandomIcon} from '@mui/icons-material/Casino'\nexport {default as CoinIcon} from '@mui/icons-material/Paid'\nexport {default as SaveChangesIcon} from '@mui/icons-material/Save'\nexport {default as StopIcon} from '@mui/icons-material/StopRounded'\nexport {default as ReplayIcon} from '@mui/icons-material/Replay'\nexport {default as TreeIcon} from '@mui/icons-material/AccountTree'\nexport {default as ClearIcon} from '@mui/icons-material/Close'\nexport {default as KeyboardArrowDownIcon} from '@mui/icons-material/KeyboardArrowDown'\nexport {default as KeyboardArrowRightIcon} from '@mui/icons-material/KeyboardArrowRight'\nexport {default as SearchRoundedIcon} from '@mui/icons-material/SearchRounded'\nexport {default as CloseRoundedIcon} from '@mui/icons-material/CloseRounded'\nexport {default as SortByAlphaRoundedIcon} from '@mui/icons-material/SortByAlphaRounded'\nexport {default as FilterAltOutlinedIcon} from '@mui/icons-material/FilterAltOutlined'\nexport {default as InboxOutlinedIcon} from '@mui/icons-material/InboxOutlined'\nexport {default as SearchOffIcon} from '@mui/icons-material/SearchOff'\nexport {default as ClearRoundedIcon} from '@mui/icons-material/ClearRounded'\nexport {default as ArrowDropDownRoundedIcon} from '@mui/icons-material/ArrowDropDownRounded'\n\n// login\nexport {default as AccountIcon} from '@mui/icons-material/AccountBox'\nexport {default as LogoutIcon} from '@mui/icons-material/Logout'\nexport {default as LoginIcon} from '@mui/icons-material/Login'\nexport {default as DashboardIcon} from '@mui/icons-material/Dashboard'\n\n//logo\nexport {default as WorkFlowIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as HelpOutlineIcon} from '@mui/icons-material/HelpOutline'\nexport {default as NavigateBeforeIcon} from '@mui/icons-material/NavigateBefore'\nexport {default as NavigateNextIcon} from '@mui/icons-material/NavigateNext'\nexport {default as PersonIcon} from '@mui/icons-material/Person'\nexport {default as CalendarTodayIcon} from '@mui/icons-material/CalendarToday'\nexport {default as ChatIcon} from '@mui/icons-material/QuestionAnswerOutlined'\nexport {default as TodayIcon} from '@mui/icons-material/Today'\nexport {default as DeleteForeverIcon} from '@mui/icons-material/DeleteForever'\n\nexport {default as AdsClickIcon} from '@mui/icons-material/AdsClick'\nexport {default as FingerprintIcon} from '@mui/icons-material/Fingerprint'\nexport {default as SportsEsportsOutlinedIcon} from '@mui/icons-material/SportsEsportsOutlined'\nexport {default as HelpOutlineRoundedIcon} from '@mui/icons-material/HelpOutlineRounded'\nexport {default as AccountTreeOutlinedIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as SmartToyOutlinedIcon} from '@mui/icons-material/SmartToyOutlined'\nexport {default as AcUnitIcon} from '@mui/icons-material/AcUnit'\nexport {default as LoopIcon} from '@mui/icons-material/Loop'\nexport {default as PendingIcon} from '@mui/icons-material/Pending'\nexport {default as AllInclusiveIcon} from '@mui/icons-material/AllInclusive'\nexport {default as WarningOutlinedIcon} from '@mui/icons-material/WarningOutlined'\nexport {default as InfoOutlinedIcon} from '@mui/icons-material/InfoOutlined'\nexport {default as AutoAwesomeRoundedIcon} from '@mui/icons-material/AutoAwesomeRounded'\nexport {default as ErrorOutlineOutlinedIcon} from '@mui/icons-material/ErrorOutlineOutlined'\nexport {default as DownloadFilledIcon} from '@mui/icons-material/Download'","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'--picker-surface': 'color-mix(in lab, var(--mui-palette-common-black), transparent 68%)',\n\t'--picker-paper-bg': 'color-mix(in lab, var(--mui-palette-background-paper), transparent 30%)',\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\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: '12px 14px 14px',\n\tborderRadius: 12,\n\tborder: '1px solid var(--picker-field-border)',\n\tbackgroundColor: 'var(--picker-surface)',\n\tbackgroundImage: 'var(--picker-sheen)',\n\tbackdropFilter: 'saturate(1.2) blur(12px)',\n\tWebkitBackdropFilter: 'saturate(1.2) blur(12px)',\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',\n\t'& *': {\n\t\tcursor: 'inherit',\n\t},\n\t'--picker-field-border': 'var(--picker-border)',\n\t'--picker-field-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%), 0 0 20px color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 93%), 0 9px 22px color-mix(in srgb, var(--mui-palette-common-black), transparent 77%)',\n\t'--picker-field-cursor': 'pointer',\n\t'&:hover': {\n\t\t'--picker-field-border': 'color-mix(in lab, var(--mui-palette-common-white), transparent 92%)',\n\t},\n\t'&:focus-visible': {\n\t\t'--picker-field-border': 'color-mix(in lab, var(--mui-palette-common-white), transparent 92%)',\n\t\t'--picker-field-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%), 0 0 20px color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 93%), 0 9px 22px color-mix(in srgb, var(--mui-palette-common-black), transparent 77%)',\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-common-white), transparent 92%)',\n\t\t\t\t'--picker-field-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%), 0 0 20px color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 93%), 0 9px 22px color-mix(in srgb, var(--mui-palette-common-black), transparent 77%)',\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'--picker-field-border': 'var(--picker-error)',\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","'use client'\nimport { Box } from '@/ele/Box'\nimport { CheckIcon, CloseIcon } from '@/icons/MuiIcon'\nimport { IconButton } from '@/ele/Button'\nimport { Typography } from '@/ele/Typography'\nimport { TagButton } from '@/ele/Button'\n\nimport { OptionClass, type OptionId } from './_utils'\nimport { OptionBox } from './theme'\n\nconst ICON_STYLE = {\n\theight: 16,\n\twidth: 16,\n\topacity: 0.85,\n}\n\nexport default function OptionRenderer({\n\toption,\n\tisIconClickable = false,\n\tselected,\n\tdisabled,\n\tdisableBR = false,\n\tremoveItemHandler,\n\tslotProps = {},\n}: {\n\tselected: boolean;\n\tisIconClickable?: boolean;\n\tdisabled?: boolean;\n\tdisableBR?: boolean;\n\toption: OptionClass | null;\n\tremoveItemHandler?: (id: OptionId) => void;\n\tslotProps?: {\n\t\tDM?: Partial<React.ComponentProps<typeof DM>>;\n\t};\n}) {\n\tif (!option) return null;\n\n\treturn (\n\t\t<Wrapper selected={selected} isIconClickable={isIconClickable} disabled={disabled} disableBR={disableBR}>\n\t\t\t<Box\n\t\t\t\tsx={{\n\t\t\t\t\t'&.MuiBox-root': {\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\talignItems: 'var(--ai)',\n\t\t\t\t\t\tgap: isIconClickable ? '6px' : '10px',\n\t\t\t\t\t\tcursor: 'var(--curosr)',\n\t\t\t\t\t\tpadding: isIconClickable ? '3px 6px 3px 8px' : '8px 10px',\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<DM\n\t\t\t\t\toption={option}\n\t\t\t\t\tonDelete={removeItemHandler ? () => removeItemHandler(option.id) : undefined}\n\t\t\t\t\tisIconClickable={isIconClickable}\n\t\t\t\t\tselected={selected}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t{...slotProps.DM}\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t</Wrapper>\n\t)\n}\n\nfunction Wrapper({\n\tchildren,\n\tselected = false,\n\tisIconClickable = false,\n\tdisabled = false,\n\tdisableBR = false,\n}: {\n\tchildren: React.ReactNode;\n\tselected?: boolean;\n\tisIconClickable?: boolean;\n\tdisabled?: boolean;\n\tdisableBR?: boolean;\n}) {\n\treturn (\n\t\t<OptionBox selected={selected} isIconClickable={isIconClickable} disabled={disabled} disableBR={disableBR}>\n\t\t\t{children}\n\t\t</OptionBox>\n\t)\n}\n\nfunction ItemIcon({ option, compact }: { option: OptionClass; compact?: boolean }) {\n\tif (!option.icon) return null\n\n\treturn (\n\t\t<Box\n\t\t\tcomponent=\"span\"\n\t\t\tsx={{\n\t\t\t\tflexShrink: 0,\n\t\t\t\twidth: compact ? 18 : 28,\n\t\t\t\theight: compact ? 18 : 28,\n\t\t\t\tborderRadius: compact ? '50%' : '8px',\n\t\t\t\tdisplay: 'flex',\n\t\t\t\talignItems: 'center',\n\t\t\t\tjustifyContent: 'center',\n\t\t\t\talignSelf: 'center',\n\t\t\t\tbackgroundColor: compact ? 'transparent' : 'var(--picker-icon-well)',\n\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t'& svg': ICON_STYLE,\n\t\t\t}}\n\t\t>\n\t\t\t{option.icon}\n\t\t</Box>\n\t)\n}\n\nfunction ItemLabel({\n\toption,\n\tisShowDescription = false,\n\tcompact = false,\n}: {\n\toption: OptionClass;\n\tisShowDescription: boolean;\n\tcompact?: boolean;\n}) {\n\tconst isUseTag = option.tags.length > 0\n\tconst description = option.description?.trim()\n\tconst showSecondary = isShowDescription && (isUseTag || Boolean(description))\n\n\treturn (\n\t\t<Box\n\t\t\tsx={{\n\t\t\t\tflexGrow: 1,\n\t\t\t\tminWidth: 0,\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tflexDirection: 'column',\n\t\t\t\tjustifyContent: 'center',\n\t\t\t\tgap: showSecondary ? '2px' : 0,\n\t\t\t}}\n\t\t>\n\t\t\t<Typography\n\t\t\t\tcomponent=\"span\"\n\t\t\t\tsx={{\n\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\tfontSize: compact ? '0.8125rem' : '0.875rem',\n\t\t\t\t\tfontWeight: compact ? 500 : 600,\n\t\t\t\t\tlineHeight: 1.3,\n\t\t\t\t\tletterSpacing: compact ? 0 : '0.01em',\n\t\t\t\t\tcolor: 'var(--picker-text)',\n\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\tm: 0,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{option.label}\n\t\t\t</Typography>\n\t\t\t{showSecondary ? (\n\t\t\t\tisUseTag ? (\n\t\t\t\t\t<Box sx={{ display: 'flex', gap: '4px', flexWrap: 'wrap', pt: 0.25 }}>\n\t\t\t\t\t\t{option.tags.map((tag, i) => (\n\t\t\t\t\t\t\t<TagButton\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tlabel={(tag?.tagIcon ? '' : '# ') + tag.tagName}\n\t\t\t\t\t\t\t\ticon={tag?.tagIcon ?? undefined}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Box>\n\t\t\t\t) : (\n\t\t\t\t\t<Typography\n\t\t\t\t\t\tcomponent=\"span\"\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\t\t\tfontSize: '0.75rem',\n\t\t\t\t\t\t\tlineHeight: 1.35,\n\t\t\t\t\t\t\tcolor: 'var(--option-subscript)',\n\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\tm: 0,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{description}\n\t\t\t\t\t</Typography>\n\t\t\t\t)\n\t\t\t) : null}\n\t\t</Box>\n\t)\n}\n\nfunction DM({\n\toption,\n\tselected,\n\tonDelete,\n\talwaysShowEndIcon = false,\n\tisIconClickable = false,\n\tdisabled = false,\n\tendIcon = null,\n\tisShowEndIcon = true,\n\tisShowDescription = true,\n}: {\n\toption: React.ComponentProps<typeof ItemIcon>['option'];\n\tisShowDescription?: React.ComponentProps<typeof ItemLabel>['isShowDescription'];\n\tselected?: boolean;\n\tisIconClickable?: boolean;\n\tisShowEndIcon?: boolean;\n\tdisabled: React.ComponentProps<typeof IconButton>['disabled'];\n\tonDelete?: React.ComponentProps<typeof IconButton>['onClick'];\n\talwaysShowEndIcon?: boolean;\n\tendIcon?: React.ReactNode | null;\n}) {\n\tconst showClose = Boolean(isShowEndIcon && isIconClickable && (selected || alwaysShowEndIcon))\n\tconst showCheck = Boolean(isShowEndIcon && !isIconClickable && selected)\n\n\treturn (\n\t\t<>\n\t\t\t<ItemIcon option={option} compact={isIconClickable} />\n\t\t\t<ItemLabel option={option} isShowDescription={isShowDescription} compact={isIconClickable} />\n\t\t\t{showClose ? (\n\t\t\t\t<IconButton\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-label={`Remove ${option.label}`}\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\tonDelete?.(event)\n\t\t\t\t\t}}\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tpadding: '2px',\n\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\tcursor: disabled ? 'default' : 'pointer',\n\t\t\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\tbackgroundColor: 'var(--picker-hover-bg)',\n\t\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\t\tcolor: 'var(--picker-text)',\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{endIcon ?? <CloseIcon sx={{ fontSize: '0.95rem' }} />}\n\t\t\t\t</IconButton>\n\t\t\t) : null}\n\t\t\t{showCheck ? (\n\t\t\t\t<Box\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\talignSelf: 'center',\n\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\tcolor: 'var(--picker-check)',\n\t\t\t\t\t\tpl: 0.5,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{endIcon ?? <CheckIcon sx={{ fontSize: '1.05rem' }} />}\n\t\t\t\t</Box>\n\t\t\t) : null}\n\t\t</>\n\t)\n}\n","'use client'\nimport { createContext, useContext, useState, useCallback, useMemo, useEffect, useRef } from 'react'\n\nimport { \n type MinimalOption, type AutoCompleteOptionIds,\n type OptionIds,\n OptionClass,\n} from '../_utils'\n\nexport type StateType = {\n ids: AutoCompleteOptionIds,\n minimal: MinimalOption[] | MinimalOption | null,\n isMultiple: boolean,\n}\n\ntype ContextType = {\n\tstate: StateType;\n select: (option: MinimalOption | MinimalOption[] | null) => StateType;\n}\nconst Context = createContext<ContextType | null>(null);\nexport const useStateContext = () => {\n const ctx = useContext(Context)\n if (!ctx) throw new Error('useStateContext must be used within LocalSelectedProvider')\n return ctx\n}\n\nexport const Provider = ({children,selectedIds,options,isMultiple,open=false}:{\n children:React.ReactNode,\n selectedIds:Parameters<typeof init>[0]['selectedIds'],\n options:Parameters<typeof init>[0]['options'],\n isMultiple:Parameters<typeof init>[0]['isMultiple'],\n open?: boolean,\n}) => {\n // Initialize state once\n\tconst [state, setState] = useState<StateType>(() => init({selectedIds,options,isMultiple}))\n const stateRef = useRef(state)\n stateRef.current = state\n\n // Keep provider state in sync when parent-driven selectedIds/options/isMultiple change.\n // While open, skip identity-driven re-init so accumulating picks are not wiped\n // by a stale parent selectedIds array.\n useEffect(() => {\n const next = init({ selectedIds, options, isMultiple })\n if (equalState(stateRef.current, next)) return\n if (open) return\n stateRef.current = next\n setState(next)\n }, [selectedIds, options, isMultiple, open]);\n\n // Compute next state as a pure function — used both in setState and as return value\n const computeNextState = useCallback((prev: StateType, option: MinimalOption | MinimalOption[] | null): StateType => {\n if (prev.isMultiple) {\n const newOptions = Array.isArray(option) ? option : []\n return { ...prev, ids: newOptions.map(o => o.id), minimal: newOptions }\n }\n const newOption = option && !Array.isArray(option) ? option : null\n return { ...prev, ids: newOption?.id ?? null, minimal: newOption }\n }, [])\n\n const select = useCallback((option: MinimalOption | MinimalOption[] | null): StateType => {\n let produced: StateType | undefined\n setState((prev) => {\n produced = computeNextState(prev, option)\n stateRef.current = produced\n return produced\n })\n // React skips the eager updater when updates are already queued; chain from the ref.\n if (produced === undefined) {\n produced = computeNextState(stateRef.current, option)\n stateRef.current = produced\n }\n return produced\n }, [computeNextState])\n\n const value = useMemo(() => ({ state, select }), [state, select])\n\n\treturn (\n\t\t<Context.Provider value={value}>\n\t\t\t{children}\n\t\t</Context.Provider>\n\t)\n}\n\nexport const useSelector = () => {\n const {state} = useStateContext()\n return <T extends keyof StateType>(key:T) => {\n return state[key]\n }\n}\n/**\n * Initialize the local state\n */\nfunction init({\n selectedIds, \n options,\n isMultiple,\n}:{\n selectedIds:OptionIds, \n options:OptionClass[],\n isMultiple:boolean,\n}):StateType{\n return {\n ids: isMultiple?selectedIds : selectedIds[0]??null,\n minimal: isMultiple?options\n .filter(o=>selectedIds.includes(o.id))\n .map(o=>o.minimal())\n :options.find(o=>o.id===selectedIds[0])?.minimal()??null,\n isMultiple: isMultiple,\n }\n}\n\nfunction equalIds(a: AutoCompleteOptionIds, b: AutoCompleteOptionIds): boolean {\n if (a === b) return true\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((id, i) => id === b[i])\n }\n return false\n}\n\nfunction equalMinimalOption(a: MinimalOption, b: MinimalOption): boolean {\n return a.id === b.id\n && a.label === b.label\n && a.filterKey === b.filterKey\n && a.disabled === b.disabled\n && a.group === b.group\n && a.value === b.value\n}\n\nfunction equalMinimal(\n a: StateType['minimal'],\n b: StateType['minimal'],\n): boolean {\n if (a === b) return true\n if (a == null || b == null) return false\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((opt, i) => equalMinimalOption(opt, b[i]))\n }\n if (!Array.isArray(a) && !Array.isArray(b)) {\n return equalMinimalOption(a, b)\n }\n return false\n}\n\nfunction equalState(a: StateType, b: StateType): boolean {\n return a.isMultiple === b.isMultiple\n && equalIds(a.ids, b.ids)\n && equalMinimal(a.minimal, b.minimal)\n}","export {\n Provider as LocalSelectedProvider,\n useStateContext as useLocalSelectedContext,\n useSelector as useLocalSelectedSelector,\n type StateType,\n} from './states';","import Paper, { type PaperProps } from '@mui/material/Paper'\n\n/**\n * A wrapper for Mui Paper\n */\nexport default function MuiPaper(props: PaperProps) {\n return <Paper {...props} />\n}\n","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 { SxProps, Theme } from '@mui/material/styles'\nimport { styled } from '@mui/material/styles'\nimport { Popper } from '@/ele/Overlay'\nimport { autocompleteClasses } from '@mui/material/Autocomplete'\nimport { Paper } from '@/ele/Paper'\nimport { gitHubPickerRootStyle } from './theme'\n\nexport const PickerPopper = styled(Popper)(({ theme }) => ({\n\t...gitHubPickerRootStyle,\n\twidth: 'var(--w)',\n\tminWidth: 280,\n\tzIndex: theme.zIndex.modal,\n\tfontSize: 13,\n\toverflow: 'hidden',\n\tborderRadius: 14,\n\tborder: '1px solid var(--picker-border)',\n\tbackgroundColor: 'var(--mui-palette-background-paper)',\n\tbackgroundImage: 'none',\n\tboxShadow: 'var(--picker-shadow)',\n\tbackdropFilter: 'none',\n\tWebkitBackdropFilter: 'none',\n\t'--picker-blur': '0px',\n\t'--picker-glass': 'none',\n}))\n\nexport const PickerOptionLi = styled('li')(() => ({\n\t...gitHubPickerRootStyle,\n\t[`.${autocompleteClasses.listbox} &.${autocompleteClasses.option}`]: {\n\t\tpadding: 0,\n\t\tmargin: '2px 6px',\n\t\tborderRadius: 10,\n\t\tminHeight: 0,\n\t},\n\t[`\n\t\t&.${autocompleteClasses.option},\n\t\t&.${autocompleteClasses.option}[aria-selected=\"true\"],\n\t`]: {\n\t\tbackgroundColor: 'transparent',\n\t},\n\t[`\n\t\t&.${autocompleteClasses.option}:hover,\n\t\t&.${autocompleteClasses.option}[aria-selected=\"true\"]:hover,\n\t`]: {\n\t\tbackgroundColor: 'var(--picker-hover-bg)',\n\t},\n\t[`\n\t\t&.${autocompleteClasses.option}.${autocompleteClasses.focused},\n\t\t&.${autocompleteClasses.option}.${autocompleteClasses.focused}[aria-selected=\"true\"]\n\t`]: {\n\t\tbackgroundColor: 'var(--picker-focus-soft)',\n\t},\n\t[`&.${autocompleteClasses.option}[aria-selected=\"true\"]`]: {\n\t\tbackgroundColor: 'var(--picker-focus-soft)',\n\t\tboxShadow: 'inset 0 1px 0 var(--picker-highlight)',\n\t},\n}))\n\nexport const PickerPaper = styled(Paper)({\n\t...gitHubPickerRootStyle,\n\tborderRadius: 14,\n\tborder: 'none',\n\t'--paper-bg': 'transparent',\n\tbackgroundColor: 'transparent',\n\tbackgroundImage: 'none',\n\tboxShadow: 'none',\n\t'&.MuiPaper-root': {\n\t\t'--paper-bg': 'transparent',\n\t\tbackgroundColor: 'transparent',\n\t\tbackgroundImage: 'none',\n\t\tboxShadow: 'none',\n\t\tborder: 'none',\n\t},\n})\n\nexport const pickerSearchSx = {\n\tdisplay: 'flex',\n\talignItems: 'center',\n\tgap: 1,\n\tmx: 1,\n\tmt: 0.5,\n\tmb: 0.75,\n\tpx: 1.25,\n\tpy: 0.5,\n\tborderRadius: 2,\n\tbackgroundColor: 'var(--picker-search-bg)',\n\tborder: '1px solid var(--picker-search-border)',\n\tboxShadow: 'var(--picker-search-shadow)',\n\t'& .MuiInputBase-root': {\n\t\tfontSize: '0.875rem',\n\t\tcolor: 'var(--picker-text)',\n\t},\n\t'& .MuiInputBase-input': {\n\t\tpy: 0.6,\n\t\t'&::placeholder': {\n\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\topacity: 0.8,\n\t\t},\n\t},\n} as const satisfies SxProps<Theme>\n\nexport const pickerGroupLabelSx = {\n\tpx: 1.75,\n\tpt: 1.25,\n\tpb: 0.5,\n\tfontSize: '0.66rem',\n\tfontWeight: 700,\n\tletterSpacing: '0.08em',\n\ttextTransform: 'uppercase',\n\tlineHeight: 1.4,\n\tcolor: 'var(--picker-text-secondary)',\n} as const satisfies SxProps<Theme>\n","export const CONFIRM_ID = \"deleteOption-confirmation\"\n\nexport const OPTION_CONSTRAINTS = {\n group: 20,\n label: 20,\n value: 100,\n description: 100\n} as const\n\nexport const MY_LOCAL_DISABLE_GROUP = \"My Local Disable Group - c7EgCbQ9T1\"\nexport const DISABLED_GROUP = \"Disabled\"","import { randomStrGenerator } from '@/_utils/_func'\n\nimport type { OptionParams, MinimalOption } from './_types'\nimport { DISABLED_GROUP } from './_const'\n\nexport default class Option {\n\tid: NonNullable<OptionParams[\"id\"]>;\n\tlabel: NonNullable<OptionParams[\"label\"]>;\n\tdescription: NonNullable<OptionParams[\"description\"]>;\n\tdisabled: NonNullable<OptionParams[\"disabled\"]>;\n\tgroup: NonNullable<OptionParams[\"group\"]>;\n\ticon: NonNullable<OptionParams[\"icon\"]> | null;\n\tfilterKey: NonNullable<OptionParams[\"filterKey\"]>;\n\tvalue: NonNullable<OptionParams[\"value\"]>;\n\tdefaultSelected: NonNullable<OptionParams[\"defaultSelected\"]>;\n\totherProps: NonNullable<OptionParams[\"otherProps\"]>;\n\ttags: NonNullable<OptionParams[\"tags\"]>;\n\n\tconstructor(p: OptionParams) {\n\t\tthis.id = p.id ?? randomStrGenerator();\n\t\tthis.label = p.label ?? 'label';\n\t\tthis.description = p.description ?? 'description';\n\t\tthis.disabled = p.disabled ?? false;\n\t\tthis.group = p.group ?? 'group';\n\t\tthis.icon = p.icon ?? null;\n\t\tthis.filterKey = p.filterKey || defaultGetFilterKey(p);\n\t\tthis.defaultSelected = p.defaultSelected ?? false;\n\t\tthis.value = p.value ?? \"\";\n\n\t\tthis.otherProps = p.otherProps ?? {};\n\t\tthis.tags = p.tags ?? [];\n\t}\n\n\tminimal():MinimalOption{\n\t\treturn {\n\t\t\tid: this.id,\n\t\t\tlabel: this.label,\n\t\t\tfilterKey: this.filterKey,\n\t\t\tdisabled: this.disabled,\n\t\t\tgroup: this.group,\n\t\t\tvalue: this.value,\n\t\t}\n\t}\n}\n\nfunction defaultGetFilterKey(p: OptionParams): string {\n\tconst tagsStr = p.tags?.map(t=>t.tagName).join(\" \") ?? \"\";\n\treturn `${p.group ?? \"\"} ${p.label ?? \"\"} ${p.description ?? \"\"} ${p.value ?? \"\"} ${p.disabled?DISABLED_GROUP:\"\"} ${tagsStr}`;\n}","export type {\n EditorRef,\n OptionId, OptionIds,\n AutoCompleteOptionIds,\n OptionParams,\n MinimalOption,\n} from './_types'\n\nexport * from './_const'\n\nexport {\n default as OptionClass,\n} from './OptionClass'","\"use client\"\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport { Popper } from '@/ele/Overlay'\nimport type { PopperProps } from '@mui/material/Popper'\nimport Autocomplete, { autocompleteClasses, AutocompletePopperSlotPropsOverrides } from '@mui/material/Autocomplete'\nimport InputBase from '@mui/material/InputBase'\nimport { Box } from '@/ele/Box'\nimport { Typography } from '@/ele/Typography'\nimport { Button } from '@/ele/Button'\n\nimport { SearchIcon, DisabledSelectionIcon, AddIcon } from '@/icons/MuiIcon'\n\nimport OptionRenderer from './OptionRenderer'\nimport { PickerPopper, PickerOptionLi, PickerPaper, pickerSearchSx, pickerGroupLabelSx } from './popperTheme'\nimport { \n\tOptionClass, type MinimalOption, \n\tMY_LOCAL_DISABLE_GROUP, DISABLED_GROUP,\n} from './_utils'\nimport {\n\tuseLocalSelectedContext,\n\tuseLocalSelectedSelector,\n} from './states'\nimport type { StateType } from './states'\n\n/**\n * A popper menu for the GitHubPicker only\n */\nexport default function MyPopper({\n\tid,\n\tlistboxId,\n\tanchorEl,\n\tallMinimalOptions,\n\toptions,\n\tcloseHandler,\n\ttitle,\n\tplacement = 'bottom-start',\n\tmultiple = true,\n\tdisabled = false,\n\tuseGroup,\n\tisAddOptionEnabled,\n\taddOptionHandler,\n\tisPopperFreezed,\n}: {\n\tid: string;\n\tlistboxId: string;\n\tanchorEl: HTMLElement | null;\n\tallMinimalOptions: MinimalOption[];\n\toptions: OptionClass[];\n\tcloseHandler?: (newState?: StateType) => void;\n\ttitle?: React.ReactNode;\n\tplacement?: React.ComponentProps<typeof Popper>['placement'];\n\tmultiple?: React.ComponentProps<typeof Autocomplete>['multiple'];\n\tdisabled?: React.ComponentProps<typeof Autocomplete>['disabled'];\n\tuseGroup?: boolean;\n\tisAddOptionEnabled?: boolean;\n\taddOptionHandler?: () => void;\n\tisPopperFreezed?: boolean;\n}) {\n\tconst minimal = useLocalSelectedSelector()(\"minimal\")\n\tconst { select } = useLocalSelectedContext()\n\tconst [query, setQuery] = useState('')\n\tconst open = Boolean(anchorEl)\n\tconst listboxRef = useRef<HTMLUListElement | null>(null)\n\tconst pinnedScrollTop = useRef<number | null>(null)\n\n\tuseEffect(() => {\n\t\tif (open) setQuery('')\n\t}, [open])\n\n\tuseLayoutEffect(() => {\n\t\tif (!open) {\n\t\t\tpinnedScrollTop.current = null\n\t\t\treturn\n\t\t}\n\t\tconst list = listboxRef.current\n\t\tconst top = pinnedScrollTop.current\n\t\tif (list == null || top == null) return\n\t\tlist.scrollTop = top\n\t\tconst id = window.requestAnimationFrame(() => {\n\t\t\tif (listboxRef.current) listboxRef.current.scrollTop = top\n\t\t\tpinnedScrollTop.current = null\n\t\t})\n\t\treturn () => window.cancelAnimationFrame(id)\n\t}, [open, minimal])\n\n\tuseEffect(() => {\n\t\tif (!open) return\n\t\tconst id = window.setTimeout(() => {\n\t\t\tif (listboxRef.current) listboxRef.current.scrollTop = 0\n\t\t}, 30)\n\t\treturn () => window.clearTimeout(id)\n\t}, [open])\n\n\t// handle change for autocomplete -> local change\n\tconst handleChange:React.ComponentProps<typeof Autocomplete>[\"onChange\"] = (event, newValue, reason) => {\n\t\tif(\n\t\t\tevent.type === 'keydown' &&\n\t\t\treason === 'removeOption'\n\t\t) {\n\t\t\t// avoid the default behavior\n\t\t\treturn\n\t\t}\n\n\t\t\tif (listboxRef.current) {\n\t\t\t\tpinnedScrollTop.current = listboxRef.current.scrollTop\n\t\t\t}\n\n\t\t\tif (!multiple && (newValue == null || newValue === '')) {\n\t\t\t\tconst cleared = select(null)\n\t\t\t\tif (!isPopperFreezed) closeHandler?.(cleared)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst currentId = !multiple && minimal && !Array.isArray(minimal) ? minimal.id : null\n\t\t\tconst nextOption = Array.isArray(newValue) ? newValue[0] : newValue\n\t\t\tif (!multiple && currentId && nextOption && nextOption.id === currentId) {\n\t\t\t\tconst cleared = select(null)\n\t\t\t\tif (!isPopperFreezed) closeHandler?.(cleared)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// update the local state and get the new state synchronously\n\t\t\tconst newState = select(newValue as (MinimalOption|MinimalOption[]))\n\t\t\t// close the popper if not multiple and pass the updated state\n\t\t\tif(!multiple && !isPopperFreezed){\n\t\t\t\tcloseHandler?.(newState)\n\t\t\t}\n\t}\n\n\tconst popperId = open ? id : undefined\n\tconst popperWidth = Math.max(anchorEl?.offsetWidth ?? 320, 320)\n\n\treturn (\n\t\t<PickerPopper\n\t\t\tid={popperId}\n\t\t\topen={open}\n\t\t\tanchorEl={anchorEl}\n\t\t\tdisablePortal\n\t\t\tplacement={placement}\n\t\t\tstyle={{ '--w': `${popperWidth}px` } as React.CSSProperties}\n\t\t\tmodifiers={[\n\t\t\t\t{ name: 'offset', options: { offset: [0, 8] } },\n\t\t\t\t{ name: 'preventOverflow', options: { padding: 8 } },\n\t\t\t]}\n\t\t>\n\t\t\t\t<PickerPaper elevation={0} variant=\"outlined\">\n\t\t\t\t{title ? (\n\t\t\t\t\t<Box sx={{ px: 1.75, pt: 1.5, pb: 0.5 }}>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\tfontSize: '0.78rem',\n\t\t\t\t\t\t\t\tfontWeight: 600,\n\t\t\t\t\t\t\t\tletterSpacing: '0.02em',\n\t\t\t\t\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t\t\t\t\tm: 0,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t) : null}\n <Autocomplete\n open={open}\n disabled={disabled}\n multiple={multiple}\n\t\t\t\t\tonClose={(_event, reason) => {\n\t\t\t\t\t\tif (reason === 'escape' && !isPopperFreezed) {\n\t\t\t\t\t\t\tcloseHandler?.()\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n value={multiple\n ? (Array.isArray(minimal) ? minimal : [])\n : (minimal && !Array.isArray(minimal) ? minimal : null)\n }\n inputValue={query}\n onInputChange={(_, value, reason) => {\n if (reason === 'reset') return\n setQuery(value)\n }}\n onChange={handleChange}\n disableCloseOnSelect={Boolean(multiple)}\n selectOnFocus={false}\n clearOnBlur={false}\n slots={{\n popper: PopperComponent,\n paper: ListSurface,\n }}\n slotProps={{\n listbox:{\n id: listboxId,\n sx:{\n\t\t\t\t\t\t\t\tmaxHeight: 320,\n\t\t\t\t\t\t\t\tpy: 0.5,\n\t\t\t\t\t\t\t\toverflowX: 'hidden',\n\t\t\t\t\t\t\t\toverflowAnchor: 'none',\n\t\t\t\t\t\t\t},\n ref: listboxRef,\n },\n }}\n noOptionsText=\"No matches\"\n\n renderOption={(liProps, option, { selected }, ownerState )=>{\n const { key, onClick, ...optionProps } = liProps\n // find the option with full data from the minimal option\n // including the icon\n const fullOption = options.find(o => o.id === option.id)\n\n return (\n <PickerOptionLi\n key={key}\n {...optionProps}\n onClick={(event) => {\n if (!multiple && selected) {\n event.preventDefault()\n event.stopPropagation()\n if (listboxRef.current) {\n pinnedScrollTop.current = listboxRef.current.scrollTop\n }\n const cleared = select(null)\n if (!isPopperFreezed) closeHandler?.(cleared)\n return\n }\n onClick?.(event)\n }}\n >\n <OptionRenderer \n disableBR\n option={fullOption??null}\n selected={selected}\n disabled={ownerState.disabled || option.disabled}\n slotProps={{\n DM:{\n isShowEndIcon:true,\n isShowDescription:true,\n },\n }}\n />\n </PickerOptionLi>)\n }}\n options={allMinimalOptions}\n \n groupBy={useGroup?\n ((option:MinimalOption) => option.disabled? MY_LOCAL_DISABLE_GROUP : option.group)\n :undefined\n }\n getOptionLabel={(option:MinimalOption) => option.label} // display the label\n getOptionKey={(option:MinimalOption) => option.id}\n getOptionDisabled={(option:MinimalOption) => option.disabled??false}\n isOptionEqualToValue={(option:MinimalOption, value) => option.id === value?.id}\n filterOptions={(options, { inputValue }) => { // filter the options\n return options.filter(option => {\n // use the filter key to search\n const filterKey = option.filterKey.toLowerCase()\n // split the input value by space and check if all the words are in the filter key\n const inputVal = inputValue.toLowerCase().split(\" \")\n // if all the words are in the filter key, return true\n return inputVal.every(val => filterKey.includes(val))\n })\n }}\n\n renderInput={(params) => {\n return(\n <Box ref={params.InputProps.ref} sx={pickerSearchSx}>\n\t\t\t\t\t\t\t<SearchIcon sx={{ fontSize: 18, color: 'var(--picker-text-secondary)', flexShrink: 0 }} />\n <InputBase\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\t\t\t\tvalue={query}\n\t\t\t\t\t\t\t\tonChange={(event) => setQuery(event.target.value)}\n\t\t\t\t\t\t\t\tinputProps={{\n\t\t\t\t\t\t\t\t\t...params.inputProps,\n\t\t\t\t\t\t\t\t\tvalue: query,\n\t\t\t\t\t\t\t\t\tonBlur:(e: React.FocusEvent<HTMLInputElement>)=>{\n\t\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n />\n </Box>\n )}} \n \n renderGroup={(p)=>{\n\n return <li key={p.key}>\n <Box className={`${autocompleteClasses.groupLabel}`} sx={pickerGroupLabelSx}>\n\t\t\t\t\t\t\t\t{p.group === MY_LOCAL_DISABLE_GROUP?\n <Box component=\"span\" sx={{display:\"flex\",alignItems:\"center\",gap:1}}><DisabledSelectionIcon sx={{ fontSize: 14 }} />{DISABLED_GROUP}</Box>\n :p.group}\n </Box>\n\n <Box component=\"ul\" sx={{padding:0, margin: 0}} className={`${autocompleteClasses.groupUl}`}>{p.children}</Box>\n </li>\n }}\n />\n\t\t\t\t{isAddOptionEnabled ? (\n\t\t\t\t\t<Box\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tborderTop: '1px solid var(--picker-divider)',\n\t\t\t\t\t\t\tpx: 0.75,\n\t\t\t\t\t\t\tpy: 0.5,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tstartIcon={<AddIcon />}\n\t\t\t\t\t\t\tonClick={addOptionHandler}\n\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\tjustifyContent: 'flex-start',\n\t\t\t\t\t\t\t\tpx: 1,\n\t\t\t\t\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t\t\t\t\tfontWeight: 600,\n\t\t\t\t\t\t\t\tletterSpacing: '0.02em',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tNew option\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Box>\n\t\t\t\t) : null}\n </PickerPaper>\n\t\t</PickerPopper>\n\t)\n}\n\n/**\n * A popper component for the Autocomplete\n * \n * must be a separate component to avoid re-rendering the popper\n */\nfunction ListSurface({\n children,\n ...other\n}: {\n children?: React.ReactNode\n} & React.HTMLAttributes<HTMLDivElement>) {\n return (\n <Box {...other} sx={{ boxShadow: 'none', backgroundColor: 'transparent' }}>\n {children}\n </Box>\n )\n}\n\nfunction PopperComponent(props: PopperProps & AutocompletePopperSlotPropsOverrides) {\n const { children, sx, ...other } = props;\n\n // Render a simple container instead of a Popper so the consumer can\n // wrap the Autocomplete in an external Popper. If `sx` is a function we\n // don't evaluate it here (keep behavior simple and type-safe).\n const evaluatedSx = typeof sx === 'function' ? {} : sx;\n const content = typeof children === 'function' ? (children as () => React.ReactNode)() : children;\n\n return (\n <Box {...other} sx={evaluatedSx}>\n {content}\n </Box>\n );\n}\n","export * from './src'","'use client'\nimport {useState, useMemo, useId, Suspense, lazy} from 'react'\nimport { Box } from '@/ele/Box'\nimport { Typography } from '@/ele/Typography'\nimport { IconButton } from '@/ele/Button'\nimport { Badge } from '@/ele/Badge'\nimport { ClickAwayListener } from '@/ele/Overlay'\nimport { FilterIcon, KeyboardArrowDownIcon } from '@/icons/MuiIcon'\nimport { sortByKey } from '@/_utils/_func'\n\nimport OptionRenderer from './OptionRenderer'\nimport { PickerField, gitHubPickerRootSx } from './theme'\nimport {\n\tOptionClass,\n\ttype OptionId, type OptionIds,\n\ttype MinimalOption,\n} from './_utils'\nimport {\n\tLocalSelectedProvider, useLocalSelectedContext,\n} from './states'\n\nconst PopperMenu = lazy(() => import('./PopperMenu'))\ntype PopperMenuProps = React.ComponentProps<typeof import('./PopperMenu').default>\n\nexport type GitHubPickerVariant = 'field' | 'icon'\nexport type GitHubPickerColor =\n\t| 'primary'\n\t| 'secondary'\n\t| 'error'\n\t| 'info'\n\t| 'success'\n\t| 'warning'\n\t| 'system'\n\t| 'insight'\n\nconst PICKER_ACCENT: Record<GitHubPickerColor, string> = {\n\tprimary: 'var(--mui-palette-primary-emphasis)',\n\tsecondary: 'var(--mui-palette-secondary-main)',\n\terror: 'var(--mui-palette-error-main)',\n\tinfo: 'var(--mui-palette-info-main)',\n\tsuccess: 'var(--mui-palette-success-main)',\n\twarning: 'var(--mui-palette-warning-main)',\n\tsystem: 'var(--mui-palette-system-main)',\n\tinsight: 'var(--mui-palette-insight-main)',\n}\n\ntype GitHubPickerProps = Omit<React.ComponentProps<typeof Picker>,\"localStates\" | \"anchorEl\" | \"setAnchorEl\"> & {\n multiple?: boolean;\n /** `field` is the full selector. `icon` is a compact IconButton with a badge. */\n variant?: GitHubPickerVariant;\n}\n/**\n * Field + catalog autocomplete. Searchable grouped options with\n * chip-based selected values. Pass `variant=\"icon\"` for a compact trigger.\n *\n * [Doc](https://mui.com/material-ui/api/autocomplete/)\n *\n * @param selectedIdProps - is always an array of ids\n * @param options.filterKey - is for searching\n */\nexport default function GitHubPicker({\n\tmultiple=true,\n\t...p\n}:GitHubPickerProps){\n\tconst _selectedIdProps = p.selectedIdProps[0]\n\tconst [anchorEl, setAnchorEl] = useState<HTMLElement|null>(null)\n\n\treturn (<LocalSelectedProvider selectedIds={_selectedIdProps} options={p.options} isMultiple={multiple} open={Boolean(anchorEl)}>\n\t\t<Picker {...p} multiple={multiple} anchorEl={anchorEl} setAnchorEl={setAnchorEl}/>\n\t</LocalSelectedProvider>)\n}\n\nfunction Picker(p:{\n\tselectedIdProps: [OptionIds, React.Dispatch<React.SetStateAction<OptionIds>>];\n\toptions: OptionClass[];\n\tadditionSort?: Parameters<typeof getMinimalOptions>[1]; // sort function for groups\n\n\tonChange: (ids: OptionIds) => void;\n\tonDelete: (id: OptionId) => void;\n\terror?: boolean;\n\ttitle?: string;\n\tsubtitle?: string;\n\ttitleIcon?: React.ReactNode;\n\n\tmultiple?: boolean; // allow multiple selection\n\tdisabled?: boolean;\n\n\tuseGroup?: boolean; // group the options\n\tisAddOptionEnabled?: boolean; // allow adding new option\n\taddOptionHandler?:PopperMenuProps[\"addOptionHandler\"]; // handler for adding new option\n\n\tisPopperFreezed?:PopperMenuProps[\"isPopperFreezed\"]; // disable the popper\n\tvariant?: GitHubPickerVariant;\n\t/** Icon, badge, and field accent. `error` still wins when true. */\n\tcolor?: GitHubPickerColor;\n\tanchorEl: HTMLElement | null;\n\tsetAnchorEl: React.Dispatch<React.SetStateAction<HTMLElement | null>>;\n}){\n const {\n selectedIdProps,\n options=[], // options for rendering and autocomplete\n additionSort,\n\n title, subtitle,\n titleIcon,\n onChange, onDelete,\n error=false,\n multiple, // default value set in Parent\n disabled=false,\n useGroup=true,\n isAddOptionEnabled=false,\n addOptionHandler,\n\n isPopperFreezed,\n variant = 'field',\n color = 'secondary',\n anchorEl,\n setAnchorEl,\n } = p\n\tconst tone: GitHubPickerColor = error ? 'error' : color\n\tconst accent = PICKER_ACCENT[tone]\n\tconst pickerId = useId()\n\tconst menuId = `${pickerId}-menu`\n\tconst listboxId = `${pickerId}-listbox`\n\n\tconst [selectedIds, sIds] = selectedIdProps // [{id,label,filterKey,disabled,group},...]\n\t// option pass to autocomplete, seperate icon\n\tconst allMinimalOptions = useMemo(() => getMinimalOptions(options,additionSort),[options,additionSort])\n\tconst selectedOpt = allMinimalOptions.filter(itm=>selectedIds.includes(itm.id))\n\tconst { state, select } = useLocalSelectedContext()\n\tconst open = Boolean(anchorEl)\n\n\t// handle popper close\n\tconst closeHandler:PopperMenuProps[\"closeHandler\"] = (passedState?) => {\n\t\t// `minimal: null` is a real clear. `??` would fall back to the previous selection.\n\t\tconst newValue = passedState === undefined ? state.minimal : passedState.minimal\n\t\tconst nextIds = idsFromSelection(Boolean(multiple), newValue)\n\t\tsIds(nextIds)\n\t\tonChange(nextIds)\n\n\t\tif(anchorEl){ anchorEl.focus() }\n\t\tsetAnchorEl(null)\n\t}\n\n\tconst removeItemHandler:React.ComponentProps<typeof DisplaySelected>[\"removeItemHandler\"] = id => () => {\n\t\tonDelete(id)\n\t\tsIds(old=>old.filter(itm => itm !== id))\n\t\t// Keep LocalSelected in sync while open — closeHandler commits state.minimal,\n\t\t// so skipping this would restore the removed chip after the menu closes.\n\t\tif (multiple) {\n\t\t\tconst current = Array.isArray(state.minimal) ? state.minimal : []\n\t\t\tselect(current.filter((opt) => opt.id !== id))\n\t\t} else if (!Array.isArray(state.minimal) && state.minimal?.id === id) {\n\t\t\tselect(null)\n\t\t} else if (Array.isArray(state.minimal)) {\n\t\t\tselect(state.minimal.filter((opt) => opt.id !== id))\n\t\t}\n\t}\n\n\tconst togglePicker = (element: HTMLElement) => {\n\t\tif (disabled) return\n\t\tif (open) {\n\t\t\tif (isPopperFreezed) return\n\t\t\tcloseHandler()\n\t\t\treturn\n\t\t}\n\t\tsetAnchorEl(element)\n\t}\n\n\treturn (\n\t\t<ClickAwayListener\n\t\t\tonClickAway={() => {\n\t\t\t\tif (!open || isPopperFreezed) return\n\t\t\t\tcloseHandler()\n\t\t\t}}\n\t\t>\n\t\t\t<Box>\n\t\t\t{variant === 'icon' ? (\n\t\t\t\t<IconTrigger\n\t\t\t\t\tid={pickerId}\n\t\t\t\t\tmenuId={menuId}\n\t\t\t\t\topen={open}\n\t\t\t\t\tcolor={tone}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\ttitleIcon={titleIcon}\n\t\t\t\t\tselectedCount={selectedOpt.length}\n\t\t\t\t\tselectedLabels={selectedOpt.map((opt) => opt.label)}\n\t\t\t\t\tonToggle={togglePicker}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<FieldTrigger\n\t\t\t\t\tid={pickerId}\n\t\t\t\t\tmenuId={menuId}\n\t\t\t\t\topen={open}\n\t\t\t\t\terror={error}\n\t\t\t\t\taccent={accent}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\ttitleIcon={titleIcon}\n\t\t\t\t\tselectedOpt={selectedOpt}\n\t\t\t\t\toptions={options}\n\t\t\t\t\tremoveItemHandler={removeItemHandler}\n\t\t\t\t\tmultiple={Boolean(multiple)}\n\t\t\t\t\tonToggle={togglePicker}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{anchorEl ? (\n\t\t\t\t<Suspense fallback={null}>\n\t\t\t\t\t<PopperMenu\n\t\t\t\t\t\tid={menuId}\n\t\t\t\t\t\tlistboxId={listboxId}\n\t\t\t\t\t\tanchorEl={anchorEl}\n\t\t\t\t\t\tallMinimalOptions={allMinimalOptions}\n\t\t\t\t\t\toptions={options}\n\t\t\t\t\t\tcloseHandler={closeHandler}\n\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\ttitle={subtitle ?? title}\n\t\t\t\t\t\tuseGroup={useGroup}\n\t\t\t\t\t\tisAddOptionEnabled={isAddOptionEnabled}\n\t\t\t\t\t\taddOptionHandler={addOptionHandler}\n\t\t\t\t\t\tisPopperFreezed={isPopperFreezed}\n\t\t\t\t\t/>\n\t\t\t\t</Suspense>\n\t\t\t) : null}\n\t\t\t</Box>\n\t\t</ClickAwayListener>\n\t)\n}\n\n/**\n * function to return minimal options\n * excluding the component and functions from the options\n * i.e. icon, minimal(),\n * \n * sort by disabled (higher priority)\n * sort by group, then filterKey\n */\nfunction idsFromSelection(\n\tmultiple: boolean,\n\tnewValue: MinimalOption[] | MinimalOption | null | undefined,\n): OptionIds {\n\tif (multiple) {\n\t\tconst list = Array.isArray(newValue) ? newValue : []\n\t\treturn sortByKey(list, 'filterKey').map((item) => item.id)\n\t}\n\tconst single = Array.isArray(newValue) ? newValue[0] : newValue\n\treturn single?.id ? [single.id] : []\n}\n\nfunction getMinimalOptions(options:OptionClass[],additionSort?:(a: MinimalOption|null, b: MinimalOption|null) => number):ReturnType<OptionClass[\"minimal\"]>[] {\n\tconst minimal = options.map(itm => itm.minimal())\n\tconst sortedByFilterKey = sortByKey(minimal,\"filterKey\")\n\tconst afterAdditionSort = additionSort ? sortedByFilterKey.sort(additionSort) : sortedByFilterKey\n\tconst sortedByGroup = sortByKey(afterAdditionSort, \"group\")\n\tconst sortedByDisabled = sortByKey(sortedByGroup,\"disabled\",)\n\treturn sortedByDisabled\n}\n\nfunction FieldTrigger(p:{\n\tid: string;\n\tmenuId: string;\n\topen: boolean;\n\terror: boolean;\n\taccent: string;\n\tdisabled: boolean;\n\ttitle?: string;\n\ttitleIcon?: React.ReactNode;\n\tselectedOpt: MinimalOption[];\n\toptions: OptionClass[];\n\tremoveItemHandler: (id: OptionId) => () => void;\n\tmultiple: boolean;\n\tonToggle: (element: HTMLElement) => void;\n}) {\n\tconst { id, menuId, open, error, accent, disabled, title, titleIcon, selectedOpt, options, removeItemHandler, multiple, onToggle } = p\n\n\treturn (\n\t\t<PickerField\n\t\t\tid={id}\n\t\t\topen={open}\n\t\t\terror={error}\n\t\t\tdisabled={disabled}\n\t\t\trole=\"combobox\"\n\t\t\ttabIndex={disabled ? -1 : 0}\n\t\t\taria-expanded={open}\n\t\t\taria-haspopup=\"listbox\"\n\t\t\taria-controls={open ? menuId : undefined}\n\t\t\taria-disabled={disabled}\n\t\t\tstyle={{\n\t\t\t\t'--picker-border-emphasis': accent,\n\t\t\t\t'--picker-check': accent,\n\t\t\t\t'--picker-focus-ring': `color-mix(in lab, ${accent}, transparent 82%)`,\n\t\t\t} as React.CSSProperties}\n\t\t\tonClick={(event) => onToggle(event.currentTarget)}\n\t\t\tonKeyDown={(event) => {\n\t\t\t\tif (event.key === 'Enter' || event.key === ' ') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tonToggle(event.currentTarget)\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<Box\n\t\t\t\tsx={{\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tgap: 1,\n\t\t\t\t\tminHeight: 20,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{titleIcon ? (\n\t\t\t\t\t<Box\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\t\t\t\tcolor: 'var(--picker-check)',\n\t\t\t\t\t\t\t'& svg': { fontSize: '1.05rem' },\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{titleIcon}\n\t\t\t\t\t</Box>\n\t\t\t\t) : null}\n\t\t\t\t{title ? (\n\t\t\t\t\t<Typography\n\t\t\t\t\t\tcomponent=\"span\"\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\tminWidth: 0,\n\t\t\t\t\t\t\tfontSize: '0.68rem',\n\t\t\t\t\t\t\tfontWeight: 700,\n\t\t\t\t\t\t\tletterSpacing: '0.08em',\n\t\t\t\t\t\t\ttextTransform: 'uppercase',\n\t\t\t\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\t\t\tm: 0,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Typography>\n\t\t\t\t) : (\n\t\t\t\t\t<Box sx={{ flex: 1 }} />\n\t\t\t\t)}\n\t\t\t\t<KeyboardArrowDownIcon\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tfontSize: 20,\n\t\t\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\ttransform: open ? 'rotate(180deg)' : 'rotate(0deg)',\n\t\t\t\t\t\ttransition: 'transform 180ms ease',\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</Box>\n\n\t\t\t<DisplaySelected\n\t\t\t\tselectedOpt={selectedOpt}\n\t\t\t\toptions={options}\n\t\t\t\tremoveItemHandler={removeItemHandler}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tmultiple={multiple}\n\t\t\t/>\n\t\t</PickerField>\n\t)\n}\n\nfunction IconTrigger(p:{\n\tid: string;\n\tmenuId: string;\n\topen: boolean;\n\tcolor: GitHubPickerColor;\n\tdisabled: boolean;\n\ttitle?: string;\n\ttitleIcon?: React.ReactNode;\n\tselectedCount: number;\n\tselectedLabels: string[];\n\tonToggle: (element: HTMLElement) => void;\n}) {\n\tconst { id, menuId, open, color, disabled, title, titleIcon, selectedCount, selectedLabels, onToggle } = p\n\tconst tooltip = selectedLabels.length > 0\n\t\t? selectedLabels.join(', ')\n\t\t: (title ?? 'Select')\n\n\treturn (\n\t\t<Badge\n\t\t\tbadgeContent={selectedCount}\n\t\t\tinvisible={selectedCount === 0}\n\t\t\tcolor={color}\n\t\t\tstyle_variant=\"filled\"\n\t\t\toverlap=\"circular\"\n\t\t\tsx={gitHubPickerRootSx}\n\t\t\tmax={99}\n\t\t>\n\t\t\t<Box sx={{ display: 'inline-flex' }}>\n\t\t\t\t<IconButton\n\t\t\t\t\tid={id}\n\t\t\t\t\ttitle={open ? '' : tooltip}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tselected={open}\n\t\t\t\t\tcolor={color}\n\t\t\t\t\taria-label={title ?? 'Select'}\n\t\t\t\t\taria-expanded={open}\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\taria-controls={open ? menuId : undefined}\n\t\t\t\t\tonClick={(event) => onToggle(event.currentTarget)}\n\t\t\t\t>\n\t\t\t\t\t{titleIcon ?? <FilterIcon />}\n\t\t\t\t</IconButton>\n\t\t\t</Box>\n\t\t</Badge>\n\t)\n}\n\nfunction DisplaySelected(p:{\n\tselectedOpt:MinimalOption[];\n\toptions:OptionClass[];\n\tremoveItemHandler:(id:OptionId)=>()=>void;\n\tdisabled:boolean;\n\tmultiple:boolean;\n}){\n const {selectedOpt,options,removeItemHandler,disabled,multiple} = p\n\tconst selectedIds = selectedOpt.map(itm=>itm.id)\n\tconst displaySelectedOptions = options.filter(itm => selectedIds.includes(itm.id))\n\n\tif (displaySelectedOptions.length === 0) {\n\t\treturn (\n\t\t\t<Typography\n\t\t\t\tsx={{\n\t\t\t\t\tfontSize: '0.9rem',\n\t\t\t\t\tfontWeight: 500,\n\t\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t\topacity: 0.78,\n\t\t\t\t\tlineHeight: 1.4,\n\t\t\t\t\tm: 0,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{multiple ? 'Select options' : 'Select an option'}\n\t\t\t</Typography>\n\t\t)\n\t}\n\n\treturn (\n\t\t<Box sx={{\n\t\t\toverflow:\"hidden\",\n\t\t\tdisplay:\"flex\",flexWrap:\"wrap\",\n\t\t\tgap:\"6px\",\n\t\t}}>\n\t\t\t{displaySelectedOptions.map((o) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Box key={o.id} sx={{\n\t\t\t\t\t\toverflow:\"hidden\",\n\t\t\t\t\t\tmaxWidth:\"100%\",\n\t\t\t\t\t}}>\n\t\t\t\t\t\t<OptionRenderer\n\t\t\t\t\t\t\toption={o}\n\t\t\t\t\t\t\tselected={true}\n\t\t\t\t\t\t\tisIconClickable={true}\n\t\t\t\t\t\t\tremoveItemHandler={removeItemHandler(o?.id)}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tslotProps={{\n\t\t\t\t\t\t\t\tDM:{\n\t\t\t\t\t\t\t\t\tisShowDescription:false,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Box>\n\t\t\t\t)\n\t\t\t})}\n\t\t</Box>\n\t)\n}\n","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","export {default as GitHubPicker, type GitHubPickerVariant, type GitHubPickerColor} from './GitHubPicker'\nexport { OptionClass, type OptionParams, } from './_utils'"],"mappings":"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A,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,+BAAqC;AACrC,iCAAiC;AACjC,kCAAsC;AACtC,gCAAmC;AACnC,oBAAkC;AAClC,4BAAsC;AACtC,gCAA+C;AAC/C,iBAAiC;AACjC,wBAAmC;AACnC,sBAAmC;AACnC,kBAAkC;AAClC,uBAAmC;AACnC,6BAAmC;AACnC,oBAAoC;AACpC,wBAAwC;AACxC,yBAAiC;AACjC,qBAAqC;AACrC,iCAAmC;AACnC,qBAAoC;AACpC,8BAAuC;AACvC,qBAAoC;AACpC,uBAAiC;AACjC,uBAAuC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","names":["import_Typography","init_src","init_Typography","init_src","MuiButton","import_jsx_runtime","init_Button","init_theme","init_theme","init_src","init_Tooltip","init_src","import_jsx_runtime","init_Tooltip","MuiIconButton","init_theme","init_IconButton","init_theme","MuiChip","import_jsx_runtime","init_themes","init_Chip","init_themes","init_src","init_Chip","init_Chip","init_src","init_theme","init_Chip","init_theme","init_TagButton","init_src","init_Button","init_IconButton","init_TagButton","init_Button","init_src","init_src","init_src","import_PhotoSizeSelectLarge","import_Close","import_Person","import_DeleteForever","import_AccountTreeOutlined","import_styles","init_theme","import_jsx_runtime","init_Button","init_Typography","init_theme","import_react","import_jsx_runtime","init_states","Paper","import_jsx_runtime","init_themes","init_Paper","init_themes","init_src","init_Paper","init_Paper","init_src","import_styles","init_Paper","init_theme","id","Autocomplete","options","InputBase","import_react","import_Autocomplete","import_jsx_runtime","init_Typography","init_Button","init_states","import_react","init_Typography","init_Button","import_jsx_runtime","MuiBadge","init_theme","init_states","import_jsx_runtime"]}
|
|
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/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/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/Chip.tsx","../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/theme.ts","../src/components/elemental/Button/src/TagButton/TagButton.tsx","../src/components/elemental/Button/src/TagButton/index.ts","../src/components/elemental/Button/src/index.ts","../src/components/elemental/Button/index.ts","../src/components/elemental/Overlay/src/index.ts","../src/components/elemental/Overlay/index.ts","../src/components/Icons/MuiIcon/index.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/theme.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/OptionRenderer.tsx","../src/components/elemental/Autocomplete/src/GitHubPicker/states/states.tsx","../src/components/elemental/Autocomplete/src/GitHubPicker/states/index.ts","../src/components/elemental/Paper/src/Paper/Paper.tsx","../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/Autocomplete/src/GitHubPicker/popperTheme.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/_utils/_const.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/_utils/OptionClass.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/_utils/index.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/PopperMenu.tsx","../src/components/elemental/Autocomplete/index.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/GitHubPicker.tsx","../src/components/elemental/Badge/src/Badge/Badge.tsx","../src/components/elemental/Autocomplete/src/GitHubPicker/index.ts","../src/components/elemental/Autocomplete/src/Autocomplete/Autocomplete.tsx","../src/components/elemental/Input/src/TextField/index.ts","../src/components/elemental/Skeleton/MuiSkeleton/index.ts","../src/components/elemental/Skeleton/SoftSkeleton/SoftSkeleton.tsx","../src/components/elemental/Autocomplete/src/Autocomplete/theme.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'","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'","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 MuiChip, { type ChipProps } from '@mui/material/Chip'\n\n/**\n * A wrapper for Mui Chip\n */\nexport default function Chip({ color = 'default', ...props }: ChipProps) {\n return <MuiChip {...props} color={color} />\n}\n","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 const tagButtonVars = {\n\t'--tag-color': 'var(--mui-palette-text-grey-1)',\n\t'--tag-bg': 'var(--mui-palette-background-grey-1)',\n\t'--tag-bg-hover': 'var(--mui-palette-focus-soft-1)',\n} as const\n","'use client'\nimport { Chip } from '@/ele/Chip'\nimport { styled } from '@mui/material/styles'\nimport { tagButtonVars } from './theme'\n\n/**\n * A styled Mui Chip component\n * \n * [Doc](https://mui.com/material-ui/react-chip/)\n */\nconst TagButton = styled(Chip,{\n \n})(() => ({\n ...tagButtonVars,\n\n '&.MuiChip-root':{\n maxWidth: 'fit-content',\n textTransform: 'lowercase',\n color:'var(--tag-color)',\n fontStyle: 'italic',\n padding: '2px 4px',\n \n border:'none',\n borderRadius: 'var(--mui-shape-borderRadius)', // use theme shape token\n fontSize: '12px',\n lineHeight: '16px',\n height:'auto',\n width:'auto',\n boxShadow:'none',\n gap:'2px',\n \n background:'var(--tag-bg)',\n transition: 'none',\n \n borderWidth: '0px',\n '&.MuiChip-clickable:hover': {\n background: 'var(--tag-bg-hover)',\n boxShadow: 'none',\n },\n '& .MuiChip-icon': {\n color: 'var(--tag-color)',\n fontSize: '1rem',\n margin:'0',\n padding:'0',\n },\n '& .MuiChip-label': {\n padding: '0 1px',\n\n margin:'0',\n marginRight:'4px',\n },\n '& .MuiChip-deleteIcon': {\n fontSize: '1rem',\n borderRadius: '50%',\n color: 'var(--tag-color)',\n margin:'0',\n },\n\n '& .MuiSvgIcon-root':{\n fontSize: '1em',\n }\n },\n}))\nexport default TagButton","export {default as TagButton} from './TagButton'","export * from './Button'\nexport * from './IconButton'\nexport * from './TagButton'","export * from './src';","export { default as ClickAwayListener } from '@mui/material/ClickAwayListener';\nexport { default as Popper } from '@mui/material/Popper';\n","export * from './src';\n","// display\nexport {default as ArrowIcon} from '@mui/icons-material/ArrowRightAlt'\nexport {default as FileIcon} from '@mui/icons-material/DescriptionOutlined'\nexport {default as DescriptionIcon} from '@mui/icons-material/Description'\nexport {default as PictureAsPdfIcon} from '@mui/icons-material/PictureAsPdf'\nexport {default as AudioFileIcon} from '@mui/icons-material/AudioFile'\nexport {default as VideoFileIcon} from '@mui/icons-material/VideoFile'\nexport {default as TableChartIcon} from '@mui/icons-material/TableChart'\nexport {default as FolderZipIcon} from '@mui/icons-material/FolderZip'\nexport {default as InsertDriveFileIcon} from '@mui/icons-material/InsertDriveFile'\nexport {default as ImageIcon} from '@mui/icons-material/ImageOutlined'\nexport {default as LayersIcon} from '@mui/icons-material/LayersOutlined'\nexport {default as TextIcon} from '@mui/icons-material/TextFormat'\nexport {default as RemoveIcon} from '@mui/icons-material/Remove'\nexport {default as AddFileIcon} from '@mui/icons-material/PostAdd'\nexport {default as ErrorIcon} from '@mui/icons-material/ErrorOutline'\nexport {default as QuestionIcon} from '@mui/icons-material/QuestionMarkOutlined'\nexport {default as RoomIcon} from '@mui/icons-material/MeetingRoomOutlined'\nexport {default as BlacklistIcon} from '@mui/icons-material/PlaylistRemove'\nexport {default as WhitelistIcon} from '@mui/icons-material/ChecklistRtl'\nexport {default as NoImageIcon} from '@mui/icons-material/HideImageOutlined'\nexport {default as EyeIcon} from '@mui/icons-material/RemoveRedEyeTwoTone'\nexport {default as CropSizeIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as AdminIcon} from '@mui/icons-material/LockPersonOutlined'\nexport {default as UserIcon} from '@mui/icons-material/Person'\nexport {default as EmoticonIcon} from '@mui/icons-material/InsertEmoticon'\nexport {default as DisabledSelectionIcon} from '@mui/icons-material/RemoveDoneOutlined'\nexport {default as TagIcon} from '@mui/icons-material/Tag'\nexport {default as AudioIcon} from '@mui/icons-material/Audiotrack'\nexport {default as VideoIcon} from '@mui/icons-material/Videocam'\nexport {default as CodeIcon} from '@mui/icons-material/Code'\nexport {default as ChartIcon} from '@mui/icons-material/Equalizer'\nexport {default as TableIcon} from '@mui/icons-material/PivotTableChart'\nexport {default as SearchIcon} from '@mui/icons-material/Search'\nexport {default as DataObjectIcon} from '@mui/icons-material/DataObject'\nexport {default as A2ZIcon} from '@mui/icons-material/SortByAlpha'\nexport {default as ThumbUpIcon} from '@mui/icons-material/ThumbUp'\nexport {default as MoneyIcon} from '@mui/icons-material/AttachMoneyOutlined'\nexport {default as ServerIcon} from '@mui/icons-material/Storage'\nexport {default as CerticateIcon} from '@mui/icons-material/WorkspacePremium'\nexport {default as NumberIcon} from '@mui/icons-material/Numbers'\nexport {default as SumIcon} from '@mui/icons-material/Functions'\nexport {default as LightBulbIcon} from '@mui/icons-material/Lightbulb'\nexport {default as RotateIcon} from '@mui/icons-material/CropRotate'\nexport {default as ImageSzieScaleIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as CollectionIcon} from '@mui/icons-material/CollectionsBookmark'\nexport {default as HistoryIcon} from '@mui/icons-material/Schedule'\nexport {default as StyleIcon} from '@mui/icons-material/Style'\nexport {default as ARHorizontalIcon} from '@mui/icons-material/Crop169'\nexport {default as ARSquareIcon} from '@mui/icons-material/CropSquare'\nexport {default as VoiceIcon} from '@mui/icons-material/GraphicEqRounded'\nexport {default as MemoryIcon} from '@mui/icons-material/MemoryRounded'\n\n// button\nexport {default as AddCircleIcon} from '@mui/icons-material/AddCircleOutlineRounded'\nexport {default as AddIcon} from '@mui/icons-material/Add'\nexport {default as CloseIcon} from '@mui/icons-material/Close'\nexport {default as ExpandMoreIcon} from '@mui/icons-material/ExpandMore'\nexport {default as AutorenewIcon} from '@mui/icons-material/Autorenew'\nexport {default as CheckCircleIcon} from '@mui/icons-material/CheckCircle'\nexport {default as MenuIcon} from '@mui/icons-material/Menu'\nexport {default as MoreIcon} from '@mui/icons-material/MoreVert'\nexport {default as MoreHorizIcon} from '@mui/icons-material/MoreHoriz'\nexport {default as CopyIcon} from '@mui/icons-material/ContentCopy'\nexport {default as PasteIcon} from '@mui/icons-material/ContentPaste'\nexport {default as CloudIcon} from '@mui/icons-material/Cloud'\nexport {default as DownloadIcon} from '@mui/icons-material/DownloadOutlined'\nexport {default as DownloadDoneIcon} from '@mui/icons-material/DownloadDoneOutlined'\nexport {default as StartIcon} from '@mui/icons-material/StarBorderOutlined'\nexport {default as DeleteIcon} from '@mui/icons-material/DeleteForever'\nexport {default as LayerClearIcon } from '@mui/icons-material/LayersClear'\nexport {default as CheckIcon } from '@mui/icons-material/Check'\nexport {default as CheckAllIcon } from '@mui/icons-material/DoneAll'\nexport {default as PowerIcon } from '@mui/icons-material/PowerSettingsNew'\nexport {default as SendIcon } from '@mui/icons-material/Send'\nexport {default as ZoomInIcon } from '@mui/icons-material/ZoomInMap'\nexport {default as ZoomOutIcon } from '@mui/icons-material/ZoomOutMap'\nexport {default as ToolIcon } from '@mui/icons-material/HomeRepairService'\nexport {default as ConstructionIcon } from '@mui/icons-material/Construction'\nexport {default as HelpIcon } from '@mui/icons-material/Help'\nexport {default as ReportIcon } from '@mui/icons-material/EmojiFlags'\nexport {default as EditIcon } from '@mui/icons-material/Edit'\nexport {default as ForkIcon } from '@mui/icons-material/ForkRight'\nexport {default as SettingIcon } from '@mui/icons-material/Settings'\nexport {default as RestoreIcon } from '@mui/icons-material/Restore'\nexport {default as EditListIcon } from '@mui/icons-material/EditNote'\nexport {default as HomeIcon } from '@mui/icons-material/HomeOutlined'\nexport {default as EnterRoomIcon } from '@mui/icons-material/ExitToAppOutlined'\nexport {default as SunIcon} from '@mui/icons-material/WbSunnyOutlined'\nexport {default as MoonIcon} from '@mui/icons-material/DarkModeOutlined'\nexport {default as AttachFileIcon} from '@mui/icons-material/AttachFileOutlined'\nexport {default as NoteAddIcon} from '@mui/icons-material/NoteAdd'\nexport {default as CloudUploadIcon} from '@mui/icons-material/CloudUpload'\nexport {default as DoubleRightArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRight'\nexport {default as DoubleLeftArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowLeft'\nexport {default as DoubleArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRightRounded'\nexport {default as FitScreenIcon} from '@mui/icons-material/FitScreen'\nexport {default as FullscreenIcon} from '@mui/icons-material/Fullscreen'\nexport {default as TestIcon} from '@mui/icons-material/Biotech'\nexport {default as ShareIcon} from '@mui/icons-material/Share'\nexport {default as FilterIcon} from '@mui/icons-material/FilterAlt'\nexport {default as SyncIcon} from '@mui/icons-material/Sync'\nexport {default as PlayIcon} from '@mui/icons-material/PlayArrow'\nexport {default as PauseIcon} from '@mui/icons-material/PauseOutlined'\nexport {default as RandomIcon} from '@mui/icons-material/Casino'\nexport {default as CoinIcon} from '@mui/icons-material/Paid'\nexport {default as SaveChangesIcon} from '@mui/icons-material/Save'\nexport {default as StopIcon} from '@mui/icons-material/StopRounded'\nexport {default as ReplayIcon} from '@mui/icons-material/Replay'\nexport {default as TreeIcon} from '@mui/icons-material/AccountTree'\nexport {default as ClearIcon} from '@mui/icons-material/Close'\nexport {default as KeyboardArrowDownIcon} from '@mui/icons-material/KeyboardArrowDown'\nexport {default as KeyboardArrowRightIcon} from '@mui/icons-material/KeyboardArrowRight'\nexport {default as SearchRoundedIcon} from '@mui/icons-material/SearchRounded'\nexport {default as CloseRoundedIcon} from '@mui/icons-material/CloseRounded'\nexport {default as SortByAlphaRoundedIcon} from '@mui/icons-material/SortByAlphaRounded'\nexport {default as FilterAltOutlinedIcon} from '@mui/icons-material/FilterAltOutlined'\nexport {default as InboxOutlinedIcon} from '@mui/icons-material/InboxOutlined'\nexport {default as SearchOffIcon} from '@mui/icons-material/SearchOff'\nexport {default as ClearRoundedIcon} from '@mui/icons-material/ClearRounded'\nexport {default as ArrowDropDownRoundedIcon} from '@mui/icons-material/ArrowDropDownRounded'\n\n// login\nexport {default as AccountIcon} from '@mui/icons-material/AccountBox'\nexport {default as LogoutIcon} from '@mui/icons-material/Logout'\nexport {default as LoginIcon} from '@mui/icons-material/Login'\nexport {default as DashboardIcon} from '@mui/icons-material/Dashboard'\n\n//logo\nexport {default as WorkFlowIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as HelpOutlineIcon} from '@mui/icons-material/HelpOutline'\nexport {default as NavigateBeforeIcon} from '@mui/icons-material/NavigateBefore'\nexport {default as NavigateNextIcon} from '@mui/icons-material/NavigateNext'\nexport {default as PersonIcon} from '@mui/icons-material/Person'\nexport {default as CalendarTodayIcon} from '@mui/icons-material/CalendarToday'\nexport {default as ChatIcon} from '@mui/icons-material/QuestionAnswerOutlined'\nexport {default as TodayIcon} from '@mui/icons-material/Today'\nexport {default as DeleteForeverIcon} from '@mui/icons-material/DeleteForever'\n\nexport {default as AdsClickIcon} from '@mui/icons-material/AdsClick'\nexport {default as FingerprintIcon} from '@mui/icons-material/Fingerprint'\nexport {default as SportsEsportsOutlinedIcon} from '@mui/icons-material/SportsEsportsOutlined'\nexport {default as HelpOutlineRoundedIcon} from '@mui/icons-material/HelpOutlineRounded'\nexport {default as AccountTreeOutlinedIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as SmartToyOutlinedIcon} from '@mui/icons-material/SmartToyOutlined'\nexport {default as AcUnitIcon} from '@mui/icons-material/AcUnit'\nexport {default as LoopIcon} from '@mui/icons-material/Loop'\nexport {default as PendingIcon} from '@mui/icons-material/Pending'\nexport {default as AllInclusiveIcon} from '@mui/icons-material/AllInclusive'\nexport {default as WarningOutlinedIcon} from '@mui/icons-material/WarningOutlined'\nexport {default as InfoOutlinedIcon} from '@mui/icons-material/InfoOutlined'\nexport {default as AutoAwesomeRoundedIcon} from '@mui/icons-material/AutoAwesomeRounded'\nexport {default as ErrorOutlineOutlinedIcon} from '@mui/icons-material/ErrorOutlineOutlined'\nexport {default as DownloadFilledIcon} from '@mui/icons-material/Download'","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","'use client'\nimport { Box } from '@/ele/Box'\nimport { CheckIcon, CloseIcon } from '@/icons/MuiIcon'\nimport { IconButton } from '@/ele/Button'\nimport { Typography } from '@/ele/Typography'\nimport { TagButton } from '@/ele/Button'\n\nimport { OptionClass, type OptionId } from './_utils'\nimport { OptionBox } from './theme'\n\nconst ICON_STYLE = {\n\theight: 16,\n\twidth: 16,\n\topacity: 0.85,\n}\n\nexport default function OptionRenderer({\n\toption,\n\tisIconClickable = false,\n\tselected,\n\tdisabled,\n\tdisableBR = false,\n\tremoveItemHandler,\n\tslotProps = {},\n}: {\n\tselected: boolean;\n\tisIconClickable?: boolean;\n\tdisabled?: boolean;\n\tdisableBR?: boolean;\n\toption: OptionClass | null;\n\tremoveItemHandler?: (id: OptionId) => void;\n\tslotProps?: {\n\t\tDM?: Partial<React.ComponentProps<typeof DM>>;\n\t};\n}) {\n\tif (!option) return null;\n\n\treturn (\n\t\t<Wrapper selected={selected} isIconClickable={isIconClickable} disabled={disabled} disableBR={disableBR}>\n\t\t\t<Box\n\t\t\t\tsx={{\n\t\t\t\t\t'&.MuiBox-root': {\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\talignItems: 'var(--ai)',\n\t\t\t\t\t\tgap: isIconClickable ? '6px' : '10px',\n\t\t\t\t\t\tcursor: 'var(--curosr)',\n\t\t\t\t\t\tpadding: isIconClickable ? '3px 6px 3px 8px' : '8px 10px',\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<DM\n\t\t\t\t\toption={option}\n\t\t\t\t\tonDelete={removeItemHandler ? () => removeItemHandler(option.id) : undefined}\n\t\t\t\t\tisIconClickable={isIconClickable}\n\t\t\t\t\tselected={selected}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t{...slotProps.DM}\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t</Wrapper>\n\t)\n}\n\nfunction Wrapper({\n\tchildren,\n\tselected = false,\n\tisIconClickable = false,\n\tdisabled = false,\n\tdisableBR = false,\n}: {\n\tchildren: React.ReactNode;\n\tselected?: boolean;\n\tisIconClickable?: boolean;\n\tdisabled?: boolean;\n\tdisableBR?: boolean;\n}) {\n\treturn (\n\t\t<OptionBox selected={selected} isIconClickable={isIconClickable} disabled={disabled} disableBR={disableBR}>\n\t\t\t{children}\n\t\t</OptionBox>\n\t)\n}\n\nfunction ItemIcon({ option, compact }: { option: OptionClass; compact?: boolean }) {\n\tif (!option.icon) return null\n\n\treturn (\n\t\t<Box\n\t\t\tcomponent=\"span\"\n\t\t\tsx={{\n\t\t\t\tflexShrink: 0,\n\t\t\t\twidth: compact ? 18 : 28,\n\t\t\t\theight: compact ? 18 : 28,\n\t\t\t\tborderRadius: compact ? '50%' : '8px',\n\t\t\t\tdisplay: 'flex',\n\t\t\t\talignItems: 'center',\n\t\t\t\tjustifyContent: 'center',\n\t\t\t\talignSelf: 'center',\n\t\t\t\tbackgroundColor: compact ? 'transparent' : 'var(--picker-icon-well)',\n\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t'& svg': ICON_STYLE,\n\t\t\t}}\n\t\t>\n\t\t\t{option.icon}\n\t\t</Box>\n\t)\n}\n\nfunction ItemLabel({\n\toption,\n\tisShowDescription = false,\n\tcompact = false,\n}: {\n\toption: OptionClass;\n\tisShowDescription: boolean;\n\tcompact?: boolean;\n}) {\n\tconst isUseTag = option.tags.length > 0\n\tconst description = option.description?.trim()\n\tconst showSecondary = isShowDescription && (isUseTag || Boolean(description))\n\n\treturn (\n\t\t<Box\n\t\t\tsx={{\n\t\t\t\tflexGrow: 1,\n\t\t\t\tminWidth: 0,\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tflexDirection: 'column',\n\t\t\t\tjustifyContent: 'center',\n\t\t\t\tgap: showSecondary ? '2px' : 0,\n\t\t\t}}\n\t\t>\n\t\t\t<Typography\n\t\t\t\tcomponent=\"span\"\n\t\t\t\tsx={{\n\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\tfontSize: compact ? '0.8125rem' : '0.875rem',\n\t\t\t\t\tfontWeight: compact ? 500 : 600,\n\t\t\t\t\tlineHeight: 1.3,\n\t\t\t\t\tletterSpacing: compact ? 0 : '0.01em',\n\t\t\t\t\tcolor: 'var(--picker-text)',\n\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\tm: 0,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{option.label}\n\t\t\t</Typography>\n\t\t\t{showSecondary ? (\n\t\t\t\tisUseTag ? (\n\t\t\t\t\t<Box sx={{ display: 'flex', gap: '4px', flexWrap: 'wrap', pt: 0.25 }}>\n\t\t\t\t\t\t{option.tags.map((tag, i) => (\n\t\t\t\t\t\t\t<TagButton\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tlabel={(tag?.tagIcon ? '' : '# ') + tag.tagName}\n\t\t\t\t\t\t\t\ticon={tag?.tagIcon ?? undefined}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Box>\n\t\t\t\t) : (\n\t\t\t\t\t<Typography\n\t\t\t\t\t\tcomponent=\"span\"\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\t\t\tfontSize: '0.75rem',\n\t\t\t\t\t\t\tlineHeight: 1.35,\n\t\t\t\t\t\t\tcolor: 'var(--option-subscript)',\n\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\tm: 0,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{description}\n\t\t\t\t\t</Typography>\n\t\t\t\t)\n\t\t\t) : null}\n\t\t</Box>\n\t)\n}\n\nfunction DM({\n\toption,\n\tselected,\n\tonDelete,\n\talwaysShowEndIcon = false,\n\tisIconClickable = false,\n\tdisabled = false,\n\tendIcon = null,\n\tisShowEndIcon = true,\n\tisShowDescription = true,\n}: {\n\toption: React.ComponentProps<typeof ItemIcon>['option'];\n\tisShowDescription?: React.ComponentProps<typeof ItemLabel>['isShowDescription'];\n\tselected?: boolean;\n\tisIconClickable?: boolean;\n\tisShowEndIcon?: boolean;\n\tdisabled: React.ComponentProps<typeof IconButton>['disabled'];\n\tonDelete?: React.ComponentProps<typeof IconButton>['onClick'];\n\talwaysShowEndIcon?: boolean;\n\tendIcon?: React.ReactNode | null;\n}) {\n\tconst showClose = Boolean(isShowEndIcon && isIconClickable && (selected || alwaysShowEndIcon))\n\tconst showCheck = Boolean(isShowEndIcon && !isIconClickable && selected)\n\n\treturn (\n\t\t<>\n\t\t\t<ItemIcon option={option} compact={isIconClickable} />\n\t\t\t<ItemLabel option={option} isShowDescription={isShowDescription} compact={isIconClickable} />\n\t\t\t{showClose ? (\n\t\t\t\t<IconButton\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-label={`Remove ${option.label}`}\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\tonDelete?.(event)\n\t\t\t\t\t}}\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tpadding: '2px',\n\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\tcursor: disabled ? 'default' : 'pointer',\n\t\t\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\tbackgroundColor: 'var(--picker-hover-bg)',\n\t\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\t\tcolor: 'var(--picker-text)',\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{endIcon ?? <CloseIcon sx={{ fontSize: '0.95rem' }} />}\n\t\t\t\t</IconButton>\n\t\t\t) : null}\n\t\t\t{showCheck ? (\n\t\t\t\t<Box\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\talignSelf: 'center',\n\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\tcolor: 'var(--picker-check)',\n\t\t\t\t\t\tpl: 0.5,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{endIcon ?? <CheckIcon sx={{ fontSize: '1.05rem' }} />}\n\t\t\t\t</Box>\n\t\t\t) : null}\n\t\t</>\n\t)\n}\n","'use client'\nimport { createContext, useContext, useState, useCallback, useMemo, useEffect, useRef } from 'react'\n\nimport { \n type MinimalOption, type AutoCompleteOptionIds,\n type OptionIds,\n OptionClass,\n} from '../_utils'\n\nexport type StateType = {\n ids: AutoCompleteOptionIds,\n minimal: MinimalOption[] | MinimalOption | null,\n isMultiple: boolean,\n}\n\ntype ContextType = {\n\tstate: StateType;\n select: (option: MinimalOption | MinimalOption[] | null) => StateType;\n}\nconst Context = createContext<ContextType | null>(null);\nexport const useStateContext = () => {\n const ctx = useContext(Context)\n if (!ctx) throw new Error('useStateContext must be used within LocalSelectedProvider')\n return ctx\n}\n\nexport const Provider = ({children,selectedIds,options,isMultiple,open=false}:{\n children:React.ReactNode,\n selectedIds:Parameters<typeof init>[0]['selectedIds'],\n options:Parameters<typeof init>[0]['options'],\n isMultiple:Parameters<typeof init>[0]['isMultiple'],\n open?: boolean,\n}) => {\n // Initialize state once\n\tconst [state, setState] = useState<StateType>(() => init({selectedIds,options,isMultiple}))\n const stateRef = useRef(state)\n stateRef.current = state\n\n // Keep provider state in sync when parent-driven selectedIds/options/isMultiple change.\n // While open, skip identity-driven re-init so accumulating picks are not wiped\n // by a stale parent selectedIds array.\n useEffect(() => {\n const next = init({ selectedIds, options, isMultiple })\n if (equalState(stateRef.current, next)) return\n if (open) return\n stateRef.current = next\n setState(next)\n }, [selectedIds, options, isMultiple, open]);\n\n // Compute next state as a pure function — used both in setState and as return value\n const computeNextState = useCallback((prev: StateType, option: MinimalOption | MinimalOption[] | null): StateType => {\n if (prev.isMultiple) {\n const newOptions = Array.isArray(option) ? option : []\n return { ...prev, ids: newOptions.map(o => o.id), minimal: newOptions }\n }\n const newOption = option && !Array.isArray(option) ? option : null\n return { ...prev, ids: newOption?.id ?? null, minimal: newOption }\n }, [])\n\n const select = useCallback((option: MinimalOption | MinimalOption[] | null): StateType => {\n let produced: StateType | undefined\n setState((prev) => {\n produced = computeNextState(prev, option)\n stateRef.current = produced\n return produced\n })\n // React skips the eager updater when updates are already queued; chain from the ref.\n if (produced === undefined) {\n produced = computeNextState(stateRef.current, option)\n stateRef.current = produced\n }\n return produced\n }, [computeNextState])\n\n const value = useMemo(() => ({ state, select }), [state, select])\n\n\treturn (\n\t\t<Context.Provider value={value}>\n\t\t\t{children}\n\t\t</Context.Provider>\n\t)\n}\n\nexport const useSelector = () => {\n const {state} = useStateContext()\n return <T extends keyof StateType>(key:T) => {\n return state[key]\n }\n}\n/**\n * Initialize the local state\n */\nfunction init({\n selectedIds, \n options,\n isMultiple,\n}:{\n selectedIds:OptionIds, \n options:OptionClass[],\n isMultiple:boolean,\n}):StateType{\n return {\n ids: isMultiple?selectedIds : selectedIds[0]??null,\n minimal: isMultiple?options\n .filter(o=>selectedIds.includes(o.id))\n .map(o=>o.minimal())\n :options.find(o=>o.id===selectedIds[0])?.minimal()??null,\n isMultiple: isMultiple,\n }\n}\n\nfunction equalIds(a: AutoCompleteOptionIds, b: AutoCompleteOptionIds): boolean {\n if (a === b) return true\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((id, i) => id === b[i])\n }\n return false\n}\n\nfunction equalMinimalOption(a: MinimalOption, b: MinimalOption): boolean {\n return a.id === b.id\n && a.label === b.label\n && a.filterKey === b.filterKey\n && a.disabled === b.disabled\n && a.group === b.group\n && a.value === b.value\n}\n\nfunction equalMinimal(\n a: StateType['minimal'],\n b: StateType['minimal'],\n): boolean {\n if (a === b) return true\n if (a == null || b == null) return false\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((opt, i) => equalMinimalOption(opt, b[i]))\n }\n if (!Array.isArray(a) && !Array.isArray(b)) {\n return equalMinimalOption(a, b)\n }\n return false\n}\n\nfunction equalState(a: StateType, b: StateType): boolean {\n return a.isMultiple === b.isMultiple\n && equalIds(a.ids, b.ids)\n && equalMinimal(a.minimal, b.minimal)\n}","export {\n Provider as LocalSelectedProvider,\n useStateContext as useLocalSelectedContext,\n useSelector as useLocalSelectedSelector,\n type StateType,\n} from './states';","import Paper, { type PaperProps } from '@mui/material/Paper'\n\n/**\n * A wrapper for Mui Paper\n */\nexport default function MuiPaper(props: PaperProps) {\n return <Paper {...props} />\n}\n","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 { SxProps, Theme } from '@mui/material/styles'\nimport { styled } from '@mui/material/styles'\nimport { Popper } from '@/ele/Overlay'\nimport { autocompleteClasses } from '@mui/material/Autocomplete'\nimport { Paper } from '@/ele/Paper'\nimport { gitHubPickerRootStyle } from './theme'\n\nexport const PickerPopper = styled(Popper)(({ theme }) => ({\n\t...gitHubPickerRootStyle,\n\twidth: 'var(--w)',\n\tminWidth: 280,\n\tzIndex: theme.zIndex.modal,\n\tfontSize: 13,\n\toverflow: 'hidden',\n\tborderRadius: 14,\n\tborder: '1px solid var(--picker-border)',\n\tbackgroundColor: 'var(--mui-palette-background-paper)',\n\tbackgroundImage: 'none',\n\tboxShadow: 'var(--picker-shadow)',\n\tbackdropFilter: 'none',\n\tWebkitBackdropFilter: 'none',\n\t'--picker-blur': '0px',\n\t'--picker-glass': 'none',\n}))\n\nexport const PickerOptionLi = styled('li')(() => ({\n\t...gitHubPickerRootStyle,\n\t[`.${autocompleteClasses.listbox} &.${autocompleteClasses.option}`]: {\n\t\tpadding: 0,\n\t\tmargin: '2px 6px',\n\t\tborderRadius: 10,\n\t\tminHeight: 0,\n\t},\n\t[`\n\t\t&.${autocompleteClasses.option},\n\t\t&.${autocompleteClasses.option}[aria-selected=\"true\"],\n\t`]: {\n\t\tbackgroundColor: 'transparent',\n\t},\n\t[`\n\t\t&.${autocompleteClasses.option}:hover,\n\t\t&.${autocompleteClasses.option}[aria-selected=\"true\"]:hover,\n\t`]: {\n\t\tbackgroundColor: 'var(--picker-hover-bg)',\n\t},\n\t[`\n\t\t&.${autocompleteClasses.option}.${autocompleteClasses.focused},\n\t\t&.${autocompleteClasses.option}.${autocompleteClasses.focused}[aria-selected=\"true\"]\n\t`]: {\n\t\tbackgroundColor: 'var(--picker-focus-soft)',\n\t},\n\t[`&.${autocompleteClasses.option}[aria-selected=\"true\"]`]: {\n\t\tbackgroundColor: 'var(--picker-focus-soft)',\n\t\tboxShadow: 'inset 0 1px 0 var(--picker-highlight)',\n\t},\n}))\n\nexport const PickerPaper = styled(Paper)({\n\t...gitHubPickerRootStyle,\n\tborderRadius: 14,\n\tborder: 'none',\n\t'--paper-bg': 'transparent',\n\tbackgroundColor: 'transparent',\n\tbackgroundImage: 'none',\n\tboxShadow: 'none',\n\t'&.MuiPaper-root': {\n\t\t'--paper-bg': 'transparent',\n\t\tbackgroundColor: 'transparent',\n\t\tbackgroundImage: 'none',\n\t\tboxShadow: 'none',\n\t\tborder: 'none',\n\t},\n})\n\nexport const pickerSearchSx = {\n\tdisplay: 'flex',\n\talignItems: 'center',\n\tgap: 1,\n\tmx: 1,\n\tmt: 0.5,\n\tmb: 0.75,\n\tpx: 1.25,\n\tpy: 0.5,\n\tborderRadius: 2,\n\tbackgroundColor: 'var(--picker-search-bg)',\n\tborder: '1px solid var(--picker-search-border)',\n\tboxShadow: 'var(--picker-search-shadow)',\n\t'& .MuiInputBase-root': {\n\t\tfontSize: '0.875rem',\n\t\tcolor: 'var(--picker-text)',\n\t},\n\t'& .MuiInputBase-input': {\n\t\tpy: 0.6,\n\t\t'&::placeholder': {\n\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\topacity: 0.8,\n\t\t},\n\t},\n} as const satisfies SxProps<Theme>\n\nexport const pickerGroupLabelSx = {\n\tposition: 'sticky',\n\t// Align with Autocomplete: quiet solid fill, Paper top radius, no backdrop-filter.\n\ttop: -8,\n\tzIndex: 2,\n\tpx: 1.75,\n\tpt: 1.25,\n\tpb: 0.5,\n\tfontSize: '0.66rem',\n\tfontWeight: 700,\n\tletterSpacing: '0.08em',\n\ttextTransform: 'uppercase',\n\tlineHeight: 1.4,\n\tcolor: 'var(--picker-text-secondary)',\n\t// Quieter than opaque paper — closer to glass paper; still covers scroll. No blur.\n\tbackground: 'color-mix(in lab, var(--mui-palette-background-paper), var(--picker-paper-bg) 36%)',\n\tbackgroundColor: 'color-mix(in lab, var(--mui-palette-background-paper), var(--picker-paper-bg) 36%)',\n\tbackdropFilter: 'none',\n\tWebkitBackdropFilter: 'none',\n\tborderTopLeftRadius: 14,\n\tborderTopRightRadius: 14,\n\tborderBottom: '1px solid color-mix(in lab, var(--picker-border), transparent 28%)',\n\tboxShadow: 'none',\n} as const satisfies SxProps<Theme>\n","export const CONFIRM_ID = \"deleteOption-confirmation\"\n\nexport const OPTION_CONSTRAINTS = {\n group: 20,\n label: 20,\n value: 100,\n description: 100\n} as const\n\nexport const MY_LOCAL_DISABLE_GROUP = \"My Local Disable Group - c7EgCbQ9T1\"\nexport const DISABLED_GROUP = \"Disabled\"","import { randomStrGenerator } from '@/_utils/_func'\n\nimport type { OptionParams, MinimalOption } from './_types'\nimport { DISABLED_GROUP } from './_const'\n\nexport default class Option {\n\tid: NonNullable<OptionParams[\"id\"]>;\n\tlabel: NonNullable<OptionParams[\"label\"]>;\n\tdescription: NonNullable<OptionParams[\"description\"]>;\n\tdisabled: NonNullable<OptionParams[\"disabled\"]>;\n\tgroup: NonNullable<OptionParams[\"group\"]>;\n\ticon: NonNullable<OptionParams[\"icon\"]> | null;\n\tfilterKey: NonNullable<OptionParams[\"filterKey\"]>;\n\tvalue: NonNullable<OptionParams[\"value\"]>;\n\tdefaultSelected: NonNullable<OptionParams[\"defaultSelected\"]>;\n\totherProps: NonNullable<OptionParams[\"otherProps\"]>;\n\ttags: NonNullable<OptionParams[\"tags\"]>;\n\n\tconstructor(p: OptionParams) {\n\t\tthis.id = p.id ?? randomStrGenerator();\n\t\tthis.label = p.label ?? 'label';\n\t\tthis.description = p.description ?? 'description';\n\t\tthis.disabled = p.disabled ?? false;\n\t\tthis.group = p.group ?? 'group';\n\t\tthis.icon = p.icon ?? null;\n\t\tthis.filterKey = p.filterKey || defaultGetFilterKey(p);\n\t\tthis.defaultSelected = p.defaultSelected ?? false;\n\t\tthis.value = p.value ?? \"\";\n\n\t\tthis.otherProps = p.otherProps ?? {};\n\t\tthis.tags = p.tags ?? [];\n\t}\n\n\tminimal():MinimalOption{\n\t\treturn {\n\t\t\tid: this.id,\n\t\t\tlabel: this.label,\n\t\t\tfilterKey: this.filterKey,\n\t\t\tdisabled: this.disabled,\n\t\t\tgroup: this.group,\n\t\t\tvalue: this.value,\n\t\t}\n\t}\n}\n\nfunction defaultGetFilterKey(p: OptionParams): string {\n\tconst tagsStr = p.tags?.map(t=>t.tagName).join(\" \") ?? \"\";\n\treturn `${p.group ?? \"\"} ${p.label ?? \"\"} ${p.description ?? \"\"} ${p.value ?? \"\"} ${p.disabled?DISABLED_GROUP:\"\"} ${tagsStr}`;\n}","export type {\n EditorRef,\n OptionId, OptionIds,\n AutoCompleteOptionIds,\n OptionParams,\n MinimalOption,\n} from './_types'\n\nexport * from './_const'\n\nexport {\n default as OptionClass,\n} from './OptionClass'","\"use client\"\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport { Popper } from '@/ele/Overlay'\nimport type { PopperProps } from '@mui/material/Popper'\nimport Autocomplete, { autocompleteClasses, AutocompletePopperSlotPropsOverrides } from '@mui/material/Autocomplete'\nimport InputBase from '@mui/material/InputBase'\nimport { Box } from '@/ele/Box'\nimport { Typography } from '@/ele/Typography'\nimport { Button } from '@/ele/Button'\n\nimport { SearchIcon, DisabledSelectionIcon, AddIcon } from '@/icons/MuiIcon'\n\nimport OptionRenderer from './OptionRenderer'\nimport { PickerPopper, PickerOptionLi, PickerPaper, pickerSearchSx, pickerGroupLabelSx } from './popperTheme'\nimport { \n\tOptionClass, type MinimalOption, \n\tMY_LOCAL_DISABLE_GROUP, DISABLED_GROUP,\n} from './_utils'\nimport {\n\tuseLocalSelectedContext,\n\tuseLocalSelectedSelector,\n} from './states'\nimport type { StateType } from './states'\n\n/**\n * A popper menu for the GitHubPicker only\n */\nexport default function MyPopper({\n\tid,\n\tlistboxId,\n\tanchorEl,\n\tallMinimalOptions,\n\toptions,\n\tcloseHandler,\n\ttitle,\n\tplacement = 'bottom-start',\n\tmultiple = true,\n\tdisabled = false,\n\tuseGroup,\n\tisAddOptionEnabled,\n\taddOptionHandler,\n\tisPopperFreezed,\n}: {\n\tid: string;\n\tlistboxId: string;\n\tanchorEl: HTMLElement | null;\n\tallMinimalOptions: MinimalOption[];\n\toptions: OptionClass[];\n\tcloseHandler?: (newState?: StateType) => void;\n\ttitle?: React.ReactNode;\n\tplacement?: React.ComponentProps<typeof Popper>['placement'];\n\tmultiple?: React.ComponentProps<typeof Autocomplete>['multiple'];\n\tdisabled?: React.ComponentProps<typeof Autocomplete>['disabled'];\n\tuseGroup?: boolean;\n\tisAddOptionEnabled?: boolean;\n\taddOptionHandler?: () => void;\n\tisPopperFreezed?: boolean;\n}) {\n\tconst minimal = useLocalSelectedSelector()(\"minimal\")\n\tconst { select } = useLocalSelectedContext()\n\tconst [query, setQuery] = useState('')\n\tconst open = Boolean(anchorEl)\n\tconst listboxRef = useRef<HTMLUListElement | null>(null)\n\tconst pinnedScrollTop = useRef<number | null>(null)\n\n\tuseEffect(() => {\n\t\tif (open) setQuery('')\n\t}, [open])\n\n\tuseLayoutEffect(() => {\n\t\tif (!open) {\n\t\t\tpinnedScrollTop.current = null\n\t\t\treturn\n\t\t}\n\t\tconst list = listboxRef.current\n\t\tconst top = pinnedScrollTop.current\n\t\tif (list == null || top == null) return\n\t\tlist.scrollTop = top\n\t\tconst id = window.requestAnimationFrame(() => {\n\t\t\tif (listboxRef.current) listboxRef.current.scrollTop = top\n\t\t\tpinnedScrollTop.current = null\n\t\t})\n\t\treturn () => window.cancelAnimationFrame(id)\n\t}, [open, minimal])\n\n\tuseEffect(() => {\n\t\tif (!open) return\n\t\tconst id = window.setTimeout(() => {\n\t\t\tif (listboxRef.current) listboxRef.current.scrollTop = 0\n\t\t}, 30)\n\t\treturn () => window.clearTimeout(id)\n\t}, [open])\n\n\t// handle change for autocomplete -> local change\n\tconst handleChange:React.ComponentProps<typeof Autocomplete>[\"onChange\"] = (event, newValue, reason) => {\n\t\tif(\n\t\t\tevent.type === 'keydown' &&\n\t\t\treason === 'removeOption'\n\t\t) {\n\t\t\t// avoid the default behavior\n\t\t\treturn\n\t\t}\n\n\t\t\tif (listboxRef.current) {\n\t\t\t\tpinnedScrollTop.current = listboxRef.current.scrollTop\n\t\t\t}\n\n\t\t\tif (!multiple && (newValue == null || newValue === '')) {\n\t\t\t\tconst cleared = select(null)\n\t\t\t\tif (!isPopperFreezed) closeHandler?.(cleared)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst currentId = !multiple && minimal && !Array.isArray(minimal) ? minimal.id : null\n\t\t\tconst nextOption = Array.isArray(newValue) ? newValue[0] : newValue\n\t\t\tif (!multiple && currentId && nextOption && nextOption.id === currentId) {\n\t\t\t\tconst cleared = select(null)\n\t\t\t\tif (!isPopperFreezed) closeHandler?.(cleared)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// update the local state and get the new state synchronously\n\t\t\tconst newState = select(newValue as (MinimalOption|MinimalOption[]))\n\t\t\t// close the popper if not multiple and pass the updated state\n\t\t\tif(!multiple && !isPopperFreezed){\n\t\t\t\tcloseHandler?.(newState)\n\t\t\t}\n\t}\n\n\tconst popperId = open ? id : undefined\n\tconst popperWidth = Math.max(anchorEl?.offsetWidth ?? 320, 320)\n\n\treturn (\n\t\t<PickerPopper\n\t\t\tid={popperId}\n\t\t\topen={open}\n\t\t\tanchorEl={anchorEl}\n\t\t\tdisablePortal\n\t\t\tplacement={placement}\n\t\t\tstyle={{ '--w': `${popperWidth}px` } as React.CSSProperties}\n\t\t\tmodifiers={[\n\t\t\t\t{ name: 'offset', options: { offset: [0, 8] } },\n\t\t\t\t{ name: 'preventOverflow', options: { padding: 8 } },\n\t\t\t]}\n\t\t>\n\t\t\t\t<PickerPaper elevation={0} variant=\"outlined\">\n\t\t\t\t{title ? (\n\t\t\t\t\t<Box sx={{ px: 1.75, pt: 1.5, pb: 0.5 }}>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\tfontSize: '0.78rem',\n\t\t\t\t\t\t\t\tfontWeight: 600,\n\t\t\t\t\t\t\t\tletterSpacing: '0.02em',\n\t\t\t\t\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t\t\t\t\tm: 0,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t) : null}\n <Autocomplete\n open={open}\n disabled={disabled}\n multiple={multiple}\n\t\t\t\t\tonClose={(_event, reason) => {\n\t\t\t\t\t\tif (reason === 'escape' && !isPopperFreezed) {\n\t\t\t\t\t\t\tcloseHandler?.()\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n value={multiple\n ? (Array.isArray(minimal) ? minimal : [])\n : (minimal && !Array.isArray(minimal) ? minimal : null)\n }\n inputValue={query}\n onInputChange={(_, value, reason) => {\n if (reason === 'reset') return\n setQuery(value)\n }}\n onChange={handleChange}\n disableCloseOnSelect={Boolean(multiple)}\n selectOnFocus={false}\n clearOnBlur={false}\n slots={{\n popper: PopperComponent,\n paper: ListSurface,\n }}\n slotProps={{\n listbox:{\n id: listboxId,\n sx:{\n\t\t\t\t\t\t\t\tmaxHeight: 320,\n\t\t\t\t\t\t\t\tpy: 0.5,\n\t\t\t\t\t\t\t\toverflowX: 'hidden',\n\t\t\t\t\t\t\t\toverflowAnchor: 'none',\n\t\t\t\t\t\t\t},\n ref: listboxRef,\n },\n }}\n noOptionsText=\"No matches\"\n\n renderOption={(liProps, option, { selected }, ownerState )=>{\n const { key, onClick, ...optionProps } = liProps\n // find the option with full data from the minimal option\n // including the icon\n const fullOption = options.find(o => o.id === option.id)\n\n return (\n <PickerOptionLi\n key={key}\n {...optionProps}\n onClick={(event) => {\n if (!multiple && selected) {\n event.preventDefault()\n event.stopPropagation()\n if (listboxRef.current) {\n pinnedScrollTop.current = listboxRef.current.scrollTop\n }\n const cleared = select(null)\n if (!isPopperFreezed) closeHandler?.(cleared)\n return\n }\n onClick?.(event)\n }}\n >\n <OptionRenderer \n disableBR\n option={fullOption??null}\n selected={selected}\n disabled={ownerState.disabled || option.disabled}\n slotProps={{\n DM:{\n isShowEndIcon:true,\n isShowDescription:true,\n },\n }}\n />\n </PickerOptionLi>)\n }}\n options={allMinimalOptions}\n \n groupBy={useGroup?\n ((option:MinimalOption) => option.disabled? MY_LOCAL_DISABLE_GROUP : option.group)\n :undefined\n }\n getOptionLabel={(option:MinimalOption) => option.label} // display the label\n getOptionKey={(option:MinimalOption) => option.id}\n getOptionDisabled={(option:MinimalOption) => option.disabled??false}\n isOptionEqualToValue={(option:MinimalOption, value) => option.id === value?.id}\n filterOptions={(options, { inputValue }) => { // filter the options\n return options.filter(option => {\n // use the filter key to search\n const filterKey = option.filterKey.toLowerCase()\n // split the input value by space and check if all the words are in the filter key\n const inputVal = inputValue.toLowerCase().split(\" \")\n // if all the words are in the filter key, return true\n return inputVal.every(val => filterKey.includes(val))\n })\n }}\n\n renderInput={(params) => {\n return(\n <Box ref={params.InputProps.ref} sx={pickerSearchSx}>\n\t\t\t\t\t\t\t<SearchIcon sx={{ fontSize: 18, color: 'var(--picker-text-secondary)', flexShrink: 0 }} />\n <InputBase\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\t\t\t\tvalue={query}\n\t\t\t\t\t\t\t\tonChange={(event) => setQuery(event.target.value)}\n\t\t\t\t\t\t\t\tinputProps={{\n\t\t\t\t\t\t\t\t\t...params.inputProps,\n\t\t\t\t\t\t\t\t\tvalue: query,\n\t\t\t\t\t\t\t\t\tonBlur:(e: React.FocusEvent<HTMLInputElement>)=>{\n\t\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n />\n </Box>\n )}} \n \n renderGroup={(p)=>{\n\n return <li key={p.key}>\n <Box className={`${autocompleteClasses.groupLabel}`} sx={pickerGroupLabelSx}>\n\t\t\t\t\t\t\t\t{p.group === MY_LOCAL_DISABLE_GROUP?\n <Box component=\"span\" sx={{display:\"flex\",alignItems:\"center\",gap:1}}><DisabledSelectionIcon sx={{ fontSize: 14 }} />{DISABLED_GROUP}</Box>\n :p.group}\n </Box>\n\n <Box component=\"ul\" sx={{padding:0, margin: 0}} className={`${autocompleteClasses.groupUl}`}>{p.children}</Box>\n </li>\n }}\n />\n\t\t\t\t{isAddOptionEnabled ? (\n\t\t\t\t\t<Box\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tborderTop: '1px solid var(--picker-divider)',\n\t\t\t\t\t\t\tpx: 0.75,\n\t\t\t\t\t\t\tpy: 0.5,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tstartIcon={<AddIcon />}\n\t\t\t\t\t\t\tonClick={addOptionHandler}\n\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\tjustifyContent: 'flex-start',\n\t\t\t\t\t\t\t\tpx: 1,\n\t\t\t\t\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t\t\t\t\tfontWeight: 600,\n\t\t\t\t\t\t\t\tletterSpacing: '0.02em',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tNew option\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Box>\n\t\t\t\t) : null}\n </PickerPaper>\n\t\t</PickerPopper>\n\t)\n}\n\n/**\n * A popper component for the Autocomplete\n * \n * must be a separate component to avoid re-rendering the popper\n */\nfunction ListSurface({\n children,\n ...other\n}: {\n children?: React.ReactNode\n} & React.HTMLAttributes<HTMLDivElement>) {\n return (\n <Box {...other} sx={{ boxShadow: 'none', backgroundColor: 'transparent' }}>\n {children}\n </Box>\n )\n}\n\nfunction PopperComponent(props: PopperProps & AutocompletePopperSlotPropsOverrides) {\n const { children, sx, ...other } = props;\n\n // Render a simple container instead of a Popper so the consumer can\n // wrap the Autocomplete in an external Popper. If `sx` is a function we\n // don't evaluate it here (keep behavior simple and type-safe).\n const evaluatedSx = typeof sx === 'function' ? {} : sx;\n const content = typeof children === 'function' ? (children as () => React.ReactNode)() : children;\n\n return (\n <Box {...other} sx={evaluatedSx}>\n {content}\n </Box>\n );\n}\n","export * from './src'","'use client'\nimport {useState, useMemo, useId, Suspense, lazy} from 'react'\nimport { Box } from '@/ele/Box'\nimport { Typography } from '@/ele/Typography'\nimport { IconButton } from '@/ele/Button'\nimport { Badge } from '@/ele/Badge'\nimport { ClickAwayListener } from '@/ele/Overlay'\nimport { FilterIcon, KeyboardArrowDownIcon } from '@/icons/MuiIcon'\nimport { sortByKey } from '@/_utils/_func'\n\nimport OptionRenderer from './OptionRenderer'\nimport { PickerField, gitHubPickerRootSx } from './theme'\nimport {\n\tOptionClass,\n\ttype OptionId, type OptionIds,\n\ttype MinimalOption,\n} from './_utils'\nimport {\n\tLocalSelectedProvider, useLocalSelectedContext,\n} from './states'\n\nconst PopperMenu = lazy(() => import('./PopperMenu'))\ntype PopperMenuProps = React.ComponentProps<typeof import('./PopperMenu').default>\n\nexport type GitHubPickerVariant = 'field' | 'icon'\nexport type GitHubPickerColor =\n\t| 'primary'\n\t| 'secondary'\n\t| 'error'\n\t| 'info'\n\t| 'success'\n\t| 'warning'\n\t| 'system'\n\t| 'insight'\n\nconst PICKER_ACCENT: Record<GitHubPickerColor, string> = {\n\tprimary: 'var(--mui-palette-primary-emphasis)',\n\tsecondary: 'var(--mui-palette-secondary-main)',\n\terror: 'var(--mui-palette-error-main)',\n\tinfo: 'var(--mui-palette-info-main)',\n\tsuccess: 'var(--mui-palette-success-main)',\n\twarning: 'var(--mui-palette-warning-main)',\n\tsystem: 'var(--mui-palette-system-main)',\n\tinsight: 'var(--mui-palette-insight-main)',\n}\n\ntype GitHubPickerProps = Omit<React.ComponentProps<typeof Picker>,\"localStates\" | \"anchorEl\" | \"setAnchorEl\"> & {\n multiple?: boolean;\n /** `field` is the full selector. `icon` is a compact IconButton with a badge. */\n variant?: GitHubPickerVariant;\n}\n/**\n * Field + catalog autocomplete. Searchable grouped options with\n * chip-based selected values. Pass `variant=\"icon\"` for a compact trigger.\n *\n * [Doc](https://mui.com/material-ui/api/autocomplete/)\n *\n * @param selectedIdProps - is always an array of ids\n * @param options.filterKey - is for searching\n */\nexport default function GitHubPicker({\n\tmultiple=true,\n\t...p\n}:GitHubPickerProps){\n\tconst _selectedIdProps = p.selectedIdProps[0]\n\tconst [anchorEl, setAnchorEl] = useState<HTMLElement|null>(null)\n\n\treturn (<LocalSelectedProvider selectedIds={_selectedIdProps} options={p.options} isMultiple={multiple} open={Boolean(anchorEl)}>\n\t\t<Picker {...p} multiple={multiple} anchorEl={anchorEl} setAnchorEl={setAnchorEl}/>\n\t</LocalSelectedProvider>)\n}\n\nfunction Picker(p:{\n\tselectedIdProps: [OptionIds, React.Dispatch<React.SetStateAction<OptionIds>>];\n\toptions: OptionClass[];\n\tadditionSort?: Parameters<typeof getMinimalOptions>[1]; // sort function for groups\n\n\tonChange: (ids: OptionIds) => void;\n\tonDelete: (id: OptionId) => void;\n\terror?: boolean;\n\ttitle?: string;\n\tsubtitle?: string;\n\ttitleIcon?: React.ReactNode;\n\n\tmultiple?: boolean; // allow multiple selection\n\tdisabled?: boolean;\n\n\tuseGroup?: boolean; // group the options\n\tisAddOptionEnabled?: boolean; // allow adding new option\n\taddOptionHandler?:PopperMenuProps[\"addOptionHandler\"]; // handler for adding new option\n\n\tisPopperFreezed?:PopperMenuProps[\"isPopperFreezed\"]; // disable the popper\n\tvariant?: GitHubPickerVariant;\n\t/** Icon, badge, and field accent. `error` still wins when true. */\n\tcolor?: GitHubPickerColor;\n\tanchorEl: HTMLElement | null;\n\tsetAnchorEl: React.Dispatch<React.SetStateAction<HTMLElement | null>>;\n}){\n const {\n selectedIdProps,\n options=[], // options for rendering and autocomplete\n additionSort,\n\n title, subtitle,\n titleIcon,\n onChange, onDelete,\n error=false,\n multiple, // default value set in Parent\n disabled=false,\n useGroup=true,\n isAddOptionEnabled=false,\n addOptionHandler,\n\n isPopperFreezed,\n variant = 'field',\n color = 'secondary',\n anchorEl,\n setAnchorEl,\n } = p\n\tconst tone: GitHubPickerColor = error ? 'error' : color\n\tconst accent = PICKER_ACCENT[tone]\n\tconst pickerId = useId()\n\tconst menuId = `${pickerId}-menu`\n\tconst listboxId = `${pickerId}-listbox`\n\n\tconst [selectedIds, sIds] = selectedIdProps // [{id,label,filterKey,disabled,group},...]\n\t// option pass to autocomplete, seperate icon\n\tconst allMinimalOptions = useMemo(() => getMinimalOptions(options,additionSort),[options,additionSort])\n\tconst selectedOpt = allMinimalOptions.filter(itm=>selectedIds.includes(itm.id))\n\tconst { state, select } = useLocalSelectedContext()\n\tconst open = Boolean(anchorEl)\n\n\t// handle popper close\n\tconst closeHandler:PopperMenuProps[\"closeHandler\"] = (passedState?) => {\n\t\t// `minimal: null` is a real clear. `??` would fall back to the previous selection.\n\t\tconst newValue = passedState === undefined ? state.minimal : passedState.minimal\n\t\tconst nextIds = idsFromSelection(Boolean(multiple), newValue)\n\t\tsIds(nextIds)\n\t\tonChange(nextIds)\n\n\t\tif(anchorEl){ anchorEl.focus() }\n\t\tsetAnchorEl(null)\n\t}\n\n\tconst removeItemHandler:React.ComponentProps<typeof DisplaySelected>[\"removeItemHandler\"] = id => () => {\n\t\tonDelete(id)\n\t\tsIds(old=>old.filter(itm => itm !== id))\n\t\t// Keep LocalSelected in sync while open — closeHandler commits state.minimal,\n\t\t// so skipping this would restore the removed chip after the menu closes.\n\t\tif (multiple) {\n\t\t\tconst current = Array.isArray(state.minimal) ? state.minimal : []\n\t\t\tselect(current.filter((opt) => opt.id !== id))\n\t\t} else if (!Array.isArray(state.minimal) && state.minimal?.id === id) {\n\t\t\tselect(null)\n\t\t} else if (Array.isArray(state.minimal)) {\n\t\t\tselect(state.minimal.filter((opt) => opt.id !== id))\n\t\t}\n\t}\n\n\tconst togglePicker = (element: HTMLElement) => {\n\t\tif (disabled) return\n\t\tif (open) {\n\t\t\tif (isPopperFreezed) return\n\t\t\tcloseHandler()\n\t\t\treturn\n\t\t}\n\t\tsetAnchorEl(element)\n\t}\n\n\treturn (\n\t\t<ClickAwayListener\n\t\t\tonClickAway={() => {\n\t\t\t\tif (!open || isPopperFreezed) return\n\t\t\t\tcloseHandler()\n\t\t\t}}\n\t\t>\n\t\t\t<Box>\n\t\t\t{variant === 'icon' ? (\n\t\t\t\t<IconTrigger\n\t\t\t\t\tid={pickerId}\n\t\t\t\t\tmenuId={menuId}\n\t\t\t\t\topen={open}\n\t\t\t\t\tcolor={tone}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\ttitleIcon={titleIcon}\n\t\t\t\t\tselectedCount={selectedOpt.length}\n\t\t\t\t\tselectedLabels={selectedOpt.map((opt) => opt.label)}\n\t\t\t\t\tonToggle={togglePicker}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<FieldTrigger\n\t\t\t\t\tid={pickerId}\n\t\t\t\t\tmenuId={menuId}\n\t\t\t\t\topen={open}\n\t\t\t\t\terror={error}\n\t\t\t\t\taccent={accent}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\ttitleIcon={titleIcon}\n\t\t\t\t\tselectedOpt={selectedOpt}\n\t\t\t\t\toptions={options}\n\t\t\t\t\tremoveItemHandler={removeItemHandler}\n\t\t\t\t\tmultiple={Boolean(multiple)}\n\t\t\t\t\tonToggle={togglePicker}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{anchorEl ? (\n\t\t\t\t<Suspense fallback={null}>\n\t\t\t\t\t<PopperMenu\n\t\t\t\t\t\tid={menuId}\n\t\t\t\t\t\tlistboxId={listboxId}\n\t\t\t\t\t\tanchorEl={anchorEl}\n\t\t\t\t\t\tallMinimalOptions={allMinimalOptions}\n\t\t\t\t\t\toptions={options}\n\t\t\t\t\t\tcloseHandler={closeHandler}\n\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\ttitle={subtitle ?? title}\n\t\t\t\t\t\tuseGroup={useGroup}\n\t\t\t\t\t\tisAddOptionEnabled={isAddOptionEnabled}\n\t\t\t\t\t\taddOptionHandler={addOptionHandler}\n\t\t\t\t\t\tisPopperFreezed={isPopperFreezed}\n\t\t\t\t\t/>\n\t\t\t\t</Suspense>\n\t\t\t) : null}\n\t\t\t</Box>\n\t\t</ClickAwayListener>\n\t)\n}\n\n/**\n * function to return minimal options\n * excluding the component and functions from the options\n * i.e. icon, minimal(),\n * \n * sort by disabled (higher priority)\n * sort by group, then filterKey\n */\nfunction idsFromSelection(\n\tmultiple: boolean,\n\tnewValue: MinimalOption[] | MinimalOption | null | undefined,\n): OptionIds {\n\tif (multiple) {\n\t\tconst list = Array.isArray(newValue) ? newValue : []\n\t\treturn sortByKey(list, 'filterKey').map((item) => item.id)\n\t}\n\tconst single = Array.isArray(newValue) ? newValue[0] : newValue\n\treturn single?.id ? [single.id] : []\n}\n\nfunction getMinimalOptions(options:OptionClass[],additionSort?:(a: MinimalOption|null, b: MinimalOption|null) => number):ReturnType<OptionClass[\"minimal\"]>[] {\n\tconst minimal = options.map(itm => itm.minimal())\n\tconst sortedByFilterKey = sortByKey(minimal,\"filterKey\")\n\tconst afterAdditionSort = additionSort ? sortedByFilterKey.sort(additionSort) : sortedByFilterKey\n\tconst sortedByGroup = sortByKey(afterAdditionSort, \"group\")\n\tconst sortedByDisabled = sortByKey(sortedByGroup,\"disabled\",)\n\treturn sortedByDisabled\n}\n\nfunction FieldTrigger(p:{\n\tid: string;\n\tmenuId: string;\n\topen: boolean;\n\terror: boolean;\n\taccent: string;\n\tdisabled: boolean;\n\ttitle?: string;\n\ttitleIcon?: React.ReactNode;\n\tselectedOpt: MinimalOption[];\n\toptions: OptionClass[];\n\tremoveItemHandler: (id: OptionId) => () => void;\n\tmultiple: boolean;\n\tonToggle: (element: HTMLElement) => void;\n}) {\n\tconst { id, menuId, open, error, accent, disabled, title, titleIcon, selectedOpt, options, removeItemHandler, multiple, onToggle } = p\n\n\treturn (\n\t\t<PickerField\n\t\t\tid={id}\n\t\t\topen={open}\n\t\t\terror={error}\n\t\t\tdisabled={disabled}\n\t\t\trole=\"combobox\"\n\t\t\ttabIndex={disabled ? -1 : 0}\n\t\t\taria-expanded={open}\n\t\t\taria-haspopup=\"listbox\"\n\t\t\taria-controls={open ? menuId : undefined}\n\t\t\taria-disabled={disabled}\n\t\t\tstyle={{\n\t\t\t\t// On error, keep accent readable but quieter than full error-main chrome.\n\t\t\t\t'--picker-border-emphasis': error\n\t\t\t\t\t? 'color-mix(in srgb, var(--picker-error) 55%, var(--picker-border))'\n\t\t\t\t\t: accent,\n\t\t\t\t'--picker-check': error\n\t\t\t\t\t? 'color-mix(in srgb, var(--picker-error) 72%, var(--picker-text-secondary))'\n\t\t\t\t\t: accent,\n\t\t\t\t'--picker-focus-ring': error\n\t\t\t\t\t? 'color-mix(in lab, var(--picker-error), transparent 86%)'\n\t\t\t\t\t: `color-mix(in lab, ${accent}, transparent 82%)`,\n\t\t\t} as React.CSSProperties}\n\t\t\tonClick={(event) => onToggle(event.currentTarget)}\n\t\t\tonKeyDown={(event) => {\n\t\t\t\tif (event.key === 'Enter' || event.key === ' ') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tonToggle(event.currentTarget)\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<Box\n\t\t\t\tsx={{\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tgap: 1,\n\t\t\t\t\tminHeight: 20,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{titleIcon ? (\n\t\t\t\t\t<Box\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\t\t\t\tcolor: 'var(--picker-check)',\n\t\t\t\t\t\t\t'& svg': { fontSize: '1.05rem' },\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{titleIcon}\n\t\t\t\t\t</Box>\n\t\t\t\t) : null}\n\t\t\t\t{title ? (\n\t\t\t\t\t<Typography\n\t\t\t\t\t\tcomponent=\"span\"\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\tminWidth: 0,\n\t\t\t\t\t\t\tfontSize: '0.68rem',\n\t\t\t\t\t\t\tfontWeight: 700,\n\t\t\t\t\t\t\tletterSpacing: '0.08em',\n\t\t\t\t\t\t\ttextTransform: 'uppercase',\n\t\t\t\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\t\t\tm: 0,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Typography>\n\t\t\t\t) : (\n\t\t\t\t\t<Box sx={{ flex: 1 }} />\n\t\t\t\t)}\n\t\t\t\t<KeyboardArrowDownIcon\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tfontSize: 20,\n\t\t\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\ttransform: open ? 'rotate(180deg)' : 'rotate(0deg)',\n\t\t\t\t\t\ttransition: 'transform 180ms ease',\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</Box>\n\n\t\t\t<DisplaySelected\n\t\t\t\tselectedOpt={selectedOpt}\n\t\t\t\toptions={options}\n\t\t\t\tremoveItemHandler={removeItemHandler}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tmultiple={multiple}\n\t\t\t/>\n\t\t</PickerField>\n\t)\n}\n\nfunction IconTrigger(p:{\n\tid: string;\n\tmenuId: string;\n\topen: boolean;\n\tcolor: GitHubPickerColor;\n\tdisabled: boolean;\n\ttitle?: string;\n\ttitleIcon?: React.ReactNode;\n\tselectedCount: number;\n\tselectedLabels: string[];\n\tonToggle: (element: HTMLElement) => void;\n}) {\n\tconst { id, menuId, open, color, disabled, title, titleIcon, selectedCount, selectedLabels, onToggle } = p\n\tconst tooltip = selectedLabels.length > 0\n\t\t? selectedLabels.join(', ')\n\t\t: (title ?? 'Select')\n\n\treturn (\n\t\t<Badge\n\t\t\tbadgeContent={selectedCount}\n\t\t\tinvisible={selectedCount === 0}\n\t\t\tcolor={color}\n\t\t\tstyle_variant=\"filled\"\n\t\t\toverlap=\"circular\"\n\t\t\tsx={gitHubPickerRootSx}\n\t\t\tmax={99}\n\t\t>\n\t\t\t<Box sx={{ display: 'inline-flex' }}>\n\t\t\t\t<IconButton\n\t\t\t\t\tid={id}\n\t\t\t\t\ttitle={open ? '' : tooltip}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tselected={open}\n\t\t\t\t\tcolor={color}\n\t\t\t\t\taria-label={title ?? 'Select'}\n\t\t\t\t\taria-expanded={open}\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\taria-controls={open ? menuId : undefined}\n\t\t\t\t\tonClick={(event) => onToggle(event.currentTarget)}\n\t\t\t\t>\n\t\t\t\t\t{titleIcon ?? <FilterIcon />}\n\t\t\t\t</IconButton>\n\t\t\t</Box>\n\t\t</Badge>\n\t)\n}\n\nfunction DisplaySelected(p:{\n\tselectedOpt:MinimalOption[];\n\toptions:OptionClass[];\n\tremoveItemHandler:(id:OptionId)=>()=>void;\n\tdisabled:boolean;\n\tmultiple:boolean;\n}){\n const {selectedOpt,options,removeItemHandler,disabled,multiple} = p\n\tconst selectedIds = selectedOpt.map(itm=>itm.id)\n\tconst displaySelectedOptions = options.filter(itm => selectedIds.includes(itm.id))\n\n\tif (displaySelectedOptions.length === 0) {\n\t\treturn (\n\t\t\t<Typography\n\t\t\t\tsx={{\n\t\t\t\t\tfontSize: '0.9rem',\n\t\t\t\t\tfontWeight: 500,\n\t\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t\topacity: 0.78,\n\t\t\t\t\tlineHeight: 1.4,\n\t\t\t\t\tm: 0,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{multiple ? 'Select options' : 'Select an option'}\n\t\t\t</Typography>\n\t\t)\n\t}\n\n\treturn (\n\t\t<Box sx={{\n\t\t\toverflow:\"hidden\",\n\t\t\tdisplay:\"flex\",flexWrap:\"wrap\",\n\t\t\tgap:\"6px\",\n\t\t}}>\n\t\t\t{displaySelectedOptions.map((o) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Box key={o.id} sx={{\n\t\t\t\t\t\toverflow:\"hidden\",\n\t\t\t\t\t\tmaxWidth:\"100%\",\n\t\t\t\t\t}}>\n\t\t\t\t\t\t<OptionRenderer\n\t\t\t\t\t\t\toption={o}\n\t\t\t\t\t\t\tselected={true}\n\t\t\t\t\t\t\tisIconClickable={true}\n\t\t\t\t\t\t\tremoveItemHandler={removeItemHandler(o?.id)}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tslotProps={{\n\t\t\t\t\t\t\t\tDM:{\n\t\t\t\t\t\t\t\t\tisShowDescription:false,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Box>\n\t\t\t\t)\n\t\t\t})}\n\t\t</Box>\n\t)\n}\n","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","export {default as GitHubPicker, type GitHubPickerVariant, type GitHubPickerColor} from './GitHubPicker'\nexport { OptionClass, type OptionParams, } from './_utils'","'use client'\nimport React, { forwardRef, useCallback, useMemo } from 'react'\nimport MuiAutocomplete, {\n type AutocompleteChangeReason,\n type AutocompleteRenderGetTagProps,\n} from '@mui/material/Autocomplete'\nimport { TextField } from '@/ele/Input/src/TextField'\nimport { Chip } from '@/ele/Chip'\nimport { Box } from '@/ele/Box'\nimport { InboxOutlinedIcon } from '@/icons/MuiIcon'\nimport { Typography } from '@/ele/Typography'\nimport { SoftSkeleton } from '@/ele/Skeleton'\nimport { mergeSx } from '@/_utils/_func'\nimport {\n autocompleteRootSx,\n autocompletePaperSx,\n autocompleteListboxSx,\n autocompleteChipSx,\n autocompleteEmptySx,\n autocompleteLoadingSx,\n} from './theme'\nimport type { AutocompleteOption, AutocompleteProps } from './types'\n\ntype ValueItem = AutocompleteOption | string\ntype ResolvedValue = ValueItem | ValueItem[] | null\n\nfunction isOption(value: unknown): value is AutocompleteOption {\n return (\n typeof value === 'object'\n && value !== null\n && 'id' in value\n && 'label' in value\n )\n}\n\nfunction resolveItem(\n item: ValueItem,\n options: AutocompleteOption[],\n freeSolo: boolean,\n): ValueItem {\n if (isOption(item)) return item\n const found = options.find((o) => o.id === item || o.label === item)\n if (found) return found\n return freeSolo ? item : { id: item, label: item }\n}\n\nfunction resolveValue(\n value: AutocompleteProps['value'],\n options: AutocompleteOption[],\n multiple: boolean,\n freeSolo: boolean,\n): ResolvedValue {\n if (value == null) return multiple ? [] : null\n\n if (multiple) {\n const arr = Array.isArray(value) ? value : [value]\n return arr.map((item) => resolveItem(item as ValueItem, options, freeSolo))\n }\n\n if (Array.isArray(value)) {\n const first = value[0]\n return first == null ? null : resolveItem(first as ValueItem, options, freeSolo)\n }\n\n return resolveItem(value as ValueItem, options, freeSolo)\n}\n\nfunction normalizeChanged(\n raw: ValueItem | ValueItem[] | null,\n multiple: boolean,\n): AutocompleteOption | AutocompleteOption[] | string | string[] | null {\n if (multiple) {\n if (raw == null) return []\n return (Array.isArray(raw) ? raw : [raw]) as AutocompleteOption[] | string[]\n }\n if (Array.isArray(raw)) return (raw[0] ?? null) as AutocompleteOption | string | null\n return raw as AutocompleteOption | string | null\n}\n\n/**\n * Soft-glass Autocomplete.\n *\n * - Quiet 1px borders (shared glass tokens with OptionBox / PickerField)\n * - Async: `loading` + SoftSkeleton; empty via compact muted inline (no dashed frame)\n * - `freeSolo` for free text; omit for strict select\n * - `multiple` renders soft Chip tags\n * - UseForm-friendly: controlled `value` / `onChange`, plus `name` / `error` / `helperText` / `label`\n */\nconst Autocomplete = forwardRef<HTMLDivElement, AutocompleteProps>(function Autocomplete(\n {\n options = [],\n value,\n defaultValue,\n onChange,\n freeSolo = false,\n multiple = false,\n loading = false,\n label,\n name,\n helperText,\n error = false,\n placeholder,\n required = false,\n disabled = false,\n size = 'small',\n fullWidth = true,\n emptyTitle = 'No options',\n emptyDescription,\n loadingLines = 3,\n TextFieldProps,\n sx,\n groupBy,\n getOptionLabel: getOptionLabelProp,\n isOptionEqualToValue: isOptionEqualToValueProp,\n filterOptions,\n onInputChange,\n inputValue,\n disableClearable,\n readOnly,\n autoHighlight = true,\n openOnFocus,\n slotProps,\n ...rest\n },\n ref,\n) {\n const resolved = useMemo(\n () => resolveValue(value, options, multiple, freeSolo),\n [value, options, multiple, freeSolo],\n )\n const resolvedDefault = useMemo(\n () => (defaultValue === undefined\n ? undefined\n : resolveValue(defaultValue, options, multiple, freeSolo)),\n [defaultValue, options, multiple, freeSolo],\n )\n\n const getOptionLabel = useCallback(\n (option: ValueItem) => {\n if (typeof option === 'string') return option\n if (getOptionLabelProp) return getOptionLabelProp(option)\n return option.label ?? option.id ?? ''\n },\n [getOptionLabelProp],\n )\n\n const isOptionEqualToValue = useCallback(\n (option: AutocompleteOption, val: ValueItem) => {\n if (isOptionEqualToValueProp && isOption(val)) {\n return isOptionEqualToValueProp(option, val)\n }\n if (typeof val === 'string') return option.id === val || option.label === val\n return option.id === val.id\n },\n [isOptionEqualToValueProp],\n )\n\n const handleChange = useCallback(\n (\n _event: React.SyntheticEvent,\n newValue: ValueItem | ValueItem[] | null,\n reason: AutocompleteChangeReason,\n ) => {\n onChange?.(normalizeChanged(newValue, multiple), reason)\n },\n [onChange, multiple],\n )\n\n const renderTags = useCallback(\n (tagValue: ValueItem[], getTagProps: AutocompleteRenderGetTagProps) =>\n tagValue.map((option, index) => {\n const { key, ...tagProps } = getTagProps({ index })\n const chipLabel = typeof option === 'string' ? option : option.label\n return (\n <Chip\n key={key}\n size=\"small\"\n label={chipLabel}\n {...tagProps}\n sx={autocompleteChipSx}\n />\n )\n }),\n [],\n )\n\n const renderOption = useCallback(\n (\n props: React.HTMLAttributes<HTMLLIElement> & { key?: React.Key },\n option: AutocompleteOption,\n ) => {\n const { key, ...liProps } = props\n return (\n <li key={key ?? option.id} {...liProps}>\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 0.25, minWidth: 0 }}>\n <Typography variant=\"body2\" sx={{ m: 0, fontWeight: 500, lineHeight: 1.3 }}>\n {option.label}\n </Typography>\n {option.description ? (\n <Typography\n variant=\"caption\"\n sx={{ m: 0, color: 'var(--picker-text-secondary)', lineHeight: 1.3 }}\n >\n {option.description}\n </Typography>\n ) : null}\n </Box>\n </li>\n )\n },\n [],\n )\n\n // Prefer stock MUI AutocompleteGroupLabel (ListSubheader) so sticky headers\n // keep MUI top: -8. Theme / listbox sx: quiet solid fill + Paper top radius, no backdrop-filter.\n\n const noOptionsNode = (\n <Box sx={autocompleteEmptySx} role=\"status\" data-testid=\"autocomplete-empty\">\n <Box\n aria-hidden\n sx={{\n display: 'flex',\n color: 'var(--picker-text-secondary)',\n opacity: 0.72,\n lineHeight: 1,\n }}\n >\n <InboxOutlinedIcon sx={{ fontSize: 18 }} />\n </Box>\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 0.25, minWidth: 0 }}>\n <Typography\n variant=\"body2\"\n sx={{\n m: 0,\n fontSize: '0.8125rem',\n fontWeight: 500,\n color: 'var(--picker-text-secondary)',\n lineHeight: 1.35,\n }}\n >\n {emptyTitle}\n </Typography>\n {emptyDescription ? (\n <Typography\n variant=\"caption\"\n sx={{\n m: 0,\n color: 'var(--picker-text-secondary)',\n opacity: 0.85,\n lineHeight: 1.35,\n }}\n >\n {emptyDescription}\n </Typography>\n ) : null}\n </Box>\n </Box>\n )\n\n const loadingNode = (\n <Box sx={autocompleteLoadingSx}>\n <SoftSkeleton preset=\"text\" lines={loadingLines} />\n </Box>\n )\n\n const hasGroups = options.some((o) => Boolean(o.group))\n\n const paperSlot = (slotProps as { paper?: { sx?: unknown } } | undefined)?.paper\n const listboxSlot = (slotProps as { listbox?: { sx?: unknown } } | undefined)?.listbox\n const clearSlot = (slotProps as { clearIndicator?: { sx?: unknown } } | undefined)?.clearIndicator\n const popupSlot = (slotProps as { popupIndicator?: { sx?: unknown } } | undefined)?.popupIndicator\n\n return (\n <Box ref={ref} sx={mergeSx(autocompleteRootSx, sx)} data-testid=\"autocomplete\">\n <MuiAutocomplete\n options={options}\n value={resolved as never}\n defaultValue={resolvedDefault as never}\n onChange={handleChange as never}\n freeSolo={freeSolo}\n multiple={multiple}\n loading={loading}\n disabled={disabled}\n size={size}\n fullWidth={fullWidth}\n autoHighlight={autoHighlight}\n openOnFocus={openOnFocus}\n disableClearable={disableClearable}\n readOnly={readOnly}\n filterOptions={filterOptions}\n onInputChange={onInputChange}\n inputValue={inputValue}\n groupBy={\n groupBy\n ?? (hasGroups ? (option: AutocompleteOption) => option.group ?? '' : undefined)\n }\n getOptionLabel={getOptionLabel as never}\n isOptionEqualToValue={isOptionEqualToValue as never}\n getOptionDisabled={(option) => Boolean((option as AutocompleteOption).disabled)}\n renderTags={multiple ? (renderTags as never) : undefined}\n renderOption={renderOption as never}\n noOptionsText={noOptionsNode}\n loadingText={loadingNode}\n slotProps={{\n ...slotProps,\n paper: {\n ...paperSlot,\n sx: mergeSx(autocompletePaperSx, paperSlot?.sx as never),\n },\n listbox: {\n ...listboxSlot,\n sx: mergeSx(autocompleteListboxSx, listboxSlot?.sx as never),\n },\n // Beat AutocompleteClearIndicator / PopupIndicator marginRight: -2.\n clearIndicator: {\n ...clearSlot,\n sx: mergeSx({ marginRight: 0 }, clearSlot?.sx as never),\n },\n popupIndicator: {\n ...popupSlot,\n sx: mergeSx({ marginRight: 0 }, popupSlot?.sx as never),\n },\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n {...TextFieldProps}\n name={name}\n label={label}\n placeholder={placeholder}\n error={error}\n helperText={helperText}\n required={required}\n disabled={disabled}\n size={size}\n fullWidth={fullWidth}\n />\n )}\n {...rest}\n />\n </Box>\n )\n})\n\nexport default Autocomplete\n","export {default as TextField} from '@mui/material/TextField'\nexport * from './theme'","export {default as Skeleton} from '@mui/material/Skeleton'\n","'use client'\nimport type React from 'react'\nimport { Box, Stack } from '@/ele/Box'\nimport { Skeleton } from '../MuiSkeleton'\n\nexport type SoftSkeletonPreset = 'text' | 'row' | 'card'\n\nexport type SoftSkeletonProps = {\n preset?: SoftSkeletonPreset\n /** Rows for text/row presets. Default 3. */\n lines?: number\n sx?: React.ComponentProps<typeof Box>['sx']\n}\n\nconst softShimmerSx = {\n bgcolor: 'color-mix(in srgb, var(--mui-palette-border-1) 55%, transparent)',\n borderRadius: '8px',\n '&.MuiSkeleton-wave::after': {\n background:\n 'linear-gradient(90deg, transparent, color-mix(in srgb, var(--mui-palette-background-paper) 55%, transparent), transparent)',\n },\n} as const\n\n/**\n * Soft shimmer skeleton presets for common layouts (text / row / card).\n */\nexport function SoftSkeleton({\n preset = 'text',\n lines = 3,\n sx,\n}: SoftSkeletonProps) {\n if (preset === 'card') {\n return (\n <Box\n data-testid=\"soft-skeleton\"\n data-preset=\"card\"\n sx={[\n {\n p: 2,\n borderRadius: '16px',\n border: '1px solid var(--mui-palette-border-1)',\n backgroundColor:\n 'color-mix(in srgb, var(--mui-palette-background-paper) 80%, transparent)',\n boxSizing: 'border-box',\n },\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ] as never}\n >\n <Skeleton\n variant=\"rounded\"\n animation=\"wave\"\n height={120}\n sx={{ ...softShimmerSx, mb: 1.5, borderRadius: '12px' }}\n />\n <Skeleton variant=\"text\" animation=\"wave\" width=\"60%\" sx={softShimmerSx} />\n <Skeleton variant=\"text\" animation=\"wave\" width=\"90%\" sx={softShimmerSx} />\n <Skeleton variant=\"text\" animation=\"wave\" width=\"40%\" sx={softShimmerSx} />\n </Box>\n )\n }\n\n if (preset === 'row') {\n return (\n <Stack\n data-testid=\"soft-skeleton\"\n data-preset=\"row\"\n spacing={1}\n sx={sx as never}\n >\n {Array.from({ length: lines }).map((_, i) => (\n <Box\n key={i}\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n p: 1,\n borderRadius: '12px',\n border: '1px solid var(--mui-palette-border-1)',\n }}\n >\n <Skeleton\n variant=\"circular\"\n animation=\"wave\"\n width={36}\n height={36}\n sx={softShimmerSx}\n />\n <Box sx={{ flex: 1 }}>\n <Skeleton variant=\"text\" animation=\"wave\" width=\"45%\" sx={softShimmerSx} />\n <Skeleton variant=\"text\" animation=\"wave\" width=\"75%\" sx={softShimmerSx} />\n </Box>\n </Box>\n ))}\n </Stack>\n )\n }\n\n // text\n return (\n <Stack\n data-testid=\"soft-skeleton\"\n data-preset=\"text\"\n spacing={0.75}\n sx={sx as never}\n >\n {Array.from({ length: lines }).map((_, i) => (\n <Skeleton\n key={i}\n variant=\"rounded\"\n animation=\"wave\"\n height={10}\n width={`${100 - (i % 3) * 18}%`}\n sx={softShimmerSx}\n />\n ))}\n </Stack>\n )\n}\n","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"],"mappings":"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A,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,+BAAqC;AACrC,iCAAiC;AACjC,kCAAsC;AACtC,gCAAmC;AACnC,oBAAkC;AAClC,4BAAsC;AACtC,gCAA+C;AAC/C,iBAAiC;AACjC,wBAAmC;AACnC,sBAAmC;AACnC,kBAAkC;AAClC,uBAAmC;AACnC,6BAAmC;AACnC,oBAAoC;AACpC,wBAAwC;AACxC,yBAAiC;AACjC,qBAAqC;AACrC,iCAAmC;AACnC,qBAAoC;AACpC,8BAAuC;AACvC,qBAAoC;AACpC,uBAAiC;AACjC,uBAAuC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","names":["import_Typography","init_src","init_Typography","init_src","MuiButton","import_jsx_runtime","init_Button","init_theme","init_theme","init_src","init_Tooltip","init_src","import_jsx_runtime","init_Tooltip","MuiIconButton","init_theme","init_IconButton","init_theme","MuiChip","import_jsx_runtime","init_themes","init_Chip","init_themes","init_src","init_Chip","init_Chip","init_src","init_theme","init_Chip","init_theme","init_TagButton","init_src","init_Button","init_IconButton","init_TagButton","init_Button","init_src","init_src","init_src","import_PhotoSizeSelectLarge","import_Close","import_Person","import_DeleteForever","import_AccountTreeOutlined","import_styles","init_theme","import_jsx_runtime","init_Button","init_Typography","init_theme","import_react","import_jsx_runtime","init_states","Paper","import_jsx_runtime","init_themes","init_Paper","init_themes","init_src","init_Paper","init_Paper","init_src","import_styles","init_Paper","init_theme","id","Autocomplete","options","InputBase","import_react","import_Autocomplete","import_jsx_runtime","init_Typography","init_Button","init_states","import_react","init_Typography","init_Button","import_jsx_runtime","MuiBadge","init_theme","init_states","import_jsx_runtime","import_react","import_Autocomplete","init_Chip","init_Typography","import_jsx_runtime","import_Autocomplete","init_theme","import_jsx_runtime","Autocomplete","MuiAutocomplete"]}
|