@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.
Files changed (254) hide show
  1. package/dist/AutocompleteField-653233JU.mjs +203 -0
  2. package/dist/AutocompleteField-653233JU.mjs.map +1 -0
  3. package/dist/AvatarField-KFASMVZU.mjs +378 -0
  4. package/dist/AvatarField-KFASMVZU.mjs.map +1 -0
  5. package/dist/{DateField-ZYMZFHL4.mjs → DateField-CDJ6W6XF.mjs} +19 -7
  6. package/dist/DateField-CDJ6W6XF.mjs.map +1 -0
  7. package/dist/DateRangeField-ZWSFT5KV.mjs +118 -0
  8. package/dist/DateRangeField-ZWSFT5KV.mjs.map +1 -0
  9. package/dist/{DateTimeField-TPTJ7YIZ.mjs → DateTimeField-SFAF4I6A.mjs} +36 -11
  10. package/dist/DateTimeField-SFAF4I6A.mjs.map +1 -0
  11. package/dist/FileUploadField-TSNCSLXX.mjs +101 -0
  12. package/dist/FileUploadField-TSNCSLXX.mjs.map +1 -0
  13. package/dist/{JSONEditorField-TMRWGXVR.mjs → JSONEditorField-3KXC2GOG.mjs} +7 -6
  14. package/dist/{JSONEditorField-TMRWGXVR.mjs.map → JSONEditorField-3KXC2GOG.mjs.map} +1 -1
  15. package/dist/{PopperMenu-LJ36RPBW.mjs → PopperMenu-PSHLKIEZ.mjs} +26 -12
  16. package/dist/{PopperMenu-LJ36RPBW.mjs.map → PopperMenu-PSHLKIEZ.mjs.map} +1 -1
  17. package/dist/{TelField-LOGRVZ4I.mjs → TelField-FRQT2UBJ.mjs} +8 -7
  18. package/dist/{TelField-LOGRVZ4I.mjs.map → TelField-FRQT2UBJ.mjs.map} +1 -1
  19. package/dist/TimeField-XVWXBJID.mjs +94 -0
  20. package/dist/TimeField-XVWXBJID.mjs.map +1 -0
  21. package/dist/alert.d.mts +148 -18
  22. package/dist/alert.d.ts +148 -18
  23. package/dist/alert.js +698 -254
  24. package/dist/alert.js.map +1 -1
  25. package/dist/alert.mjs +46 -10
  26. package/dist/autocomplete.d.mts +438 -4
  27. package/dist/autocomplete.d.ts +438 -4
  28. package/dist/autocomplete.js +632 -21
  29. package/dist/autocomplete.js.map +1 -1
  30. package/dist/autocomplete.mjs +26 -7
  31. package/dist/avatar.js +2 -1
  32. package/dist/avatar.js.map +1 -1
  33. package/dist/avatar.mjs +12 -11
  34. package/dist/box.mjs +2 -1
  35. package/dist/button.mjs +3 -2
  36. package/dist/chart.mjs +3 -2
  37. package/dist/checkbox.mjs +3 -2
  38. package/dist/chunk-2FK24ZPJ.mjs +78 -0
  39. package/dist/chunk-2FK24ZPJ.mjs.map +1 -0
  40. package/dist/{chunk-V26V2S3W.mjs → chunk-3O3N6X6D.mjs} +3 -3
  41. package/dist/{chunk-Y74ALKBL.mjs → chunk-4MSPA7U7.mjs} +11 -9
  42. package/dist/{chunk-Y74ALKBL.mjs.map → chunk-4MSPA7U7.mjs.map} +1 -1
  43. package/dist/{chunk-24XDGNJ6.mjs → chunk-4P45Z5LR.mjs} +63 -41
  44. package/dist/chunk-4P45Z5LR.mjs.map +1 -0
  45. package/dist/chunk-4SSJY32J.mjs +1182 -0
  46. package/dist/chunk-4SSJY32J.mjs.map +1 -0
  47. package/dist/{chunk-XJ2SXC2Q.mjs → chunk-6B6I27TT.mjs} +18 -16
  48. package/dist/{chunk-XJ2SXC2Q.mjs.map → chunk-6B6I27TT.mjs.map} +1 -1
  49. package/dist/chunk-6JKMEH2L.mjs +205 -0
  50. package/dist/chunk-6JKMEH2L.mjs.map +1 -0
  51. package/dist/{chunk-IN3O4R7Q.mjs → chunk-7O526A2D.mjs} +6 -4
  52. package/dist/{chunk-IN3O4R7Q.mjs.map → chunk-7O526A2D.mjs.map} +1 -1
  53. package/dist/chunk-AFLEG5ZC.mjs +28 -0
  54. package/dist/chunk-AFLEG5ZC.mjs.map +1 -0
  55. package/dist/{chunk-UGMRJMFZ.mjs → chunk-BO5CU4ZM.mjs} +4 -4
  56. package/dist/{chunk-JIU5GVM7.mjs → chunk-D4XPNSSI.mjs} +5 -3
  57. package/dist/{chunk-JIU5GVM7.mjs.map → chunk-D4XPNSSI.mjs.map} +1 -1
  58. package/dist/chunk-DPIMA5IO.mjs +72 -0
  59. package/dist/chunk-DPIMA5IO.mjs.map +1 -0
  60. package/dist/chunk-F2CGFVIZ.mjs +83 -0
  61. package/dist/chunk-F2CGFVIZ.mjs.map +1 -0
  62. package/dist/{chunk-R5MKQN6D.mjs → chunk-FBLSJQWK.mjs} +3 -3
  63. package/dist/{chunk-BGB7JHIU.mjs → chunk-FMGZCOJC.mjs} +5 -3
  64. package/dist/{chunk-BGB7JHIU.mjs.map → chunk-FMGZCOJC.mjs.map} +1 -1
  65. package/dist/{chunk-UTVSYS6S.mjs → chunk-FNSIQ2B7.mjs} +18 -6
  66. package/dist/chunk-FNSIQ2B7.mjs.map +1 -0
  67. package/dist/{chunk-JWANK42G.mjs → chunk-FUZ2JNTZ.mjs} +3 -3
  68. package/dist/{chunk-CRYIEYZZ.mjs → chunk-HAJWE62X.mjs} +66 -42
  69. package/dist/chunk-HAJWE62X.mjs.map +1 -0
  70. package/dist/{chunk-CWFWRZWU.mjs → chunk-KSN33A6I.mjs} +3 -2
  71. package/dist/{chunk-CWFWRZWU.mjs.map → chunk-KSN33A6I.mjs.map} +1 -1
  72. package/dist/chunk-KYTHGFFY.mjs +866 -0
  73. package/dist/chunk-KYTHGFFY.mjs.map +1 -0
  74. package/dist/{chunk-QKGCW37O.mjs → chunk-LDFM46LV.mjs} +5 -3
  75. package/dist/{chunk-QKGCW37O.mjs.map → chunk-LDFM46LV.mjs.map} +1 -1
  76. package/dist/chunk-LQNDBPHU.mjs +142 -0
  77. package/dist/chunk-LQNDBPHU.mjs.map +1 -0
  78. package/dist/{chunk-E3I2VDHZ.mjs → chunk-M2PYXSAF.mjs} +6 -4
  79. package/dist/{chunk-E3I2VDHZ.mjs.map → chunk-M2PYXSAF.mjs.map} +1 -1
  80. package/dist/{chunk-DELCADNF.mjs → chunk-ODVKRIVN.mjs} +30 -30
  81. package/dist/{chunk-HR3A4H4E.mjs → chunk-PEJL2T2K.mjs} +13 -11
  82. package/dist/{chunk-HR3A4H4E.mjs.map → chunk-PEJL2T2K.mjs.map} +1 -1
  83. package/dist/{chunk-OGNGPI3M.mjs → chunk-PL55YKT4.mjs} +2 -2
  84. package/dist/{chunk-S6EZVRZC.mjs → chunk-PNSJC6PC.mjs} +5 -28
  85. package/dist/chunk-PNSJC6PC.mjs.map +1 -0
  86. package/dist/{chunk-TDRA5EZI.mjs → chunk-PUREEN2J.mjs} +7 -7
  87. package/dist/chunk-QFS5CENY.mjs +659 -0
  88. package/dist/chunk-QFS5CENY.mjs.map +1 -0
  89. package/dist/chunk-RSN7NH2J.mjs +250 -0
  90. package/dist/chunk-RSN7NH2J.mjs.map +1 -0
  91. package/dist/{chunk-UDREPVEY.mjs → chunk-RVSMEZE3.mjs} +12 -78
  92. package/dist/chunk-RVSMEZE3.mjs.map +1 -0
  93. package/dist/{chunk-SRWPHN2N.mjs → chunk-S64IYJ6Y.mjs} +2 -2
  94. package/dist/{chunk-ZG3NQI77.mjs → chunk-SMD7OEUW.mjs} +6 -4
  95. package/dist/{chunk-ZG3NQI77.mjs.map → chunk-SMD7OEUW.mjs.map} +1 -1
  96. package/dist/{chunk-NJYNJLT7.mjs → chunk-SWFB3A3G.mjs} +2 -2
  97. package/dist/{chunk-RXBQ7KXF.mjs → chunk-USXGNKWJ.mjs} +98 -44
  98. package/dist/chunk-USXGNKWJ.mjs.map +1 -0
  99. package/dist/{chunk-OJV6V7YZ.mjs → chunk-VL7V52YD.mjs} +27 -20
  100. package/dist/chunk-VL7V52YD.mjs.map +1 -0
  101. package/dist/{chunk-2ZZJTBTE.mjs → chunk-WJZ3IYET.mjs} +2 -2
  102. package/dist/chunk-XAJAMVAG.mjs +1720 -0
  103. package/dist/chunk-XAJAMVAG.mjs.map +1 -0
  104. package/dist/chunk-YIJ5QVJ6.mjs +277 -0
  105. package/dist/chunk-YIJ5QVJ6.mjs.map +1 -0
  106. package/dist/{chunk-T6AMRENK.mjs → chunk-YRW5NKD7.mjs} +148 -112
  107. package/dist/chunk-YRW5NKD7.mjs.map +1 -0
  108. package/dist/chunk-ZMJKG2UI.mjs +71 -0
  109. package/dist/chunk-ZMJKG2UI.mjs.map +1 -0
  110. package/dist/confirm.d.mts +48 -0
  111. package/dist/confirm.d.ts +48 -0
  112. package/dist/confirm.js +334 -0
  113. package/dist/confirm.js.map +1 -0
  114. package/dist/confirm.mjs +20 -0
  115. package/dist/datePicker.d.mts +256 -14
  116. package/dist/datePicker.d.ts +256 -14
  117. package/dist/datePicker.js +1624 -145
  118. package/dist/datePicker.js.map +1 -1
  119. package/dist/datePicker.mjs +19 -6
  120. package/dist/dialog.d.mts +166 -0
  121. package/dist/dialog.d.ts +166 -0
  122. package/dist/dialog.js +362 -0
  123. package/dist/dialog.js.map +1 -0
  124. package/dist/dialog.mjs +45 -0
  125. package/dist/emptyState.d.mts +17 -0
  126. package/dist/emptyState.d.ts +17 -0
  127. package/dist/emptyState.js +253 -0
  128. package/dist/emptyState.js.map +1 -0
  129. package/dist/emptyState.mjs +12 -0
  130. package/dist/emptyState.mjs.map +1 -0
  131. package/dist/errorState.d.mts +18 -0
  132. package/dist/errorState.d.ts +18 -0
  133. package/dist/{displayFile.js → errorState.js} +107 -156
  134. package/dist/errorState.js.map +1 -0
  135. package/dist/errorState.mjs +15 -0
  136. package/dist/errorState.mjs.map +1 -0
  137. package/dist/fileUpload.d.mts +197 -0
  138. package/dist/fileUpload.d.ts +197 -0
  139. package/dist/fileUpload.js +1483 -0
  140. package/dist/fileUpload.js.map +1 -0
  141. package/dist/fileUpload.mjs +65 -0
  142. package/dist/fileUpload.mjs.map +1 -0
  143. package/dist/flowMap.mjs +7 -6
  144. package/dist/flowMap.mjs.map +1 -1
  145. package/dist/image.js +1195 -429
  146. package/dist/image.js.map +1 -1
  147. package/dist/image.mjs +8 -6
  148. package/dist/index.d.ts +7 -2
  149. package/dist/index.js +8606 -4087
  150. package/dist/index.js.map +1 -1
  151. package/dist/index.mjs +314 -152
  152. package/dist/inlineError.d.mts +16 -0
  153. package/dist/inlineError.d.ts +16 -0
  154. package/dist/inlineError.js +297 -0
  155. package/dist/inlineError.js.map +1 -0
  156. package/dist/inlineError.mjs +15 -0
  157. package/dist/inlineError.mjs.map +1 -0
  158. package/dist/input.mjs +8 -7
  159. package/dist/jsonEditor.mjs +3 -2
  160. package/dist/list.mjs +7 -6
  161. package/dist/loading.mjs +8 -6
  162. package/dist/markdown.mjs +7 -6
  163. package/dist/markdown.mjs.map +1 -1
  164. package/dist/menu.mjs +9 -8
  165. package/dist/modal.js +2 -1
  166. package/dist/modal.js.map +1 -1
  167. package/dist/modal.mjs +7 -5
  168. package/dist/process.d.mts +33 -75
  169. package/dist/process.d.ts +33 -75
  170. package/dist/process.js +1275 -203
  171. package/dist/process.js.map +1 -1
  172. package/dist/process.mjs +12 -9
  173. package/dist/scrollToLoad.mjs +4 -3
  174. package/dist/select.mjs +10 -9
  175. package/dist/skeleton.d.mts +15 -1
  176. package/dist/skeleton.d.ts +15 -1
  177. package/dist/skeleton.js +114 -2
  178. package/dist/skeleton.js.map +1 -1
  179. package/dist/skeleton.mjs +6 -3
  180. package/dist/stepper.mjs +4 -3
  181. package/dist/tab.mjs +10 -9
  182. package/dist/table.d.mts +269 -85
  183. package/dist/table.d.ts +269 -85
  184. package/dist/table.js +5102 -3153
  185. package/dist/table.js.map +1 -1
  186. package/dist/table.mjs +21 -19
  187. package/dist/theme.js +1766 -432
  188. package/dist/theme.js.map +1 -1
  189. package/dist/theme.mjs +32 -25
  190. package/dist/timeline.mjs +4 -3
  191. package/dist/toast.d.mts +49 -0
  192. package/dist/toast.d.ts +49 -0
  193. package/dist/toast.js +175 -0
  194. package/dist/toast.js.map +1 -0
  195. package/dist/toast.mjs +9 -0
  196. package/dist/toast.mjs.map +1 -0
  197. package/dist/toggleButtonGroup.mjs +3 -2
  198. package/dist/useForm.d.mts +270 -86
  199. package/dist/useForm.d.ts +270 -86
  200. package/dist/useForm.js +4672 -2727
  201. package/dist/useForm.js.map +1 -1
  202. package/dist/useForm.mjs +18 -16
  203. package/dist/useSearch.mjs +13 -12
  204. package/dist/variablesRenderer.mjs +8 -7
  205. package/package.json +3 -3
  206. package/dist/AutocompleteField-ZKNU2IRR.mjs +0 -181
  207. package/dist/AutocompleteField-ZKNU2IRR.mjs.map +0 -1
  208. package/dist/AvatarField-SAODT3CZ.mjs +0 -275
  209. package/dist/AvatarField-SAODT3CZ.mjs.map +0 -1
  210. package/dist/DateField-ZYMZFHL4.mjs.map +0 -1
  211. package/dist/DateTimeField-TPTJ7YIZ.mjs.map +0 -1
  212. package/dist/FileUploadField-NTMWBJER.mjs +0 -78
  213. package/dist/FileUploadField-NTMWBJER.mjs.map +0 -1
  214. package/dist/chunk-24XDGNJ6.mjs.map +0 -1
  215. package/dist/chunk-27KYFU7R.mjs +0 -30
  216. package/dist/chunk-27KYFU7R.mjs.map +0 -1
  217. package/dist/chunk-AAH2O24U.mjs +0 -325
  218. package/dist/chunk-AAH2O24U.mjs.map +0 -1
  219. package/dist/chunk-CRYIEYZZ.mjs.map +0 -1
  220. package/dist/chunk-EEH7HACG.mjs +0 -249
  221. package/dist/chunk-EEH7HACG.mjs.map +0 -1
  222. package/dist/chunk-EKPULYPU.mjs +0 -497
  223. package/dist/chunk-EKPULYPU.mjs.map +0 -1
  224. package/dist/chunk-OJV6V7YZ.mjs.map +0 -1
  225. package/dist/chunk-RXBQ7KXF.mjs.map +0 -1
  226. package/dist/chunk-S6EZVRZC.mjs.map +0 -1
  227. package/dist/chunk-SGCUDWO3.mjs +0 -396
  228. package/dist/chunk-SGCUDWO3.mjs.map +0 -1
  229. package/dist/chunk-T6AMRENK.mjs.map +0 -1
  230. package/dist/chunk-UDREPVEY.mjs.map +0 -1
  231. package/dist/chunk-UTVSYS6S.mjs.map +0 -1
  232. package/dist/chunk-XIMFP6RB.mjs +0 -161
  233. package/dist/chunk-XIMFP6RB.mjs.map +0 -1
  234. package/dist/displayFile.d.mts +0 -95
  235. package/dist/displayFile.d.ts +0 -95
  236. package/dist/displayFile.js.map +0 -1
  237. package/dist/displayFile.mjs +0 -19
  238. package/dist/fileUploader.d.mts +0 -86
  239. package/dist/fileUploader.d.ts +0 -86
  240. package/dist/fileUploader.js +0 -722
  241. package/dist/fileUploader.js.map +0 -1
  242. package/dist/fileUploader.mjs +0 -16
  243. /package/dist/{chunk-V26V2S3W.mjs.map → chunk-3O3N6X6D.mjs.map} +0 -0
  244. /package/dist/{chunk-UGMRJMFZ.mjs.map → chunk-BO5CU4ZM.mjs.map} +0 -0
  245. /package/dist/{chunk-R5MKQN6D.mjs.map → chunk-FBLSJQWK.mjs.map} +0 -0
  246. /package/dist/{chunk-JWANK42G.mjs.map → chunk-FUZ2JNTZ.mjs.map} +0 -0
  247. /package/dist/{chunk-DELCADNF.mjs.map → chunk-ODVKRIVN.mjs.map} +0 -0
  248. /package/dist/{chunk-OGNGPI3M.mjs.map → chunk-PL55YKT4.mjs.map} +0 -0
  249. /package/dist/{chunk-TDRA5EZI.mjs.map → chunk-PUREEN2J.mjs.map} +0 -0
  250. /package/dist/{chunk-SRWPHN2N.mjs.map → chunk-S64IYJ6Y.mjs.map} +0 -0
  251. /package/dist/{chunk-NJYNJLT7.mjs.map → chunk-SWFB3A3G.mjs.map} +0 -0
  252. /package/dist/{chunk-2ZZJTBTE.mjs.map → chunk-WJZ3IYET.mjs.map} +0 -0
  253. /package/dist/{displayFile.mjs.map → confirm.mjs.map} +0 -0
  254. /package/dist/{fileUploader.mjs.map → dialog.mjs.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/elemental/ErrorState/index.ts","../src/_utils/_func/sx.ts","../src/components/elemental/Box/src/index.ts","../src/components/elemental/Typography/src/Typography.ts","../src/components/elemental/Button/src/Button/Button.tsx","../src/components/Icons/MuiIcon/index.ts","../src/components/elemental/ErrorState/src/ErrorState.tsx"],"sourcesContent":["export * from './src'\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 './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 { default } from '@mui/material/Typography'","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}","// display\nexport {default as ArrowIcon} from '@mui/icons-material/ArrowRightAlt'\nexport {default as FileIcon} from '@mui/icons-material/DescriptionOutlined'\nexport {default as DescriptionIcon} from '@mui/icons-material/Description'\nexport {default as PictureAsPdfIcon} from '@mui/icons-material/PictureAsPdf'\nexport {default as AudioFileIcon} from '@mui/icons-material/AudioFile'\nexport {default as VideoFileIcon} from '@mui/icons-material/VideoFile'\nexport {default as TableChartIcon} from '@mui/icons-material/TableChart'\nexport {default as FolderZipIcon} from '@mui/icons-material/FolderZip'\nexport {default as InsertDriveFileIcon} from '@mui/icons-material/InsertDriveFile'\nexport {default as ImageIcon} from '@mui/icons-material/ImageOutlined'\nexport {default as LayersIcon} from '@mui/icons-material/LayersOutlined'\nexport {default as TextIcon} from '@mui/icons-material/TextFormat'\nexport {default as RemoveIcon} from '@mui/icons-material/Remove'\nexport {default as AddFileIcon} from '@mui/icons-material/PostAdd'\nexport {default as ErrorIcon} from '@mui/icons-material/ErrorOutline'\nexport {default as QuestionIcon} from '@mui/icons-material/QuestionMarkOutlined'\nexport {default as RoomIcon} from '@mui/icons-material/MeetingRoomOutlined'\nexport {default as BlacklistIcon} from '@mui/icons-material/PlaylistRemove'\nexport {default as WhitelistIcon} from '@mui/icons-material/ChecklistRtl'\nexport {default as NoImageIcon} from '@mui/icons-material/HideImageOutlined'\nexport {default as EyeIcon} from '@mui/icons-material/RemoveRedEyeTwoTone'\nexport {default as CropSizeIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as AdminIcon} from '@mui/icons-material/LockPersonOutlined'\nexport {default as UserIcon} from '@mui/icons-material/Person'\nexport {default as EmoticonIcon} from '@mui/icons-material/InsertEmoticon'\nexport {default as DisabledSelectionIcon} from '@mui/icons-material/RemoveDoneOutlined'\nexport {default as TagIcon} from '@mui/icons-material/Tag'\nexport {default as AudioIcon} from '@mui/icons-material/Audiotrack'\nexport {default as VideoIcon} from '@mui/icons-material/Videocam'\nexport {default as CodeIcon} from '@mui/icons-material/Code'\nexport {default as ChartIcon} from '@mui/icons-material/Equalizer'\nexport {default as TableIcon} from '@mui/icons-material/PivotTableChart'\nexport {default as SearchIcon} from '@mui/icons-material/Search'\nexport {default as DataObjectIcon} from '@mui/icons-material/DataObject'\nexport {default as A2ZIcon} from '@mui/icons-material/SortByAlpha'\nexport {default as ThumbUpIcon} from '@mui/icons-material/ThumbUp'\nexport {default as MoneyIcon} from '@mui/icons-material/AttachMoneyOutlined'\nexport {default as ServerIcon} from '@mui/icons-material/Storage'\nexport {default as CerticateIcon} from '@mui/icons-material/WorkspacePremium'\nexport {default as NumberIcon} from '@mui/icons-material/Numbers'\nexport {default as SumIcon} from '@mui/icons-material/Functions'\nexport {default as LightBulbIcon} from '@mui/icons-material/Lightbulb'\nexport {default as RotateIcon} from '@mui/icons-material/CropRotate'\nexport {default as ImageSzieScaleIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as CollectionIcon} from '@mui/icons-material/CollectionsBookmark'\nexport {default as HistoryIcon} from '@mui/icons-material/Schedule'\nexport {default as StyleIcon} from '@mui/icons-material/Style'\nexport {default as ARHorizontalIcon} from '@mui/icons-material/Crop169'\nexport {default as ARSquareIcon} from '@mui/icons-material/CropSquare'\nexport {default as VoiceIcon} from '@mui/icons-material/GraphicEqRounded'\nexport {default as MemoryIcon} from '@mui/icons-material/MemoryRounded'\n\n// button\nexport {default as AddCircleIcon} from '@mui/icons-material/AddCircleOutlineRounded'\nexport {default as AddIcon} from '@mui/icons-material/Add'\nexport {default as CloseIcon} from '@mui/icons-material/Close'\nexport {default as ExpandMoreIcon} from '@mui/icons-material/ExpandMore'\nexport {default as AutorenewIcon} from '@mui/icons-material/Autorenew'\nexport {default as CheckCircleIcon} from '@mui/icons-material/CheckCircle'\nexport {default as MenuIcon} from '@mui/icons-material/Menu'\nexport {default as MoreIcon} from '@mui/icons-material/MoreVert'\nexport {default as MoreHorizIcon} from '@mui/icons-material/MoreHoriz'\nexport {default as CopyIcon} from '@mui/icons-material/ContentCopy'\nexport {default as PasteIcon} from '@mui/icons-material/ContentPaste'\nexport {default as CloudIcon} from '@mui/icons-material/Cloud'\nexport {default as DownloadIcon} from '@mui/icons-material/DownloadOutlined'\nexport {default as DownloadDoneIcon} from '@mui/icons-material/DownloadDoneOutlined'\nexport {default as StartIcon} from '@mui/icons-material/StarBorderOutlined'\nexport {default as DeleteIcon} from '@mui/icons-material/DeleteForever'\nexport {default as LayerClearIcon } from '@mui/icons-material/LayersClear'\nexport {default as CheckIcon } from '@mui/icons-material/Check'\nexport {default as CheckAllIcon } from '@mui/icons-material/DoneAll'\nexport {default as PowerIcon } from '@mui/icons-material/PowerSettingsNew'\nexport {default as SendIcon } from '@mui/icons-material/Send'\nexport {default as ZoomInIcon } from '@mui/icons-material/ZoomInMap'\nexport {default as ZoomOutIcon } from '@mui/icons-material/ZoomOutMap'\nexport {default as ToolIcon } from '@mui/icons-material/HomeRepairService'\nexport {default as ConstructionIcon } from '@mui/icons-material/Construction'\nexport {default as HelpIcon } from '@mui/icons-material/Help'\nexport {default as ReportIcon } from '@mui/icons-material/EmojiFlags'\nexport {default as EditIcon } from '@mui/icons-material/Edit'\nexport {default as ForkIcon } from '@mui/icons-material/ForkRight'\nexport {default as SettingIcon } from '@mui/icons-material/Settings'\nexport {default as RestoreIcon } from '@mui/icons-material/Restore'\nexport {default as EditListIcon } from '@mui/icons-material/EditNote'\nexport {default as HomeIcon } from '@mui/icons-material/HomeOutlined'\nexport {default as EnterRoomIcon } from '@mui/icons-material/ExitToAppOutlined'\nexport {default as SunIcon} from '@mui/icons-material/WbSunnyOutlined'\nexport {default as MoonIcon} from '@mui/icons-material/DarkModeOutlined'\nexport {default as AttachFileIcon} from '@mui/icons-material/AttachFileOutlined'\nexport {default as NoteAddIcon} from '@mui/icons-material/NoteAdd'\nexport {default as CloudUploadIcon} from '@mui/icons-material/CloudUpload'\nexport {default as DoubleRightArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRight'\nexport {default as DoubleLeftArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowLeft'\nexport {default as DoubleArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRightRounded'\nexport {default as FitScreenIcon} from '@mui/icons-material/FitScreen'\nexport {default as FullscreenIcon} from '@mui/icons-material/Fullscreen'\nexport {default as TestIcon} from '@mui/icons-material/Biotech'\nexport {default as ShareIcon} from '@mui/icons-material/Share'\nexport {default as FilterIcon} from '@mui/icons-material/FilterAlt'\nexport {default as SyncIcon} from '@mui/icons-material/Sync'\nexport {default as PlayIcon} from '@mui/icons-material/PlayArrow'\nexport {default as PauseIcon} from '@mui/icons-material/PauseOutlined'\nexport {default as RandomIcon} from '@mui/icons-material/Casino'\nexport {default as CoinIcon} from '@mui/icons-material/Paid'\nexport {default as SaveChangesIcon} from '@mui/icons-material/Save'\nexport {default as StopIcon} from '@mui/icons-material/StopRounded'\nexport {default as ReplayIcon} from '@mui/icons-material/Replay'\nexport {default as TreeIcon} from '@mui/icons-material/AccountTree'\nexport {default as ClearIcon} from '@mui/icons-material/Close'\nexport {default as KeyboardArrowDownIcon} from '@mui/icons-material/KeyboardArrowDown'\nexport {default as KeyboardArrowRightIcon} from '@mui/icons-material/KeyboardArrowRight'\nexport {default as SearchRoundedIcon} from '@mui/icons-material/SearchRounded'\nexport {default as CloseRoundedIcon} from '@mui/icons-material/CloseRounded'\nexport {default as SortByAlphaRoundedIcon} from '@mui/icons-material/SortByAlphaRounded'\nexport {default as FilterAltOutlinedIcon} from '@mui/icons-material/FilterAltOutlined'\nexport {default as InboxOutlinedIcon} from '@mui/icons-material/InboxOutlined'\nexport {default as SearchOffIcon} from '@mui/icons-material/SearchOff'\nexport {default as ClearRoundedIcon} from '@mui/icons-material/ClearRounded'\nexport {default as ArrowDropDownRoundedIcon} from '@mui/icons-material/ArrowDropDownRounded'\n\n// login\nexport {default as AccountIcon} from '@mui/icons-material/AccountBox'\nexport {default as LogoutIcon} from '@mui/icons-material/Logout'\nexport {default as LoginIcon} from '@mui/icons-material/Login'\nexport {default as DashboardIcon} from '@mui/icons-material/Dashboard'\n\n//logo\nexport {default as WorkFlowIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as HelpOutlineIcon} from '@mui/icons-material/HelpOutline'\nexport {default as NavigateBeforeIcon} from '@mui/icons-material/NavigateBefore'\nexport {default as NavigateNextIcon} from '@mui/icons-material/NavigateNext'\nexport {default as PersonIcon} from '@mui/icons-material/Person'\nexport {default as CalendarTodayIcon} from '@mui/icons-material/CalendarToday'\nexport {default as ChatIcon} from '@mui/icons-material/QuestionAnswerOutlined'\nexport {default as TodayIcon} from '@mui/icons-material/Today'\nexport {default as DeleteForeverIcon} from '@mui/icons-material/DeleteForever'\n\nexport {default as AdsClickIcon} from '@mui/icons-material/AdsClick'\nexport {default as FingerprintIcon} from '@mui/icons-material/Fingerprint'\nexport {default as SportsEsportsOutlinedIcon} from '@mui/icons-material/SportsEsportsOutlined'\nexport {default as HelpOutlineRoundedIcon} from '@mui/icons-material/HelpOutlineRounded'\nexport {default as AccountTreeOutlinedIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as SmartToyOutlinedIcon} from '@mui/icons-material/SmartToyOutlined'\nexport {default as AcUnitIcon} from '@mui/icons-material/AcUnit'\nexport {default as LoopIcon} from '@mui/icons-material/Loop'\nexport {default as PendingIcon} from '@mui/icons-material/Pending'\nexport {default as AllInclusiveIcon} from '@mui/icons-material/AllInclusive'\nexport {default as WarningOutlinedIcon} from '@mui/icons-material/WarningOutlined'\nexport {default as InfoOutlinedIcon} from '@mui/icons-material/InfoOutlined'\nexport {default as AutoAwesomeRoundedIcon} from '@mui/icons-material/AutoAwesomeRounded'\nexport {default as ErrorOutlineOutlinedIcon} from '@mui/icons-material/ErrorOutlineOutlined'\nexport {default as DownloadFilledIcon} from '@mui/icons-material/Download'","'use client'\nimport type React from 'react'\nimport { Box } from '@/ele/Box'\nimport { Typography } from '@/ele/Typography'\nimport { Button } from '@/ele/Button'\nimport { ErrorOutlineOutlinedIcon, ReplayIcon } from '@/icons/MuiIcon'\n\nexport type ErrorStateProps = {\n icon?: React.ReactNode\n title?: React.ReactNode\n description?: React.ReactNode\n retry?: () => void\n retryLabel?: string\n sx?: React.ComponentProps<typeof Box>['sx']\n}\n\n/**\n * Page/section-level error with soft dashed frame and optional retry.\n */\nexport function ErrorState({\n icon,\n title = 'Something went wrong',\n description,\n retry,\n retryLabel = 'Try again',\n sx,\n}: ErrorStateProps) {\n return (\n <Box\n role=\"alert\"\n data-testid=\"error-state\"\n sx={[\n {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n gap: 1,\n px: 3,\n py: 4,\n borderRadius: '16px',\n border: '1px dashed var(--mui-palette-border-1)',\n backgroundColor:\n 'color-mix(in srgb, var(--mui-palette-error-main) 5%, var(--mui-palette-background-paper))',\n boxSizing: 'border-box',\n minHeight: 160,\n },\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ] as never}\n >\n <Box\n aria-hidden\n sx={{ color: 'var(--mui-palette-error-main)', display: 'flex', opacity: 0.9 }}\n >\n {icon ?? <ErrorOutlineOutlinedIcon sx={{ fontSize: 40 }} />}\n </Box>\n {typeof title === 'string' ? (\n <Typography variant=\"subtitle1\" sx={{ m: 0, fontWeight: 600 }}>\n {title}\n </Typography>\n ) : (\n title\n )}\n {description ? (\n typeof description === 'string' ? (\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ m: 0, maxWidth: 360 }}>\n {description}\n </Typography>\n ) : (\n description\n )\n ) : null}\n {retry ? (\n <Button\n size=\"small\"\n variant=\"outlined\"\n color=\"error\"\n onClick={retry}\n startIcon={<ReplayIcon />}\n sx={{\n mt: 0.5,\n textTransform: 'none',\n borderColor: 'var(--mui-palette-border-1)',\n }}\n >\n {retryLabel}\n </Button>\n ) : null}\n </Box>\n )\n}\n"],"mappings":"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","names":["MuiButton","import_PhotoSizeSelectLarge","import_Close","import_Person","import_DeleteForever","import_AccountTreeOutlined","import_jsx_runtime"]}
@@ -0,0 +1,15 @@
1
+ import {
2
+ ErrorState
3
+ } from "./chunk-F2CGFVIZ.mjs";
4
+ import "./chunk-ZVFYOXDE.mjs";
5
+ import "./chunk-D4XPNSSI.mjs";
6
+ import "./chunk-4Q54P737.mjs";
7
+ import "./chunk-OP6LKXPA.mjs";
8
+ import "./chunk-4RPFRNXG.mjs";
9
+ import "./chunk-PNSJC6PC.mjs";
10
+ import "./chunk-AFLEG5ZC.mjs";
11
+ import "./chunk-FJ6ZGZIA.mjs";
12
+ export {
13
+ ErrorState
14
+ };
15
+ //# sourceMappingURL=errorState.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,197 @@
1
+ import React from 'react';
2
+ import { SxProps, Theme } from '@mui/material/styles';
3
+
4
+ /** Per-file upload lifecycle for progress UI driven from outside. */
5
+ type FileUploadStatus = 'idle' | 'uploading' | 'success' | 'error';
6
+ /**
7
+ * Controlled item shape — UseForm-friendly.
8
+ *
9
+ * Store `FileUploadItem[]` in form state; submit with `.map((i) => i.file)`.
10
+ * Drive progress from the parent by updating `progress` / `status` / `error`
11
+ * on the same items (keep stable `id`s).
12
+ */
13
+ type FileUploadItem = {
14
+ id: string;
15
+ file: File;
16
+ /** 0–100. Shown when status is uploading or when explicitly set. */
17
+ progress?: number;
18
+ error?: string;
19
+ status?: FileUploadStatus;
20
+ };
21
+ type FileRejectCode = 'file-too-large' | 'file-invalid-type' | 'too-many-files';
22
+ type FileRejection = {
23
+ file: File;
24
+ errors: FileRejectCode[];
25
+ };
26
+ type FileUploadProps = {
27
+ /** Controlled value. Prefer over uncontrolled for UseForm. */
28
+ value?: FileUploadItem[];
29
+ defaultValue?: FileUploadItem[];
30
+ onChange?: (value: FileUploadItem[]) => void;
31
+ /** Called after a file is removed (value is post-remove). */
32
+ onRemove?: (item: FileUploadItem, value: FileUploadItem[]) => void;
33
+ /** Size / type / maxFiles rejections from browse or drop. */
34
+ onReject?: (rejections: FileRejection[]) => void;
35
+ /** Allow multiple files. Default true. */
36
+ multiple?: boolean;
37
+ /**
38
+ * HTML accept string, e.g. `"image/*,.pdf,application/pdf"`.
39
+ * Validated on drop and browse.
40
+ */
41
+ accept?: string;
42
+ /** Max bytes per file. */
43
+ maxSize?: number;
44
+ /** Max files in the list (enforced with multiple). */
45
+ maxFiles?: number;
46
+ disabled?: boolean;
47
+ /**
48
+ * Hide the dropzone/button trigger — queue-only list (e.g. Process upload modal).
49
+ */
50
+ hideDropzone?: boolean;
51
+ /** Hide per-file remove controls. */
52
+ disableRemove?: boolean;
53
+ /**
54
+ * Read-only queue: hides trigger + remove (Process / progress display).
55
+ * Equivalent to `hideDropzone` + `disableRemove`.
56
+ */
57
+ readOnly?: boolean;
58
+ /** TextField-like chrome. */
59
+ label?: React.ReactNode;
60
+ name?: string;
61
+ helperText?: React.ReactNode;
62
+ error?: boolean;
63
+ required?: boolean;
64
+ /**
65
+ * Trigger chrome. `dropzone` = large dashed area (default);
66
+ * `button` = compact soft upload button (compound DropZoneButton parity).
67
+ * Separate from how selected files render — see `itemVariant`.
68
+ */
69
+ variant?: 'dropzone' | 'button';
70
+ /**
71
+ * How selected files render. `row` = name/size list (default);
72
+ * `tile` = square preview tiles with hover remove (mock-style grid).
73
+ */
74
+ itemVariant?: 'row' | 'tile';
75
+ /** Button-variant label. Default "Upload file". */
76
+ buttonLabel?: React.ReactNode;
77
+ /** Dropzone copy (variant="dropzone"). */
78
+ dropzoneTitle?: React.ReactNode;
79
+ dropzoneDescription?: React.ReactNode;
80
+ id?: string;
81
+ className?: string;
82
+ sx?: SxProps<Theme>;
83
+ 'data-testid'?: string;
84
+ };
85
+
86
+ /**
87
+ * Soft FileUpload dropzone + file list.
88
+ *
89
+ * **UseForm API:** controlled `value: FileUploadItem[]` / `onChange`.
90
+ * Submit blobs with `value.map((i) => i.file)`. Drive progress from outside
91
+ * by updating `progress` / `status` / `error` on the same items (stable `id`).
92
+ *
93
+ * Soft quiet 1px dashed border + elevated fill (EmptyState / Autocomplete glass).
94
+ * `variant="button"` = compact soft upload button (compound DropZoneButton parity).
95
+ */
96
+ declare const FileUpload: React.ForwardRefExoticComponent<FileUploadProps & React.RefAttributes<HTMLDivElement>>;
97
+
98
+ /** Stable id for a new upload item (browser crypto when available). */
99
+ declare function createFileUploadId(): string;
100
+ declare function createFileUploadItem(file: File): FileUploadItem;
101
+ declare function formatFileSize(bytes: number): string;
102
+ type ValidateFilesOptions = {
103
+ accept?: string;
104
+ maxSize?: number;
105
+ maxFiles?: number;
106
+ currentCount: number;
107
+ multiple: boolean;
108
+ };
109
+ /**
110
+ * Validate incoming FileList / File[] against accept, maxSize, maxFiles, multiple.
111
+ * Accepted files are those that pass; capacity is applied in order.
112
+ */
113
+ declare function validateFiles(incoming: File[], opts: ValidateFilesOptions): {
114
+ accepted: File[];
115
+ rejections: FileRejection[];
116
+ };
117
+ /**
118
+ * Extension for react-file-icon / defaultStyles lookup.
119
+ * Prefers File.name; falls back to a small mime map (not an icon map).
120
+ */
121
+ declare function getFileExtension(file: File): string;
122
+ declare function isImageFile(file: File): boolean;
123
+ type FileIconStyleBag = Record<string, unknown> & {
124
+ type?: string;
125
+ labelColor?: string;
126
+ labelTextColor?: string;
127
+ labelUppercase?: boolean;
128
+ foldColor?: string;
129
+ color?: string;
130
+ glyphColor?: string;
131
+ gradientOpacity?: number;
132
+ };
133
+ /**
134
+ * defaultStyles.zip/rar/gz only set `type: "compressed"` — no labelColor.
135
+ * Amber badge so archives read like pdf's red chip.
136
+ */
137
+ declare const ARCHIVE_FILE_ICON_STYLE: {
138
+ type: "compressed";
139
+ labelColor: string;
140
+ labelTextColor: string;
141
+ labelUppercase: boolean;
142
+ foldColor: string;
143
+ color: string;
144
+ glyphColor: string;
145
+ };
146
+ /**
147
+ * Many defaultStyles entries are type-only (no labelColor/color) and render as
148
+ * mono whitesmoke. Colorize by glyph `type` so every icon stays vivid.
149
+ * Keys match react-file-icon `type` enum.
150
+ */
151
+ declare const TYPE_COLOR_FALLBACKS: Record<string, FileIconStyleBag>;
152
+ /** Unknown / empty ext — never mono whitesmoke. */
153
+ declare const UNKNOWN_FILE_ICON_STYLE: FileIconStyleBag;
154
+ type FileIconStyleProps = {
155
+ /** Label text on the icon (original ext when possible). */
156
+ extension?: string;
157
+ /** Key used for defaultStyles lookup (after aliases). */
158
+ styleKey: string;
159
+ /** Props to spread onto <FileIcon /> (full defaultStyles + enrichments). */
160
+ style: FileIconStyleBag;
161
+ };
162
+ /**
163
+ * Resolve extension + style for react-file-icon.
164
+ * Always spreads `defaultStyles[key]` fully; enriches type-only / unknown
165
+ * entries so icons are never forced grayscale.
166
+ */
167
+ declare function resolveFileIconStyle(file: File, defaultStyles: Record<string, FileIconStyleBag | undefined>): FileIconStyleProps;
168
+
169
+ /**
170
+ * Soft / quiet FileUpload chrome — Google-style dark:
171
+ * darker canvas, lighter elevated surfaces, 1px borders (not thick outlines).
172
+ * Mirrors EmptyState dashed soft fill + Autocomplete glass vars language.
173
+ */
174
+ declare const fileUploadRootSx: SxProps<Theme>;
175
+ declare const fileUploadDropzoneSx: SxProps<Theme>;
176
+ declare const fileUploadItemSx: SxProps<Theme>;
177
+ declare const fileUploadThumbSx: SxProps<Theme>;
178
+ declare const fileUploadIconWellSx: SxProps<Theme>;
179
+ /** Scale react-file-icon SVG into the soft well — do not gray/desaturate. */
180
+ declare const fileUploadLibIconSx: SxProps<Theme>;
181
+ /** Compact soft upload button — quiet 1px border, elevated dark surface. */
182
+ declare const fileUploadButtonSx: SxProps<Theme>;
183
+ /** Flex wrap grid for tile items. */
184
+ declare const fileUploadTileListSx: SxProps<Theme>;
185
+ /** Soft square preview tile (~80px). */
186
+ declare const fileUploadTileSx: SxProps<Theme>;
187
+ /** Fill tile with image cover. */
188
+ declare const fileUploadTileMediaSx: SxProps<Theme>;
189
+ /** Centered type-icon well inside a tile (non-images). */
190
+ declare const fileUploadTileIconWellSx: SxProps<Theme>;
191
+ declare const fileUploadTileLibIconSx: SxProps<Theme>;
192
+ /** Circular white X — top-right overlap; visible on hover/focus. */
193
+ declare const fileUploadTileRemoveSx: SxProps<Theme>;
194
+ /** Thin progress strip along tile bottom. */
195
+ declare const fileUploadTileProgressSx: SxProps<Theme>;
196
+
197
+ export { ARCHIVE_FILE_ICON_STYLE, type FileIconStyleBag, type FileIconStyleProps, type FileRejectCode, type FileRejection, FileUpload, type FileUploadItem, type FileUploadProps, type FileUploadStatus, TYPE_COLOR_FALLBACKS, UNKNOWN_FILE_ICON_STYLE, type ValidateFilesOptions, createFileUploadId, createFileUploadItem, fileUploadButtonSx, fileUploadDropzoneSx, fileUploadIconWellSx, fileUploadItemSx, fileUploadLibIconSx, fileUploadRootSx, fileUploadThumbSx, fileUploadTileIconWellSx, fileUploadTileLibIconSx, fileUploadTileListSx, fileUploadTileMediaSx, fileUploadTileProgressSx, fileUploadTileRemoveSx, fileUploadTileSx, formatFileSize, getFileExtension, isImageFile, resolveFileIconStyle, validateFiles };
@@ -0,0 +1,197 @@
1
+ import React from 'react';
2
+ import { SxProps, Theme } from '@mui/material/styles';
3
+
4
+ /** Per-file upload lifecycle for progress UI driven from outside. */
5
+ type FileUploadStatus = 'idle' | 'uploading' | 'success' | 'error';
6
+ /**
7
+ * Controlled item shape — UseForm-friendly.
8
+ *
9
+ * Store `FileUploadItem[]` in form state; submit with `.map((i) => i.file)`.
10
+ * Drive progress from the parent by updating `progress` / `status` / `error`
11
+ * on the same items (keep stable `id`s).
12
+ */
13
+ type FileUploadItem = {
14
+ id: string;
15
+ file: File;
16
+ /** 0–100. Shown when status is uploading or when explicitly set. */
17
+ progress?: number;
18
+ error?: string;
19
+ status?: FileUploadStatus;
20
+ };
21
+ type FileRejectCode = 'file-too-large' | 'file-invalid-type' | 'too-many-files';
22
+ type FileRejection = {
23
+ file: File;
24
+ errors: FileRejectCode[];
25
+ };
26
+ type FileUploadProps = {
27
+ /** Controlled value. Prefer over uncontrolled for UseForm. */
28
+ value?: FileUploadItem[];
29
+ defaultValue?: FileUploadItem[];
30
+ onChange?: (value: FileUploadItem[]) => void;
31
+ /** Called after a file is removed (value is post-remove). */
32
+ onRemove?: (item: FileUploadItem, value: FileUploadItem[]) => void;
33
+ /** Size / type / maxFiles rejections from browse or drop. */
34
+ onReject?: (rejections: FileRejection[]) => void;
35
+ /** Allow multiple files. Default true. */
36
+ multiple?: boolean;
37
+ /**
38
+ * HTML accept string, e.g. `"image/*,.pdf,application/pdf"`.
39
+ * Validated on drop and browse.
40
+ */
41
+ accept?: string;
42
+ /** Max bytes per file. */
43
+ maxSize?: number;
44
+ /** Max files in the list (enforced with multiple). */
45
+ maxFiles?: number;
46
+ disabled?: boolean;
47
+ /**
48
+ * Hide the dropzone/button trigger — queue-only list (e.g. Process upload modal).
49
+ */
50
+ hideDropzone?: boolean;
51
+ /** Hide per-file remove controls. */
52
+ disableRemove?: boolean;
53
+ /**
54
+ * Read-only queue: hides trigger + remove (Process / progress display).
55
+ * Equivalent to `hideDropzone` + `disableRemove`.
56
+ */
57
+ readOnly?: boolean;
58
+ /** TextField-like chrome. */
59
+ label?: React.ReactNode;
60
+ name?: string;
61
+ helperText?: React.ReactNode;
62
+ error?: boolean;
63
+ required?: boolean;
64
+ /**
65
+ * Trigger chrome. `dropzone` = large dashed area (default);
66
+ * `button` = compact soft upload button (compound DropZoneButton parity).
67
+ * Separate from how selected files render — see `itemVariant`.
68
+ */
69
+ variant?: 'dropzone' | 'button';
70
+ /**
71
+ * How selected files render. `row` = name/size list (default);
72
+ * `tile` = square preview tiles with hover remove (mock-style grid).
73
+ */
74
+ itemVariant?: 'row' | 'tile';
75
+ /** Button-variant label. Default "Upload file". */
76
+ buttonLabel?: React.ReactNode;
77
+ /** Dropzone copy (variant="dropzone"). */
78
+ dropzoneTitle?: React.ReactNode;
79
+ dropzoneDescription?: React.ReactNode;
80
+ id?: string;
81
+ className?: string;
82
+ sx?: SxProps<Theme>;
83
+ 'data-testid'?: string;
84
+ };
85
+
86
+ /**
87
+ * Soft FileUpload dropzone + file list.
88
+ *
89
+ * **UseForm API:** controlled `value: FileUploadItem[]` / `onChange`.
90
+ * Submit blobs with `value.map((i) => i.file)`. Drive progress from outside
91
+ * by updating `progress` / `status` / `error` on the same items (stable `id`).
92
+ *
93
+ * Soft quiet 1px dashed border + elevated fill (EmptyState / Autocomplete glass).
94
+ * `variant="button"` = compact soft upload button (compound DropZoneButton parity).
95
+ */
96
+ declare const FileUpload: React.ForwardRefExoticComponent<FileUploadProps & React.RefAttributes<HTMLDivElement>>;
97
+
98
+ /** Stable id for a new upload item (browser crypto when available). */
99
+ declare function createFileUploadId(): string;
100
+ declare function createFileUploadItem(file: File): FileUploadItem;
101
+ declare function formatFileSize(bytes: number): string;
102
+ type ValidateFilesOptions = {
103
+ accept?: string;
104
+ maxSize?: number;
105
+ maxFiles?: number;
106
+ currentCount: number;
107
+ multiple: boolean;
108
+ };
109
+ /**
110
+ * Validate incoming FileList / File[] against accept, maxSize, maxFiles, multiple.
111
+ * Accepted files are those that pass; capacity is applied in order.
112
+ */
113
+ declare function validateFiles(incoming: File[], opts: ValidateFilesOptions): {
114
+ accepted: File[];
115
+ rejections: FileRejection[];
116
+ };
117
+ /**
118
+ * Extension for react-file-icon / defaultStyles lookup.
119
+ * Prefers File.name; falls back to a small mime map (not an icon map).
120
+ */
121
+ declare function getFileExtension(file: File): string;
122
+ declare function isImageFile(file: File): boolean;
123
+ type FileIconStyleBag = Record<string, unknown> & {
124
+ type?: string;
125
+ labelColor?: string;
126
+ labelTextColor?: string;
127
+ labelUppercase?: boolean;
128
+ foldColor?: string;
129
+ color?: string;
130
+ glyphColor?: string;
131
+ gradientOpacity?: number;
132
+ };
133
+ /**
134
+ * defaultStyles.zip/rar/gz only set `type: "compressed"` — no labelColor.
135
+ * Amber badge so archives read like pdf's red chip.
136
+ */
137
+ declare const ARCHIVE_FILE_ICON_STYLE: {
138
+ type: "compressed";
139
+ labelColor: string;
140
+ labelTextColor: string;
141
+ labelUppercase: boolean;
142
+ foldColor: string;
143
+ color: string;
144
+ glyphColor: string;
145
+ };
146
+ /**
147
+ * Many defaultStyles entries are type-only (no labelColor/color) and render as
148
+ * mono whitesmoke. Colorize by glyph `type` so every icon stays vivid.
149
+ * Keys match react-file-icon `type` enum.
150
+ */
151
+ declare const TYPE_COLOR_FALLBACKS: Record<string, FileIconStyleBag>;
152
+ /** Unknown / empty ext — never mono whitesmoke. */
153
+ declare const UNKNOWN_FILE_ICON_STYLE: FileIconStyleBag;
154
+ type FileIconStyleProps = {
155
+ /** Label text on the icon (original ext when possible). */
156
+ extension?: string;
157
+ /** Key used for defaultStyles lookup (after aliases). */
158
+ styleKey: string;
159
+ /** Props to spread onto <FileIcon /> (full defaultStyles + enrichments). */
160
+ style: FileIconStyleBag;
161
+ };
162
+ /**
163
+ * Resolve extension + style for react-file-icon.
164
+ * Always spreads `defaultStyles[key]` fully; enriches type-only / unknown
165
+ * entries so icons are never forced grayscale.
166
+ */
167
+ declare function resolveFileIconStyle(file: File, defaultStyles: Record<string, FileIconStyleBag | undefined>): FileIconStyleProps;
168
+
169
+ /**
170
+ * Soft / quiet FileUpload chrome — Google-style dark:
171
+ * darker canvas, lighter elevated surfaces, 1px borders (not thick outlines).
172
+ * Mirrors EmptyState dashed soft fill + Autocomplete glass vars language.
173
+ */
174
+ declare const fileUploadRootSx: SxProps<Theme>;
175
+ declare const fileUploadDropzoneSx: SxProps<Theme>;
176
+ declare const fileUploadItemSx: SxProps<Theme>;
177
+ declare const fileUploadThumbSx: SxProps<Theme>;
178
+ declare const fileUploadIconWellSx: SxProps<Theme>;
179
+ /** Scale react-file-icon SVG into the soft well — do not gray/desaturate. */
180
+ declare const fileUploadLibIconSx: SxProps<Theme>;
181
+ /** Compact soft upload button — quiet 1px border, elevated dark surface. */
182
+ declare const fileUploadButtonSx: SxProps<Theme>;
183
+ /** Flex wrap grid for tile items. */
184
+ declare const fileUploadTileListSx: SxProps<Theme>;
185
+ /** Soft square preview tile (~80px). */
186
+ declare const fileUploadTileSx: SxProps<Theme>;
187
+ /** Fill tile with image cover. */
188
+ declare const fileUploadTileMediaSx: SxProps<Theme>;
189
+ /** Centered type-icon well inside a tile (non-images). */
190
+ declare const fileUploadTileIconWellSx: SxProps<Theme>;
191
+ declare const fileUploadTileLibIconSx: SxProps<Theme>;
192
+ /** Circular white X — top-right overlap; visible on hover/focus. */
193
+ declare const fileUploadTileRemoveSx: SxProps<Theme>;
194
+ /** Thin progress strip along tile bottom. */
195
+ declare const fileUploadTileProgressSx: SxProps<Theme>;
196
+
197
+ export { ARCHIVE_FILE_ICON_STYLE, type FileIconStyleBag, type FileIconStyleProps, type FileRejectCode, type FileRejection, FileUpload, type FileUploadItem, type FileUploadProps, type FileUploadStatus, TYPE_COLOR_FALLBACKS, UNKNOWN_FILE_ICON_STYLE, type ValidateFilesOptions, createFileUploadId, createFileUploadItem, fileUploadButtonSx, fileUploadDropzoneSx, fileUploadIconWellSx, fileUploadItemSx, fileUploadLibIconSx, fileUploadRootSx, fileUploadThumbSx, fileUploadTileIconWellSx, fileUploadTileLibIconSx, fileUploadTileListSx, fileUploadTileMediaSx, fileUploadTileProgressSx, fileUploadTileRemoveSx, fileUploadTileSx, formatFileSize, getFileExtension, isImageFile, resolveFileIconStyle, validateFiles };