@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
@@ -31,28 +31,102 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var DatePicker_exports = {};
32
32
  __export(DatePicker_exports, {
33
33
  MuiXDatePicker: () => MuiXDatePicker_default,
34
+ MuiXDateRangePicker: () => MuiXDateRangePicker_default,
34
35
  MuiXDateTimePicker: () => MuiXDateTimePicker_default,
36
+ MuiXTimePicker: () => MuiXTimePicker_default,
35
37
  dateCalendarTheme: () => dateCalendarTheme,
36
38
  datePickerTheme: () => datePickerTheme,
37
39
  dateTimePickerTheme: () => dateTimePickerTheme,
38
40
  multiSectionDigitalClockTheme: () => multiSectionDigitalClockTheme,
39
41
  pickersCalendarHeaderTheme: () => pickersCalendarHeaderTheme,
40
42
  pickersDayTheme: () => pickersDayTheme,
41
- pickersInputBaseTheme: () => pickersInputBaseTheme
43
+ pickersInputBaseTheme: () => pickersInputBaseTheme,
44
+ timePickerTheme: () => timePickerTheme
42
45
  });
43
46
  module.exports = __toCommonJS(DatePicker_exports);
44
47
 
45
48
  // src/components/elemental/DatePicker/src/MuiXDatePicker.tsx
49
+ var import_react2 = __toESM(require("react"));
50
+ var import_dayjs = __toESM(require("dayjs"));
51
+ var import_customParseFormat = __toESM(require("dayjs/plugin/customParseFormat"));
46
52
  var import_LocalizationProvider = require("@mui/x-date-pickers/LocalizationProvider");
47
- var import_DatePicker = require("@mui/x-date-pickers/DatePicker");
48
53
  var import_AdapterDayjs = require("@mui/x-date-pickers/AdapterDayjs");
49
-
50
- // src/components/elemental/DatePicker/src/_shared.tsx
51
- var import_react2 = __toESM(require("react"));
52
- var import_PickersTextField = require("@mui/x-date-pickers/PickersTextField");
53
- var import_hooks = require("@mui/x-date-pickers/hooks");
54
- var import_styles = require("@mui/material/styles");
54
+ var import_DateCalendar = require("@mui/x-date-pickers/DateCalendar");
55
55
  var import_DialogActions = __toESM(require("@mui/material/DialogActions"));
56
+ var import_InputAdornment = __toESM(require("@mui/material/InputAdornment"));
57
+
58
+ // src/components/elemental/Box/src/index.ts
59
+ var import_Box = __toESM(require("@mui/material/Box"));
60
+ var import_Stack = __toESM(require("@mui/material/Stack"));
61
+ var import_Grid = __toESM(require("@mui/material/Grid"));
62
+
63
+ // src/components/elemental/Paper/src/Paper/Paper.tsx
64
+ var import_Paper = __toESM(require("@mui/material/Paper"));
65
+ var import_jsx_runtime = require("react/jsx-runtime");
66
+ function MuiPaper(props) {
67
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Paper.default, { ...props });
68
+ }
69
+
70
+ // src/components/elemental/Overlay/src/index.ts
71
+ var import_ClickAwayListener = __toESM(require("@mui/material/ClickAwayListener"));
72
+ var import_Popper = __toESM(require("@mui/material/Popper"));
73
+
74
+ // src/components/elemental/Button/src/IconButton/IconButton.tsx
75
+ var import_react = require("react");
76
+ var import_IconButton = __toESM(require("@mui/material/IconButton"));
77
+
78
+ // src/components/elemental/Tooltip/src/Tooltip/index.ts
79
+ var import_Tooltip = __toESM(require("@mui/material/Tooltip"));
80
+
81
+ // src/components/elemental/Button/src/IconButton/IconButton.tsx
82
+ var import_jsx_runtime2 = require("react/jsx-runtime");
83
+ var IconButton = (0, import_react.forwardRef)(({
84
+ title = "",
85
+ children,
86
+ color,
87
+ size,
88
+ slotProps,
89
+ selected,
90
+ className,
91
+ ...props
92
+ }, ref) => {
93
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
94
+ import_Tooltip.default,
95
+ {
96
+ title,
97
+ slotProps: {
98
+ popper: {
99
+ sx: {
100
+ textTransform: "capitalize"
101
+ }
102
+ },
103
+ ...slotProps?.tooltip
104
+ },
105
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_Box.default, { component: "span", sx: { width: "fit-content" }, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
106
+ import_IconButton.default,
107
+ {
108
+ ref,
109
+ color,
110
+ size,
111
+ className: [className, selected ? "Mui-selected" : ""].filter(Boolean).join(" "),
112
+ ...props,
113
+ children
114
+ }
115
+ ) })
116
+ }
117
+ );
118
+ });
119
+ var IconButton_default = IconButton;
120
+
121
+ // src/components/elemental/Chip/src/Chip/Chip.tsx
122
+ var import_Chip = __toESM(require("@mui/material/Chip"));
123
+ var import_jsx_runtime3 = require("react/jsx-runtime");
124
+ function Chip({ color = "default", ...props }) {
125
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_Chip.default, { ...props, color });
126
+ }
127
+
128
+ // src/components/elemental/Input/src/TextField/index.ts
129
+ var import_TextField = __toESM(require("@mui/material/TextField"));
56
130
 
57
131
  // src/components/Icons/MuiIcon/index.ts
58
132
  var import_ArrowRightAlt = __toESM(require("@mui/icons-material/ArrowRightAlt"));
@@ -202,154 +276,1525 @@ var import_AutoAwesomeRounded = __toESM(require("@mui/icons-material/AutoAwesome
202
276
  var import_ErrorOutlineOutlined = __toESM(require("@mui/icons-material/ErrorOutlineOutlined"));
203
277
  var import_Download = __toESM(require("@mui/icons-material/Download"));
204
278
 
205
- // src/components/elemental/Box/src/index.ts
206
- var import_Box = __toESM(require("@mui/material/Box"));
207
- var import_Stack = __toESM(require("@mui/material/Stack"));
208
- var import_Grid = __toESM(require("@mui/material/Grid"));
209
-
210
- // src/components/elemental/Button/src/IconButton/IconButton.tsx
211
- var import_react = require("react");
212
- var import_IconButton = __toESM(require("@mui/material/IconButton"));
213
-
214
- // src/components/elemental/Tooltip/src/Tooltip/index.ts
215
- var import_Tooltip = __toESM(require("@mui/material/Tooltip"));
216
-
217
- // src/components/elemental/Button/src/IconButton/IconButton.tsx
218
- var import_jsx_runtime = require("react/jsx-runtime");
219
- var IconButton = (0, import_react.forwardRef)(({
220
- title = "",
221
- children,
222
- color,
223
- size,
224
- slotProps,
225
- selected,
226
- className,
227
- ...props
228
- }, ref) => {
229
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
230
- import_Tooltip.default,
231
- {
232
- title,
233
- slotProps: {
234
- popper: {
235
- sx: {
236
- textTransform: "capitalize"
237
- }
279
+ // src/components/elemental/DatePicker/src/MuiXDatePicker.tsx
280
+ var import_jsx_runtime4 = require("react/jsx-runtime");
281
+ import_dayjs.default.extend(import_customParseFormat.default);
282
+ var DISPLAY_DATE_FMT = "MM/DD/YYYY";
283
+ var toDayjs = (v) => {
284
+ if (v == null || v === "") return null;
285
+ const d = (0, import_dayjs.default)(v);
286
+ return d.isValid() ? d : null;
287
+ };
288
+ var formatDateLabel = (v, fmt) => v && v.isValid() ? v.format(fmt) : "";
289
+ var DATE_PARSE_FORMATS = [
290
+ DISPLAY_DATE_FMT,
291
+ "M/D/YYYY",
292
+ "YYYY-MM-DD",
293
+ "MMM D, YYYY",
294
+ "D MMM YYYY",
295
+ "MMM D YYYY",
296
+ "YYYY/MM/DD"
297
+ ];
298
+ var parseDateInput = (raw) => {
299
+ const trimmed = raw.trim();
300
+ if (!trimmed) return null;
301
+ for (const fmt of DATE_PARSE_FORMATS) {
302
+ const d = (0, import_dayjs.default)(trimmed, fmt, true);
303
+ if (d.isValid()) return d.startOf("day");
304
+ }
305
+ const loose = (0, import_dayjs.default)(trimmed);
306
+ if (loose.isValid()) return loose.startOf("day");
307
+ return "invalid";
308
+ };
309
+ var MuiXDatePicker = ({
310
+ value: valueProp,
311
+ defaultValue,
312
+ onChange,
313
+ label = "Pick a date",
314
+ disabled,
315
+ format: formatProp,
316
+ sx,
317
+ disableTyping = false,
318
+ slotProps
319
+ }) => {
320
+ const displayFmt = formatProp ?? DISPLAY_DATE_FMT;
321
+ const isControlled = valueProp !== void 0;
322
+ const [uncontrolled, setUncontrolled] = import_react2.default.useState(
323
+ () => toDayjs(defaultValue)
324
+ );
325
+ const value = isControlled ? toDayjs(valueProp) : uncontrolled;
326
+ const [open, setOpen] = import_react2.default.useState(false);
327
+ const [draft, setDraft] = import_react2.default.useState(value);
328
+ const committedLabel = formatDateLabel(value, displayFmt);
329
+ const [inputText, setInputText] = import_react2.default.useState(committedLabel);
330
+ const [fieldFocused, setFieldFocused] = import_react2.default.useState(false);
331
+ const typingEnabled = !disableTyping;
332
+ const skipCommitOnBlurRef = import_react2.default.useRef(false);
333
+ const anchorRef = import_react2.default.useRef(null);
334
+ const [anchorEl, setAnchorEl] = import_react2.default.useState(null);
335
+ const tf = slotProps?.textField ?? {};
336
+ const mergedDisabled = disabled ?? tf.disabled;
337
+ const mergedRequired = Boolean(tf.required);
338
+ const mergedError = Boolean(tf.error);
339
+ const helperText = tf.helperText;
340
+ const commit = (next) => {
341
+ if (!isControlled) setUncontrolled(next);
342
+ onChange?.(next);
343
+ return next;
344
+ };
345
+ import_react2.default.useEffect(() => {
346
+ if (!fieldFocused) setInputText(committedLabel);
347
+ }, [committedLabel, fieldFocused]);
348
+ const commitTypedInput = () => {
349
+ if (!typingEnabled) return;
350
+ const parsed = parseDateInput(inputText);
351
+ if (parsed === "invalid") {
352
+ setInputText(committedLabel);
353
+ return;
354
+ }
355
+ const next = commit(parsed);
356
+ setDraft(next);
357
+ setInputText(formatDateLabel(next, displayFmt));
358
+ };
359
+ const openPicker = () => {
360
+ if (mergedDisabled) return;
361
+ setDraft(value);
362
+ setOpen(true);
363
+ };
364
+ const closePicker = () => {
365
+ setOpen(false);
366
+ };
367
+ const handleAccept = () => {
368
+ commit(draft);
369
+ setInputText(formatDateLabel(draft, displayFmt));
370
+ closePicker();
371
+ };
372
+ const handleCancel = () => {
373
+ setDraft(value);
374
+ closePicker();
375
+ };
376
+ const handleClear = () => {
377
+ setDraft(null);
378
+ };
379
+ const handleToday = () => {
380
+ setDraft((0, import_dayjs.default)().startOf("day"));
381
+ };
382
+ const handleCalendarChange = (d) => {
383
+ if (!d) {
384
+ setDraft(null);
385
+ return;
386
+ }
387
+ setDraft((0, import_dayjs.default)(d).startOf("day"));
388
+ };
389
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_LocalizationProvider.LocalizationProvider, { dateAdapter: import_AdapterDayjs.AdapterDayjs, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_Box.default, { sx: { display: "inline-flex", flexDirection: "column", ...sx || {} }, children: [
390
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
391
+ import_Box.default,
392
+ {
393
+ ref: (el) => {
394
+ anchorRef.current = el;
395
+ setAnchorEl(el);
238
396
  },
239
- ...slotProps?.tooltip
240
- },
241
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Box.default, { component: "span", sx: { width: "fit-content" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
242
- import_IconButton.default,
243
- {
244
- ref,
245
- color,
246
- size,
247
- className: [className, selected ? "Mui-selected" : ""].filter(Boolean).join(" "),
248
- ...props,
249
- children
250
- }
251
- ) })
397
+ sx: { display: "inline-flex", minWidth: 200 },
398
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
399
+ import_TextField.default,
400
+ {
401
+ size: "small",
402
+ fullWidth: true,
403
+ label,
404
+ value: typingEnabled ? inputText : committedLabel,
405
+ placeholder: displayFmt,
406
+ disabled: mergedDisabled,
407
+ required: mergedRequired,
408
+ error: mergedError,
409
+ helperText,
410
+ onClick: typingEnabled ? void 0 : openPicker,
411
+ onFocus: () => {
412
+ if (typingEnabled) {
413
+ setFieldFocused(true);
414
+ } else {
415
+ openPicker();
416
+ }
417
+ },
418
+ onBlur: () => {
419
+ if (!typingEnabled) return;
420
+ setFieldFocused(false);
421
+ if (skipCommitOnBlurRef.current) {
422
+ skipCommitOnBlurRef.current = false;
423
+ setInputText(committedLabel);
424
+ return;
425
+ }
426
+ commitTypedInput();
427
+ },
428
+ onChange: (e) => {
429
+ if (!typingEnabled) return;
430
+ setInputText(e.target.value);
431
+ },
432
+ onKeyDown: (e) => {
433
+ if (!typingEnabled) return;
434
+ if (e.key === "Enter") {
435
+ e.preventDefault();
436
+ e.target.blur();
437
+ }
438
+ if (e.key === "Escape") {
439
+ e.preventDefault();
440
+ skipCommitOnBlurRef.current = true;
441
+ setInputText(committedLabel);
442
+ e.target.blur();
443
+ }
444
+ },
445
+ inputProps: {
446
+ readOnly: !typingEnabled,
447
+ "aria-label": label,
448
+ "data-testid": "date-field"
449
+ },
450
+ InputProps: {
451
+ endAdornment: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_InputAdornment.default, { position: "end", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
452
+ IconButton_default,
453
+ {
454
+ size: "small",
455
+ disabled: mergedDisabled,
456
+ "aria-label": "Choose date",
457
+ title: "Choose date",
458
+ ...slotProps?.openPickerIcon,
459
+ onMouseDown: (e) => {
460
+ e.preventDefault();
461
+ },
462
+ onClick: (e) => {
463
+ e.stopPropagation();
464
+ if (open) closePicker();
465
+ else openPicker();
466
+ },
467
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_CalendarToday.default, { fontSize: "small" })
468
+ }
469
+ ) })
470
+ }
471
+ }
472
+ )
473
+ }
474
+ ),
475
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
476
+ import_Popper.default,
477
+ {
478
+ open,
479
+ anchorEl,
480
+ placement: "bottom-start",
481
+ style: { zIndex: 1300 },
482
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_ClickAwayListener.default, { onClickAway: handleCancel, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
483
+ MuiPaper,
484
+ {
485
+ elevation: 0,
486
+ sx: {
487
+ mt: 1,
488
+ borderRadius: "20px",
489
+ background: "var(--mui-palette-background-default)",
490
+ border: "solid 1px var(--mui-palette-border-1)",
491
+ overflow: "hidden"
492
+ },
493
+ children: [
494
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
495
+ import_DateCalendar.DateCalendar,
496
+ {
497
+ value: draft,
498
+ onChange: handleCalendarChange,
499
+ showDaysOutsideCurrentMonth: true
500
+ }
501
+ ),
502
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_DialogActions.default, { sx: { px: 1.5, pb: 1, justifyContent: "flex-end", gap: 0.5 }, children: [
503
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(IconButton_default, { "data-testid": "clear-action-button", onClick: handleClear, title: "clear", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_DeleteForever2.default, { fontSize: "small" }) }),
504
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(IconButton_default, { "data-testid": "today-action-button", onClick: handleToday, title: "today", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_Today.default, { fontSize: "small" }) }),
505
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(IconButton_default, { onClick: handleCancel, title: "cancel", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_Close2.default, { fontSize: "small" }) }),
506
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(IconButton_default, { onClick: handleAccept, title: "accept", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_Check.default, { fontSize: "small" }) })
507
+ ] })
508
+ ]
509
+ }
510
+ ) })
511
+ }
512
+ )
513
+ ] }) });
514
+ };
515
+ var MuiXDatePicker_default = MuiXDatePicker;
516
+
517
+ // src/components/elemental/DatePicker/src/MuiXDateTimePicker.tsx
518
+ var import_react3 = __toESM(require("react"));
519
+ var import_dayjs2 = __toESM(require("dayjs"));
520
+ var import_customParseFormat2 = __toESM(require("dayjs/plugin/customParseFormat"));
521
+ var import_LocalizationProvider2 = require("@mui/x-date-pickers/LocalizationProvider");
522
+ var import_AdapterDayjs2 = require("@mui/x-date-pickers/AdapterDayjs");
523
+ var import_DateCalendar2 = require("@mui/x-date-pickers/DateCalendar");
524
+ var import_MultiSectionDigitalClock = require("@mui/x-date-pickers/MultiSectionDigitalClock");
525
+ var import_DialogActions2 = __toESM(require("@mui/material/DialogActions"));
526
+ var import_InputAdornment2 = __toESM(require("@mui/material/InputAdornment"));
527
+ var import_jsx_runtime5 = require("react/jsx-runtime");
528
+ import_dayjs2.default.extend(import_customParseFormat2.default);
529
+ var DISPLAY_DATETIME_FMT = "MM/DD/YYYY hh:mm a";
530
+ var DISPLAY_DATETIME_FMT_24 = "MM/DD/YYYY HH:mm";
531
+ var toDayjs2 = (v) => {
532
+ if (v == null || v === "") return null;
533
+ const d = (0, import_dayjs2.default)(v);
534
+ return d.isValid() ? d : null;
535
+ };
536
+ var formatDateTimeLabel = (v, fmt) => v && v.isValid() ? v.format(fmt) : "";
537
+ var DATE_PARSE_FORMATS2 = [
538
+ "MM/DD/YYYY",
539
+ "M/D/YYYY",
540
+ "YYYY-MM-DD",
541
+ "MMM D, YYYY",
542
+ "D MMM YYYY",
543
+ "MMM D YYYY",
544
+ "YYYY/MM/DD"
545
+ ];
546
+ var MERIDIEM_TIME_FORMATS = [
547
+ "hh:mm a",
548
+ "h:mm a",
549
+ "hh:mma",
550
+ "h:mma",
551
+ "hh:mm A",
552
+ "h:mm A",
553
+ "hh:mmA",
554
+ "h:mmA"
555
+ ];
556
+ var DATETIME_PARSE_FORMATS = [
557
+ DISPLAY_DATETIME_FMT,
558
+ "MM/DD/YYYY h:mm a",
559
+ "M/D/YYYY hh:mm a",
560
+ "M/D/YYYY h:mm a",
561
+ "MM/DD/YYYY hh:mma",
562
+ "M/D/YYYY h:mma",
563
+ "MM/DD/YYYY HH:mm",
564
+ "M/D/YYYY H:mm",
565
+ "MM/DD/YYYY H:mm",
566
+ "YYYY-MM-DD HH:mm",
567
+ "YYYY-MM-DD H:mm",
568
+ "YYYY-MM-DDTHH:mm",
569
+ "YYYY-MM-DDTHH:mm:ss",
570
+ "YYYY-MM-DD HH:mm:ss",
571
+ "MMM D, YYYY hh:mm a",
572
+ "MMM D, YYYY h:mm a",
573
+ "MMM D, YYYY HH:mm"
574
+ ];
575
+ var stampDateTime = (datePart, hour, minute) => datePart.hour(hour).minute(minute).second(0).millisecond(0);
576
+ var parseTimeFragment = (raw, opts) => {
577
+ const trimmed = raw.trim();
578
+ if (!trimmed) return "invalid";
579
+ const normalized = trimmed.replace(/\s+/g, " ").replace(/(\d)\s*([ap])\.?m\.?$/i, (_, d, p) => `${d} ${p.toLowerCase()}m`);
580
+ for (const fmt of MERIDIEM_TIME_FORMATS) {
581
+ const d = (0, import_dayjs2.default)(normalized, fmt, true);
582
+ if (d.isValid()) return { hour: d.hour(), minute: d.minute() };
583
+ }
584
+ const bare = normalized.match(/^(\d{1,2})\s*:\s*(\d{2})$/);
585
+ if (bare) {
586
+ const hour = Number(bare[1]);
587
+ const minute = Number(bare[2]);
588
+ if (minute > 59 || hour > 23) return "invalid";
589
+ if (!opts.ampm || hour > 12 || hour === 0 && bare[1].length === 2) {
590
+ return { hour, minute };
591
+ }
592
+ let h12 = hour % 12;
593
+ if (opts.anchorHour != null && opts.anchorHour >= 12) {
594
+ h12 += 12;
595
+ }
596
+ if (hour === 12 && opts.anchorHour == null) {
597
+ h12 = 12;
598
+ } else if (hour === 12 && opts.anchorHour != null) {
599
+ h12 = opts.anchorHour >= 12 ? 12 : 0;
600
+ }
601
+ return { hour: h12, minute };
602
+ }
603
+ for (const fmt of ["HH:mm", "H:mm"]) {
604
+ const d = (0, import_dayjs2.default)(normalized, fmt, true);
605
+ if (d.isValid()) return { hour: d.hour(), minute: d.minute() };
606
+ }
607
+ return "invalid";
608
+ };
609
+ var parseDateFragment = (raw) => {
610
+ const t = raw.trim();
611
+ if (!t) return null;
612
+ for (const fmt of DATE_PARSE_FORMATS2) {
613
+ const d = (0, import_dayjs2.default)(t, fmt, true);
614
+ if (d.isValid()) return d.startOf("day");
615
+ }
616
+ const loose = (0, import_dayjs2.default)(t);
617
+ if (loose.isValid()) return loose.startOf("day");
618
+ return "invalid";
619
+ };
620
+ var splitDateAndTime = (raw) => {
621
+ const s = raw.trim();
622
+ const isoT = s.match(/^(\d{4}-\d{2}-\d{2})[T\s]+(.+)$/i);
623
+ if (isoT) return [isoT[1], isoT[2]];
624
+ const m = s.match(/^(.+?)\s+(\d{1,2}:\d{2}(?:\s*[ap]\.?m\.?)?)$/i);
625
+ if (m) return [m[1], m[2]];
626
+ return null;
627
+ };
628
+ var parseDateTimeInput = (raw, opts) => {
629
+ const trimmed = raw.trim();
630
+ if (!trimmed) return null;
631
+ const normalized = trimmed.replace(/\s+/g, " ").replace(/(\d)\s*([ap])\.?m\.?$/i, (_, d, p) => `${d} ${p.toLowerCase()}m`);
632
+ for (const fmt of DATETIME_PARSE_FORMATS) {
633
+ const d = (0, import_dayjs2.default)(normalized, fmt, true);
634
+ if (d.isValid()) return d.second(0).millisecond(0);
635
+ }
636
+ const halves = splitDateAndTime(normalized);
637
+ if (halves) {
638
+ const datePart = parseDateFragment(halves[0]);
639
+ if (datePart === "invalid" || datePart == null) return "invalid";
640
+ const timePart = parseTimeFragment(halves[1], {
641
+ ampm: opts.ampm,
642
+ anchorHour: opts.anchor && opts.anchor.isValid() ? opts.anchor.hour() : null
643
+ });
644
+ if (timePart === "invalid") return "invalid";
645
+ return stampDateTime(datePart, timePart.hour, timePart.minute);
646
+ }
647
+ const dateOnly = parseDateFragment(normalized);
648
+ if (dateOnly !== "invalid" && dateOnly != null) {
649
+ if (opts.anchor && opts.anchor.isValid()) {
650
+ return stampDateTime(dateOnly, opts.anchor.hour(), opts.anchor.minute());
252
651
  }
652
+ return stampDateTime(dateOnly, 0, 0);
653
+ }
654
+ const loose = (0, import_dayjs2.default)(trimmed);
655
+ if (loose.isValid()) return loose.second(0).millisecond(0);
656
+ return "invalid";
657
+ };
658
+ var MuiXDateTimePicker = ({
659
+ value: valueProp,
660
+ defaultValue,
661
+ onChange,
662
+ label = "Pick date & time",
663
+ disabled,
664
+ ampm = true,
665
+ format: formatProp,
666
+ sx,
667
+ disableTyping = false,
668
+ slotProps
669
+ }) => {
670
+ const displayFmt = formatProp ?? (ampm ? DISPLAY_DATETIME_FMT : DISPLAY_DATETIME_FMT_24);
671
+ const isControlled = valueProp !== void 0;
672
+ const [uncontrolled, setUncontrolled] = import_react3.default.useState(
673
+ () => toDayjs2(defaultValue)
253
674
  );
254
- });
255
- var IconButton_default = IconButton;
675
+ const value = isControlled ? toDayjs2(valueProp) : uncontrolled;
676
+ const [open, setOpen] = import_react3.default.useState(false);
677
+ const [draft, setDraft] = import_react3.default.useState(value);
678
+ const committedLabel = formatDateTimeLabel(value, displayFmt);
679
+ const [inputText, setInputText] = import_react3.default.useState(committedLabel);
680
+ const [fieldFocused, setFieldFocused] = import_react3.default.useState(false);
681
+ const typingEnabled = !disableTyping;
682
+ const skipCommitOnBlurRef = import_react3.default.useRef(false);
683
+ const anchorRef = import_react3.default.useRef(null);
684
+ const [anchorEl, setAnchorEl] = import_react3.default.useState(null);
685
+ const tf = slotProps?.textField ?? {};
686
+ const mergedDisabled = disabled ?? tf.disabled;
687
+ const mergedRequired = Boolean(tf.required);
688
+ const mergedError = Boolean(tf.error);
689
+ const helperText = tf.helperText;
690
+ const commit = (next) => {
691
+ if (!isControlled) setUncontrolled(next);
692
+ onChange?.(next);
693
+ return next;
694
+ };
695
+ import_react3.default.useEffect(() => {
696
+ if (!fieldFocused) setInputText(committedLabel);
697
+ }, [committedLabel, fieldFocused]);
698
+ const commitTypedInput = () => {
699
+ if (!typingEnabled) return;
700
+ const parsed = parseDateTimeInput(inputText, { ampm, anchor: value });
701
+ if (parsed === "invalid") {
702
+ setInputText(committedLabel);
703
+ return;
704
+ }
705
+ const next = commit(parsed);
706
+ setDraft(next);
707
+ setInputText(formatDateTimeLabel(next, displayFmt));
708
+ };
709
+ const openPicker = () => {
710
+ if (mergedDisabled) return;
711
+ setDraft(value);
712
+ setOpen(true);
713
+ };
714
+ const closePicker = () => {
715
+ setOpen(false);
716
+ };
717
+ const handleAccept = () => {
718
+ commit(draft);
719
+ setInputText(formatDateTimeLabel(draft, displayFmt));
720
+ closePicker();
721
+ };
722
+ const handleCancel = () => {
723
+ setDraft(value);
724
+ closePicker();
725
+ };
726
+ const handleClear = () => {
727
+ setDraft(null);
728
+ };
729
+ const handleCalendarChange = (d) => {
730
+ if (!d) {
731
+ setDraft(null);
732
+ return;
733
+ }
734
+ if (draft && draft.isValid()) {
735
+ setDraft(stampDateTime(d, draft.hour(), draft.minute()));
736
+ } else {
737
+ const now = (0, import_dayjs2.default)();
738
+ setDraft(stampDateTime(d, now.hour(), now.minute()));
739
+ }
740
+ };
741
+ const handleClockChange = (v) => {
742
+ if (!v) return;
743
+ const base = draft && draft.isValid() ? draft : (0, import_dayjs2.default)();
744
+ setDraft(stampDateTime(base, (0, import_dayjs2.default)(v).hour(), (0, import_dayjs2.default)(v).minute()));
745
+ };
746
+ const clockViews = ampm ? ["hours", "minutes", "meridiem"] : ["hours", "minutes"];
747
+ const placeholder = ampm ? "MM/DD/YYYY hh:mm aa" : "MM/DD/YYYY HH:mm";
748
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_LocalizationProvider2.LocalizationProvider, { dateAdapter: import_AdapterDayjs2.AdapterDayjs, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_Box.default, { sx: { display: "inline-flex", flexDirection: "column", ...sx || {} }, children: [
749
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
750
+ import_Box.default,
751
+ {
752
+ ref: (el) => {
753
+ anchorRef.current = el;
754
+ setAnchorEl(el);
755
+ },
756
+ sx: { display: "inline-flex", minWidth: 260 },
757
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
758
+ import_TextField.default,
759
+ {
760
+ size: "small",
761
+ fullWidth: true,
762
+ label,
763
+ value: typingEnabled ? inputText : committedLabel,
764
+ placeholder,
765
+ disabled: mergedDisabled,
766
+ required: mergedRequired,
767
+ error: mergedError,
768
+ helperText,
769
+ onClick: typingEnabled ? void 0 : openPicker,
770
+ onFocus: () => {
771
+ if (typingEnabled) {
772
+ setFieldFocused(true);
773
+ } else {
774
+ openPicker();
775
+ }
776
+ },
777
+ onBlur: () => {
778
+ if (!typingEnabled) return;
779
+ setFieldFocused(false);
780
+ if (skipCommitOnBlurRef.current) {
781
+ skipCommitOnBlurRef.current = false;
782
+ setInputText(committedLabel);
783
+ return;
784
+ }
785
+ commitTypedInput();
786
+ },
787
+ onChange: (e) => {
788
+ if (!typingEnabled) return;
789
+ setInputText(e.target.value);
790
+ },
791
+ onKeyDown: (e) => {
792
+ if (!typingEnabled) return;
793
+ if (e.key === "Enter") {
794
+ e.preventDefault();
795
+ e.target.blur();
796
+ }
797
+ if (e.key === "Escape") {
798
+ e.preventDefault();
799
+ skipCommitOnBlurRef.current = true;
800
+ setInputText(committedLabel);
801
+ e.target.blur();
802
+ }
803
+ },
804
+ inputProps: {
805
+ readOnly: !typingEnabled,
806
+ "aria-label": label,
807
+ "data-testid": "datetime-field"
808
+ },
809
+ InputProps: {
810
+ endAdornment: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_InputAdornment2.default, { position: "end", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
811
+ IconButton_default,
812
+ {
813
+ size: "small",
814
+ disabled: mergedDisabled,
815
+ "aria-label": "Choose date and time",
816
+ title: "Choose date and time",
817
+ ...slotProps?.openPickerIcon,
818
+ onMouseDown: (e) => {
819
+ e.preventDefault();
820
+ },
821
+ onClick: (e) => {
822
+ e.stopPropagation();
823
+ if (open) closePicker();
824
+ else openPicker();
825
+ },
826
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_CalendarToday.default, { fontSize: "small" })
827
+ }
828
+ ) })
829
+ }
830
+ }
831
+ )
832
+ }
833
+ ),
834
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
835
+ import_Popper.default,
836
+ {
837
+ open,
838
+ anchorEl,
839
+ placement: "bottom-start",
840
+ style: { zIndex: 1300 },
841
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_ClickAwayListener.default, { onClickAway: handleCancel, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
842
+ MuiPaper,
843
+ {
844
+ elevation: 0,
845
+ sx: {
846
+ mt: 1,
847
+ borderRadius: "20px",
848
+ background: "var(--mui-palette-background-default)",
849
+ border: "solid 1px var(--mui-palette-border-1)",
850
+ overflow: "hidden"
851
+ },
852
+ children: [
853
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
854
+ import_Box.default,
855
+ {
856
+ sx: {
857
+ display: "flex",
858
+ flexDirection: { xs: "column", sm: "row" },
859
+ alignItems: "stretch"
860
+ },
861
+ children: [
862
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
863
+ import_DateCalendar2.DateCalendar,
864
+ {
865
+ value: draft,
866
+ onChange: handleCalendarChange,
867
+ showDaysOutsideCurrentMonth: true
868
+ }
869
+ ),
870
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
871
+ import_Box.default,
872
+ {
873
+ sx: {
874
+ px: 1,
875
+ pt: 1,
876
+ borderLeft: {
877
+ sm: "solid 1px var(--mui-palette-border-1)"
878
+ },
879
+ borderTop: {
880
+ xs: "solid 1px var(--mui-palette-border-1)",
881
+ sm: "none"
882
+ },
883
+ display: "flex",
884
+ alignItems: "center"
885
+ },
886
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
887
+ import_MultiSectionDigitalClock.MultiSectionDigitalClock,
888
+ {
889
+ ampm,
890
+ value: draft,
891
+ onChange: handleClockChange,
892
+ views: [...clockViews]
893
+ }
894
+ )
895
+ }
896
+ )
897
+ ]
898
+ }
899
+ ),
900
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_DialogActions2.default, { sx: { px: 1.5, pb: 1, justifyContent: "flex-end", gap: 0.5 }, children: [
901
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(IconButton_default, { "data-testid": "clear-action-button", onClick: handleClear, title: "clear", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_DeleteForever2.default, { fontSize: "small" }) }),
902
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(IconButton_default, { onClick: handleCancel, title: "cancel", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_Close2.default, { fontSize: "small" }) }),
903
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(IconButton_default, { onClick: handleAccept, title: "accept", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_Check.default, { fontSize: "small" }) })
904
+ ] })
905
+ ]
906
+ }
907
+ ) })
908
+ }
909
+ )
910
+ ] }) });
911
+ };
912
+ var MuiXDateTimePicker_default = MuiXDateTimePicker;
256
913
 
257
- // src/components/elemental/DatePicker/src/_shared.tsx
258
- var import_jsx_runtime2 = require("react/jsx-runtime");
259
- var MyPickersTextField = import_react2.default.forwardRef(
260
- (props, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_PickersTextField.PickersTextField, { size: "small", ...props, ref })
261
- );
262
- var PickersActionBarRoot = (0, import_styles.styled)(import_DialogActions.default, {
263
- name: "MuiPickersLayout",
264
- slot: "ActionBar"
265
- })({});
266
- var MyActionBar = (props) => {
267
- const { actions, ...other } = props;
268
- const {
269
- clearValue,
270
- setValueToToday,
271
- acceptValueChanges,
272
- cancelValueChanges,
273
- goToNextStep,
274
- hasNextStep
275
- } = (0, import_hooks.usePickerContext)();
276
- if (actions == null || actions.length === 0) {
277
- return null;
914
+ // src/components/elemental/DatePicker/src/MuiXTimePicker.tsx
915
+ var import_react4 = __toESM(require("react"));
916
+ var import_dayjs3 = __toESM(require("dayjs"));
917
+ var import_customParseFormat3 = __toESM(require("dayjs/plugin/customParseFormat"));
918
+ var import_LocalizationProvider3 = require("@mui/x-date-pickers/LocalizationProvider");
919
+ var import_AdapterDayjs3 = require("@mui/x-date-pickers/AdapterDayjs");
920
+ var import_MultiSectionDigitalClock2 = require("@mui/x-date-pickers/MultiSectionDigitalClock");
921
+ var import_DialogActions3 = __toESM(require("@mui/material/DialogActions"));
922
+ var import_InputAdornment3 = __toESM(require("@mui/material/InputAdornment"));
923
+ var import_AccessTime = __toESM(require("@mui/icons-material/AccessTime"));
924
+ var import_jsx_runtime6 = require("react/jsx-runtime");
925
+ import_dayjs3.default.extend(import_customParseFormat3.default);
926
+ var DISPLAY_TIME_FMT = "hh:mm a";
927
+ var toDayjs3 = (v) => {
928
+ if (v == null || v === "") return null;
929
+ const d = (0, import_dayjs3.default)(v);
930
+ return d.isValid() ? d : null;
931
+ };
932
+ var formatTimeLabel = (v, fmt) => v && v.isValid() ? v.format(fmt) : "";
933
+ var MERIDIEM_PARSE_FORMATS = [
934
+ "hh:mm a",
935
+ "h:mm a",
936
+ "hh:mma",
937
+ "h:mma",
938
+ "hh:mm A",
939
+ "h:mm A",
940
+ "hh:mmA",
941
+ "h:mmA"
942
+ ];
943
+ var stampTime = (anchor, hour, minute) => {
944
+ const base = anchor && anchor.isValid() ? anchor : (0, import_dayjs3.default)();
945
+ return base.hour(hour).minute(minute).second(0).millisecond(0);
946
+ };
947
+ var parseTimeInput = (raw, opts) => {
948
+ const trimmed = raw.trim();
949
+ if (!trimmed) return null;
950
+ const normalized = trimmed.replace(/\s+/g, " ").replace(/(\d)\s*([ap])\.?m\.?$/i, (_, d, p) => `${d} ${p.toLowerCase()}m`);
951
+ for (const fmt of MERIDIEM_PARSE_FORMATS) {
952
+ const d = (0, import_dayjs3.default)(normalized, fmt, true);
953
+ if (d.isValid()) return stampTime(opts.anchor, d.hour(), d.minute());
278
954
  }
279
- const buttons = actions.map((actionType) => {
280
- switch (actionType) {
281
- case "clear":
282
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(IconButton_default, { "data-testid": "clear-action-button", onClick: clearValue, title: "clear", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_DeleteForever2.default, { fontSize: "small" }) }, actionType);
283
- case "cancel":
284
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(IconButton_default, { onClick: cancelValueChanges, title: "cancel", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_Close2.default, { fontSize: "small" }) }, actionType);
285
- case "accept":
286
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(IconButton_default, { onClick: acceptValueChanges, title: "accept", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_Check.default, { fontSize: "small" }) }, actionType);
287
- case "today":
288
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(IconButton_default, { "data-testid": "today-action-button", onClick: setValueToToday, title: "today", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_Today.default, { fontSize: "small" }) }, actionType);
289
- case "next":
290
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(IconButton_default, { onClick: goToNextStep, title: "next", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_NavigateNext.default, { fontSize: "small" }) }, actionType);
291
- case "nextOrAccept":
292
- if (hasNextStep) {
293
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(IconButton_default, { onClick: goToNextStep, title: "next", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_NavigateNext.default, { fontSize: "small" }) }, actionType);
294
- }
295
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(IconButton_default, { onClick: acceptValueChanges, title: "accept", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_Check.default, { fontSize: "small" }) }, actionType);
296
- default:
297
- return null;
955
+ const bare = normalized.match(/^(\d{1,2})\s*:\s*(\d{2})$/);
956
+ if (bare) {
957
+ const hour = Number(bare[1]);
958
+ const minute = Number(bare[2]);
959
+ if (minute > 59 || hour > 23) return "invalid";
960
+ if (!opts.ampm || hour > 12 || hour === 0 && bare[1].length === 2) {
961
+ return stampTime(opts.anchor, hour, minute);
962
+ }
963
+ let h12 = hour % 12;
964
+ if (opts.anchor && opts.anchor.isValid() && opts.anchor.hour() >= 12) {
965
+ h12 += 12;
298
966
  }
299
- });
300
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(PickersActionBarRoot, { ...other, children: buttons });
967
+ if (hour === 12 && !(opts.anchor && opts.anchor.isValid())) {
968
+ h12 = 12;
969
+ } else if (hour === 12 && opts.anchor && opts.anchor.isValid()) {
970
+ h12 = opts.anchor.hour() >= 12 ? 12 : 0;
971
+ }
972
+ return stampTime(opts.anchor, h12, minute);
973
+ }
974
+ for (const fmt of ["HH:mm", "H:mm"]) {
975
+ const d = (0, import_dayjs3.default)(normalized, fmt, true);
976
+ if (d.isValid()) return stampTime(opts.anchor, d.hour(), d.minute());
977
+ }
978
+ return "invalid";
301
979
  };
302
-
303
- // src/components/elemental/DatePicker/src/MuiXDatePicker.tsx
304
- var import_jsx_runtime3 = require("react/jsx-runtime");
305
- var MuiXDatePicker = (props) => {
306
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_LocalizationProvider.LocalizationProvider, { dateAdapter: import_AdapterDayjs.AdapterDayjs, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
307
- import_DatePicker.DatePicker,
308
- {
309
- showDaysOutsideCurrentMonth: true,
310
- ...props,
311
- slotProps: {
312
- actionBar: {
313
- actions: ["clear", "today", "cancel", "accept"]
980
+ var MuiXTimePicker = ({
981
+ value: valueProp,
982
+ defaultValue,
983
+ onChange,
984
+ label = "Pick a time",
985
+ disabled,
986
+ ampm = true,
987
+ format: formatProp,
988
+ sx,
989
+ disableTyping = false,
990
+ slotProps
991
+ }) => {
992
+ const displayFmt = formatProp ?? (ampm ? DISPLAY_TIME_FMT : "HH:mm");
993
+ const isControlled = valueProp !== void 0;
994
+ const [uncontrolled, setUncontrolled] = import_react4.default.useState(
995
+ () => toDayjs3(defaultValue)
996
+ );
997
+ const value = isControlled ? toDayjs3(valueProp) : uncontrolled;
998
+ const [open, setOpen] = import_react4.default.useState(false);
999
+ const [draft, setDraft] = import_react4.default.useState(value);
1000
+ const committedLabel = formatTimeLabel(value, displayFmt);
1001
+ const [inputText, setInputText] = import_react4.default.useState(committedLabel);
1002
+ const [fieldFocused, setFieldFocused] = import_react4.default.useState(false);
1003
+ const typingEnabled = !disableTyping;
1004
+ const skipCommitOnBlurRef = import_react4.default.useRef(false);
1005
+ const anchorRef = import_react4.default.useRef(null);
1006
+ const [anchorEl, setAnchorEl] = import_react4.default.useState(null);
1007
+ const tf = slotProps?.textField ?? {};
1008
+ const mergedDisabled = disabled ?? tf.disabled;
1009
+ const mergedRequired = Boolean(tf.required);
1010
+ const mergedError = Boolean(tf.error);
1011
+ const helperText = tf.helperText;
1012
+ const commit = (next) => {
1013
+ if (!isControlled) setUncontrolled(next);
1014
+ onChange?.(next);
1015
+ return next;
1016
+ };
1017
+ import_react4.default.useEffect(() => {
1018
+ if (!fieldFocused) setInputText(committedLabel);
1019
+ }, [committedLabel, fieldFocused]);
1020
+ const commitTypedInput = () => {
1021
+ if (!typingEnabled) return;
1022
+ const parsed = parseTimeInput(inputText, { ampm, anchor: value });
1023
+ if (parsed === "invalid") {
1024
+ setInputText(committedLabel);
1025
+ return;
1026
+ }
1027
+ const next = commit(parsed);
1028
+ setDraft(next);
1029
+ setInputText(formatTimeLabel(next, displayFmt));
1030
+ };
1031
+ const openPicker = () => {
1032
+ if (mergedDisabled) return;
1033
+ setDraft(value);
1034
+ setOpen(true);
1035
+ };
1036
+ const closePicker = () => {
1037
+ setOpen(false);
1038
+ };
1039
+ const handleAccept = () => {
1040
+ commit(draft);
1041
+ setInputText(formatTimeLabel(draft, displayFmt));
1042
+ closePicker();
1043
+ };
1044
+ const handleCancel = () => {
1045
+ setDraft(value);
1046
+ closePicker();
1047
+ };
1048
+ const handleClear = () => {
1049
+ setDraft(null);
1050
+ };
1051
+ const clockViews = ampm ? ["hours", "minutes", "meridiem"] : ["hours", "minutes"];
1052
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_LocalizationProvider3.LocalizationProvider, { dateAdapter: import_AdapterDayjs3.AdapterDayjs, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_Box.default, { sx: { display: "inline-flex", flexDirection: "column", ...sx || {} }, children: [
1053
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1054
+ import_Box.default,
1055
+ {
1056
+ ref: (el) => {
1057
+ anchorRef.current = el;
1058
+ setAnchorEl(el);
314
1059
  },
315
- ...props.slotProps || {}
316
- },
317
- slots: {
318
- actionBar: MyActionBar,
319
- textField: MyPickersTextField,
320
- ...props.slots || {}
1060
+ sx: { display: "inline-flex", minWidth: 200 },
1061
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1062
+ import_TextField.default,
1063
+ {
1064
+ size: "small",
1065
+ fullWidth: true,
1066
+ label,
1067
+ value: typingEnabled ? inputText : committedLabel,
1068
+ placeholder: ampm ? "hh:mm aa" : "HH:mm",
1069
+ disabled: mergedDisabled,
1070
+ required: mergedRequired,
1071
+ error: mergedError,
1072
+ helperText,
1073
+ onClick: typingEnabled ? void 0 : openPicker,
1074
+ onFocus: () => {
1075
+ if (typingEnabled) {
1076
+ setFieldFocused(true);
1077
+ } else {
1078
+ openPicker();
1079
+ }
1080
+ },
1081
+ onBlur: () => {
1082
+ if (!typingEnabled) return;
1083
+ setFieldFocused(false);
1084
+ if (skipCommitOnBlurRef.current) {
1085
+ skipCommitOnBlurRef.current = false;
1086
+ setInputText(committedLabel);
1087
+ return;
1088
+ }
1089
+ commitTypedInput();
1090
+ },
1091
+ onChange: (e) => {
1092
+ if (!typingEnabled) return;
1093
+ setInputText(e.target.value);
1094
+ },
1095
+ onKeyDown: (e) => {
1096
+ if (!typingEnabled) return;
1097
+ if (e.key === "Enter") {
1098
+ e.preventDefault();
1099
+ e.target.blur();
1100
+ }
1101
+ if (e.key === "Escape") {
1102
+ e.preventDefault();
1103
+ skipCommitOnBlurRef.current = true;
1104
+ setInputText(committedLabel);
1105
+ e.target.blur();
1106
+ }
1107
+ },
1108
+ inputProps: {
1109
+ readOnly: !typingEnabled,
1110
+ "aria-label": label,
1111
+ "data-testid": "time-field"
1112
+ },
1113
+ InputProps: {
1114
+ endAdornment: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_InputAdornment3.default, { position: "end", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1115
+ IconButton_default,
1116
+ {
1117
+ size: "small",
1118
+ disabled: mergedDisabled,
1119
+ "aria-label": "Choose time",
1120
+ title: "Choose time",
1121
+ ...slotProps?.openPickerIcon,
1122
+ onMouseDown: (e) => {
1123
+ e.preventDefault();
1124
+ },
1125
+ onClick: (e) => {
1126
+ e.stopPropagation();
1127
+ if (open) closePicker();
1128
+ else openPicker();
1129
+ },
1130
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_AccessTime.default, { fontSize: "small" })
1131
+ }
1132
+ ) })
1133
+ }
1134
+ }
1135
+ )
321
1136
  }
322
- }
323
- ) });
1137
+ ),
1138
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1139
+ import_Popper.default,
1140
+ {
1141
+ open,
1142
+ anchorEl,
1143
+ placement: "bottom-start",
1144
+ style: { zIndex: 1300 },
1145
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_ClickAwayListener.default, { onClickAway: handleCancel, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1146
+ MuiPaper,
1147
+ {
1148
+ elevation: 0,
1149
+ sx: {
1150
+ mt: 1,
1151
+ borderRadius: "20px",
1152
+ background: "var(--mui-palette-background-default)",
1153
+ border: "solid 1px var(--mui-palette-border-1)",
1154
+ overflow: "hidden"
1155
+ },
1156
+ children: [
1157
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_Box.default, { sx: { px: 1, pt: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1158
+ import_MultiSectionDigitalClock2.MultiSectionDigitalClock,
1159
+ {
1160
+ ampm,
1161
+ value: draft,
1162
+ onChange: (v) => setDraft(v ? (0, import_dayjs3.default)(v) : null),
1163
+ views: [...clockViews]
1164
+ }
1165
+ ) }),
1166
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_DialogActions3.default, { sx: { px: 1.5, pb: 1, justifyContent: "flex-end", gap: 0.5 }, children: [
1167
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(IconButton_default, { "data-testid": "clear-action-button", onClick: handleClear, title: "clear", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_DeleteForever2.default, { fontSize: "small" }) }),
1168
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(IconButton_default, { onClick: handleCancel, title: "cancel", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_Close2.default, { fontSize: "small" }) }),
1169
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(IconButton_default, { onClick: handleAccept, title: "accept", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_Check.default, { fontSize: "small" }) })
1170
+ ] })
1171
+ ]
1172
+ }
1173
+ ) })
1174
+ }
1175
+ )
1176
+ ] }) });
324
1177
  };
325
- var MuiXDatePicker_default = MuiXDatePicker;
1178
+ var MuiXTimePicker_default = MuiXTimePicker;
326
1179
 
327
- // src/components/elemental/DatePicker/src/MuiXDateTimePicker.tsx
328
- var import_LocalizationProvider2 = require("@mui/x-date-pickers/LocalizationProvider");
329
- var import_DateTimePicker = require("@mui/x-date-pickers/DateTimePicker");
330
- var import_AdapterDayjs2 = require("@mui/x-date-pickers/AdapterDayjs");
331
- var import_jsx_runtime4 = require("react/jsx-runtime");
332
- var MuiXDateTimePicker = (props) => {
333
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_LocalizationProvider2.LocalizationProvider, { dateAdapter: import_AdapterDayjs2.AdapterDayjs, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
334
- import_DateTimePicker.DateTimePicker,
1180
+ // src/components/elemental/DatePicker/src/MuiXDateRangePicker.tsx
1181
+ var import_react5 = __toESM(require("react"));
1182
+ var import_dayjs4 = __toESM(require("dayjs"));
1183
+ var import_customParseFormat4 = __toESM(require("dayjs/plugin/customParseFormat"));
1184
+ var import_LocalizationProvider4 = require("@mui/x-date-pickers/LocalizationProvider");
1185
+ var import_AdapterDayjs4 = require("@mui/x-date-pickers/AdapterDayjs");
1186
+ var import_DateCalendar3 = require("@mui/x-date-pickers/DateCalendar");
1187
+ var import_PickersDay = require("@mui/x-date-pickers/PickersDay");
1188
+ var import_DialogActions4 = __toESM(require("@mui/material/DialogActions"));
1189
+ var import_InputAdornment4 = __toESM(require("@mui/material/InputAdornment"));
1190
+ var import_jsx_runtime7 = require("react/jsx-runtime");
1191
+ import_dayjs4.default.extend(import_customParseFormat4.default);
1192
+ var EMPTY = { start: null, end: null };
1193
+ var toDayjs4 = (d) => d ? (0, import_dayjs4.default)(d) : null;
1194
+ var toDate = (d) => {
1195
+ if (!d) return null;
1196
+ return typeof d.toDate === "function" ? d.toDate() : d;
1197
+ };
1198
+ var orderRange = (next) => {
1199
+ if (next.start && next.end && next.start.getTime() > next.end.getTime()) {
1200
+ return { start: next.end, end: next.start };
1201
+ }
1202
+ return next;
1203
+ };
1204
+ var DISPLAY_DATE_FMT2 = "MMM D, YYYY";
1205
+ var formatDay = (d) => d ? (0, import_dayjs4.default)(d).format(DISPLAY_DATE_FMT2) : "";
1206
+ var formatRangeLabel = (v, startLabel, endLabel) => {
1207
+ const s = formatDay(v.start);
1208
+ const e = formatDay(v.end);
1209
+ if (s && e) return `${s} \u2013 ${e}`;
1210
+ if (s) return `${s} \u2013 ${endLabel}`;
1211
+ if (e) return `${startLabel} \u2013 ${e}`;
1212
+ return "";
1213
+ };
1214
+ var DATE_PARSE_FORMATS3 = [
1215
+ DISPLAY_DATE_FMT2,
1216
+ "YYYY-MM-DD",
1217
+ "M/D/YYYY",
1218
+ "MM/DD/YYYY",
1219
+ "D MMM YYYY",
1220
+ "MMM D YYYY",
1221
+ "YYYY/MM/DD"
1222
+ ];
1223
+ var parseOneDate = (raw) => {
1224
+ const t = raw.trim();
1225
+ if (!t) return null;
1226
+ for (const fmt of DATE_PARSE_FORMATS3) {
1227
+ const d = (0, import_dayjs4.default)(t, fmt, true);
1228
+ if (d.isValid()) return d.startOf("day").toDate();
1229
+ }
1230
+ const loose = (0, import_dayjs4.default)(t);
1231
+ if (loose.isValid()) return loose.startOf("day").toDate();
1232
+ return "invalid";
1233
+ };
1234
+ var splitRangeHalves = (raw) => {
1235
+ const s = raw.trim();
1236
+ if (!s) return null;
1237
+ if (s.includes("\u2013")) {
1238
+ const i = s.indexOf("\u2013");
1239
+ return [s.slice(0, i), s.slice(i + "\u2013".length)];
1240
+ }
1241
+ const toParts = s.split(/\s+to\s+/i);
1242
+ if (toParts.length === 2) return [toParts[0], toParts[1]];
1243
+ for (const sep of [" - ", " / "]) {
1244
+ if (s.includes(sep)) {
1245
+ const i = s.indexOf(sep);
1246
+ return [s.slice(0, i), s.slice(i + sep.length)];
1247
+ }
1248
+ }
1249
+ const isoSlash = s.match(/^(\d{4}-\d{2}-\d{2})\s*\/\s*(\d{4}-\d{2}-\d{2})$/);
1250
+ if (isoSlash) return [isoSlash[1], isoSlash[2]];
1251
+ const isoHyphen = s.match(/^(\d{4}-\d{2}-\d{2})\s*-\s*(\d{4}-\d{2}-\d{2})$/);
1252
+ if (isoHyphen) return [isoHyphen[1], isoHyphen[2]];
1253
+ return null;
1254
+ };
1255
+ var isLabelPlaceholder = (part, label) => {
1256
+ const t = part.trim();
1257
+ return !t || t.toLowerCase() === label.trim().toLowerCase();
1258
+ };
1259
+ var parseRangeInput = (raw, startLabel, endLabel) => {
1260
+ const trimmed = raw.trim();
1261
+ if (!trimmed) return EMPTY;
1262
+ const halves = splitRangeHalves(trimmed);
1263
+ if (!halves) {
1264
+ if (isLabelPlaceholder(trimmed, startLabel) || isLabelPlaceholder(trimmed, endLabel)) {
1265
+ return EMPTY;
1266
+ }
1267
+ const one = parseOneDate(trimmed);
1268
+ if (one === "invalid") return null;
1269
+ return { start: one, end: null };
1270
+ }
1271
+ const [a, b] = halves;
1272
+ let start;
1273
+ let end;
1274
+ if (isLabelPlaceholder(a, startLabel)) {
1275
+ start = null;
1276
+ } else {
1277
+ const p = parseOneDate(a);
1278
+ if (p === "invalid") return null;
1279
+ start = p;
1280
+ }
1281
+ if (isLabelPlaceholder(b, endLabel)) {
1282
+ end = null;
1283
+ } else {
1284
+ const p = parseOneDate(b);
1285
+ if (p === "invalid") return null;
1286
+ end = p;
1287
+ }
1288
+ return orderRange({ start, end });
1289
+ };
1290
+ var formatDefaultEndorsement = (start, end, unit = "nights") => {
1291
+ const nights = Math.max(0, (0, import_dayjs4.default)(end).startOf("day").diff((0, import_dayjs4.default)(start).startOf("day"), "day"));
1292
+ if (unit === "days") {
1293
+ const days = nights + 1;
1294
+ return days === 1 ? "1 day" : `${days} days`;
1295
+ }
1296
+ return nights === 1 ? "1 night" : `${nights} nights`;
1297
+ };
1298
+ var resolveEndorsementLabel = (start, end, showEndorsement, endorsement, endorsementUnit = "nights") => {
1299
+ if (!start || !end) return null;
1300
+ if (showEndorsement === false) return null;
1301
+ if (typeof endorsement === "string") return endorsement;
1302
+ if (typeof endorsement === "function") return endorsement({ start, end });
1303
+ return formatDefaultEndorsement(start, end, endorsementUnit);
1304
+ };
1305
+ var endorsementChipSx = {
1306
+ height: 22,
1307
+ mr: 0.5,
1308
+ maxWidth: 140,
1309
+ borderColor: "var(--mui-palette-border-1)",
1310
+ backgroundColor: "var(--mui-palette-focus-1)",
1311
+ color: "text.secondary",
1312
+ fontWeight: 500,
1313
+ fontSize: "0.75rem",
1314
+ "& .MuiChip-label": { px: 1, overflow: "hidden", textOverflow: "ellipsis" }
1315
+ };
1316
+ var dayStart = (d) => d.startOf("day");
1317
+ var isSameDay = (a, b) => !!(a && b && a.isSame(b, "day"));
1318
+ var isBetween = (day, start, end) => {
1319
+ const t = dayStart(day).valueOf();
1320
+ const a = dayStart(start).valueOf();
1321
+ const b = dayStart(end).valueOf();
1322
+ const lo = Math.min(a, b);
1323
+ const hi = Math.max(a, b);
1324
+ return t > lo && t < hi;
1325
+ };
1326
+ var RANGE_TEXT = "var(--mui-palette-error-main)";
1327
+ var RANGE_FILL = "var(--mui-palette-focus-1)";
1328
+ var RANGE_FILL_HOVER = "var(--mui-palette-focus-1-hover)";
1329
+ var RANGE_QUIET_BORDER = "var(--mui-palette-border-1)";
1330
+ var rangeDayFillSx = (isEndpoint, isHoveredCell) => ({
1331
+ color: RANGE_TEXT,
1332
+ // Hovered cell (preview end under cursor) gets the stronger wash; others stay focus-1.
1333
+ backgroundColor: isHoveredCell ? RANGE_FILL_HOVER : RANGE_FILL,
1334
+ fontWeight: isEndpoint ? 600 : void 0,
1335
+ // Soft quiet ring on the day under cursor — readable, no cream primary.
1336
+ ...isHoveredCell ? {
1337
+ boxShadow: `inset 0 0 0 1px ${RANGE_QUIET_BORDER}`
1338
+ } : {},
1339
+ // Per-cell :hover intensify only; focus/selected stay on shared tokens (no primary cream).
1340
+ "&:hover": {
1341
+ color: RANGE_TEXT,
1342
+ backgroundColor: RANGE_FILL_HOVER
1343
+ },
1344
+ "&:focus, &.Mui-focusVisible": {
1345
+ color: RANGE_TEXT,
1346
+ backgroundColor: isHoveredCell ? RANGE_FILL_HOVER : RANGE_FILL
1347
+ },
1348
+ "&.Mui-selected, &.Mui-selected:hover, &.Mui-selected:focus": {
1349
+ color: RANGE_TEXT,
1350
+ backgroundColor: isHoveredCell ? RANGE_FILL_HOVER : RANGE_FILL,
1351
+ fontWeight: isEndpoint ? 600 : void 0
1352
+ }
1353
+ });
1354
+ var RangeDay = import_react5.default.forwardRef(function RangeDay2(props, ref) {
1355
+ const { rangeStart, rangeEnd, hoverDay, day, outsideCurrentMonth, sx, ...other } = props;
1356
+ const current = (0, import_dayjs4.default)(day);
1357
+ const previewEnd = rangeStart && !rangeEnd && hoverDay ? hoverDay : rangeEnd;
1358
+ const isStart = isSameDay(current, rangeStart);
1359
+ const isEnd = isSameDay(current, previewEnd) && !!(rangeEnd || rangeStart && hoverDay);
1360
+ const inBridge = !!rangeStart && !!previewEnd && isBetween(current, rangeStart, previewEnd);
1361
+ const isEndpoint = isStart || isEnd;
1362
+ const showRange = isEndpoint || inBridge;
1363
+ const isHoveredCell = !!hoverDay && isSameDay(current, hoverDay) && !outsideCurrentMonth;
1364
+ let radius = "50%";
1365
+ if (isStart && isEnd) {
1366
+ radius = "50%";
1367
+ } else if (isStart && previewEnd) {
1368
+ radius = "50% 0 0 50%";
1369
+ } else if (isEnd && rangeStart) {
1370
+ radius = "0 50% 50% 0";
1371
+ } else if (inBridge) {
1372
+ radius = 0;
1373
+ }
1374
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1375
+ import_PickersDay.PickersDay,
335
1376
  {
336
- showDaysOutsideCurrentMonth: true,
337
- ...props,
338
- slotProps: {
339
- actionBar: {
340
- actions: ["clear", "today", "cancel", "accept"]
1377
+ ...other,
1378
+ ref,
1379
+ day,
1380
+ outsideCurrentMonth,
1381
+ selected: false,
1382
+ autoFocus: false,
1383
+ disableMargin: true,
1384
+ sx: [
1385
+ {
1386
+ fontSize: "0.8125rem",
1387
+ // Soft hover for ordinary (non-range) days — quiet focus wash, not primary cream.
1388
+ ...!showRange && !outsideCurrentMonth ? {
1389
+ "&:hover": {
1390
+ backgroundColor: RANGE_FILL
1391
+ }
1392
+ } : {},
1393
+ ...showRange && !outsideCurrentMonth ? {
1394
+ borderRadius: radius,
1395
+ ...rangeDayFillSx(isEndpoint, isHoveredCell)
1396
+ } : {}
341
1397
  },
342
- ...props.slotProps || {}
343
- },
344
- slots: {
345
- actionBar: MyActionBar,
346
- textField: MyPickersTextField,
347
- ...props.slots || {}
348
- }
1398
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
1399
+ ]
349
1400
  }
350
- ) });
1401
+ );
1402
+ });
1403
+ var NAV_BTN_SLOT_PX = 30;
1404
+ var monthPaneLabelSx = {
1405
+ flex: 1,
1406
+ textAlign: "center",
1407
+ typography: "body1",
1408
+ fontWeight: 500,
1409
+ lineHeight: "40px",
1410
+ userSelect: "none",
1411
+ color: "text.primary"
351
1412
  };
352
- var MuiXDateTimePicker_default = MuiXDateTimePicker;
1413
+ var navBtnSlotSx = {
1414
+ width: NAV_BTN_SLOT_PX,
1415
+ flexShrink: 0
1416
+ };
1417
+ var NullCalendarHeader = () => null;
1418
+ var MuiXDateRangePicker = ({
1419
+ value: valueProp,
1420
+ defaultValue,
1421
+ onChange,
1422
+ label,
1423
+ startLabel = "Start",
1424
+ endLabel = "End",
1425
+ disabled,
1426
+ showEndorsement,
1427
+ endorsement,
1428
+ endorsementUnit = "nights",
1429
+ slotProps,
1430
+ sx,
1431
+ disableTyping = false
1432
+ }) => {
1433
+ const isControlled = valueProp !== void 0;
1434
+ const [uncontrolled, setUncontrolled] = import_react5.default.useState(
1435
+ defaultValue ?? EMPTY
1436
+ );
1437
+ const value = isControlled ? valueProp ?? EMPTY : uncontrolled;
1438
+ const [open, setOpen] = import_react5.default.useState(false);
1439
+ const [draft, setDraft] = import_react5.default.useState(value);
1440
+ const [selectingEnd, setSelectingEnd] = import_react5.default.useState(false);
1441
+ const [hoverDay, setHoverDay] = import_react5.default.useState(null);
1442
+ const [leftMonth, setLeftMonth] = import_react5.default.useState(
1443
+ () => toDayjs4(value.start) ?? toDayjs4(value.end) ?? (0, import_dayjs4.default)().startOf("month")
1444
+ );
1445
+ const committedLabel = formatRangeLabel(value, startLabel, endLabel);
1446
+ const [inputText, setInputText] = import_react5.default.useState(committedLabel);
1447
+ const [fieldFocused, setFieldFocused] = import_react5.default.useState(false);
1448
+ const typingEnabled = !disableTyping;
1449
+ const skipCommitOnBlurRef = import_react5.default.useRef(false);
1450
+ const anchorRef = import_react5.default.useRef(null);
1451
+ const [anchorEl, setAnchorEl] = import_react5.default.useState(null);
1452
+ const fieldLabel = label ?? `${startLabel} \u2013 ${endLabel}`;
1453
+ const startTf = slotProps?.start?.slotProps?.textField ?? {};
1454
+ const endTf = slotProps?.end?.slotProps?.textField ?? {};
1455
+ const mergedDisabled = disabled ?? slotProps?.start?.disabled ?? slotProps?.end?.disabled ?? startTf.disabled ?? endTf.disabled;
1456
+ const mergedRequired = Boolean(startTf.required || endTf.required);
1457
+ const mergedError = Boolean(startTf.error || endTf.error);
1458
+ const commit = (next) => {
1459
+ const ordered = orderRange(next);
1460
+ if (!isControlled) setUncontrolled(ordered);
1461
+ onChange?.(ordered);
1462
+ return ordered;
1463
+ };
1464
+ import_react5.default.useEffect(() => {
1465
+ if (!fieldFocused) setInputText(committedLabel);
1466
+ }, [committedLabel, fieldFocused]);
1467
+ const commitTypedInput = () => {
1468
+ if (!typingEnabled) return;
1469
+ const parsed = parseRangeInput(inputText, startLabel, endLabel);
1470
+ if (parsed === null) {
1471
+ setInputText(committedLabel);
1472
+ return;
1473
+ }
1474
+ const ordered = commit(parsed);
1475
+ setDraft(ordered);
1476
+ setSelectingEnd(Boolean(ordered.start && !ordered.end));
1477
+ setInputText(formatRangeLabel(ordered, startLabel, endLabel));
1478
+ };
1479
+ const openPicker = () => {
1480
+ if (mergedDisabled) return;
1481
+ setDraft(value);
1482
+ setSelectingEnd(Boolean(value.start && !value.end));
1483
+ setHoverDay(null);
1484
+ setLeftMonth(toDayjs4(value.start) ?? toDayjs4(value.end) ?? (0, import_dayjs4.default)().startOf("month"));
1485
+ setOpen(true);
1486
+ };
1487
+ const closePicker = () => {
1488
+ setOpen(false);
1489
+ setHoverDay(null);
1490
+ };
1491
+ const handleAccept = () => {
1492
+ commit(draft);
1493
+ closePicker();
1494
+ };
1495
+ const handleCancel = () => {
1496
+ setDraft(value);
1497
+ closePicker();
1498
+ };
1499
+ const handleClear = () => {
1500
+ setDraft(EMPTY);
1501
+ setSelectingEnd(false);
1502
+ setHoverDay(null);
1503
+ };
1504
+ const handleDayClick = (day) => {
1505
+ if (!day) return;
1506
+ const picked = toDate(day);
1507
+ if (!selectingEnd || !draft.start) {
1508
+ setDraft({ start: picked, end: null });
1509
+ setSelectingEnd(true);
1510
+ setHoverDay(null);
1511
+ return;
1512
+ }
1513
+ setDraft(orderRange({ start: draft.start, end: picked }));
1514
+ setSelectingEnd(false);
1515
+ setHoverDay(null);
1516
+ };
1517
+ const shiftMonths = (delta) => {
1518
+ setLeftMonth((m) => m.add(delta, "month").startOf("month"));
1519
+ };
1520
+ const rangeStart = toDayjs4(draft.start);
1521
+ const rangeEnd = toDayjs4(draft.end);
1522
+ const DaySlot = import_react5.default.useCallback(
1523
+ (dayProps) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1524
+ RangeDay,
1525
+ {
1526
+ ...dayProps,
1527
+ rangeStart,
1528
+ rangeEnd,
1529
+ hoverDay: selectingEnd ? hoverDay : null,
1530
+ onMouseEnter: (event, d) => {
1531
+ dayProps.onMouseEnter?.(event, d);
1532
+ if (selectingEnd) setHoverDay((0, import_dayjs4.default)(d));
1533
+ },
1534
+ onDaySelect: (d) => {
1535
+ handleDayClick((0, import_dayjs4.default)(d));
1536
+ }
1537
+ }
1538
+ ),
1539
+ // handleDayClick closes over draft/selectingEnd; recreate when those change.
1540
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1541
+ [rangeStart, rangeEnd, selectingEnd, hoverDay, draft.start]
1542
+ );
1543
+ const rightMonth = leftMonth.add(1, "month");
1544
+ const endorsementStart = open ? draft.start : value.start;
1545
+ const endorsementEnd = open ? selectingEnd && draft.start && hoverDay ? toDate(hoverDay) : selectingEnd ? null : draft.end : value.end;
1546
+ const endorsementLabel = resolveEndorsementLabel(
1547
+ endorsementStart,
1548
+ endorsementEnd,
1549
+ showEndorsement,
1550
+ endorsement,
1551
+ endorsementUnit
1552
+ );
1553
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_LocalizationProvider4.LocalizationProvider, { dateAdapter: import_AdapterDayjs4.AdapterDayjs, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_Box.default, { sx: { display: "inline-flex", flexDirection: "column", ...sx || {} }, children: [
1554
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1555
+ import_Box.default,
1556
+ {
1557
+ ref: (el) => {
1558
+ anchorRef.current = el;
1559
+ setAnchorEl(el);
1560
+ },
1561
+ sx: { display: "inline-flex", minWidth: 280 },
1562
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1563
+ import_TextField.default,
1564
+ {
1565
+ size: "small",
1566
+ fullWidth: true,
1567
+ label: fieldLabel,
1568
+ value: typingEnabled ? inputText : committedLabel,
1569
+ placeholder: `${startLabel} \u2013 ${endLabel}`,
1570
+ disabled: mergedDisabled,
1571
+ required: mergedRequired,
1572
+ error: mergedError,
1573
+ onClick: typingEnabled ? void 0 : openPicker,
1574
+ onFocus: () => {
1575
+ if (typingEnabled) {
1576
+ setFieldFocused(true);
1577
+ } else {
1578
+ openPicker();
1579
+ }
1580
+ },
1581
+ onBlur: () => {
1582
+ if (!typingEnabled) return;
1583
+ setFieldFocused(false);
1584
+ if (skipCommitOnBlurRef.current) {
1585
+ skipCommitOnBlurRef.current = false;
1586
+ setInputText(committedLabel);
1587
+ return;
1588
+ }
1589
+ commitTypedInput();
1590
+ },
1591
+ onChange: (e) => {
1592
+ if (!typingEnabled) return;
1593
+ setInputText(e.target.value);
1594
+ },
1595
+ onKeyDown: (e) => {
1596
+ if (!typingEnabled) return;
1597
+ if (e.key === "Enter") {
1598
+ e.preventDefault();
1599
+ e.target.blur();
1600
+ }
1601
+ if (e.key === "Escape") {
1602
+ e.preventDefault();
1603
+ skipCommitOnBlurRef.current = true;
1604
+ setInputText(committedLabel);
1605
+ e.target.blur();
1606
+ }
1607
+ },
1608
+ inputProps: {
1609
+ readOnly: !typingEnabled,
1610
+ "aria-label": fieldLabel,
1611
+ "data-testid": "date-range-field"
1612
+ },
1613
+ InputProps: {
1614
+ endAdornment: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_InputAdornment4.default, { position: "end", sx: { gap: 0.25 }, children: [
1615
+ endorsementLabel ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1616
+ import_Box.default,
1617
+ {
1618
+ component: "span",
1619
+ onMouseDown: (e) => {
1620
+ e.preventDefault();
1621
+ e.stopPropagation();
1622
+ },
1623
+ onClick: (e) => {
1624
+ e.stopPropagation();
1625
+ openPicker();
1626
+ },
1627
+ sx: { display: "inline-flex", cursor: "pointer" },
1628
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1629
+ Chip,
1630
+ {
1631
+ size: "small",
1632
+ variant: "outlined",
1633
+ label: endorsementLabel,
1634
+ "data-testid": "date-range-endorsement",
1635
+ "aria-label": endorsementLabel,
1636
+ sx: endorsementChipSx
1637
+ }
1638
+ )
1639
+ }
1640
+ ) : null,
1641
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1642
+ IconButton_default,
1643
+ {
1644
+ size: "small",
1645
+ disabled: mergedDisabled,
1646
+ onClick: (e) => {
1647
+ e.stopPropagation();
1648
+ if (open) closePicker();
1649
+ else openPicker();
1650
+ },
1651
+ "aria-label": "Choose date range",
1652
+ title: "Choose date range",
1653
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_CalendarToday.default, { fontSize: "small" })
1654
+ }
1655
+ )
1656
+ ] })
1657
+ }
1658
+ }
1659
+ )
1660
+ }
1661
+ ),
1662
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1663
+ import_Popper.default,
1664
+ {
1665
+ open,
1666
+ anchorEl,
1667
+ placement: "bottom-start",
1668
+ style: { zIndex: 1300 },
1669
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_ClickAwayListener.default, { onClickAway: handleCancel, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1670
+ MuiPaper,
1671
+ {
1672
+ elevation: 0,
1673
+ sx: {
1674
+ mt: 1,
1675
+ borderRadius: "20px",
1676
+ background: "var(--mui-palette-background-default)",
1677
+ border: "solid 1px var(--mui-palette-border-1)",
1678
+ overflow: "hidden"
1679
+ },
1680
+ children: [
1681
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1682
+ import_Box.default,
1683
+ {
1684
+ sx: {
1685
+ display: "flex",
1686
+ alignItems: "stretch",
1687
+ gap: 0,
1688
+ px: 1,
1689
+ pt: 1,
1690
+ flexWrap: { xs: "wrap", sm: "nowrap" }
1691
+ },
1692
+ children: [
1693
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_Box.default, { sx: { width: 300 }, children: [
1694
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1695
+ import_Box.default,
1696
+ {
1697
+ sx: {
1698
+ display: "flex",
1699
+ alignItems: "center",
1700
+ minHeight: 40,
1701
+ px: 0.5
1702
+ },
1703
+ children: [
1704
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1705
+ IconButton_default,
1706
+ {
1707
+ size: "small",
1708
+ onClick: () => shiftMonths(-1),
1709
+ "aria-label": "Previous month",
1710
+ title: "Previous month",
1711
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_NavigateBefore.default, { fontSize: "small" })
1712
+ }
1713
+ ),
1714
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_Box.default, { sx: monthPaneLabelSx, "aria-live": "polite", children: leftMonth.format("MMMM YYYY") }),
1715
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_Box.default, { sx: navBtnSlotSx, "aria-hidden": true })
1716
+ ]
1717
+ }
1718
+ ),
1719
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1720
+ import_DateCalendar3.DateCalendar,
1721
+ {
1722
+ value: null,
1723
+ referenceDate: leftMonth,
1724
+ onMonthChange: (m) => setLeftMonth((0, import_dayjs4.default)(m).startOf("month")),
1725
+ showDaysOutsideCurrentMonth: true,
1726
+ slots: { day: DaySlot, calendarHeader: NullCalendarHeader },
1727
+ sx: { width: 300 }
1728
+ },
1729
+ leftMonth.format("YYYY-MM")
1730
+ )
1731
+ ] }),
1732
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1733
+ import_Box.default,
1734
+ {
1735
+ sx: {
1736
+ width: "1px",
1737
+ alignSelf: "stretch",
1738
+ bgcolor: "var(--mui-palette-border-1)",
1739
+ display: { xs: "none", sm: "block" }
1740
+ }
1741
+ }
1742
+ ),
1743
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_Box.default, { sx: { width: 300 }, children: [
1744
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1745
+ import_Box.default,
1746
+ {
1747
+ sx: {
1748
+ display: "flex",
1749
+ alignItems: "center",
1750
+ minHeight: 40,
1751
+ px: 0.5
1752
+ },
1753
+ children: [
1754
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_Box.default, { sx: navBtnSlotSx, "aria-hidden": true }),
1755
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_Box.default, { sx: monthPaneLabelSx, "aria-live": "polite", children: rightMonth.format("MMMM YYYY") }),
1756
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1757
+ IconButton_default,
1758
+ {
1759
+ size: "small",
1760
+ onClick: () => shiftMonths(1),
1761
+ "aria-label": "Next month",
1762
+ title: "Next month",
1763
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_NavigateNext.default, { fontSize: "small" })
1764
+ }
1765
+ )
1766
+ ]
1767
+ }
1768
+ ),
1769
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1770
+ import_DateCalendar3.DateCalendar,
1771
+ {
1772
+ value: null,
1773
+ referenceDate: rightMonth,
1774
+ onMonthChange: (m) => setLeftMonth((0, import_dayjs4.default)(m).subtract(1, "month").startOf("month")),
1775
+ showDaysOutsideCurrentMonth: true,
1776
+ slots: { day: DaySlot, calendarHeader: NullCalendarHeader },
1777
+ sx: { width: 300 }
1778
+ },
1779
+ rightMonth.format("YYYY-MM")
1780
+ )
1781
+ ] })
1782
+ ]
1783
+ }
1784
+ ),
1785
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_DialogActions4.default, { sx: { px: 1.5, pb: 1, justifyContent: "flex-end", gap: 0.5 }, children: [
1786
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(IconButton_default, { "data-testid": "clear-action-button", onClick: handleClear, title: "clear", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_DeleteForever2.default, { fontSize: "small" }) }),
1787
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(IconButton_default, { onClick: handleCancel, title: "cancel", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_Close2.default, { fontSize: "small" }) }),
1788
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(IconButton_default, { onClick: handleAccept, title: "accept", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_Check.default, { fontSize: "small" }) })
1789
+ ] })
1790
+ ]
1791
+ }
1792
+ ) })
1793
+ }
1794
+ )
1795
+ ] }) });
1796
+ };
1797
+ var MuiXDateRangePicker_default = MuiXDateRangePicker;
353
1798
 
354
1799
  // src/components/elemental/DatePicker/src/theme.ts
355
1800
  var datePickerTheme = {
@@ -382,6 +1827,21 @@ var dateTimePickerTheme = {
382
1827
  }
383
1828
  }
384
1829
  };
1830
+ var timePickerTheme = {
1831
+ defaultProps: {
1832
+ slotProps: {
1833
+ popper: {
1834
+ sx: {
1835
+ "& .MuiPaper-root": {
1836
+ borderRadius: "20px",
1837
+ background: "var(--mui-palette-background-default)",
1838
+ border: "solid 1px var(--mui-palette-border-1)"
1839
+ }
1840
+ }
1841
+ }
1842
+ }
1843
+ }
1844
+ };
385
1845
  var dateCalendarTheme = {
386
1846
  defaultProps: {
387
1847
  slotProps: {}
@@ -438,13 +1898,29 @@ var multiSectionDigitalClockTheme = {
438
1898
  "&": { paddingRight: "4px" },
439
1899
  "& .MuiMultiSectionDigitalClockSection-root": {
440
1900
  scrollbarWidth: "inherit",
441
- "& li": {
1901
+ "& .MuiMultiSectionDigitalClockSection-item, & li": {
442
1902
  borderRadius: "var(--mui-shape-borderRadius)",
1903
+ position: "relative",
1904
+ overflow: "hidden",
443
1905
  "&::before": {
444
- borderRadius: "var(--mui-shape-borderRadius)"
1906
+ borderRadius: "var(--mui-shape-borderRadius)",
1907
+ content: "none",
1908
+ display: "none",
1909
+ backgroundColor: "transparent",
1910
+ width: 0,
1911
+ height: 0
445
1912
  },
446
1913
  "&.Mui-selected": {
447
- backgroundColor: "transparent"
1914
+ color: "var(--mui-palette-error-main)",
1915
+ backgroundColor: "var(--mui-palette-focus-1)",
1916
+ "&:hover, &:focus-visible": {
1917
+ backgroundColor: "var(--mui-palette-focus-1-hover)"
1918
+ },
1919
+ "&::before": {
1920
+ content: "none",
1921
+ display: "none",
1922
+ backgroundColor: "transparent"
1923
+ }
448
1924
  }
449
1925
  }
450
1926
  }
@@ -470,13 +1946,16 @@ var pickersInputBaseTheme = {
470
1946
  // Annotate the CommonJS export names for ESM import in node:
471
1947
  0 && (module.exports = {
472
1948
  MuiXDatePicker,
1949
+ MuiXDateRangePicker,
473
1950
  MuiXDateTimePicker,
1951
+ MuiXTimePicker,
474
1952
  dateCalendarTheme,
475
1953
  datePickerTheme,
476
1954
  dateTimePickerTheme,
477
1955
  multiSectionDigitalClockTheme,
478
1956
  pickersCalendarHeaderTheme,
479
1957
  pickersDayTheme,
480
- pickersInputBaseTheme
1958
+ pickersInputBaseTheme,
1959
+ timePickerTheme
481
1960
  });
482
1961
  //# sourceMappingURL=datePicker.js.map