@servicetitan/anvil2 1.46.1 → 1.46.2

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 (231) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/{Alert-BNGvfMAV.js → Alert-CPOBY6O5.js} +2 -2
  3. package/dist/{Alert-BNGvfMAV.js.map → Alert-CPOBY6O5.js.map} +1 -1
  4. package/dist/Alert.js +1 -1
  5. package/dist/{Announcement-CoheCP1i.js → Announcement-BvzAEdx8.js} +2 -2
  6. package/dist/{Announcement-CoheCP1i.js.map → Announcement-BvzAEdx8.js.map} +1 -1
  7. package/dist/Announcement.js +1 -1
  8. package/dist/AnvilProvider-C_qRQnE6.js.map +1 -1
  9. package/dist/Avatar-CyGjhToG.js.map +1 -1
  10. package/dist/Avatar-D07f9NH_.js.map +1 -1
  11. package/dist/Badge-DCA9mfc2.js.map +1 -1
  12. package/dist/Breadcrumbs-C4_PEolS.js.map +1 -1
  13. package/dist/{Button-BxFXQ0-n.js → Button-VNQQgZ45.js} +2 -2
  14. package/dist/{Button-BxFXQ0-n.js.map → Button-VNQQgZ45.js.map} +1 -1
  15. package/dist/Button.css +48 -48
  16. package/dist/Button.js +1 -1
  17. package/dist/Button.module-C1g9rrJs.js +25 -0
  18. package/dist/Button.module-C1g9rrJs.js.map +1 -0
  19. package/dist/{ButtonCompound-BF2Q6gGX.js → ButtonCompound-BbPK-Xjj.js} +2 -2
  20. package/dist/{ButtonCompound-BF2Q6gGX.js.map → ButtonCompound-BbPK-Xjj.js.map} +1 -1
  21. package/dist/ButtonCompound.js +1 -1
  22. package/dist/{ButtonLink-CXv65WVV.js → ButtonLink-CqR1F5Wn.js} +3 -3
  23. package/dist/{ButtonLink-CXv65WVV.js.map → ButtonLink-CqR1F5Wn.js.map} +1 -1
  24. package/dist/ButtonLink.js +1 -1
  25. package/dist/{ButtonToggle-pSwg7NvT.js → ButtonToggle-PCeSG-5D.js} +3 -3
  26. package/dist/{ButtonToggle-pSwg7NvT.js.map → ButtonToggle-PCeSG-5D.js.map} +1 -1
  27. package/dist/ButtonToggle.js +1 -1
  28. package/dist/{Calendar-BQ5F2ENO.js → Calendar-X9qUi6Vx.js} +269 -123
  29. package/dist/Calendar-X9qUi6Vx.js.map +1 -0
  30. package/dist/Calendar.js +1 -1
  31. package/dist/Card-vTYeSkxt.js.map +1 -1
  32. package/dist/{Checkbox-DDrmVC-u.js → Checkbox-BDohwHXQ.js} +2 -2
  33. package/dist/{Checkbox-DDrmVC-u.js.map → Checkbox-BDohwHXQ.js.map} +1 -1
  34. package/dist/{Checkbox-Dl4KTwEJ.js → Checkbox-CcYtto5f.js} +2 -2
  35. package/dist/{Checkbox-Dl4KTwEJ.js.map → Checkbox-CcYtto5f.js.map} +1 -1
  36. package/dist/Checkbox.js +2 -2
  37. package/dist/Chip-Bz-vlQ4D.js.map +1 -1
  38. package/dist/{Combobox-B9nesJuc.js → Combobox-DQmW8Tyl.js} +144 -53
  39. package/dist/Combobox-DQmW8Tyl.js.map +1 -0
  40. package/dist/Combobox.js +1 -1
  41. package/dist/{DateField-DXxPsRtf.js → DateField-C43nfkbx.js} +7 -7
  42. package/dist/{DateField-DXxPsRtf.js.map → DateField-C43nfkbx.js.map} +1 -1
  43. package/dist/DateField.js +1 -1
  44. package/dist/{DateFieldRange-Xauviu1w.js → DateFieldRange-g7n5QYww.js} +8 -8
  45. package/dist/{DateFieldRange-Xauviu1w.js.map → DateFieldRange-g7n5QYww.js.map} +1 -1
  46. package/dist/DateFieldRange.js +1 -1
  47. package/dist/{DateFieldSingle-yLnwpVzd.js → DateFieldSingle-D3tneqeG.js} +8 -8
  48. package/dist/{DateFieldSingle-yLnwpVzd.js.map → DateFieldSingle-D3tneqeG.js.map} +1 -1
  49. package/dist/DateFieldSingle.js +1 -1
  50. package/dist/{DateFieldYearless-Ba7HiTiI.js → DateFieldYearless-3JBVj3wn.js} +4 -4
  51. package/dist/{DateFieldYearless-Ba7HiTiI.js.map → DateFieldYearless-3JBVj3wn.js.map} +1 -1
  52. package/dist/DateFieldYearless.js +1 -1
  53. package/dist/{DaysOfTheWeek-BYSYZySH.js → DaysOfTheWeek-RcPgDoM3.js} +4 -4
  54. package/dist/{DaysOfTheWeek-BYSYZySH.js.map → DaysOfTheWeek-RcPgDoM3.js.map} +1 -1
  55. package/dist/DaysOfTheWeek.js +1 -1
  56. package/dist/Details-CF8DImjw.js.map +1 -1
  57. package/dist/{Dialog-CgkrvrQu.js → Dialog-FNJ16gY6.js} +6 -6
  58. package/dist/{Dialog-CgkrvrQu.js.map → Dialog-FNJ16gY6.js.map} +1 -1
  59. package/dist/Dialog.js +1 -1
  60. package/dist/Divider-DJe8kLf2.js.map +1 -1
  61. package/dist/Dnd.js +1 -1
  62. package/dist/DndSort.js +2 -2
  63. package/dist/DndSort.js.map +1 -1
  64. package/dist/{Drawer-CM4ZbAro.js → Drawer-DT31CMRd.js} +6 -6
  65. package/dist/{Drawer-CM4ZbAro.js.map → Drawer-DT31CMRd.js.map} +1 -1
  66. package/dist/Drawer.js +1 -1
  67. package/dist/{DrawerContext-DboTgTmo.js → DrawerContext-D4tWTLVf.js} +27 -10
  68. package/dist/DrawerContext-D4tWTLVf.js.map +1 -0
  69. package/dist/{EditCard-WKzZ2XCz.js → EditCard-CZzL0nx7.js} +2 -2
  70. package/dist/{EditCard-WKzZ2XCz.js.map → EditCard-CZzL0nx7.js.map} +1 -1
  71. package/dist/EditCard.js +1 -1
  72. package/dist/{FieldLabel-BsbTTyom.js → FieldLabel-BP8QK5UR.js} +2 -2
  73. package/dist/{FieldLabel-BsbTTyom.js.map → FieldLabel-BP8QK5UR.js.map} +1 -1
  74. package/dist/FieldLabel.js +1 -1
  75. package/dist/FieldMessage-B7uQ8vmr.js.map +1 -1
  76. package/dist/Flex-BdQMekvA.js.map +1 -1
  77. package/dist/Grid-MGUC698u.js.map +1 -1
  78. package/dist/Helper-BkIDJqgA.js.map +1 -1
  79. package/dist/Icon-D8SPKeO4.js.map +1 -1
  80. package/dist/{InputMask-_F139qFu.js → InputMask-CPuYMcw9.js} +3 -3
  81. package/dist/{InputMask-_F139qFu.js.map → InputMask-CPuYMcw9.js.map} +1 -1
  82. package/dist/InputMask.js +1 -1
  83. package/dist/Layout-CUUb2PVr.js.map +1 -1
  84. package/dist/Link-eRsLWPaQ.js.map +1 -1
  85. package/dist/LinkButton-2lXfrVoU.js.map +1 -1
  86. package/dist/{ListView-pb3rIcze.js → ListView-BJI8BQJ-.js} +2 -2
  87. package/dist/{ListView-pb3rIcze.js.map → ListView-BJI8BQJ-.js.map} +1 -1
  88. package/dist/ListView.js +1 -1
  89. package/dist/Listbox-CUhMbFm2.js.map +1 -1
  90. package/dist/LocalizationContext-UsmB5mnR.js.map +1 -1
  91. package/dist/LocalizationProvider-DEZyjW5d.js.map +1 -1
  92. package/dist/{Menu-DEVZz9xZ.js → Menu-t_11BIhU.js} +3 -3
  93. package/dist/{Menu-DEVZz9xZ.js.map → Menu-t_11BIhU.js.map} +1 -1
  94. package/dist/Menu.js +1 -1
  95. package/dist/{NumberField-CkZZrkYC.js → NumberField-Bjf9Tyvf.js} +6 -6
  96. package/dist/{NumberField-CkZZrkYC.js.map → NumberField-Bjf9Tyvf.js.map} +1 -1
  97. package/dist/NumberField.js +1 -1
  98. package/dist/Overflow.js.map +1 -1
  99. package/dist/{Page-BMDkbDcU.js → Page-BAyXnhz2.js} +9 -9
  100. package/dist/Page-BAyXnhz2.js.map +1 -0
  101. package/dist/Page.js +1 -1
  102. package/dist/{Pagination-BJsCppgW.js → Pagination-DCBic619.js} +47 -23
  103. package/dist/Pagination-DCBic619.js.map +1 -0
  104. package/dist/Pagination.css +6 -6
  105. package/dist/Pagination.js +1 -1
  106. package/dist/{Popover-r26xMIfm.js → Popover-CrksxqKk.js} +11 -5
  107. package/dist/Popover-CrksxqKk.js.map +1 -0
  108. package/dist/Popover.js +1 -1
  109. package/dist/PortalProvider-9lXkQ0xY.js.map +1 -1
  110. package/dist/{ProgressBar-DXcXZEJ2.js → ProgressBar-CgsAW2d8.js} +2 -2
  111. package/dist/{ProgressBar-DXcXZEJ2.js.map → ProgressBar-CgsAW2d8.js.map} +1 -1
  112. package/dist/ProgressBar.js +1 -1
  113. package/dist/{Radio-C89VCMXd.js → Radio-C_rvxw74.js} +2 -2
  114. package/dist/{Radio-C89VCMXd.js.map → Radio-C_rvxw74.js.map} +1 -1
  115. package/dist/Radio.js +2 -2
  116. package/dist/{RadioGroup-C_4buUtG.js → RadioGroup-DxBblSrx.js} +2 -2
  117. package/dist/{RadioGroup-C_4buUtG.js.map → RadioGroup-DxBblSrx.js.map} +1 -1
  118. package/dist/SearchField-Bb0uObwG.js.map +1 -1
  119. package/dist/{SegmentedControl-CsjjV1Dz.js → SegmentedControl-DC4BpdH5.js} +3 -3
  120. package/dist/{SegmentedControl-CsjjV1Dz.js.map → SegmentedControl-DC4BpdH5.js.map} +1 -1
  121. package/dist/SegmentedControl.js +1 -1
  122. package/dist/{SelectCard-BTYZg9TG.js → SelectCard-DunNE9R3.js} +3 -3
  123. package/dist/{SelectCard-BTYZg9TG.js.map → SelectCard-DunNE9R3.js.map} +1 -1
  124. package/dist/SelectCard.js +1 -1
  125. package/dist/{SelectTrigger-f1hvRrSC.js → SelectTrigger-BYysLREL.js} +2 -2
  126. package/dist/{SelectTrigger-f1hvRrSC.js.map → SelectTrigger-BYysLREL.js.map} +1 -1
  127. package/dist/SelectTrigger.js +1 -1
  128. package/dist/{SelectTriggerBase-DP9fmRSo.js → SelectTriggerBase-DqUpJgzk.js} +3 -3
  129. package/dist/{SelectTriggerBase-DP9fmRSo.js.map → SelectTriggerBase-DqUpJgzk.js.map} +1 -1
  130. package/dist/{SideNav-CBAzYyML.js → SideNav-B9AWmF_H.js} +2 -2
  131. package/dist/SideNav-B9AWmF_H.js.map +1 -0
  132. package/dist/SideNav.js +1 -1
  133. package/dist/Skeleton.js.map +1 -1
  134. package/dist/Spinner-wmO8Epw0.js.map +1 -1
  135. package/dist/SrOnly-CTsYSuby.js.map +1 -1
  136. package/dist/{Stepper-D-fOH9TF.js → Stepper-DHTrvfXw.js} +3 -3
  137. package/dist/{Stepper-D-fOH9TF.js.map → Stepper-DHTrvfXw.js.map} +1 -1
  138. package/dist/Stepper.js +1 -1
  139. package/dist/Switch-C2ddZcr9.js.map +1 -1
  140. package/dist/{Tab-wNucMTgo.js → Tab-0zx9hsw8.js} +44 -36
  141. package/dist/Tab-0zx9hsw8.js.map +1 -0
  142. package/dist/Tab.js +1 -1
  143. package/dist/Text-BqvcbXyp.js.map +1 -1
  144. package/dist/{TextField-D8fow9j7.js → TextField-CFWs3lm9.js} +2 -2
  145. package/dist/{TextField-D8fow9j7.js.map → TextField-CFWs3lm9.js.map} +1 -1
  146. package/dist/{TextField-BiHxlzE3.js → TextField-Cge6IRo5.js} +2 -2
  147. package/dist/{TextField-BiHxlzE3.js.map → TextField-Cge6IRo5.js.map} +1 -1
  148. package/dist/TextField.js +1 -1
  149. package/dist/{Textarea-BdVJJlbP.js → Textarea-CXd3NKkW.js} +2 -2
  150. package/dist/{Textarea-BdVJJlbP.js.map → Textarea-CXd3NKkW.js.map} +1 -1
  151. package/dist/Textarea.js +1 -1
  152. package/dist/ThemeProvider-Be3Pvtpz.js.map +1 -1
  153. package/dist/ThemeProviderContext-l52GohYT.js.map +1 -1
  154. package/dist/{TimeField-CmbErrsZ.js → TimeField-4v5aCwiG.js} +345 -355
  155. package/dist/TimeField-4v5aCwiG.js.map +1 -0
  156. package/dist/TimeField.js +1 -1
  157. package/dist/Toast.js +2 -2
  158. package/dist/{Toaster-9cpG_tWR.js → Toaster-D-rNSLTq.js} +17 -17
  159. package/dist/{Toaster-9cpG_tWR.js.map → Toaster-D-rNSLTq.js.map} +1 -1
  160. package/dist/{Toaster-B7zUwJOt.js → Toaster-bON5Xc1P.js} +2 -2
  161. package/dist/{Toaster-B7zUwJOt.js.map → Toaster-bON5Xc1P.js.map} +1 -1
  162. package/dist/{Toolbar-D4zuUFhb.js → Toolbar-B2Jsuptz.js} +14 -14
  163. package/dist/{Toolbar-D4zuUFhb.js.map → Toolbar-B2Jsuptz.js.map} +1 -1
  164. package/dist/Toolbar.js +1 -1
  165. package/dist/{Tooltip-BI3Xs75X.js → Tooltip-CtCLw_vx.js} +8 -2
  166. package/dist/{Tooltip-BI3Xs75X.js.map → Tooltip-CtCLw_vx.js.map} +1 -1
  167. package/dist/Tooltip.js +1 -1
  168. package/dist/TrackingProvider-BtSjkmpM.js.map +1 -1
  169. package/dist/beta.js +1 -1
  170. package/dist/childrenToString-Bz9MqbHb.js.map +1 -1
  171. package/dist/components/Combobox/ComboboxTypes.d.ts +10 -5
  172. package/dist/components/Combobox/internal/ComboboxGroupContext.d.ts +1 -1
  173. package/dist/components/Combobox/internal/useGroups.d.ts +2 -2
  174. package/dist/components/DndSort/internal/test-utils.d.ts +1 -1
  175. package/dist/components/TimeField/TimeField.d.ts +4 -1
  176. package/dist/extends-Bg2s_OKl.js.map +1 -1
  177. package/dist/getActiveElement-BcSyVE7S.js.map +1 -1
  178. package/dist/getKeyboardFocusableElements-QqcABz0D.js.map +1 -1
  179. package/dist/{index-V5Ez2gq_.js → index-DrM3iid4.js} +2 -2
  180. package/dist/{index-V5Ez2gq_.js.map → index-DrM3iid4.js.map} +1 -1
  181. package/dist/index-tZvMCc77.js.map +1 -1
  182. package/dist/{index.esm-D889iexm.js → index.esm-BwMVvxTV.js} +199 -144
  183. package/dist/index.esm-BwMVvxTV.js.map +1 -0
  184. package/dist/index.js +45 -45
  185. package/dist/index.js.map +1 -1
  186. package/dist/makeZeroShortcutPreprocessor-CxsiGTRW.js.map +1 -1
  187. package/dist/{proxy-CreWmH-e.js → proxy-BbFHSE6L.js} +8631 -8680
  188. package/dist/proxy-BbFHSE6L.js.map +1 -0
  189. package/dist/{use-reduced-motion-znCm41qB.js → use-reduced-motion-DSpxmqyT.js} +3 -3
  190. package/dist/use-reduced-motion-DSpxmqyT.js.map +1 -0
  191. package/dist/useAccessibleColor-BYKjkGRg.js.map +1 -1
  192. package/dist/useBreakpoint-Cv5fnZxs.js.map +1 -1
  193. package/dist/{useDateFieldOrchestration-BNJCsRkS.js → useDateFieldOrchestration-DyAc3gPJ.js} +3 -3
  194. package/dist/{useDateFieldOrchestration-BNJCsRkS.js.map → useDateFieldOrchestration-DyAc3gPJ.js.map} +1 -1
  195. package/dist/{useDialogTransitionStates-2NaE_noq.js → useDialogTransitionStates-C1TtiwA_.js} +3 -3
  196. package/dist/{useDialogTransitionStates-2NaE_noq.js.map → useDialogTransitionStates-C1TtiwA_.js.map} +1 -1
  197. package/dist/useFocusWithin-BhhgRXdZ.js.map +1 -1
  198. package/dist/useInfiniteCombobox-WcRgC9p6.js.map +1 -1
  199. package/dist/useIntersectionObserver-BEmMDO3P.js.map +1 -1
  200. package/dist/useLayoutPropsUtil-DjD5IMh0.js.map +1 -1
  201. package/dist/useMergeRefs-Bde85AWI.js.map +1 -1
  202. package/dist/{useOnClickOutside-BHEWMLa9.js → useOnClickOutside-B1ddwORK.js} +5 -2
  203. package/dist/useOnClickOutside-B1ddwORK.js.map +1 -0
  204. package/dist/useOptionallyControlledState-DbDuos5L.js.map +1 -1
  205. package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js.map +1 -1
  206. package/dist/{usePopoverSupport-DIjjfodl.js → usePopoverSupport-CWTCDfN2.js} +2 -2
  207. package/dist/{usePopoverSupport-DIjjfodl.js.map → usePopoverSupport-CWTCDfN2.js.map} +1 -1
  208. package/dist/usePrefersColorScheme-_hT7dK7_.js.map +1 -1
  209. package/dist/usePrevious-Bvq-5auG.js.map +1 -1
  210. package/dist/useSize.js.map +1 -1
  211. package/dist/{useSwipe-CULmVQEk.js → useSwipe-Cp-CJxLU.js} +2 -2
  212. package/dist/{useSwipe-CULmVQEk.js.map → useSwipe-Cp-CJxLU.js.map} +1 -1
  213. package/dist/useSwipe.js +1 -1
  214. package/dist/useTrackingContext-DRwDL8DE.js.map +1 -1
  215. package/dist/useTrackingId.js.map +1 -1
  216. package/package.json +12 -18
  217. package/dist/Button.module-pUNSKoVC.js +0 -25
  218. package/dist/Button.module-pUNSKoVC.js.map +0 -1
  219. package/dist/Calendar-BQ5F2ENO.js.map +0 -1
  220. package/dist/Combobox-B9nesJuc.js.map +0 -1
  221. package/dist/DrawerContext-DboTgTmo.js.map +0 -1
  222. package/dist/Page-BMDkbDcU.js.map +0 -1
  223. package/dist/Pagination-BJsCppgW.js.map +0 -1
  224. package/dist/Popover-r26xMIfm.js.map +0 -1
  225. package/dist/SideNav-CBAzYyML.js.map +0 -1
  226. package/dist/Tab-wNucMTgo.js.map +0 -1
  227. package/dist/TimeField-CmbErrsZ.js.map +0 -1
  228. package/dist/index.esm-D889iexm.js.map +0 -1
  229. package/dist/proxy-CreWmH-e.js.map +0 -1
  230. package/dist/use-reduced-motion-znCm41qB.js.map +0 -1
  231. package/dist/useOnClickOutside-BHEWMLa9.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DateFieldYearless-Ba7HiTiI.js","sources":["../src/components/DateFieldYearless/internal/maskito/yearlessDatePlaceholderMask.ts","../src/components/DateFieldYearless/internal/MaskedYearlessDateInput.tsx","../src/components/DateFieldYearless/internal/utils.ts","../src/components/DateFieldYearless/DateFieldYearless.tsx"],"sourcesContent":["import type { MaskitoOptions } from \"@maskito/core\";\nimport {\n maskitoDateOptionsGenerator,\n maskitoWithPlaceholder,\n} from \"@maskito/kit\";\n\nimport { YearlessDateMode } from \"../../types\";\nimport { makeZeroShortcutPreprocessor } from \"../../../DateFieldSingle/internal/maskito/makeZeroShortcutPreprocessor\";\n\nconst yearlessDatePlaceholderMask = ({\n mode,\n separator = \"/\",\n placeholder,\n}: {\n mode: YearlessDateMode;\n separator?: string;\n placeholder: string;\n}) => {\n const dateOptions = maskitoDateOptionsGenerator({\n mode,\n separator,\n });\n\n const { plugins, removePlaceholder, ...placeholderOptions } =\n maskitoWithPlaceholder(placeholder);\n\n const datePlaceholderMask = {\n ...dateOptions,\n plugins: plugins.concat(dateOptions.plugins || []),\n preprocessors: [\n ...placeholderOptions.preprocessors,\n ...dateOptions.preprocessors,\n makeZeroShortcutPreprocessor(mode, separator),\n ],\n postprocessors: [\n ...dateOptions.postprocessors,\n ...placeholderOptions.postprocessors,\n ],\n } satisfies Required<MaskitoOptions>;\n\n return { options: datePlaceholderMask, removePlaceholder };\n};\n\nexport default yearlessDatePlaceholderMask;\n","import { useMaskito } from \"@maskito/react\";\nimport { TextField, TextFieldProps } from \"../../TextField\";\nimport {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport { YearlessDateMode, YearlessDate } from \"../types\";\nimport { usePrevious } from \"../../../internal/hooks\";\nimport yearlessDatePlaceholderMask from \"./maskito/yearlessDatePlaceholderMask\";\n\nexport type MaskedYearlessDateInputChange = {\n event: React.ChangeEvent<HTMLInputElement>;\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n};\n\nexport type MaskedYearlessDateInputChangeHandler = (\n change: MaskedYearlessDateInputChange,\n) => void;\n\nexport type MaskedYearlessDateInputProps = Omit<\n TextFieldProps,\n \"onChange\" | \"value\" | \"ref\" | \"showCounter\" | \"hint\"\n> & {\n onChange: MaskedYearlessDateInputChangeHandler;\n mode?: YearlessDateMode;\n value?: YearlessDate | null;\n disableHint?: boolean;\n};\n\nexport type MaskedYearlessDateInput = HTMLInputElement & {\n setValue: (value: YearlessDate | null) => void;\n};\n\n/**\n * A masked date input component that allows for the input of a date in a specific format.\n *\n * Provides a `setDate` method that can be used to set the date from outside the component (e.g from a calendar).\n *\n * @internal This component is not intended to be used directly in consumer code.\n *\n * @param props - The props for the MaskedDateInput component.\n * @param props.onChange - The function to call when the date changes.\n * @param props.mode - The mode of the date input.\n */\nexport const MaskedYearlessDateInput = forwardRef<\n MaskedYearlessDateInput,\n MaskedYearlessDateInputProps\n>(({ onChange, mode = \"mm/dd\", value, disableHint = false, ...props }, ref) => {\n const placeholder = \"__/__\";\n const [inputValue, setInputValue] = useState(placeholder);\n const { options, removePlaceholder } = yearlessDatePlaceholderMask({\n mode,\n placeholder,\n });\n const maskedInputRef = useMaskito({ options });\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useMergeRefs([maskedInputRef, inputRef, ref]);\n const previousValue = usePrevious(value);\n const previousMode = usePrevious(mode);\n\n // Update the input value when the mode changes.\n useEffect(() => {\n if (mode !== previousMode) {\n setInputValue((oldInputValue) =>\n swapMode(oldInputValue, previousMode ?? mode, mode),\n );\n }\n }, [mode, previousMode]);\n\n // Update the input value when the parent's value changes.\n useEffect(() => {\n if (\n previousValue?.day !== value?.day ||\n previousValue?.month !== value?.month\n ) {\n if (value?.day && value?.month) {\n setInputValue(stringifyYearlessDate(value.day, value.month, mode));\n } else if (\n previousValue !== null &&\n previousValue !== undefined &&\n (value === null || (value?.day === null && value?.month === null))\n ) {\n setInputValue(placeholder);\n } else {\n return;\n }\n }\n }, [value, mode, previousValue]);\n\n const currentParsedData = useMemo(() => {\n return parseInputValue(inputValue, mode, removePlaceholder);\n }, [inputValue, mode, removePlaceholder]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n const {\n value: v,\n isInputValid,\n isInputEmpty,\n } = parseInputValue(event.target.value, mode, removePlaceholder);\n\n const isDateDifferent =\n (v === null) !== (currentParsedData.value === null) ||\n v?.day !== currentParsedData.value?.day ||\n v?.month !== currentParsedData.value?.month;\n\n if (!isDateDifferent) {\n return;\n }\n\n onChange?.({\n event,\n value: v ?? currentParsedData.value ?? null,\n isInputValid,\n isInputEmpty,\n });\n };\n\n // Extend the input ref with additional methods.\n // This provides a way to set the input value from outside the component.\n useImperativeHandle(ref, () => {\n const input = inputRef.current;\n if (!input) return null as unknown as MaskedYearlessDateInput;\n return Object.assign(input, {\n setValue: (value: YearlessDate | null) => {\n if (!value) {\n setInputValue(placeholder);\n return;\n }\n setInputValue(\n stringifyYearlessDate(value.day ?? 1, value.month ?? 1, mode),\n );\n },\n });\n }, [mode, placeholder]);\n\n return (\n <TextField\n ref={combinedRef}\n data-month-value={value?.month}\n data-day-value={value?.day}\n data-input-valid={currentParsedData.isInputValid}\n data-input-empty={currentParsedData.isInputEmpty}\n {...props}\n showCounter={false}\n value={inputValue}\n onChange={handleChange}\n hint={disableHint ? undefined : `Format: ${mode}`}\n />\n );\n});\n\nMaskedYearlessDateInput.displayName = \"MaskedYearlessDateInput\";\n\nfunction parseInputValue(\n value: string,\n mode: YearlessDateMode,\n removePlaceholder: (value: string) => string,\n): {\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n} {\n const valueMinusPlaceholder = removePlaceholder(value);\n const [segment1, segment2] = valueMinusPlaceholder.split(\"/\");\n const incompleteFirstSegment = segment1?.length !== 2;\n const incompleteSecondSegment = segment2?.length !== 2;\n if (mode === \"dd/mm\") {\n return {\n value: {\n day: incompleteFirstSegment ? null : parseInt(segment1),\n month: incompleteSecondSegment ? null : parseInt(segment2),\n },\n isInputValid: !incompleteFirstSegment && !incompleteSecondSegment,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n }\n return {\n value: {\n day: incompleteSecondSegment ? null : parseInt(segment2),\n month: incompleteFirstSegment ? null : parseInt(segment1),\n },\n isInputValid: !incompleteFirstSegment && !incompleteSecondSegment,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n}\n\nfunction swapMode(\n inputString: string,\n previousMode: YearlessDateMode,\n mode: YearlessDateMode,\n) {\n const { day, month } = divideSegments(inputString, previousMode);\n return stringifyYearlessDate(day, month, mode);\n}\n\nfunction divideSegments(\n value: string,\n mode: YearlessDateMode,\n): {\n day: string;\n month: string;\n} {\n const [segment1, segment2] = value.split(\"/\");\n if (mode === \"dd/mm\") {\n return { day: segment1, month: segment2 };\n }\n return { day: segment2, month: segment1 };\n}\n\nfunction stringifyYearlessDate(\n day: number | string,\n month: number | string,\n mode: YearlessDateMode,\n) {\n const dd = day.toString().padStart(2, \"0\");\n const mm = month.toString().padStart(2, \"0\");\n if (mode === \"dd/mm\") {\n return `${dd}/${mm}`;\n }\n return `${mm}/${dd}`;\n}\n","import { YearlessDate } from \"../types\";\n\nexport function validateYearlessDate({\n value,\n constraints,\n}: {\n value: YearlessDate | null;\n constraints: {\n required?: boolean;\n unavailable?: {\n dates?: YearlessDate[];\n };\n minDate?: YearlessDate | null;\n maxDate?: YearlessDate | null;\n };\n}): boolean {\n const { required, unavailable, minDate, maxDate } = constraints;\n if (!value || (!value?.day && !value?.month)) {\n return required ? false : true;\n }\n if (value.day === null || value.month === null) {\n return false;\n }\n if (\n unavailable?.dates?.some(\n (d) => d.day === value.day && d.month === value.month,\n )\n ) {\n return false;\n }\n const minDateMonth = minDate?.month ?? 1;\n const minDateDay = minDate?.day ?? 1;\n const maxDateMonth = maxDate?.month ?? 12;\n const maxDateDay = maxDate?.day ?? 31;\n if (\n value.month < minDateMonth || // Earlier month\n (value.month === minDateMonth && value.day < minDateDay) // Same month, earlier day\n ) {\n return false;\n }\n if (\n value.month > maxDateMonth || // Later month\n (value.month === maxDateMonth && value.day > maxDateDay) // Same month, later day\n ) {\n return false;\n }\n return true;\n}\n","import { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\nimport { YearlessDate, YearlessDateMode } from \"./types\";\nimport {\n MaskedYearlessDateInput,\n MaskedYearlessDateInputChange,\n MaskedYearlessDateInputProps,\n} from \"./internal/MaskedYearlessDateInput\";\nimport { validateYearlessDate } from \"./internal/utils\";\nimport { useOptionallyControlledState } from \"../../internal/hooks\";\nimport { useMemo } from \"react\";\n\nexport type DateFieldYearlessProps = Omit<\n MaskedYearlessDateInputProps,\n \"onChange\" | \"value\" | \"defaultValue\" | \"ref\" | \"required\" | \"autoComplete\"\n> & {\n /**\n * The controlled value of the date field\n */\n value?: YearlessDate | null;\n /**\n * The default value for uncontrolled usage\n */\n defaultValue?: YearlessDate | null;\n /**\n * The function to call when the date value changes\n */\n onChange?: DateFieldYearlessChangeHandler;\n /**\n * The date format mode (mm/dd or dd/mm)\n */\n mode?: YearlessDateMode;\n /**\n * Whether the field is required\n */\n required?: boolean;\n /**\n * The minimum allowed date\n */\n minDate?: YearlessDate | null;\n /**\n * The maximum allowed date\n */\n maxDate?: YearlessDate | null;\n /**\n * Configuration for unavailable dates\n */\n unavailable?: {\n /**\n * Array of dates that are not selectable\n */\n dates?: YearlessDate[];\n };\n} & DataTrackingId;\n\n/**\n * Represents a change event for the DateFieldYearless component\n */\nexport type DateFieldYearlessChange = {\n /**\n * The current date value\n */\n value: YearlessDate | null;\n /**\n * Whether the input is valid\n */\n isInputValid: boolean;\n /**\n * Whether the input is empty\n */\n isInputEmpty: boolean;\n /**\n * Whether the overall value is valid\n */\n isValid: boolean;\n};\n\n/**\n * Handler function for DateFieldYearless change events\n */\nexport type DateFieldYearlessChangeHandler = (\n change: DateFieldYearlessChange,\n) => void;\n\n/**\n * DateFieldYearless component for inputting dates without year information.\n *\n * Features:\n * - Supports both controlled and uncontrolled usage\n * - Supports different date formats (mm/dd or dd/mm)\n * - Supports layout utilities for positioning and spacing\n *\n * @example\n * <DateFieldYearless\n * label=\"Birthday\"\n * mode=\"mm/dd\"\n * required\n * onChange={(change) => console.log('Date changed:', change.value)}\n * />\n */\nexport const DateFieldYearless = (props: DateFieldYearlessProps) => {\n const {\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange,\n minDate,\n maxDate,\n unavailable,\n required,\n ...restProps\n } = props;\n\n const data = {\n label: childrenToString(props.label),\n labelProps: props.labelProps,\n description: childrenToString(props.description),\n };\n\n const trackingId = useTrackingId({\n name: \"DateFieldYearless\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const [value, setValue] = useOptionallyControlledState<YearlessDate | null>({\n controlledValue: valueProp,\n defaultValue: defaultValueProp,\n });\n\n const currentValidity = useMemo(\n () =>\n validateYearlessDate({\n value: value ?? null,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n [value, required, unavailable, minDate, maxDate],\n );\n\n const handleInputChange = (change: MaskedYearlessDateInputChange) => {\n const { event, value, ...restChange } = change;\n setValue(value);\n return onChange?.({\n ...restChange,\n value,\n isValid: validateYearlessDate({\n value,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n });\n };\n\n return (\n <MaskedYearlessDateInput\n required={required}\n data-tracking-id={trackingId}\n {...restProps}\n autoComplete=\"off\"\n onChange={handleInputChange}\n value={value}\n data-valid={currentValidity}\n />\n );\n};\n\nDateFieldYearless.displayName = \"DateFieldYearless\";\n"],"names":["value"],"mappings":"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"}
1
+ {"version":3,"file":"DateFieldYearless-3JBVj3wn.js","sources":["../src/components/DateFieldYearless/internal/maskito/yearlessDatePlaceholderMask.ts","../src/components/DateFieldYearless/internal/MaskedYearlessDateInput.tsx","../src/components/DateFieldYearless/internal/utils.ts","../src/components/DateFieldYearless/DateFieldYearless.tsx"],"sourcesContent":["import type { MaskitoOptions } from \"@maskito/core\";\nimport {\n maskitoDateOptionsGenerator,\n maskitoWithPlaceholder,\n} from \"@maskito/kit\";\n\nimport { YearlessDateMode } from \"../../types\";\nimport { makeZeroShortcutPreprocessor } from \"../../../DateFieldSingle/internal/maskito/makeZeroShortcutPreprocessor\";\n\nconst yearlessDatePlaceholderMask = ({\n mode,\n separator = \"/\",\n placeholder,\n}: {\n mode: YearlessDateMode;\n separator?: string;\n placeholder: string;\n}) => {\n const dateOptions = maskitoDateOptionsGenerator({\n mode,\n separator,\n });\n\n const { plugins, removePlaceholder, ...placeholderOptions } =\n maskitoWithPlaceholder(placeholder);\n\n const datePlaceholderMask = {\n ...dateOptions,\n plugins: plugins.concat(dateOptions.plugins || []),\n preprocessors: [\n ...placeholderOptions.preprocessors,\n ...dateOptions.preprocessors,\n makeZeroShortcutPreprocessor(mode, separator),\n ],\n postprocessors: [\n ...dateOptions.postprocessors,\n ...placeholderOptions.postprocessors,\n ],\n } satisfies Required<MaskitoOptions>;\n\n return { options: datePlaceholderMask, removePlaceholder };\n};\n\nexport default yearlessDatePlaceholderMask;\n","import { useMaskito } from \"@maskito/react\";\nimport { TextField, TextFieldProps } from \"../../TextField\";\nimport {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport { YearlessDateMode, YearlessDate } from \"../types\";\nimport { usePrevious } from \"../../../internal/hooks\";\nimport yearlessDatePlaceholderMask from \"./maskito/yearlessDatePlaceholderMask\";\n\nexport type MaskedYearlessDateInputChange = {\n event: React.ChangeEvent<HTMLInputElement>;\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n};\n\nexport type MaskedYearlessDateInputChangeHandler = (\n change: MaskedYearlessDateInputChange,\n) => void;\n\nexport type MaskedYearlessDateInputProps = Omit<\n TextFieldProps,\n \"onChange\" | \"value\" | \"ref\" | \"showCounter\" | \"hint\"\n> & {\n onChange: MaskedYearlessDateInputChangeHandler;\n mode?: YearlessDateMode;\n value?: YearlessDate | null;\n disableHint?: boolean;\n};\n\nexport type MaskedYearlessDateInput = HTMLInputElement & {\n setValue: (value: YearlessDate | null) => void;\n};\n\n/**\n * A masked date input component that allows for the input of a date in a specific format.\n *\n * Provides a `setDate` method that can be used to set the date from outside the component (e.g from a calendar).\n *\n * @internal This component is not intended to be used directly in consumer code.\n *\n * @param props - The props for the MaskedDateInput component.\n * @param props.onChange - The function to call when the date changes.\n * @param props.mode - The mode of the date input.\n */\nexport const MaskedYearlessDateInput = forwardRef<\n MaskedYearlessDateInput,\n MaskedYearlessDateInputProps\n>(({ onChange, mode = \"mm/dd\", value, disableHint = false, ...props }, ref) => {\n const placeholder = \"__/__\";\n const [inputValue, setInputValue] = useState(placeholder);\n const { options, removePlaceholder } = yearlessDatePlaceholderMask({\n mode,\n placeholder,\n });\n const maskedInputRef = useMaskito({ options });\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useMergeRefs([maskedInputRef, inputRef, ref]);\n const previousValue = usePrevious(value);\n const previousMode = usePrevious(mode);\n\n // Update the input value when the mode changes.\n useEffect(() => {\n if (mode !== previousMode) {\n setInputValue((oldInputValue) =>\n swapMode(oldInputValue, previousMode ?? mode, mode),\n );\n }\n }, [mode, previousMode]);\n\n // Update the input value when the parent's value changes.\n useEffect(() => {\n if (\n previousValue?.day !== value?.day ||\n previousValue?.month !== value?.month\n ) {\n if (value?.day && value?.month) {\n setInputValue(stringifyYearlessDate(value.day, value.month, mode));\n } else if (\n previousValue !== null &&\n previousValue !== undefined &&\n (value === null || (value?.day === null && value?.month === null))\n ) {\n setInputValue(placeholder);\n } else {\n return;\n }\n }\n }, [value, mode, previousValue]);\n\n const currentParsedData = useMemo(() => {\n return parseInputValue(inputValue, mode, removePlaceholder);\n }, [inputValue, mode, removePlaceholder]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n const {\n value: v,\n isInputValid,\n isInputEmpty,\n } = parseInputValue(event.target.value, mode, removePlaceholder);\n\n const isDateDifferent =\n (v === null) !== (currentParsedData.value === null) ||\n v?.day !== currentParsedData.value?.day ||\n v?.month !== currentParsedData.value?.month;\n\n if (!isDateDifferent) {\n return;\n }\n\n onChange?.({\n event,\n value: v ?? currentParsedData.value ?? null,\n isInputValid,\n isInputEmpty,\n });\n };\n\n // Extend the input ref with additional methods.\n // This provides a way to set the input value from outside the component.\n useImperativeHandle(ref, () => {\n const input = inputRef.current;\n if (!input) return null as unknown as MaskedYearlessDateInput;\n return Object.assign(input, {\n setValue: (value: YearlessDate | null) => {\n if (!value) {\n setInputValue(placeholder);\n return;\n }\n setInputValue(\n stringifyYearlessDate(value.day ?? 1, value.month ?? 1, mode),\n );\n },\n });\n }, [mode, placeholder]);\n\n return (\n <TextField\n ref={combinedRef}\n data-month-value={value?.month}\n data-day-value={value?.day}\n data-input-valid={currentParsedData.isInputValid}\n data-input-empty={currentParsedData.isInputEmpty}\n {...props}\n showCounter={false}\n value={inputValue}\n onChange={handleChange}\n hint={disableHint ? undefined : `Format: ${mode}`}\n />\n );\n});\n\nMaskedYearlessDateInput.displayName = \"MaskedYearlessDateInput\";\n\nfunction parseInputValue(\n value: string,\n mode: YearlessDateMode,\n removePlaceholder: (value: string) => string,\n): {\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n} {\n const valueMinusPlaceholder = removePlaceholder(value);\n const [segment1, segment2] = valueMinusPlaceholder.split(\"/\");\n const incompleteFirstSegment = segment1?.length !== 2;\n const incompleteSecondSegment = segment2?.length !== 2;\n if (mode === \"dd/mm\") {\n return {\n value: {\n day: incompleteFirstSegment ? null : parseInt(segment1),\n month: incompleteSecondSegment ? null : parseInt(segment2),\n },\n isInputValid: !incompleteFirstSegment && !incompleteSecondSegment,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n }\n return {\n value: {\n day: incompleteSecondSegment ? null : parseInt(segment2),\n month: incompleteFirstSegment ? null : parseInt(segment1),\n },\n isInputValid: !incompleteFirstSegment && !incompleteSecondSegment,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n}\n\nfunction swapMode(\n inputString: string,\n previousMode: YearlessDateMode,\n mode: YearlessDateMode,\n) {\n const { day, month } = divideSegments(inputString, previousMode);\n return stringifyYearlessDate(day, month, mode);\n}\n\nfunction divideSegments(\n value: string,\n mode: YearlessDateMode,\n): {\n day: string;\n month: string;\n} {\n const [segment1, segment2] = value.split(\"/\");\n if (mode === \"dd/mm\") {\n return { day: segment1, month: segment2 };\n }\n return { day: segment2, month: segment1 };\n}\n\nfunction stringifyYearlessDate(\n day: number | string,\n month: number | string,\n mode: YearlessDateMode,\n) {\n const dd = day.toString().padStart(2, \"0\");\n const mm = month.toString().padStart(2, \"0\");\n if (mode === \"dd/mm\") {\n return `${dd}/${mm}`;\n }\n return `${mm}/${dd}`;\n}\n","import { YearlessDate } from \"../types\";\n\nexport function validateYearlessDate({\n value,\n constraints,\n}: {\n value: YearlessDate | null;\n constraints: {\n required?: boolean;\n unavailable?: {\n dates?: YearlessDate[];\n };\n minDate?: YearlessDate | null;\n maxDate?: YearlessDate | null;\n };\n}): boolean {\n const { required, unavailable, minDate, maxDate } = constraints;\n if (!value || (!value?.day && !value?.month)) {\n return required ? false : true;\n }\n if (value.day === null || value.month === null) {\n return false;\n }\n if (\n unavailable?.dates?.some(\n (d) => d.day === value.day && d.month === value.month,\n )\n ) {\n return false;\n }\n const minDateMonth = minDate?.month ?? 1;\n const minDateDay = minDate?.day ?? 1;\n const maxDateMonth = maxDate?.month ?? 12;\n const maxDateDay = maxDate?.day ?? 31;\n if (\n value.month < minDateMonth || // Earlier month\n (value.month === minDateMonth && value.day < minDateDay) // Same month, earlier day\n ) {\n return false;\n }\n if (\n value.month > maxDateMonth || // Later month\n (value.month === maxDateMonth && value.day > maxDateDay) // Same month, later day\n ) {\n return false;\n }\n return true;\n}\n","import { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\nimport { YearlessDate, YearlessDateMode } from \"./types\";\nimport {\n MaskedYearlessDateInput,\n MaskedYearlessDateInputChange,\n MaskedYearlessDateInputProps,\n} from \"./internal/MaskedYearlessDateInput\";\nimport { validateYearlessDate } from \"./internal/utils\";\nimport { useOptionallyControlledState } from \"../../internal/hooks\";\nimport { useMemo } from \"react\";\n\nexport type DateFieldYearlessProps = Omit<\n MaskedYearlessDateInputProps,\n \"onChange\" | \"value\" | \"defaultValue\" | \"ref\" | \"required\" | \"autoComplete\"\n> & {\n /**\n * The controlled value of the date field\n */\n value?: YearlessDate | null;\n /**\n * The default value for uncontrolled usage\n */\n defaultValue?: YearlessDate | null;\n /**\n * The function to call when the date value changes\n */\n onChange?: DateFieldYearlessChangeHandler;\n /**\n * The date format mode (mm/dd or dd/mm)\n */\n mode?: YearlessDateMode;\n /**\n * Whether the field is required\n */\n required?: boolean;\n /**\n * The minimum allowed date\n */\n minDate?: YearlessDate | null;\n /**\n * The maximum allowed date\n */\n maxDate?: YearlessDate | null;\n /**\n * Configuration for unavailable dates\n */\n unavailable?: {\n /**\n * Array of dates that are not selectable\n */\n dates?: YearlessDate[];\n };\n} & DataTrackingId;\n\n/**\n * Represents a change event for the DateFieldYearless component\n */\nexport type DateFieldYearlessChange = {\n /**\n * The current date value\n */\n value: YearlessDate | null;\n /**\n * Whether the input is valid\n */\n isInputValid: boolean;\n /**\n * Whether the input is empty\n */\n isInputEmpty: boolean;\n /**\n * Whether the overall value is valid\n */\n isValid: boolean;\n};\n\n/**\n * Handler function for DateFieldYearless change events\n */\nexport type DateFieldYearlessChangeHandler = (\n change: DateFieldYearlessChange,\n) => void;\n\n/**\n * DateFieldYearless component for inputting dates without year information.\n *\n * Features:\n * - Supports both controlled and uncontrolled usage\n * - Supports different date formats (mm/dd or dd/mm)\n * - Supports layout utilities for positioning and spacing\n *\n * @example\n * <DateFieldYearless\n * label=\"Birthday\"\n * mode=\"mm/dd\"\n * required\n * onChange={(change) => console.log('Date changed:', change.value)}\n * />\n */\nexport const DateFieldYearless = (props: DateFieldYearlessProps) => {\n const {\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange,\n minDate,\n maxDate,\n unavailable,\n required,\n ...restProps\n } = props;\n\n const data = {\n label: childrenToString(props.label),\n labelProps: props.labelProps,\n description: childrenToString(props.description),\n };\n\n const trackingId = useTrackingId({\n name: \"DateFieldYearless\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const [value, setValue] = useOptionallyControlledState<YearlessDate | null>({\n controlledValue: valueProp,\n defaultValue: defaultValueProp,\n });\n\n const currentValidity = useMemo(\n () =>\n validateYearlessDate({\n value: value ?? null,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n [value, required, unavailable, minDate, maxDate],\n );\n\n const handleInputChange = (change: MaskedYearlessDateInputChange) => {\n const { event, value, ...restChange } = change;\n setValue(value);\n return onChange?.({\n ...restChange,\n value,\n isValid: validateYearlessDate({\n value,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n });\n };\n\n return (\n <MaskedYearlessDateInput\n required={required}\n data-tracking-id={trackingId}\n {...restProps}\n autoComplete=\"off\"\n onChange={handleInputChange}\n value={value}\n data-valid={currentValidity}\n />\n );\n};\n\nDateFieldYearless.displayName = \"DateFieldYearless\";\n"],"names":["value"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { D as DateFieldYearless } from './DateFieldYearless-Ba7HiTiI.js';
1
+ export { D as DateFieldYearless } from './DateFieldYearless-3JBVj3wn.js';
2
2
  //# sourceMappingURL=DateFieldYearless.js.map
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef, useId, useMemo } from 'react';
3
- import { F as FieldLabel } from './FieldLabel-BsbTTyom.js';
4
- import { B as ButtonToggle } from './ButtonToggle-pSwg7NvT.js';
5
- import { T as Tooltip } from './Tooltip-BI3Xs75X.js';
3
+ import { F as FieldLabel } from './FieldLabel-BP8QK5UR.js';
4
+ import { B as ButtonToggle } from './ButtonToggle-PCeSG-5D.js';
5
+ import { T as Tooltip } from './Tooltip-CtCLw_vx.js';
6
6
  import { F as Flex } from './Flex-BdQMekvA.js';
7
7
  import { H as Helper } from './Helper-BkIDJqgA.js';
8
8
 
@@ -107,4 +107,4 @@ const DaysOfTheWeek = forwardRef(
107
107
  DaysOfTheWeek.displayName = "DaysOfTheWeek";
108
108
 
109
109
  export { DaysOfTheWeek as D };
110
- //# sourceMappingURL=DaysOfTheWeek-BYSYZySH.js.map
110
+ //# sourceMappingURL=DaysOfTheWeek-RcPgDoM3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DaysOfTheWeek-BYSYZySH.js","sources":["../src/components/DaysOfTheWeek/DaysOfTheWeek.tsx"],"sourcesContent":["import {\n AriaAttributes,\n ReactElement,\n Ref,\n forwardRef,\n useId,\n useMemo,\n} from \"react\";\nimport { DataTrackingId } from \"../../types\";\nimport styles from \"./DaysOfTheWeek.module.scss\";\nimport { FieldLabel, FieldLabelProps } from \"../FieldLabel\";\n\nimport ButtonToggle from \"../ButtonToggle\";\nimport Tooltip from \"../Tooltip\";\nimport { Helper } from \"../../internal/components\";\nimport Flex from \"../Flex\";\n\n/**\n * Props for the DaysOfTheWeek component\n */\nexport type DaysOfTheWeekProps = {\n /**\n * The selected days (1-7, where 1 is Monday and 7 is Sunday)\n */\n selectedDays?: number[];\n /**\n * Callback fired when the selection changes\n */\n onChange?: (selectedDays: number[]) => void;\n /**\n * Whether the component is disabled\n * Can be a boolean to disable all days, or an array of day numbers (1-7) to disable specific days\n */\n disabled?: boolean | number[];\n /**\n * The first day of the week (1-7, where 1 is Monday and 7 is Sunday)\n * @default 1\n */\n firstDay?: number;\n /**\n * Hint text or element to display above the component\n */\n hint?: ReactElement | string;\n /**\n * ID for the component\n */\n id?: string;\n /**\n * Description text or element to display below the component\n */\n description?: ReactElement | string;\n /**\n * Error message to display when there is an error\n */\n errorMessage?: ReactElement | string;\n /**\n * aria-live for the error message\n * @default assertive\n */\n errorAriaLive?: AriaAttributes[\"aria-live\"];\n /**\n * Label text or element\n */\n label?: FieldLabelProps[\"children\"];\n /**\n * Whether the field is required\n */\n required?: boolean;\n /**\n * Additional info to display in a tooltip next to the label\n */\n moreInfo?: FieldLabelProps[\"moreInfo\"];\n /**\n * Additional props to pass to the Label component\n */\n labelProps?: FieldLabelProps;\n} & DataTrackingId;\n\ninterface DayInfo {\n short: string;\n full: string;\n}\n\n// Days in order from Monday to Sunday\nconst DAYS: DayInfo[] = [\n { short: \"Mo\", full: \"Monday\" },\n { short: \"Tu\", full: \"Tuesday\" },\n { short: \"We\", full: \"Wednesday\" },\n { short: \"Th\", full: \"Thursday\" },\n { short: \"Fr\", full: \"Friday\" },\n { short: \"Sa\", full: \"Saturday\" },\n { short: \"Su\", full: \"Sunday\" },\n];\n\n/**\n * DaysOfTheWeek component for selecting multiple days of the week.\n *\n * Features:\n * - Displays days of the week as toggleable buttons\n * - Supports custom first day of the week (Monday-Sunday)\n * - Individual day selection and deselection\n * - Optional label, hint, description, and error messaging\n * - Full accessibility support with ARIA attributes\n * - Tooltips showing full day names on hover\n * - Responsive design with flexible layout\n * - Support for disabling specific days or the entire component\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <DaysOfTheWeek\n * selectedDays={[2, 4, 6]}\n * onChange={(days) => console.log('Selected days:', days)}\n * label=\"Working Days\"\n * firstDay={1}\n * />\n */\nexport const DaysOfTheWeek = forwardRef(\n (props: DaysOfTheWeekProps, ref: Ref<HTMLDivElement>) => {\n const {\n selectedDays = [],\n onChange,\n disabled,\n firstDay = 7,\n hint,\n id: idProp,\n description,\n errorMessage,\n errorAriaLive,\n label,\n required,\n moreInfo,\n labelProps,\n } = props;\n\n const autoId = useId();\n const id = idProp ?? autoId;\n const labelUid = useId();\n const helperUid = useId();\n\n const orderedDays = useMemo(() => {\n const firstDayIndex = firstDay - 1;\n return [...DAYS.slice(firstDayIndex), ...DAYS.slice(0, firstDayIndex)];\n }, [firstDay]);\n\n const handleDayToggle = (index: number) => {\n // Convert from 0-based array index to 1-based day number, accounting for firstDay\n const dayNumber = ((index + firstDay - 1) % 7) + 1;\n const newSelectedDays = selectedDays.includes(dayNumber)\n ? selectedDays.filter((d) => d !== dayNumber)\n : [...selectedDays, dayNumber];\n\n onChange?.(newSelectedDays);\n };\n\n const isDayDisabled = (dayNumber: number) => {\n if (typeof disabled === \"boolean\") {\n return disabled;\n }\n if (Array.isArray(disabled)) {\n return disabled.includes(dayNumber);\n }\n return false;\n };\n\n return (\n <div className={styles[\"days-of-the-week-container\"]}>\n {label ? (\n <FieldLabel\n moreInfo={moreInfo}\n required={required}\n id={labelUid}\n htmlFor={id}\n {...labelProps}\n >\n {label}\n </FieldLabel>\n ) : null}\n <Flex ref={ref} gap={2} className={styles[\"days-of-the-week\"]} id={id}>\n {orderedDays.map((day, index) => {\n // Convert from 0-based array index to 1-based day number, accounting for firstDay\n const dayNumber = ((index + firstDay - 1) % 7) + 1;\n return (\n <Tooltip key={day.short} placement=\"top\">\n <Tooltip.Trigger className={styles[\"button-toggle-wrapper\"]}>\n <ButtonToggle\n checked={selectedDays.includes(dayNumber)}\n onClick={() => handleDayToggle(index)}\n disabled={isDayDisabled(dayNumber)}\n className={styles[\"button-toggle\"]}\n id={label ? labelUid : undefined}\n aria-describedby={helperUid}\n >\n {day.short}\n </ButtonToggle>\n </Tooltip.Trigger>\n <Tooltip.Content>{day.full}</Tooltip.Content>\n </Tooltip>\n );\n })}\n </Flex>\n <Helper\n id={helperUid}\n hint={hint}\n description={description}\n errorMessage={errorMessage}\n errorAriaLive={errorAriaLive}\n />\n </div>\n );\n },\n);\nDaysOfTheWeek.displayName = \"DaysOfTheWeek\";\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAoFA,MAAM,IAAkB,GAAA;AAAA,EACtB,EAAE,KAAA,EAAO,IAAM,EAAA,IAAA,EAAM,QAAS,EAAA;AAAA,EAC9B,EAAE,KAAA,EAAO,IAAM,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,EAC/B,EAAE,KAAA,EAAO,IAAM,EAAA,IAAA,EAAM,WAAY,EAAA;AAAA,EACjC,EAAE,KAAA,EAAO,IAAM,EAAA,IAAA,EAAM,UAAW,EAAA;AAAA,EAChC,EAAE,KAAA,EAAO,IAAM,EAAA,IAAA,EAAM,QAAS,EAAA;AAAA,EAC9B,EAAE,KAAA,EAAO,IAAM,EAAA,IAAA,EAAM,UAAW,EAAA;AAAA,EAChC,EAAE,KAAA,EAAO,IAAM,EAAA,IAAA,EAAM,QAAS;AAChC,CAAA;AAwBO,MAAM,aAAgB,GAAA,UAAA;AAAA,EAC3B,CAAC,OAA2B,GAA6B,KAAA;AACvD,IAAM,MAAA;AAAA,MACJ,eAAe,EAAC;AAAA,MAChB,QAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAW,GAAA,CAAA;AAAA,MACX,IAAA;AAAA,MACA,EAAI,EAAA,MAAA;AAAA,MACJ,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACE,GAAA,KAAA;AAEJ,IAAA,MAAM,SAAS,KAAM,EAAA;AACrB,IAAA,MAAM,KAAK,MAAU,IAAA,MAAA;AACrB,IAAA,MAAM,WAAW,KAAM,EAAA;AACvB,IAAA,MAAM,YAAY,KAAM,EAAA;AAExB,IAAM,MAAA,WAAA,GAAc,QAAQ,MAAM;AAChC,MAAA,MAAM,gBAAgB,QAAW,GAAA,CAAA;AACjC,MAAO,OAAA,CAAC,GAAG,IAAA,CAAK,KAAM,CAAA,aAAa,CAAG,EAAA,GAAG,IAAK,CAAA,KAAA,CAAM,CAAG,EAAA,aAAa,CAAC,CAAA;AAAA,KACvE,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,IAAM,MAAA,eAAA,GAAkB,CAAC,KAAkB,KAAA;AAEzC,MAAA,MAAM,SAAc,GAAA,CAAA,KAAA,GAAQ,QAAW,GAAA,CAAA,IAAK,CAAK,GAAA,CAAA;AACjD,MAAA,MAAM,eAAkB,GAAA,YAAA,CAAa,QAAS,CAAA,SAAS,IACnD,YAAa,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,SAAS,CAAA,GAC1C,CAAC,GAAG,cAAc,SAAS,CAAA;AAE/B,MAAA,QAAA,GAAW,eAAe,CAAA;AAAA,KAC5B;AAEA,IAAM,MAAA,aAAA,GAAgB,CAAC,SAAsB,KAAA;AAC3C,MAAI,IAAA,OAAO,aAAa,SAAW,EAAA;AACjC,QAAO,OAAA,QAAA;AAAA;AAET,MAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,QAAQ,CAAG,EAAA;AAC3B,QAAO,OAAA,QAAA,CAAS,SAAS,SAAS,CAAA;AAAA;AAEpC,MAAO,OAAA,KAAA;AAAA,KACT;AAEA,IAAA,uBACG,IAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,4BAA4B,CAChD,EAAA,QAAA,EAAA;AAAA,MACC,KAAA,mBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,QAAA;AAAA,UACA,QAAA;AAAA,UACA,EAAI,EAAA,QAAA;AAAA,UACJ,OAAS,EAAA,EAAA;AAAA,UACR,GAAG,UAAA;AAAA,UAEH,QAAA,EAAA;AAAA;AAAA,OAED,GAAA,IAAA;AAAA,sBACH,GAAA,CAAA,IAAA,EAAA,EAAK,GAAU,EAAA,GAAA,EAAK,GAAG,SAAW,EAAA,MAAA,CAAO,kBAAkB,CAAA,EAAG,EAC5D,EAAA,QAAA,EAAA,WAAA,CAAY,GAAI,CAAA,CAAC,KAAK,KAAU,KAAA;AAE/B,QAAA,MAAM,SAAc,GAAA,CAAA,KAAA,GAAQ,QAAW,GAAA,CAAA,IAAK,CAAK,GAAA,CAAA;AACjD,QACE,uBAAA,IAAA,CAAC,OAAwB,EAAA,EAAA,SAAA,EAAU,KACjC,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAQ,OAAR,EAAA,EAAgB,SAAW,EAAA,MAAA,CAAO,uBAAuB,CACxD,EAAA,QAAA,kBAAA,GAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,YAAa,CAAA,QAAA,CAAS,SAAS,CAAA;AAAA,cACxC,OAAA,EAAS,MAAM,eAAA,CAAgB,KAAK,CAAA;AAAA,cACpC,QAAA,EAAU,cAAc,SAAS,CAAA;AAAA,cACjC,SAAA,EAAW,OAAO,eAAe,CAAA;AAAA,cACjC,EAAA,EAAI,QAAQ,QAAW,GAAA,MAAA;AAAA,cACvB,kBAAkB,EAAA,SAAA;AAAA,cAEjB,QAAI,EAAA,GAAA,CAAA;AAAA;AAAA,WAET,EAAA,CAAA;AAAA,0BACC,GAAA,CAAA,OAAA,CAAQ,OAAR,EAAA,EAAiB,cAAI,IAAK,EAAA;AAAA,SAAA,EAAA,EAbf,IAAI,KAclB,CAAA;AAAA,OAEH,CACH,EAAA,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,EAAI,EAAA,SAAA;AAAA,UACJ,IAAA;AAAA,UACA,WAAA;AAAA,UACA,YAAA;AAAA,UACA;AAAA;AAAA;AACF,KACF,EAAA,CAAA;AAAA;AAGN;AACA,aAAA,CAAc,WAAc,GAAA,eAAA;;;;"}
1
+ {"version":3,"file":"DaysOfTheWeek-RcPgDoM3.js","sources":["../src/components/DaysOfTheWeek/DaysOfTheWeek.tsx"],"sourcesContent":["import {\n AriaAttributes,\n ReactElement,\n Ref,\n forwardRef,\n useId,\n useMemo,\n} from \"react\";\nimport { DataTrackingId } from \"../../types\";\nimport styles from \"./DaysOfTheWeek.module.scss\";\nimport { FieldLabel, FieldLabelProps } from \"../FieldLabel\";\n\nimport ButtonToggle from \"../ButtonToggle\";\nimport Tooltip from \"../Tooltip\";\nimport { Helper } from \"../../internal/components\";\nimport Flex from \"../Flex\";\n\n/**\n * Props for the DaysOfTheWeek component\n */\nexport type DaysOfTheWeekProps = {\n /**\n * The selected days (1-7, where 1 is Monday and 7 is Sunday)\n */\n selectedDays?: number[];\n /**\n * Callback fired when the selection changes\n */\n onChange?: (selectedDays: number[]) => void;\n /**\n * Whether the component is disabled\n * Can be a boolean to disable all days, or an array of day numbers (1-7) to disable specific days\n */\n disabled?: boolean | number[];\n /**\n * The first day of the week (1-7, where 1 is Monday and 7 is Sunday)\n * @default 1\n */\n firstDay?: number;\n /**\n * Hint text or element to display above the component\n */\n hint?: ReactElement | string;\n /**\n * ID for the component\n */\n id?: string;\n /**\n * Description text or element to display below the component\n */\n description?: ReactElement | string;\n /**\n * Error message to display when there is an error\n */\n errorMessage?: ReactElement | string;\n /**\n * aria-live for the error message\n * @default assertive\n */\n errorAriaLive?: AriaAttributes[\"aria-live\"];\n /**\n * Label text or element\n */\n label?: FieldLabelProps[\"children\"];\n /**\n * Whether the field is required\n */\n required?: boolean;\n /**\n * Additional info to display in a tooltip next to the label\n */\n moreInfo?: FieldLabelProps[\"moreInfo\"];\n /**\n * Additional props to pass to the Label component\n */\n labelProps?: FieldLabelProps;\n} & DataTrackingId;\n\ninterface DayInfo {\n short: string;\n full: string;\n}\n\n// Days in order from Monday to Sunday\nconst DAYS: DayInfo[] = [\n { short: \"Mo\", full: \"Monday\" },\n { short: \"Tu\", full: \"Tuesday\" },\n { short: \"We\", full: \"Wednesday\" },\n { short: \"Th\", full: \"Thursday\" },\n { short: \"Fr\", full: \"Friday\" },\n { short: \"Sa\", full: \"Saturday\" },\n { short: \"Su\", full: \"Sunday\" },\n];\n\n/**\n * DaysOfTheWeek component for selecting multiple days of the week.\n *\n * Features:\n * - Displays days of the week as toggleable buttons\n * - Supports custom first day of the week (Monday-Sunday)\n * - Individual day selection and deselection\n * - Optional label, hint, description, and error messaging\n * - Full accessibility support with ARIA attributes\n * - Tooltips showing full day names on hover\n * - Responsive design with flexible layout\n * - Support for disabling specific days or the entire component\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <DaysOfTheWeek\n * selectedDays={[2, 4, 6]}\n * onChange={(days) => console.log('Selected days:', days)}\n * label=\"Working Days\"\n * firstDay={1}\n * />\n */\nexport const DaysOfTheWeek = forwardRef(\n (props: DaysOfTheWeekProps, ref: Ref<HTMLDivElement>) => {\n const {\n selectedDays = [],\n onChange,\n disabled,\n firstDay = 7,\n hint,\n id: idProp,\n description,\n errorMessage,\n errorAriaLive,\n label,\n required,\n moreInfo,\n labelProps,\n } = props;\n\n const autoId = useId();\n const id = idProp ?? autoId;\n const labelUid = useId();\n const helperUid = useId();\n\n const orderedDays = useMemo(() => {\n const firstDayIndex = firstDay - 1;\n return [...DAYS.slice(firstDayIndex), ...DAYS.slice(0, firstDayIndex)];\n }, [firstDay]);\n\n const handleDayToggle = (index: number) => {\n // Convert from 0-based array index to 1-based day number, accounting for firstDay\n const dayNumber = ((index + firstDay - 1) % 7) + 1;\n const newSelectedDays = selectedDays.includes(dayNumber)\n ? selectedDays.filter((d) => d !== dayNumber)\n : [...selectedDays, dayNumber];\n\n onChange?.(newSelectedDays);\n };\n\n const isDayDisabled = (dayNumber: number) => {\n if (typeof disabled === \"boolean\") {\n return disabled;\n }\n if (Array.isArray(disabled)) {\n return disabled.includes(dayNumber);\n }\n return false;\n };\n\n return (\n <div className={styles[\"days-of-the-week-container\"]}>\n {label ? (\n <FieldLabel\n moreInfo={moreInfo}\n required={required}\n id={labelUid}\n htmlFor={id}\n {...labelProps}\n >\n {label}\n </FieldLabel>\n ) : null}\n <Flex ref={ref} gap={2} className={styles[\"days-of-the-week\"]} id={id}>\n {orderedDays.map((day, index) => {\n // Convert from 0-based array index to 1-based day number, accounting for firstDay\n const dayNumber = ((index + firstDay - 1) % 7) + 1;\n return (\n <Tooltip key={day.short} placement=\"top\">\n <Tooltip.Trigger className={styles[\"button-toggle-wrapper\"]}>\n <ButtonToggle\n checked={selectedDays.includes(dayNumber)}\n onClick={() => handleDayToggle(index)}\n disabled={isDayDisabled(dayNumber)}\n className={styles[\"button-toggle\"]}\n id={label ? labelUid : undefined}\n aria-describedby={helperUid}\n >\n {day.short}\n </ButtonToggle>\n </Tooltip.Trigger>\n <Tooltip.Content>{day.full}</Tooltip.Content>\n </Tooltip>\n );\n })}\n </Flex>\n <Helper\n id={helperUid}\n hint={hint}\n description={description}\n errorMessage={errorMessage}\n errorAriaLive={errorAriaLive}\n />\n </div>\n );\n },\n);\nDaysOfTheWeek.displayName = \"DaysOfTheWeek\";\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { D as DaysOfTheWeek, D as default } from './DaysOfTheWeek-BYSYZySH.js';
1
+ export { D as DaysOfTheWeek, D as default } from './DaysOfTheWeek-RcPgDoM3.js';
2
2
  //# sourceMappingURL=DaysOfTheWeek.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Details-CF8DImjw.js","sources":["../src/components/Details/internal/DetailsContext.tsx","../src/components/Details/internal/DetailsArrow.tsx","../src/components/Details/DetailsSummary.tsx","../src/components/Details/DetailsContent.tsx","../src/components/Details/Details.tsx"],"sourcesContent":["import { createContext } from \"react\";\n\nexport type DetailsContextProps = {\n id: string;\n isExpanded: boolean;\n expanded: () => void;\n close: () => void;\n toggle: () => void;\n};\n\nexport const DetailsContext = createContext<DetailsContextProps>({\n id: \"\",\n isExpanded: false,\n expanded: () => undefined,\n close: () => undefined,\n toggle: () => undefined,\n});\n","import { forwardRef, useContext, type ComponentPropsWithoutRef } from \"react\";\nimport Arrow_right from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\nimport { DetailsContext } from \"./DetailsContext\";\nimport Icon from \"../../Icon\";\n\nimport cx from \"classnames\";\nimport styles from \"../Details.module.scss\";\n\n/**\n * Props for the DetailsArrow component\n * @extends ComponentPropsWithoutRef<\"span\">\n */\nexport type DetailsArrowProps = ComponentPropsWithoutRef<\"span\">;\n\n/**\n * DetailsArrow component for the animated arrow indicator in DetailsSummary.\n *\n * Features:\n * - Animated chevron icon that rotates on expand/collapse\n * - Automatically reflects the current expanded state\n * - Uses consistent icon sizing and styling\n * - Smooth transition animations\n * - Accessible with proper ARIA context\n *\n * @example\n * <DetailsArrow className=\"custom-arrow\" />\n */\nexport const DetailsArrow = forwardRef<HTMLSpanElement, DetailsArrowProps>(\n function DetailsArrow({ className: classNameProp, ...rest }, ref) {\n const { isExpanded } = useContext(DetailsContext);\n\n const className = cx(\n styles.arrow,\n { [styles[\"is-expanded\"]]: isExpanded },\n classNameProp,\n );\n\n return (\n <span className={className} ref={ref} {...rest}>\n <Icon size=\"large\" svg={Arrow_right} />\n </span>\n );\n },\n);\n","import {\n forwardRef,\n useContext,\n type ComponentPropsWithoutRef,\n type MouseEventHandler,\n} from \"react\";\nimport { DataTrackingId } from \"../../types\";\nimport { DetailsContext } from \"./internal/DetailsContext\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DetailsArrow } from \"./internal/DetailsArrow\";\n\nimport cx from \"classnames\";\nimport styles from \"./Details.module.scss\";\n\n/**\n * Props for the DetailsSummary component\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type DetailsSummaryProps = ComponentPropsWithoutRef<\"button\"> &\n DataTrackingId;\n\n/**\n * DetailsSummary component for the clickable header of a Details section.\n *\n * Features:\n * - Clickable button that toggles the Details expanded state\n * - Automatic ARIA attributes for accessibility\n * - Includes animated arrow indicator\n * - Supports custom onClick handlers\n * - Keyboard navigation support (Enter, Space)\n * - Styled with consistent typography and spacing\n *\n * @example\n * <Details.Summary onClick={() => console.log('Summary clicked')}>\n * Click to expand content\n * </Details.Summary>\n */\nexport const DetailsSummary = forwardRef<\n HTMLButtonElement,\n DetailsSummaryProps\n>(function DetailsSummary(\n { children, onClick: onClickProp, className: classNameProp, ...rest },\n ref,\n) {\n const { id, isExpanded, toggle } = useContext(DetailsContext);\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (...args) => {\n onClickProp?.(...args);\n toggle();\n };\n\n const data = {\n children: childrenToString(children),\n };\n\n const trackingId = useTrackingId({\n name: \"DetailsSummary\",\n data,\n hasOverride: !!rest[\"data-tracking-id\"],\n });\n\n const className = cx(styles.summary, classNameProp);\n\n return (\n <button\n data-tracking-id={trackingId}\n data-anv=\"details-summary\"\n aria-controls={id}\n aria-expanded={isExpanded}\n className={className}\n onClick={handleClick}\n ref={ref}\n {...rest}\n >\n <DetailsArrow />\n {children}\n </button>\n );\n});\n","import { forwardRef, useContext, type ComponentPropsWithoutRef } from \"react\";\nimport { DetailsContext } from \"./internal/DetailsContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./Details.module.scss\";\n\n/**\n * Props for the DetailsContent component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DetailsContentProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Fixed height for the content area\n */\n height?: string | number;\n /**\n * Maximum height for the content area\n */\n maxHeight?: string | number;\n};\n\n/**\n * DetailsContent component for the expandable content area of a Details section.\n *\n * Features:\n * - Expandable and collapsible content area\n * - Smooth animations for height transitions\n * - Configurable height and maxHeight constraints\n * - Automatic overflow handling when height is constrained\n * - Proper ARIA associations with the summary\n * - Responsive design with flexible layout\n *\n * @example\n * <Details.Content maxHeight={300}>\n * <p>This content will be constrained to 300px max height</p>\n * </Details.Content>\n */\nexport const DetailsContent = forwardRef<HTMLDivElement, DetailsContentProps>(\n function DetailsContent(\n {\n className: classNameProp,\n children,\n height,\n maxHeight,\n style: styleProp,\n ...rest\n },\n ref,\n ) {\n const { id, isExpanded } = useContext(DetailsContext);\n\n const style = {\n height,\n maxHeight,\n ...(height || maxHeight ? { overflow: \"auto\" } : {}),\n ...styleProp,\n };\n\n return (\n <div\n data-anv=\"details-content\"\n id={id}\n className={cx(styles[\"content-wrapper\"], {\n [styles.expanded]: isExpanded,\n })}\n ref={ref}\n >\n <div className={styles.content}>\n <div className={classNameProp} style={style} {...rest}>\n {children}\n </div>\n </div>\n </div>\n );\n },\n);\n","import {\n ComponentPropsWithoutRef,\n Ref,\n forwardRef,\n useId,\n useMemo,\n useState,\n} from \"react\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { DetailsSummary } from \"./DetailsSummary\";\nimport { DetailsContent } from \"./DetailsContent\";\nimport { DetailsContext } from \"./internal/DetailsContext\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./Details.module.scss\";\n\n/**\n * Props for the Details component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type DetailsProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps & {\n /**\n * Determines the controlled expanded state of the details.\n * @remarks Use this to make the details expanded state controlled.\n * @default false\n */\n expanded?: boolean;\n /**\n * Determines the default expanded state of the details.\n * @remarks Use this to make the details expanded state uncontrolled.\n * @default false\n */\n defaultExpanded?: boolean;\n };\n\nconst DetailsElement = forwardRef(\n (props: DetailsProps, ref: Ref<HTMLDivElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n children,\n id: idProp,\n expanded: expandedControlled,\n defaultExpanded = false,\n style,\n className,\n ...rest\n } = componentProps;\n const id = useId();\n const [isExpanded, setIsOpen] = useState(defaultExpanded);\n\n function expanded() {\n setIsOpen(true);\n }\n\n function close() {\n setIsOpen(false);\n }\n\n function toggle() {\n setIsOpen((prevIsOpen: boolean) => !prevIsOpen);\n }\n\n const value = useMemo(\n () => ({\n id: idProp != null ? idProp : id,\n isExpanded:\n expandedControlled != null ? expandedControlled : isExpanded,\n expanded,\n close,\n toggle,\n }),\n [id, idProp, isExpanded, expandedControlled],\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <DetailsContext.Provider value={value}>\n <div\n data-anv=\"details\"\n ref={ref}\n className={cx(styles.details, className)}\n style={styleCombined}\n {...rest}\n >\n {children}\n </div>\n </DetailsContext.Provider>\n );\n },\n);\n\nDetailsElement.displayName = \"Details\";\n\n/**\n * Details component for creating expandable/collapsible content sections.\n *\n * Features:\n * - Expandable and collapsible content sections\n * - Controlled and uncontrolled state management\n * - Accessible with proper ARIA attributes\n * - Smooth animations for expand/collapse\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Compound component pattern with Summary, Content, and Arrow sub-components\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Details defaultExpanded>\n * <Details.Summary>Click to expand</Details.Summary>\n * <Details.Content>This content is now visible</Details.Content>\n * </Details>\n */\nexport const Details = Object.assign(DetailsElement, {\n Summary: DetailsSummary,\n Content: DetailsContent,\n});\n"],"names":["DetailsArrow","Arrow_right","DetailsSummary","DetailsContent"],"mappings":"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"}
1
+ {"version":3,"file":"Details-CF8DImjw.js","sources":["../src/components/Details/internal/DetailsContext.tsx","../src/components/Details/internal/DetailsArrow.tsx","../src/components/Details/DetailsSummary.tsx","../src/components/Details/DetailsContent.tsx","../src/components/Details/Details.tsx"],"sourcesContent":["import { createContext } from \"react\";\n\nexport type DetailsContextProps = {\n id: string;\n isExpanded: boolean;\n expanded: () => void;\n close: () => void;\n toggle: () => void;\n};\n\nexport const DetailsContext = createContext<DetailsContextProps>({\n id: \"\",\n isExpanded: false,\n expanded: () => undefined,\n close: () => undefined,\n toggle: () => undefined,\n});\n","import { forwardRef, useContext, type ComponentPropsWithoutRef } from \"react\";\nimport Arrow_right from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\nimport { DetailsContext } from \"./DetailsContext\";\nimport Icon from \"../../Icon\";\n\nimport cx from \"classnames\";\nimport styles from \"../Details.module.scss\";\n\n/**\n * Props for the DetailsArrow component\n * @extends ComponentPropsWithoutRef<\"span\">\n */\nexport type DetailsArrowProps = ComponentPropsWithoutRef<\"span\">;\n\n/**\n * DetailsArrow component for the animated arrow indicator in DetailsSummary.\n *\n * Features:\n * - Animated chevron icon that rotates on expand/collapse\n * - Automatically reflects the current expanded state\n * - Uses consistent icon sizing and styling\n * - Smooth transition animations\n * - Accessible with proper ARIA context\n *\n * @example\n * <DetailsArrow className=\"custom-arrow\" />\n */\nexport const DetailsArrow = forwardRef<HTMLSpanElement, DetailsArrowProps>(\n function DetailsArrow({ className: classNameProp, ...rest }, ref) {\n const { isExpanded } = useContext(DetailsContext);\n\n const className = cx(\n styles.arrow,\n { [styles[\"is-expanded\"]]: isExpanded },\n classNameProp,\n );\n\n return (\n <span className={className} ref={ref} {...rest}>\n <Icon size=\"large\" svg={Arrow_right} />\n </span>\n );\n },\n);\n","import {\n forwardRef,\n useContext,\n type ComponentPropsWithoutRef,\n type MouseEventHandler,\n} from \"react\";\nimport { DataTrackingId } from \"../../types\";\nimport { DetailsContext } from \"./internal/DetailsContext\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DetailsArrow } from \"./internal/DetailsArrow\";\n\nimport cx from \"classnames\";\nimport styles from \"./Details.module.scss\";\n\n/**\n * Props for the DetailsSummary component\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type DetailsSummaryProps = ComponentPropsWithoutRef<\"button\"> &\n DataTrackingId;\n\n/**\n * DetailsSummary component for the clickable header of a Details section.\n *\n * Features:\n * - Clickable button that toggles the Details expanded state\n * - Automatic ARIA attributes for accessibility\n * - Includes animated arrow indicator\n * - Supports custom onClick handlers\n * - Keyboard navigation support (Enter, Space)\n * - Styled with consistent typography and spacing\n *\n * @example\n * <Details.Summary onClick={() => console.log('Summary clicked')}>\n * Click to expand content\n * </Details.Summary>\n */\nexport const DetailsSummary = forwardRef<\n HTMLButtonElement,\n DetailsSummaryProps\n>(function DetailsSummary(\n { children, onClick: onClickProp, className: classNameProp, ...rest },\n ref,\n) {\n const { id, isExpanded, toggle } = useContext(DetailsContext);\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (...args) => {\n onClickProp?.(...args);\n toggle();\n };\n\n const data = {\n children: childrenToString(children),\n };\n\n const trackingId = useTrackingId({\n name: \"DetailsSummary\",\n data,\n hasOverride: !!rest[\"data-tracking-id\"],\n });\n\n const className = cx(styles.summary, classNameProp);\n\n return (\n <button\n data-tracking-id={trackingId}\n data-anv=\"details-summary\"\n aria-controls={id}\n aria-expanded={isExpanded}\n className={className}\n onClick={handleClick}\n ref={ref}\n {...rest}\n >\n <DetailsArrow />\n {children}\n </button>\n );\n});\n","import { forwardRef, useContext, type ComponentPropsWithoutRef } from \"react\";\nimport { DetailsContext } from \"./internal/DetailsContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./Details.module.scss\";\n\n/**\n * Props for the DetailsContent component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DetailsContentProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Fixed height for the content area\n */\n height?: string | number;\n /**\n * Maximum height for the content area\n */\n maxHeight?: string | number;\n};\n\n/**\n * DetailsContent component for the expandable content area of a Details section.\n *\n * Features:\n * - Expandable and collapsible content area\n * - Smooth animations for height transitions\n * - Configurable height and maxHeight constraints\n * - Automatic overflow handling when height is constrained\n * - Proper ARIA associations with the summary\n * - Responsive design with flexible layout\n *\n * @example\n * <Details.Content maxHeight={300}>\n * <p>This content will be constrained to 300px max height</p>\n * </Details.Content>\n */\nexport const DetailsContent = forwardRef<HTMLDivElement, DetailsContentProps>(\n function DetailsContent(\n {\n className: classNameProp,\n children,\n height,\n maxHeight,\n style: styleProp,\n ...rest\n },\n ref,\n ) {\n const { id, isExpanded } = useContext(DetailsContext);\n\n const style = {\n height,\n maxHeight,\n ...(height || maxHeight ? { overflow: \"auto\" } : {}),\n ...styleProp,\n };\n\n return (\n <div\n data-anv=\"details-content\"\n id={id}\n className={cx(styles[\"content-wrapper\"], {\n [styles.expanded]: isExpanded,\n })}\n ref={ref}\n >\n <div className={styles.content}>\n <div className={classNameProp} style={style} {...rest}>\n {children}\n </div>\n </div>\n </div>\n );\n },\n);\n","import {\n ComponentPropsWithoutRef,\n Ref,\n forwardRef,\n useId,\n useMemo,\n useState,\n} from \"react\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { DetailsSummary } from \"./DetailsSummary\";\nimport { DetailsContent } from \"./DetailsContent\";\nimport { DetailsContext } from \"./internal/DetailsContext\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./Details.module.scss\";\n\n/**\n * Props for the Details component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type DetailsProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps & {\n /**\n * Determines the controlled expanded state of the details.\n * @remarks Use this to make the details expanded state controlled.\n * @default false\n */\n expanded?: boolean;\n /**\n * Determines the default expanded state of the details.\n * @remarks Use this to make the details expanded state uncontrolled.\n * @default false\n */\n defaultExpanded?: boolean;\n };\n\nconst DetailsElement = forwardRef(\n (props: DetailsProps, ref: Ref<HTMLDivElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n children,\n id: idProp,\n expanded: expandedControlled,\n defaultExpanded = false,\n style,\n className,\n ...rest\n } = componentProps;\n const id = useId();\n const [isExpanded, setIsOpen] = useState(defaultExpanded);\n\n function expanded() {\n setIsOpen(true);\n }\n\n function close() {\n setIsOpen(false);\n }\n\n function toggle() {\n setIsOpen((prevIsOpen: boolean) => !prevIsOpen);\n }\n\n const value = useMemo(\n () => ({\n id: idProp != null ? idProp : id,\n isExpanded:\n expandedControlled != null ? expandedControlled : isExpanded,\n expanded,\n close,\n toggle,\n }),\n [id, idProp, isExpanded, expandedControlled],\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <DetailsContext.Provider value={value}>\n <div\n data-anv=\"details\"\n ref={ref}\n className={cx(styles.details, className)}\n style={styleCombined}\n {...rest}\n >\n {children}\n </div>\n </DetailsContext.Provider>\n );\n },\n);\n\nDetailsElement.displayName = \"Details\";\n\n/**\n * Details component for creating expandable/collapsible content sections.\n *\n * Features:\n * - Expandable and collapsible content sections\n * - Controlled and uncontrolled state management\n * - Accessible with proper ARIA attributes\n * - Smooth animations for expand/collapse\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Compound component pattern with Summary, Content, and Arrow sub-components\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Details defaultExpanded>\n * <Details.Summary>Click to expand</Details.Summary>\n * <Details.Content>This content is now visible</Details.Content>\n * </Details>\n */\nexport const Details = Object.assign(DetailsElement, {\n Summary: DetailsSummary,\n Content: DetailsContent,\n});\n"],"names":["DetailsArrow","Arrow_right","DetailsSummary","DetailsContent"],"mappings":"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"}
@@ -3,13 +3,13 @@ import { useContext, forwardRef, useRef, useState, useId, useCallback, useEffect
3
3
  import { S as SvgClose } from './close-DZj38AEh.js';
4
4
  import { c as cx } from './index-tZvMCc77.js';
5
5
  import { T as Text } from './Text-BqvcbXyp.js';
6
- import { B as Button } from './Button-BxFXQ0-n.js';
7
- import { D as DialogContext } from './DrawerContext-DboTgTmo.js';
6
+ import { B as Button } from './Button-VNQQgZ45.js';
7
+ import { D as DialogContext } from './DrawerContext-D4tWTLVf.js';
8
8
  import { useTrackingId } from './useTrackingId.js';
9
9
  import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
10
- import { a as ToastProvider, b as ToasterPopover, c as ToasterContent } from './Toaster-9cpG_tWR.js';
11
- import { u as useDialogTransitionStates, a as useDialogScrollLock } from './useDialogTransitionStates-2NaE_noq.js';
12
- import { a as useKeyboardFocusables, b as useOnClickOutside } from './useOnClickOutside-BHEWMLa9.js';
10
+ import { a as ToastProvider, b as ToasterPopover, c as ToasterContent } from './Toaster-D-rNSLTq.js';
11
+ import { u as useDialogTransitionStates, a as useDialogScrollLock } from './useDialogTransitionStates-C1TtiwA_.js';
12
+ import { a as useKeyboardFocusables, b as useOnClickOutside } from './useOnClickOutside-B1ddwORK.js';
13
13
  import { g as getActiveElement } from './getActiveElement-BcSyVE7S.js';
14
14
  import { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';
15
15
 
@@ -378,4 +378,4 @@ const Dialog = Object.assign(DialogElement, {
378
378
  });
379
379
 
380
380
  export { Dialog as D, DialogCancelButton as a, DialogContent as b, DialogFooter as c, DialogHeader as d };
381
- //# sourceMappingURL=Dialog-CgkrvrQu.js.map
381
+ //# sourceMappingURL=Dialog-FNJ16gY6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog-CgkrvrQu.js","sources":["../src/components/Dialog/internal/useDialogContext.ts","../src/components/Dialog/DialogCancelButton.tsx","../src/components/Dialog/DialogHeader.tsx","../src/components/Dialog/DialogFooter.tsx","../src/components/Dialog/DialogContent.tsx","../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport { DialogContext } from \"./DialogContext\";\n\nexport function useDialogContext() {\n const context = useContext(DialogContext);\n if (!context) {\n throw new Error(\n \"useDialogContext must be used within a DialogContextProvider\",\n );\n }\n return context;\n}\n","import { MouseEvent, forwardRef } from \"react\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { useDialogContext } from \"./internal/useDialogContext\";\nimport { DataTrackingId } from \"../../types\";\nimport { useTrackingId } from \"../../hooks\";\n\n/**\n * Props for the DialogCancelButton component\n * @extends ButtonProps\n */\nexport type DialogCancelButtonProps = ButtonProps & DataTrackingId;\n\n/**\n * DialogCancelButton component for cancel/close actions in a Dialog.\n *\n * Features:\n * - Button that automatically closes the dialog when clicked\n * - Extends all Button component props and functionality\n * - Proper accessibility with close dialog semantics\n * - Automatic focus management\n * - Consistent styling with other dialog elements\n *\n * @example\n * <Dialog.CancelButton appearance=\"ghost\">Cancel</Dialog.CancelButton>\n */\nexport const DialogCancelButton = forwardRef<\n HTMLButtonElement,\n DialogCancelButtonProps\n>((props, ref) => {\n const { onClick, ...rest } = props;\n const { close } = useDialogContext();\n const data = {\n title: props.title,\n appearance: props.appearance,\n size: props.size,\n type: props.type,\n };\n\n const trackingId = useTrackingId({\n name: \"DialogCancelButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n close();\n };\n return (\n <Button\n aria-label=\"Close dialog\"\n data-anv=\"dialog-cancel-button\"\n data-tracking-id={trackingId}\n onClick={onClickHandler}\n ref={ref}\n {...rest}\n />\n );\n});\n\nDialogCancelButton.displayName = \"DialogCancelButton\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport cx from \"classnames\";\n\nimport { Text } from \"../Text\";\nimport { DialogCancelButton } from \"./DialogCancelButton\";\n\nimport styles from \"./Dialog.module.scss\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\n\n/**\n * Props for the DialogHeader component\n * @extends ComponentPropsWithoutRef<\"header\">\n */\nexport type DialogHeaderProps = ComponentPropsWithoutRef<\"header\"> &\n DataTrackingId;\n\n/**\n * DialogHeader component for the header section of a Dialog.\n *\n * Features:\n * - Displays dialog title with headline typography\n * - Includes close button with proper accessibility\n * - Sticky positioning for long content\n * - Consistent spacing and styling\n * - Automatic focus management\n *\n * @example\n * <Dialog.Header>Confirm Delete</Dialog.Header>\n */\nexport const DialogHeader = forwardRef<HTMLDivElement, DialogHeaderProps>(\n (props: DialogHeaderProps, ref) => {\n const { children, className, ...rest } = props;\n const data = {\n children: childrenToString(props.children),\n };\n\n const trackingId = useTrackingId({\n name: \"Dialog\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const headerClassNames = cx(className, styles[\"header\"]);\n\n return (\n <header\n className={headerClassNames}\n data-anv=\"dialog-header\"\n data-tracking-id={trackingId}\n ref={ref}\n {...rest}\n >\n <Text variant=\"headline\" el=\"h1\">\n {children}\n </Text>\n <span className={styles[\"close-container\"]}>\n <DialogCancelButton\n className={styles[\"close-button\"]}\n size=\"small\"\n appearance=\"ghost\"\n aria-label=\"Close dialog\"\n icon={Close}\n />\n </span>\n </header>\n );\n },\n);\n\nDialogHeader.displayName = \"DialogHeader\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Dialog.module.scss\";\n\n/**\n * Props for the DialogFooter component\n * @extends ComponentPropsWithoutRef<\"footer\">\n */\nexport type DialogFooterProps = ComponentPropsWithoutRef<\"footer\"> & {\n /**\n * @default false\n */\n sticky?: boolean;\n};\n\n/**\n * DialogFooter component for the footer section of a Dialog.\n *\n * Features:\n * - Container for dialog action buttons\n * - Optional sticky positioning for long content\n * - Consistent spacing and alignment\n * - Right-aligned button layout by default\n * - Flexible content area for custom layouts\n *\n * @example\n * <Dialog.Footer sticky>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Save</Button>\n * </Dialog.Footer>\n */\nexport const DialogFooter = forwardRef<HTMLElement, DialogFooterProps>(\n (props, ref) => {\n const { children, className, sticky = false, ...rest } = props;\n\n const footerClassNames = cx(styles[\"footer\"], className, {\n [styles[\"sticky\"]]: sticky,\n });\n\n return (\n <footer\n className={footerClassNames}\n data-anv=\"dialog-footer\"\n ref={ref}\n {...rest}\n >\n {children}\n </footer>\n );\n },\n);\n\nDialogFooter.displayName = \"DialogFooter\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Dialog.module.scss\";\n\n/**\n * Props for the DialogContent component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DialogContentProps = ComponentPropsWithoutRef<\"div\">;\n\n/**\n * DialogContent component for the main content area of a Dialog.\n *\n * Features:\n * - Main content container for dialog body\n * - Flexible height with overflow handling\n * - Consistent padding and spacing\n * - Responsive design\n * - Proper content scrolling for long content\n *\n * @example\n * <Dialog.Content>\n * <p>This is the main content of the dialog.</p>\n * </Dialog.Content>\n */\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n (props, ref) => {\n const { children, className, ...rest } = props;\n\n const contentClassNames = cx(styles[\"content\"], className);\n\n return (\n <div\n className={contentClassNames}\n data-anv=\"dialog-content\"\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDialogContent.displayName = \"DialogContent\";\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n KeyboardEvent,\n} from \"react\";\nimport { DialogHeader } from \"./DialogHeader\";\nimport { DialogFooter } from \"./DialogFooter\";\nimport { DialogContent } from \"./DialogContent\";\nimport { DialogCancelButton } from \"./DialogCancelButton\";\nimport {\n OpenCloseTransitionStateEffects,\n useDialogScrollLock,\n useDialogTransitionStates,\n useKeyboardFocusables,\n useOnClickOutside,\n} from \"../../internal/hooks\";\nimport { DisableCloseOnEscapeOrClickProps, Size } from \"../../types\";\nimport { DialogContext, DialogContextProps } from \"./internal/DialogContext\";\nimport styles from \"./Dialog.module.scss\";\nimport { getActiveElement } from \"../../internal/functions\";\nimport { useMergeRefs } from \"../../hooks\";\nimport cx from \"classnames\";\n\nimport { ToastProvider } from \"../Toast/internal/ToastProvider\";\nimport { ToasterPopover } from \"../Toast/internal/ToasterPopover\";\nimport { ToasterContent } from \"../Toast/internal/Toaster\";\n\n/**\n * Props for the Dialog component\n * @extends ComponentPropsWithoutRef<\"dialog\">\n * @extends DialogTransitionStateEffects\n * @extends DisableCloseOnEscapeOrClickProps\n */\nexport type DialogProps = ComponentPropsWithoutRef<\"dialog\"> &\n OpenCloseTransitionStateEffects &\n DisableCloseOnEscapeOrClickProps & {\n /**\n * @default false\n */\n fullScreen?: boolean;\n /**\n * @default \"medium\"\n */\n size?: Extract<Size, \"medium\" | \"large\">;\n\n /**\n * @default false\n */\n open?: boolean;\n onClose?: () => void;\n /**\n * @deprecated - use onOpenAnimationStart or onOpenAnimationComplete instead\n */\n onOpen?: () => void;\n /**\n * @deprecated - use onOpenAnimationStart or onOpenAnimationComplete instead\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Callback when clicking outside the dialog\n */\n onClickOutside?: (e: globalThis.MouseEvent) => void;\n /**\n * Enables scroll chaining\n * @link https://developer.mozilla.org/en-US/docs/Glossary/Scroll_chaining\n */\n enableScrollChaining?: boolean;\n };\n\nexport const DialogElement = forwardRef<HTMLDialogElement, DialogProps>(\n (props, ref) => {\n const {\n className,\n open = false,\n children,\n onOpen,\n onOpenChange,\n onClose,\n onKeyDown,\n fullScreen = false,\n disableCloseOnEscape = false,\n onClickOutside,\n disableCloseOnClickOutside = false,\n size,\n enableScrollChaining,\n onOpenAnimationStart,\n onOpenAnimationComplete,\n onCloseAnimationStart,\n onCloseAnimationComplete,\n ...rest\n } = props;\n\n const elRef = useRef<HTMLDialogElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const toasterRef = useRef<HTMLDivElement>(null);\n const [hasOpenPopover, setHasOpenPopover] =\n useState<DialogContextProps[\"hasOpenPopover\"]>(false);\n const id = useId();\n\n const { state, isOpenOrOpening } = useDialogTransitionStates(elRef, open, {\n onOpenAnimationStart: useCallback(() => {\n onOpenAnimationStart?.();\n }, [onOpenAnimationStart]),\n onOpenAnimationComplete: useCallback(() => {\n onOpenAnimationComplete?.();\n onOpen?.(); // DEPRECATED\n }, [onOpen, onOpenAnimationComplete]),\n onCloseAnimationStart: useCallback(() => {\n onCloseAnimationStart?.();\n }, [onCloseAnimationStart]),\n onCloseAnimationComplete: useCallback(() => {\n onCloseAnimationComplete?.();\n }, [onCloseAnimationComplete]),\n });\n\n // DEPRECATED\n const initial = useRef(true);\n useEffect(() => {\n if (initial.current) {\n initial.current = false;\n } else {\n onOpenChange?.(isOpenOrOpening);\n }\n }, [id, onOpenChange, isOpenOrOpening]);\n\n const classNames = cx([styles[\"dialog\"]], className, {\n [styles[\"closing\"]]: state === \"closing\",\n [styles[\"fullscreen\"]]: fullScreen,\n [styles[\"large\"]]: size === \"large\",\n });\n\n const { focusables } = useKeyboardFocusables(contentRef, {\n observeChange: true,\n });\n\n useDialogScrollLock({\n open: isOpenOrOpening,\n id,\n enableScrollChaining,\n elementRef: elRef,\n });\n\n useOnClickOutside({\n onOutsidePress: (e) => {\n if (!open) return;\n onClickOutside?.(e);\n },\n targets: [\n contentRef.current as HTMLElement,\n toasterRef.current as HTMLElement,\n ],\n onClose: () => {\n if (disableCloseOnClickOutside || !open) return;\n onClose?.();\n },\n });\n\n useEffect(() => {\n if (!isOpenOrOpening) return;\n if (!focusables) return;\n\n const activeElement = getActiveElement(document);\n if (!activeElement) return;\n\n if (\n activeElement.dataset.anv !== \"drawer-header-close-button\" &&\n (focusables.includes(activeElement) ||\n activeElement.tagName === \"DIALOG\")\n ) {\n return;\n }\n\n if (\n focusables[0]?.dataset.anv === \"dialog-header-close-button\" &&\n focusables[1]\n ) {\n focusables[1].focus();\n } else {\n focusables[0]?.focus();\n }\n }, [isOpenOrOpening, focusables]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDialogElement>) => {\n onKeyDown?.(e);\n if (e.code === \"Escape\") {\n e.preventDefault();\n if (disableCloseOnEscape) return;\n if (hasOpenPopover) return;\n onClose?.();\n return;\n }\n\n if (e.code === \"Tab\") {\n if (e.shiftKey && e.target === focusables?.[0]) {\n e.preventDefault();\n (focusables[focusables.length - 1] as HTMLElement)?.focus();\n return;\n }\n if (e.target === focusables?.[focusables.length - 1] && !e.shiftKey) {\n e.preventDefault();\n focusables[0].focus();\n return;\n }\n }\n };\n\n return (\n // dialog element does seem to be interactive on MDN guideline\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n <dialog\n className={classNames}\n data-anv=\"dialog\"\n data-anv-scroll-chaining={enableScrollChaining}\n data-anv-transition-state={state}\n ref={useMergeRefs([ref, elRef])}\n onKeyDown={onKeyDownHandler}\n {...rest}\n >\n <ToastProvider isDialogToaster={open}>\n <ToasterPopover>\n <ToasterContent id=\"dialog-toaster\" ref={toasterRef} />\n </ToasterPopover>\n </ToastProvider>\n <DialogContext.Provider\n value={{\n close: () => onClose?.(),\n ref: elRef,\n hasOpenPopover,\n setHasOpenPopover,\n }}\n >\n <section\n ref={contentRef}\n className={styles[\"container\"]}\n data-open={open}\n >\n {children}\n </section>\n </DialogContext.Provider>\n </dialog>\n );\n },\n);\n\nDialogElement.displayName = \"Dialog\";\n\n/**\n * Dialog component for creating modal dialogs and overlays.\n *\n * Features:\n * - Modal dialog with backdrop overlay\n * - Controlled and uncontrolled open state\n * - Smooth open/close animations\n * - Keyboard navigation and focus management\n * - Escape key and click outside to close\n * - Multiple size variants (medium, large, fullscreen)\n * - Scroll chaining support\n * - Toast integration for notifications\n * - Compound component pattern with Header, Footer, Content, and CancelButton sub-components\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog open={isOpen} onClose={() => setIsOpen(false)}>\n * <Dialog.Header>Confirm Action</Dialog.Header>\n * <Dialog.Content>Are you sure you want to proceed?</Dialog.Content>\n * <Dialog.Footer>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Confirm</Button>\n * </Dialog.Footer>\n * </Dialog>\n */\nexport const Dialog = Object.assign(DialogElement, {\n /**\n * DialogHeader component for the header section of a Dialog.\n *\n * Features:\n * - Displays dialog title with headline typography\n * - Includes close button with proper accessibility\n * - Sticky positioning for long content\n * - Consistent spacing and styling\n * - Automatic focus management\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog.Header>Confirm Delete</Dialog.Header>\n */\n Header: DialogHeader,\n /**\n * DialogFooter component for the footer section of a Dialog.\n *\n * Features:\n * - Container for dialog action buttons\n * - Optional sticky positioning for long content\n * - Consistent spacing and alignment\n * - Right-aligned button layout by default\n * - Flexible content area for custom layouts\n *\n * @example\n * <Dialog.Footer sticky>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Save</Button>\n * </Dialog.Footer>\n */\n Footer: DialogFooter,\n /**\n * DialogContent component for the main content area of a Dialog.\n *\n * Features:\n * - Main content container for dialog body\n * - Flexible height with overflow handling\n * - Consistent padding and spacing\n * - Responsive design\n * - Proper content scrolling for long content\n *\n * @example\n * <Dialog.Content>\n * <p>This is the main content of the dialog.</p>\n * </Dialog.Content>\n */\n Content: DialogContent,\n /**\n * DialogCancelButton component for cancel/close actions in a Dialog.\n *\n * Features:\n * - Button that automatically closes the dialog when clicked\n * - Extends all Button component props and functionality\n * - Proper accessibility with close dialog semantics\n * - Automatic focus management\n * - Consistent styling with other dialog elements\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog.CancelButton appearance=\"ghost\">Cancel</Dialog.CancelButton>\n */\n CancelButton: DialogCancelButton,\n});\n"],"names":["Close"],"mappings":";;;;;;;;;;;;;;;AAGO,SAAS,gBAAmB,GAAA;AACjC,EAAM,MAAA,OAAA,GAAU,WAAW,aAAa,CAAA;AACxC,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA;AAEF,EAAO,OAAA,OAAA;AACT;;ACcO,MAAM,kBAAqB,GAAA,UAAA,CAGhC,CAAC,KAAA,EAAO,GAAQ,KAAA;AAChB,EAAA,MAAM,EAAE,OAAA,EAAS,GAAG,IAAA,EAAS,GAAA,KAAA;AAC7B,EAAM,MAAA,EAAE,KAAM,EAAA,GAAI,gBAAiB,EAAA;AACnC,EAAA,MAAM,IAAO,GAAA;AAAA,IACX,OAAO,KAAM,CAAA,KAAA;AAAA,IACb,YAAY,KAAM,CAAA,UAAA;AAAA,IAClB,MAAM,KAAM,CAAA,IAAA;AAAA,IACZ,MAAM,KAAM,CAAA;AAAA,GACd;AAEA,EAAA,MAAM,aAAa,aAAc,CAAA;AAAA,IAC/B,IAAM,EAAA,oBAAA;AAAA,IACN,IAAA;AAAA,IACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,GACxC,CAAA;AACD,EAAM,MAAA,cAAA,GAAiB,CAAC,CAAqC,KAAA;AAC3D,IAAA,OAAA,GAAU,CAAC,CAAA;AACX,IAAM,KAAA,EAAA;AAAA,GACR;AACA,EACE,uBAAA,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,YAAW,EAAA,cAAA;AAAA,MACX,UAAS,EAAA,sBAAA;AAAA,MACT,kBAAkB,EAAA,UAAA;AAAA,MAClB,OAAS,EAAA,cAAA;AAAA,MACT,GAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AAED,kBAAA,CAAmB,WAAc,GAAA,oBAAA;;;;;;;;;;;;;;;;;;;;;;;;;AC3B1B,MAAM,YAAe,GAAA,UAAA;AAAA,EAC1B,CAAC,OAA0B,GAAQ,KAAA;AACjC,IAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,GAAG,MAAS,GAAA,KAAA;AACzC,IAAA,MAAM,IAAO,GAAA;AAAA,MACX,QAAA,EAAU,gBAAiB,CAAA,KAAA,CAAM,QAAQ;AAAA,KAC3C;AAEA,IAAA,MAAM,aAAa,aAAc,CAAA;AAAA,MAC/B,IAAM,EAAA,QAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,gBAAmB,GAAA,EAAA,CAAG,SAAW,EAAA,MAAA,CAAO,QAAQ,CAAC,CAAA;AAEvD,IACE,uBAAA,IAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAA,gBAAA;AAAA,QACX,UAAS,EAAA,eAAA;AAAA,QACT,kBAAkB,EAAA,UAAA;AAAA,QAClB,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,IAAK,EAAA,EAAA,OAAA,EAAQ,UAAW,EAAA,EAAA,EAAG,MACzB,QACH,EAAA,CAAA;AAAA,0BACC,GAAA,CAAA,MAAA,EAAA,EAAK,SAAW,EAAA,MAAA,CAAO,iBAAiB,CACvC,EAAA,QAAA,kBAAA,GAAA;AAAA,YAAC,kBAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,OAAO,cAAc,CAAA;AAAA,cAChC,IAAK,EAAA,OAAA;AAAA,cACL,UAAW,EAAA,OAAA;AAAA,cACX,YAAW,EAAA,cAAA;AAAA,cACX,IAAM,EAAAA;AAAA;AAAA,WAEV,EAAA;AAAA;AAAA;AAAA,KACF;AAAA;AAGN;AAEA,YAAA,CAAa,WAAc,GAAA,cAAA;;ACxCpB,MAAM,YAAe,GAAA,UAAA;AAAA,EAC1B,CAAC,OAAO,GAAQ,KAAA;AACd,IAAA,MAAM,EAAE,QAAU,EAAA,SAAA,EAAW,SAAS,KAAO,EAAA,GAAG,MAAS,GAAA,KAAA;AAEzD,IAAA,MAAM,gBAAmB,GAAA,EAAA,CAAG,MAAO,CAAA,QAAQ,GAAG,SAAW,EAAA;AAAA,MACvD,CAAC,MAAA,CAAO,QAAQ,CAAC,GAAG;AAAA,KACrB,CAAA;AAED,IACE,uBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAA,gBAAA;AAAA,QACX,UAAS,EAAA,eAAA;AAAA,QACT,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA;AAGN;AAEA,YAAA,CAAa,WAAc,GAAA,cAAA;;AC3BpB,MAAM,aAAgB,GAAA,UAAA;AAAA,EAC3B,CAAC,OAAO,GAAQ,KAAA;AACd,IAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,GAAG,MAAS,GAAA,KAAA;AAEzC,IAAA,MAAM,iBAAoB,GAAA,EAAA,CAAG,MAAO,CAAA,SAAS,GAAG,SAAS,CAAA;AAEzD,IACE,uBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAA,iBAAA;AAAA,QACX,UAAS,EAAA,gBAAA;AAAA,QACT,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA;AAGN;AAEA,aAAA,CAAc,WAAc,GAAA,eAAA;;AC6BrB,MAAM,aAAgB,GAAA,UAAA;AAAA,EAC3B,CAAC,OAAO,GAAQ,KAAA;AACd,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,IAAO,GAAA,KAAA;AAAA,MACP,QAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAa,GAAA,KAAA;AAAA,MACb,oBAAuB,GAAA,KAAA;AAAA,MACvB,cAAA;AAAA,MACA,0BAA6B,GAAA,KAAA;AAAA,MAC7B,IAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,uBAAA;AAAA,MACA,qBAAA;AAAA,MACA,wBAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,KAAA;AAEJ,IAAM,MAAA,KAAA,GAAQ,OAA0B,IAAI,CAAA;AAC5C,IAAM,MAAA,UAAA,GAAa,OAAuB,IAAI,CAAA;AAC9C,IAAM,MAAA,UAAA,GAAa,OAAuB,IAAI,CAAA;AAC9C,IAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GACtC,SAA+C,KAAK,CAAA;AACtD,IAAA,MAAM,KAAK,KAAM,EAAA;AAEjB,IAAA,MAAM,EAAE,KAAO,EAAA,eAAA,EAAoB,GAAA,yBAAA,CAA0B,OAAO,IAAM,EAAA;AAAA,MACxE,oBAAA,EAAsB,YAAY,MAAM;AACtC,QAAuB,oBAAA,IAAA;AAAA,OACzB,EAAG,CAAC,oBAAoB,CAAC,CAAA;AAAA,MACzB,uBAAA,EAAyB,YAAY,MAAM;AACzC,QAA0B,uBAAA,IAAA;AAC1B,QAAS,MAAA,IAAA;AAAA,OACR,EAAA,CAAC,MAAQ,EAAA,uBAAuB,CAAC,CAAA;AAAA,MACpC,qBAAA,EAAuB,YAAY,MAAM;AACvC,QAAwB,qBAAA,IAAA;AAAA,OAC1B,EAAG,CAAC,qBAAqB,CAAC,CAAA;AAAA,MAC1B,wBAAA,EAA0B,YAAY,MAAM;AAC1C,QAA2B,wBAAA,IAAA;AAAA,OAC7B,EAAG,CAAC,wBAAwB,CAAC;AAAA,KAC9B,CAAA;AAGD,IAAM,MAAA,OAAA,GAAU,OAAO,IAAI,CAAA;AAC3B,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,QAAQ,OAAS,EAAA;AACnB,QAAA,OAAA,CAAQ,OAAU,GAAA,KAAA;AAAA,OACb,MAAA;AACL,QAAA,YAAA,GAAe,eAAe,CAAA;AAAA;AAChC,KACC,EAAA,CAAC,EAAI,EAAA,YAAA,EAAc,eAAe,CAAC,CAAA;AAEtC,IAAA,MAAM,aAAa,EAAG,CAAA,CAAC,OAAO,QAAQ,CAAC,GAAG,SAAW,EAAA;AAAA,MACnD,CAAC,MAAA,CAAO,SAAS,CAAC,GAAG,KAAU,KAAA,SAAA;AAAA,MAC/B,CAAC,MAAA,CAAO,YAAY,CAAC,GAAG,UAAA;AAAA,MACxB,CAAC,MAAA,CAAO,OAAO,CAAC,GAAG,IAAS,KAAA;AAAA,KAC7B,CAAA;AAED,IAAA,MAAM,EAAE,UAAA,EAAe,GAAA,qBAAA,CAAsB,UAAY,EAAA;AAAA,MACvD,aAAe,EAAA;AAAA,KAChB,CAAA;AAED,IAAoB,mBAAA,CAAA;AAAA,MAClB,IAAM,EAAA,eAAA;AAAA,MACN,EAAA;AAAA,MACA,oBAAA;AAAA,MACA,UAAY,EAAA;AAAA,KACb,CAAA;AAED,IAAkB,iBAAA,CAAA;AAAA,MAChB,cAAA,EAAgB,CAAC,CAAM,KAAA;AACrB,QAAA,IAAI,CAAC,IAAM,EAAA;AACX,QAAA,cAAA,GAAiB,CAAC,CAAA;AAAA,OACpB;AAAA,MACA,OAAS,EAAA;AAAA,QACP,UAAW,CAAA,OAAA;AAAA,QACX,UAAW,CAAA;AAAA,OACb;AAAA,MACA,SAAS,MAAM;AACb,QAAI,IAAA,0BAAA,IAA8B,CAAC,IAAM,EAAA;AACzC,QAAU,OAAA,IAAA;AAAA;AACZ,KACD,CAAA;AAED,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,CAAC,eAAiB,EAAA;AACtB,MAAA,IAAI,CAAC,UAAY,EAAA;AAEjB,MAAM,MAAA,aAAA,GAAgB,iBAAiB,QAAQ,CAAA;AAC/C,MAAA,IAAI,CAAC,aAAe,EAAA;AAEpB,MACE,IAAA,aAAA,CAAc,OAAQ,CAAA,GAAA,KAAQ,4BAC7B,KAAA,UAAA,CAAW,SAAS,aAAa,CAAA,IAChC,aAAc,CAAA,OAAA,KAAY,QAC5B,CAAA,EAAA;AACA,QAAA;AAAA;AAGF,MACE,IAAA,UAAA,CAAW,CAAC,CAAG,EAAA,OAAA,CAAQ,QAAQ,4BAC/B,IAAA,UAAA,CAAW,CAAC,CACZ,EAAA;AACA,QAAW,UAAA,CAAA,CAAC,EAAE,KAAM,EAAA;AAAA,OACf,MAAA;AACL,QAAW,UAAA,CAAA,CAAC,GAAG,KAAM,EAAA;AAAA;AACvB,KACC,EAAA,CAAC,eAAiB,EAAA,UAAU,CAAC,CAAA;AAEhC,IAAM,MAAA,gBAAA,GAAmB,CAAC,CAAwC,KAAA;AAChE,MAAA,SAAA,GAAY,CAAC,CAAA;AACb,MAAI,IAAA,CAAA,CAAE,SAAS,QAAU,EAAA;AACvB,QAAA,CAAA,CAAE,cAAe,EAAA;AACjB,QAAA,IAAI,oBAAsB,EAAA;AAC1B,QAAA,IAAI,cAAgB,EAAA;AACpB,QAAU,OAAA,IAAA;AACV,QAAA;AAAA;AAGF,MAAI,IAAA,CAAA,CAAE,SAAS,KAAO,EAAA;AACpB,QAAA,IAAI,EAAE,QAAY,IAAA,CAAA,CAAE,MAAW,KAAA,UAAA,GAAa,CAAC,CAAG,EAAA;AAC9C,UAAA,CAAA,CAAE,cAAe,EAAA;AACjB,UAAC,UAAW,CAAA,UAAA,CAAW,MAAS,GAAA,CAAC,GAAmB,KAAM,EAAA;AAC1D,UAAA;AAAA;AAEF,QAAI,IAAA,CAAA,CAAE,WAAW,UAAa,GAAA,UAAA,CAAW,SAAS,CAAC,CAAA,IAAK,CAAC,CAAA,CAAE,QAAU,EAAA;AACnE,UAAA,CAAA,CAAE,cAAe,EAAA;AACjB,UAAW,UAAA,CAAA,CAAC,EAAE,KAAM,EAAA;AACpB,UAAA;AAAA;AACF;AACF,KACF;AAEA,IAAA;AAAA;AAAA;AAAA,sBAGE,IAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,SAAW,EAAA,UAAA;AAAA,UACX,UAAS,EAAA,QAAA;AAAA,UACT,0BAA0B,EAAA,oBAAA;AAAA,UAC1B,2BAA2B,EAAA,KAAA;AAAA,UAC3B,GAAK,EAAA,YAAA,CAAa,CAAC,GAAA,EAAK,KAAK,CAAC,CAAA;AAAA,UAC9B,SAAW,EAAA,gBAAA;AAAA,UACV,GAAG,IAAA;AAAA,UAEJ,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,aAAc,EAAA,EAAA,eAAA,EAAiB,IAC9B,EAAA,QAAA,kBAAA,GAAA,CAAC,cACC,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,EAAA,EAAG,gBAAiB,EAAA,GAAA,EAAK,UAAY,EAAA,CAAA,EACvD,CACF,EAAA,CAAA;AAAA,4BACA,GAAA;AAAA,cAAC,aAAc,CAAA,QAAA;AAAA,cAAd;AAAA,gBACC,KAAO,EAAA;AAAA,kBACL,KAAA,EAAO,MAAM,OAAU,IAAA;AAAA,kBACvB,GAAK,EAAA,KAAA;AAAA,kBACL,cAAA;AAAA,kBACA;AAAA,iBACF;AAAA,gBAEA,QAAA,kBAAA,GAAA;AAAA,kBAAC,SAAA;AAAA,kBAAA;AAAA,oBACC,GAAK,EAAA,UAAA;AAAA,oBACL,SAAA,EAAW,OAAO,WAAW,CAAA;AAAA,oBAC7B,WAAW,EAAA,IAAA;AAAA,oBAEV;AAAA;AAAA;AACH;AAAA;AACF;AAAA;AAAA;AACF;AAAA;AAGN,CAAA;AAEA,aAAA,CAAc,WAAc,GAAA,QAAA;AA2Bf,MAAA,MAAA,GAAS,MAAO,CAAA,MAAA,CAAO,aAAe,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAejD,MAAQ,EAAA,YAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBR,MAAQ,EAAA,YAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBR,OAAS,EAAA,aAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeT,YAAc,EAAA;AAChB,CAAC;;;;"}
1
+ {"version":3,"file":"Dialog-FNJ16gY6.js","sources":["../src/components/Dialog/internal/useDialogContext.ts","../src/components/Dialog/DialogCancelButton.tsx","../src/components/Dialog/DialogHeader.tsx","../src/components/Dialog/DialogFooter.tsx","../src/components/Dialog/DialogContent.tsx","../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport { DialogContext } from \"./DialogContext\";\n\nexport function useDialogContext() {\n const context = useContext(DialogContext);\n if (!context) {\n throw new Error(\n \"useDialogContext must be used within a DialogContextProvider\",\n );\n }\n return context;\n}\n","import { MouseEvent, forwardRef } from \"react\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { useDialogContext } from \"./internal/useDialogContext\";\nimport { DataTrackingId } from \"../../types\";\nimport { useTrackingId } from \"../../hooks\";\n\n/**\n * Props for the DialogCancelButton component\n * @extends ButtonProps\n */\nexport type DialogCancelButtonProps = ButtonProps & DataTrackingId;\n\n/**\n * DialogCancelButton component for cancel/close actions in a Dialog.\n *\n * Features:\n * - Button that automatically closes the dialog when clicked\n * - Extends all Button component props and functionality\n * - Proper accessibility with close dialog semantics\n * - Automatic focus management\n * - Consistent styling with other dialog elements\n *\n * @example\n * <Dialog.CancelButton appearance=\"ghost\">Cancel</Dialog.CancelButton>\n */\nexport const DialogCancelButton = forwardRef<\n HTMLButtonElement,\n DialogCancelButtonProps\n>((props, ref) => {\n const { onClick, ...rest } = props;\n const { close } = useDialogContext();\n const data = {\n title: props.title,\n appearance: props.appearance,\n size: props.size,\n type: props.type,\n };\n\n const trackingId = useTrackingId({\n name: \"DialogCancelButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n close();\n };\n return (\n <Button\n aria-label=\"Close dialog\"\n data-anv=\"dialog-cancel-button\"\n data-tracking-id={trackingId}\n onClick={onClickHandler}\n ref={ref}\n {...rest}\n />\n );\n});\n\nDialogCancelButton.displayName = \"DialogCancelButton\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport cx from \"classnames\";\n\nimport { Text } from \"../Text\";\nimport { DialogCancelButton } from \"./DialogCancelButton\";\n\nimport styles from \"./Dialog.module.scss\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\n\n/**\n * Props for the DialogHeader component\n * @extends ComponentPropsWithoutRef<\"header\">\n */\nexport type DialogHeaderProps = ComponentPropsWithoutRef<\"header\"> &\n DataTrackingId;\n\n/**\n * DialogHeader component for the header section of a Dialog.\n *\n * Features:\n * - Displays dialog title with headline typography\n * - Includes close button with proper accessibility\n * - Sticky positioning for long content\n * - Consistent spacing and styling\n * - Automatic focus management\n *\n * @example\n * <Dialog.Header>Confirm Delete</Dialog.Header>\n */\nexport const DialogHeader = forwardRef<HTMLDivElement, DialogHeaderProps>(\n (props: DialogHeaderProps, ref) => {\n const { children, className, ...rest } = props;\n const data = {\n children: childrenToString(props.children),\n };\n\n const trackingId = useTrackingId({\n name: \"Dialog\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const headerClassNames = cx(className, styles[\"header\"]);\n\n return (\n <header\n className={headerClassNames}\n data-anv=\"dialog-header\"\n data-tracking-id={trackingId}\n ref={ref}\n {...rest}\n >\n <Text variant=\"headline\" el=\"h1\">\n {children}\n </Text>\n <span className={styles[\"close-container\"]}>\n <DialogCancelButton\n className={styles[\"close-button\"]}\n size=\"small\"\n appearance=\"ghost\"\n aria-label=\"Close dialog\"\n icon={Close}\n />\n </span>\n </header>\n );\n },\n);\n\nDialogHeader.displayName = \"DialogHeader\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Dialog.module.scss\";\n\n/**\n * Props for the DialogFooter component\n * @extends ComponentPropsWithoutRef<\"footer\">\n */\nexport type DialogFooterProps = ComponentPropsWithoutRef<\"footer\"> & {\n /**\n * @default false\n */\n sticky?: boolean;\n};\n\n/**\n * DialogFooter component for the footer section of a Dialog.\n *\n * Features:\n * - Container for dialog action buttons\n * - Optional sticky positioning for long content\n * - Consistent spacing and alignment\n * - Right-aligned button layout by default\n * - Flexible content area for custom layouts\n *\n * @example\n * <Dialog.Footer sticky>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Save</Button>\n * </Dialog.Footer>\n */\nexport const DialogFooter = forwardRef<HTMLElement, DialogFooterProps>(\n (props, ref) => {\n const { children, className, sticky = false, ...rest } = props;\n\n const footerClassNames = cx(styles[\"footer\"], className, {\n [styles[\"sticky\"]]: sticky,\n });\n\n return (\n <footer\n className={footerClassNames}\n data-anv=\"dialog-footer\"\n ref={ref}\n {...rest}\n >\n {children}\n </footer>\n );\n },\n);\n\nDialogFooter.displayName = \"DialogFooter\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Dialog.module.scss\";\n\n/**\n * Props for the DialogContent component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DialogContentProps = ComponentPropsWithoutRef<\"div\">;\n\n/**\n * DialogContent component for the main content area of a Dialog.\n *\n * Features:\n * - Main content container for dialog body\n * - Flexible height with overflow handling\n * - Consistent padding and spacing\n * - Responsive design\n * - Proper content scrolling for long content\n *\n * @example\n * <Dialog.Content>\n * <p>This is the main content of the dialog.</p>\n * </Dialog.Content>\n */\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n (props, ref) => {\n const { children, className, ...rest } = props;\n\n const contentClassNames = cx(styles[\"content\"], className);\n\n return (\n <div\n className={contentClassNames}\n data-anv=\"dialog-content\"\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDialogContent.displayName = \"DialogContent\";\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n KeyboardEvent,\n} from \"react\";\nimport { DialogHeader } from \"./DialogHeader\";\nimport { DialogFooter } from \"./DialogFooter\";\nimport { DialogContent } from \"./DialogContent\";\nimport { DialogCancelButton } from \"./DialogCancelButton\";\nimport {\n OpenCloseTransitionStateEffects,\n useDialogScrollLock,\n useDialogTransitionStates,\n useKeyboardFocusables,\n useOnClickOutside,\n} from \"../../internal/hooks\";\nimport { DisableCloseOnEscapeOrClickProps, Size } from \"../../types\";\nimport { DialogContext, DialogContextProps } from \"./internal/DialogContext\";\nimport styles from \"./Dialog.module.scss\";\nimport { getActiveElement } from \"../../internal/functions\";\nimport { useMergeRefs } from \"../../hooks\";\nimport cx from \"classnames\";\n\nimport { ToastProvider } from \"../Toast/internal/ToastProvider\";\nimport { ToasterPopover } from \"../Toast/internal/ToasterPopover\";\nimport { ToasterContent } from \"../Toast/internal/Toaster\";\n\n/**\n * Props for the Dialog component\n * @extends ComponentPropsWithoutRef<\"dialog\">\n * @extends DialogTransitionStateEffects\n * @extends DisableCloseOnEscapeOrClickProps\n */\nexport type DialogProps = ComponentPropsWithoutRef<\"dialog\"> &\n OpenCloseTransitionStateEffects &\n DisableCloseOnEscapeOrClickProps & {\n /**\n * @default false\n */\n fullScreen?: boolean;\n /**\n * @default \"medium\"\n */\n size?: Extract<Size, \"medium\" | \"large\">;\n\n /**\n * @default false\n */\n open?: boolean;\n onClose?: () => void;\n /**\n * @deprecated - use onOpenAnimationStart or onOpenAnimationComplete instead\n */\n onOpen?: () => void;\n /**\n * @deprecated - use onOpenAnimationStart or onOpenAnimationComplete instead\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Callback when clicking outside the dialog\n */\n onClickOutside?: (e: globalThis.MouseEvent) => void;\n /**\n * Enables scroll chaining\n * @link https://developer.mozilla.org/en-US/docs/Glossary/Scroll_chaining\n */\n enableScrollChaining?: boolean;\n };\n\nexport const DialogElement = forwardRef<HTMLDialogElement, DialogProps>(\n (props, ref) => {\n const {\n className,\n open = false,\n children,\n onOpen,\n onOpenChange,\n onClose,\n onKeyDown,\n fullScreen = false,\n disableCloseOnEscape = false,\n onClickOutside,\n disableCloseOnClickOutside = false,\n size,\n enableScrollChaining,\n onOpenAnimationStart,\n onOpenAnimationComplete,\n onCloseAnimationStart,\n onCloseAnimationComplete,\n ...rest\n } = props;\n\n const elRef = useRef<HTMLDialogElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const toasterRef = useRef<HTMLDivElement>(null);\n const [hasOpenPopover, setHasOpenPopover] =\n useState<DialogContextProps[\"hasOpenPopover\"]>(false);\n const id = useId();\n\n const { state, isOpenOrOpening } = useDialogTransitionStates(elRef, open, {\n onOpenAnimationStart: useCallback(() => {\n onOpenAnimationStart?.();\n }, [onOpenAnimationStart]),\n onOpenAnimationComplete: useCallback(() => {\n onOpenAnimationComplete?.();\n onOpen?.(); // DEPRECATED\n }, [onOpen, onOpenAnimationComplete]),\n onCloseAnimationStart: useCallback(() => {\n onCloseAnimationStart?.();\n }, [onCloseAnimationStart]),\n onCloseAnimationComplete: useCallback(() => {\n onCloseAnimationComplete?.();\n }, [onCloseAnimationComplete]),\n });\n\n // DEPRECATED\n const initial = useRef(true);\n useEffect(() => {\n if (initial.current) {\n initial.current = false;\n } else {\n onOpenChange?.(isOpenOrOpening);\n }\n }, [id, onOpenChange, isOpenOrOpening]);\n\n const classNames = cx([styles[\"dialog\"]], className, {\n [styles[\"closing\"]]: state === \"closing\",\n [styles[\"fullscreen\"]]: fullScreen,\n [styles[\"large\"]]: size === \"large\",\n });\n\n const { focusables } = useKeyboardFocusables(contentRef, {\n observeChange: true,\n });\n\n useDialogScrollLock({\n open: isOpenOrOpening,\n id,\n enableScrollChaining,\n elementRef: elRef,\n });\n\n useOnClickOutside({\n onOutsidePress: (e) => {\n if (!open) return;\n onClickOutside?.(e);\n },\n targets: [\n contentRef.current as HTMLElement,\n toasterRef.current as HTMLElement,\n ],\n onClose: () => {\n if (disableCloseOnClickOutside || !open) return;\n onClose?.();\n },\n });\n\n useEffect(() => {\n if (!isOpenOrOpening) return;\n if (!focusables) return;\n\n const activeElement = getActiveElement(document);\n if (!activeElement) return;\n\n if (\n activeElement.dataset.anv !== \"drawer-header-close-button\" &&\n (focusables.includes(activeElement) ||\n activeElement.tagName === \"DIALOG\")\n ) {\n return;\n }\n\n if (\n focusables[0]?.dataset.anv === \"dialog-header-close-button\" &&\n focusables[1]\n ) {\n focusables[1].focus();\n } else {\n focusables[0]?.focus();\n }\n }, [isOpenOrOpening, focusables]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDialogElement>) => {\n onKeyDown?.(e);\n if (e.code === \"Escape\") {\n e.preventDefault();\n if (disableCloseOnEscape) return;\n if (hasOpenPopover) return;\n onClose?.();\n return;\n }\n\n if (e.code === \"Tab\") {\n if (e.shiftKey && e.target === focusables?.[0]) {\n e.preventDefault();\n (focusables[focusables.length - 1] as HTMLElement)?.focus();\n return;\n }\n if (e.target === focusables?.[focusables.length - 1] && !e.shiftKey) {\n e.preventDefault();\n focusables[0].focus();\n return;\n }\n }\n };\n\n return (\n // dialog element does seem to be interactive on MDN guideline\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n <dialog\n className={classNames}\n data-anv=\"dialog\"\n data-anv-scroll-chaining={enableScrollChaining}\n data-anv-transition-state={state}\n ref={useMergeRefs([ref, elRef])}\n onKeyDown={onKeyDownHandler}\n {...rest}\n >\n <ToastProvider isDialogToaster={open}>\n <ToasterPopover>\n <ToasterContent id=\"dialog-toaster\" ref={toasterRef} />\n </ToasterPopover>\n </ToastProvider>\n <DialogContext.Provider\n value={{\n close: () => onClose?.(),\n ref: elRef,\n hasOpenPopover,\n setHasOpenPopover,\n }}\n >\n <section\n ref={contentRef}\n className={styles[\"container\"]}\n data-open={open}\n >\n {children}\n </section>\n </DialogContext.Provider>\n </dialog>\n );\n },\n);\n\nDialogElement.displayName = \"Dialog\";\n\n/**\n * Dialog component for creating modal dialogs and overlays.\n *\n * Features:\n * - Modal dialog with backdrop overlay\n * - Controlled and uncontrolled open state\n * - Smooth open/close animations\n * - Keyboard navigation and focus management\n * - Escape key and click outside to close\n * - Multiple size variants (medium, large, fullscreen)\n * - Scroll chaining support\n * - Toast integration for notifications\n * - Compound component pattern with Header, Footer, Content, and CancelButton sub-components\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog open={isOpen} onClose={() => setIsOpen(false)}>\n * <Dialog.Header>Confirm Action</Dialog.Header>\n * <Dialog.Content>Are you sure you want to proceed?</Dialog.Content>\n * <Dialog.Footer>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Confirm</Button>\n * </Dialog.Footer>\n * </Dialog>\n */\nexport const Dialog = Object.assign(DialogElement, {\n /**\n * DialogHeader component for the header section of a Dialog.\n *\n * Features:\n * - Displays dialog title with headline typography\n * - Includes close button with proper accessibility\n * - Sticky positioning for long content\n * - Consistent spacing and styling\n * - Automatic focus management\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog.Header>Confirm Delete</Dialog.Header>\n */\n Header: DialogHeader,\n /**\n * DialogFooter component for the footer section of a Dialog.\n *\n * Features:\n * - Container for dialog action buttons\n * - Optional sticky positioning for long content\n * - Consistent spacing and alignment\n * - Right-aligned button layout by default\n * - Flexible content area for custom layouts\n *\n * @example\n * <Dialog.Footer sticky>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Save</Button>\n * </Dialog.Footer>\n */\n Footer: DialogFooter,\n /**\n * DialogContent component for the main content area of a Dialog.\n *\n * Features:\n * - Main content container for dialog body\n * - Flexible height with overflow handling\n * - Consistent padding and spacing\n * - Responsive design\n * - Proper content scrolling for long content\n *\n * @example\n * <Dialog.Content>\n * <p>This is the main content of the dialog.</p>\n * </Dialog.Content>\n */\n Content: DialogContent,\n /**\n * DialogCancelButton component for cancel/close actions in a Dialog.\n *\n * Features:\n * - Button that automatically closes the dialog when clicked\n * - Extends all Button component props and functionality\n * - Proper accessibility with close dialog semantics\n * - Automatic focus management\n * - Consistent styling with other dialog elements\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog.CancelButton appearance=\"ghost\">Cancel</Dialog.CancelButton>\n */\n CancelButton: DialogCancelButton,\n});\n"],"names":["Close"],"mappings":"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"}
package/dist/Dialog.js CHANGED
@@ -1,2 +1,2 @@
1
- export { D as Dialog, a as DialogCancelButton, b as DialogContent, c as DialogFooter, d as DialogHeader, D as default } from './Dialog-CgkrvrQu.js';
1
+ export { D as Dialog, a as DialogCancelButton, b as DialogContent, c as DialogFooter, d as DialogHeader, D as default } from './Dialog-FNJ16gY6.js';
2
2
  //# sourceMappingURL=Dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Divider-DJe8kLf2.js","sources":["../src/components/Divider/Divider.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, CSSProperties, forwardRef } from \"react\";\nimport classnames from \"classnames\";\nimport styles from \"./Divider.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the Divider component\n * @extends ComponentPropsWithoutRef<\"span\">\n * @extends LayoutUtilProps\n */\nexport type DividerProps = ComponentPropsWithoutRef<\"span\"> &\n LayoutUtilProps & {\n /**\n * Controls the alignment of content within the divider.\n * @default center\n */\n alignContent?: \"start\" | \"center\" | \"end\";\n /**\n * Controls the spacing around the divider.\n * @default \"0\"\n */\n spacing?:\n | \"0\"\n | \"half\"\n | \"1\"\n | \"2\"\n | \"3\"\n | \"4\"\n | \"5\"\n | \"6\"\n | \"8\"\n | \"12\"\n | 0\n | 0.5\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 8\n | 12;\n /**\n * When true, renders the divider vertically instead of horizontally.\n * @default false\n */\n vertical?: boolean;\n };\n\n/**\n * Divider component for creating visual separators between content sections.\n *\n * Features:\n * - Horizontal and vertical divider orientations\n * - Optional content display within the divider\n * - Three content alignment options (start, center, end)\n * - Configurable spacing with predefined size tokens\n * - Supports layout utilities for positioning and spacing\n * - Flexible content placement with automatic line positioning\n * - Responsive design that adapts to container width\n *\n * @example\n * <Divider spacing=\"2\" alignContent=\"center\">\n * <b>Section Title</b>\n * </Divider>\n */\nexport const Divider = forwardRef<HTMLSpanElement, DividerProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { alignContent, ...restOfLayoutStyles } =\n layoutStyles as CSSProperties;\n const {\n children,\n className,\n spacing = \"0\",\n vertical = false,\n style,\n ...rest\n } = componentProps;\n const ContainerClasses = classnames(styles[\"container\"], className, {\n [styles[`spacing-${spacing === 0.5 ? \"half\" : spacing}`]]: spacing,\n [styles[\"vertical\"]]: vertical,\n [styles[\"align-start\"]]: alignContent === \"start\",\n [styles[\"align-end\"]]: alignContent === \"end\",\n });\n\n const contentOrdering = () => {\n if (children) {\n if (alignContent === \"start\") {\n return (\n <>\n <span className={styles[\"content\"]}>{children}</span>\n <hr className={styles[\"divider\"]} />\n </>\n );\n }\n if (alignContent === \"end\") {\n return (\n <>\n <hr className={styles[\"divider\"]} />\n <span className={styles[\"content\"]}>{children}</span>\n </>\n );\n }\n return (\n <>\n <hr className={styles[\"divider\"]} />\n <span className={styles[\"content\"]}>{children}</span>\n <hr className={styles[\"divider\"]} />\n </>\n );\n }\n return <hr className={styles[\"divider\"]} />;\n };\n\n const styleCombined = {\n ...style,\n ...restOfLayoutStyles,\n };\n\n return (\n <span\n data-anv=\"divider\"\n ref={ref}\n style={styleCombined}\n {...rest}\n className={ContainerClasses}\n >\n {contentOrdering()}\n </span>\n );\n },\n);\n\nDivider.displayName = \"Divider\";\n"],"names":["classnames"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEO,MAAM,OAAU,GAAA,UAAA;AAAA,EACrB,CAAC,OAAO,GAAQ,KAAA;AACd,IAAA,MAAM,EAAE,YAAA,EAAc,cAAe,EAAA,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM,EAAE,YAAA,EAAc,GAAG,kBAAA,EACvB,GAAA,YAAA;AACF,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAU,GAAA,GAAA;AAAA,MACV,QAAW,GAAA,KAAA;AAAA,MACX,KAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,cAAA;AACJ,IAAA,MAAM,gBAAmB,GAAAA,EAAA,CAAW,MAAO,CAAA,WAAW,GAAG,SAAW,EAAA;AAAA,MAClE,CAAC,OAAO,CAAW,QAAA,EAAA,OAAA,KAAY,MAAM,MAAS,GAAA,OAAO,CAAE,CAAA,CAAC,GAAG,OAAA;AAAA,MAC3D,CAAC,MAAA,CAAO,UAAU,CAAC,GAAG,QAAA;AAAA,MACtB,CAAC,MAAA,CAAO,aAAa,CAAC,GAAG,YAAiB,KAAA,OAAA;AAAA,MAC1C,CAAC,MAAA,CAAO,WAAW,CAAC,GAAG,YAAiB,KAAA;AAAA,KACzC,CAAA;AAED,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,IAAI,iBAAiB,OAAS,EAAA;AAC5B,UAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,SAAS,GAAI,QAAS,EAAA,CAAA;AAAA,4BAC7C,GAAA,CAAA,IAAA,EAAA,EAAG,SAAW,EAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAAA,WACpC,EAAA,CAAA;AAAA;AAGJ,QAAA,IAAI,iBAAiB,KAAO,EAAA;AAC1B,UAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,IAAG,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,SAAS,CAAG,EAAA,CAAA;AAAA,gCACjC,MAAK,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,SAAS,GAAI,QAAS,EAAA;AAAA,WAChD,EAAA,CAAA;AAAA;AAGJ,QAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,IAAG,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,SAAS,CAAG,EAAA,CAAA;AAAA,8BACjC,MAAK,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,SAAS,GAAI,QAAS,EAAA,CAAA;AAAA,0BAC7C,GAAA,CAAA,IAAA,EAAA,EAAG,SAAW,EAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAAA,SACpC,EAAA,CAAA;AAAA;AAGJ,MAAA,uBAAQ,GAAA,CAAA,IAAA,EAAA,EAAG,SAAW,EAAA,MAAA,CAAO,SAAS,CAAG,EAAA,CAAA;AAAA,KAC3C;AAEA,IAAA,MAAM,aAAgB,GAAA;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IACE,uBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,UAAS,EAAA,SAAA;AAAA,QACT,GAAA;AAAA,QACA,KAAO,EAAA,aAAA;AAAA,QACN,GAAG,IAAA;AAAA,QACJ,SAAW,EAAA,gBAAA;AAAA,QAEV,QAAgB,EAAA,eAAA;AAAA;AAAA,KACnB;AAAA;AAGN;AAEA,OAAA,CAAQ,WAAc,GAAA,SAAA;;;;"}
1
+ {"version":3,"file":"Divider-DJe8kLf2.js","sources":["../src/components/Divider/Divider.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, CSSProperties, forwardRef } from \"react\";\nimport classnames from \"classnames\";\nimport styles from \"./Divider.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the Divider component\n * @extends ComponentPropsWithoutRef<\"span\">\n * @extends LayoutUtilProps\n */\nexport type DividerProps = ComponentPropsWithoutRef<\"span\"> &\n LayoutUtilProps & {\n /**\n * Controls the alignment of content within the divider.\n * @default center\n */\n alignContent?: \"start\" | \"center\" | \"end\";\n /**\n * Controls the spacing around the divider.\n * @default \"0\"\n */\n spacing?:\n | \"0\"\n | \"half\"\n | \"1\"\n | \"2\"\n | \"3\"\n | \"4\"\n | \"5\"\n | \"6\"\n | \"8\"\n | \"12\"\n | 0\n | 0.5\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 8\n | 12;\n /**\n * When true, renders the divider vertically instead of horizontally.\n * @default false\n */\n vertical?: boolean;\n };\n\n/**\n * Divider component for creating visual separators between content sections.\n *\n * Features:\n * - Horizontal and vertical divider orientations\n * - Optional content display within the divider\n * - Three content alignment options (start, center, end)\n * - Configurable spacing with predefined size tokens\n * - Supports layout utilities for positioning and spacing\n * - Flexible content placement with automatic line positioning\n * - Responsive design that adapts to container width\n *\n * @example\n * <Divider spacing=\"2\" alignContent=\"center\">\n * <b>Section Title</b>\n * </Divider>\n */\nexport const Divider = forwardRef<HTMLSpanElement, DividerProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { alignContent, ...restOfLayoutStyles } =\n layoutStyles as CSSProperties;\n const {\n children,\n className,\n spacing = \"0\",\n vertical = false,\n style,\n ...rest\n } = componentProps;\n const ContainerClasses = classnames(styles[\"container\"], className, {\n [styles[`spacing-${spacing === 0.5 ? \"half\" : spacing}`]]: spacing,\n [styles[\"vertical\"]]: vertical,\n [styles[\"align-start\"]]: alignContent === \"start\",\n [styles[\"align-end\"]]: alignContent === \"end\",\n });\n\n const contentOrdering = () => {\n if (children) {\n if (alignContent === \"start\") {\n return (\n <>\n <span className={styles[\"content\"]}>{children}</span>\n <hr className={styles[\"divider\"]} />\n </>\n );\n }\n if (alignContent === \"end\") {\n return (\n <>\n <hr className={styles[\"divider\"]} />\n <span className={styles[\"content\"]}>{children}</span>\n </>\n );\n }\n return (\n <>\n <hr className={styles[\"divider\"]} />\n <span className={styles[\"content\"]}>{children}</span>\n <hr className={styles[\"divider\"]} />\n </>\n );\n }\n return <hr className={styles[\"divider\"]} />;\n };\n\n const styleCombined = {\n ...style,\n ...restOfLayoutStyles,\n };\n\n return (\n <span\n data-anv=\"divider\"\n ref={ref}\n style={styleCombined}\n {...rest}\n className={ContainerClasses}\n >\n {contentOrdering()}\n </span>\n );\n },\n);\n\nDivider.displayName = \"Divider\";\n"],"names":["classnames"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEO,MAAM,OAAA,GAAU,UAAA;AAAA,EACrB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM,EAAE,YAAA,EAAc,GAAG,kBAAA,EAAmB,GAC1C,YAAA;AACF,IAAA,MAAM;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA,GAAU,GAAA;AAAA,MACV,QAAA,GAAW,KAAA;AAAA,MACX,KAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AACJ,IAAA,MAAM,gBAAA,GAAmBA,EAAA,CAAW,MAAA,CAAO,WAAW,GAAG,SAAA,EAAW;AAAA,MAClE,CAAC,OAAO,CAAA,QAAA,EAAW,OAAA,KAAY,MAAM,MAAA,GAAS,OAAO,CAAA,CAAE,CAAC,GAAG,OAAA;AAAA,MAC3D,CAAC,MAAA,CAAO,UAAU,CAAC,GAAG,QAAA;AAAA,MACtB,CAAC,MAAA,CAAO,aAAa,CAAC,GAAG,YAAA,KAAiB,OAAA;AAAA,MAC1C,CAAC,MAAA,CAAO,WAAW,CAAC,GAAG,YAAA,KAAiB;AAAA,KACzC,CAAA;AAED,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,IAAI,iBAAiB,OAAA,EAAS;AAC5B,UAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,SAAS,GAAI,QAAA,EAAS,CAAA;AAAA,4BAC9C,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG;AAAA,WAAA,EACpC,CAAA;AAAA,QAEJ;AACA,QAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,UAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG,CAAA;AAAA,gCACjC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,SAAS,GAAI,QAAA,EAAS;AAAA,WAAA,EAChD,CAAA;AAAA,QAEJ;AACA,QAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG,CAAA;AAAA,8BACjC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,SAAS,GAAI,QAAA,EAAS,CAAA;AAAA,0BAC9C,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG;AAAA,SAAA,EACpC,CAAA;AAAA,MAEJ;AACA,MAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG,CAAA;AAAA,IAC3C,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAS,SAAA;AAAA,QACT,GAAA;AAAA,QACA,KAAA,EAAO,aAAA;AAAA,QACN,GAAG,IAAA;AAAA,QACJ,SAAA,EAAW,gBAAA;AAAA,QAEV,QAAA,EAAA,eAAA;AAAgB;AAAA,KACnB;AAAA,EAEJ;AACF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;;;;"}
package/dist/Dnd.js CHANGED
@@ -1,2 +1,2 @@
1
- export { D as Dnd } from './index-V5Ez2gq_.js';
1
+ export { D as Dnd } from './index-DrM3iid4.js';
2
2
  //# sourceMappingURL=Dnd.js.map
package/dist/DndSort.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import React__default, { useLayoutEffect, useEffect, useRef, useMemo, useCallback, useState, memo, useReducer, createContext, useContext, forwardRef, cloneElement } from 'react';
3
3
  import { unstable_batchedUpdates, createPortal } from 'react-dom';
4
- import { s as styles, a as DndSortLine, b as DndHandleButton, c as DndHandle, D as Dnd } from './index-V5Ez2gq_.js';
4
+ import { s as styles, a as DndSortLine, b as DndHandleButton, c as DndHandle, D as Dnd } from './index-DrM3iid4.js';
5
5
  import { c as cx } from './index-tZvMCc77.js';
6
- import { B as ButtonCompound } from './ButtonCompound-BF2Q6gGX.js';
6
+ import { B as ButtonCompound } from './ButtonCompound-BbPK-Xjj.js';
7
7
  import { C as Card } from './Card-vTYeSkxt.js';
8
8
  import { F as Flex } from './Flex-BdQMekvA.js';
9
9
  import { s as sizeToToken } from './useLayoutPropsUtil-DjD5IMh0.js';