@servicetitan/anvil2 1.48.1 → 1.49.1

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 (258) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/{Alert-Cz_w_cw0.js → Alert-aGBkujwE.js} +4 -4
  3. package/dist/{Alert-Cz_w_cw0.js.map → Alert-aGBkujwE.js.map} +1 -1
  4. package/dist/Alert.js +1 -1
  5. package/dist/{Announcement-C1xSJkl0.js → Announcement-BPwFNhYe.js} +4 -4
  6. package/dist/{Announcement-C1xSJkl0.js.map → Announcement-BPwFNhYe.js.map} +1 -1
  7. package/dist/Announcement.js +1 -1
  8. package/dist/{AnvilProvider-DDo8ZcIA.js → AnvilProvider-DBYMPYAO.js} +3 -3
  9. package/dist/{AnvilProvider-DDo8ZcIA.js.map → AnvilProvider-DBYMPYAO.js.map} +1 -1
  10. package/dist/AnvilProvider.js +1 -1
  11. package/dist/{Avatar-VQrimv28.js → Avatar-DeEV-v-b.js} +2 -2
  12. package/dist/{Avatar-VQrimv28.js.map → Avatar-DeEV-v-b.js.map} +1 -1
  13. package/dist/{Avatar-Bbwk2MCy.js → Avatar-gtxslf5v.js} +2 -2
  14. package/dist/{Avatar-Bbwk2MCy.js.map → Avatar-gtxslf5v.js.map} +1 -1
  15. package/dist/Avatar.js +2 -2
  16. package/dist/{Badge-DOnID5l5.js → Badge-DY5xJkqi.js} +2 -2
  17. package/dist/{Badge-DOnID5l5.js.map → Badge-DY5xJkqi.js.map} +1 -1
  18. package/dist/Badge.js +1 -1
  19. package/dist/{Breadcrumbs-DKqd8VRz.js → Breadcrumbs-DjR-2OEH.js} +5 -5
  20. package/dist/{Breadcrumbs-DKqd8VRz.js.map → Breadcrumbs-DjR-2OEH.js.map} +1 -1
  21. package/dist/Breadcrumbs.js +1 -1
  22. package/dist/{Button-DzcOa6iJ.js → Button-92_FKAyV.js} +3 -3
  23. package/dist/{Button-DzcOa6iJ.js.map → Button-92_FKAyV.js.map} +1 -1
  24. package/dist/Button.js +1 -1
  25. package/dist/{ButtonCompound-Dvr3Fres.js → ButtonCompound-COdSELhh.js} +2 -2
  26. package/dist/{ButtonCompound-Dvr3Fres.js.map → ButtonCompound-COdSELhh.js.map} +1 -1
  27. package/dist/ButtonCompound.js +1 -1
  28. package/dist/{ButtonLink-DGIRpyK6.js → ButtonLink-C0zR7Wnb.js} +3 -3
  29. package/dist/{ButtonLink-DGIRpyK6.js.map → ButtonLink-C0zR7Wnb.js.map} +1 -1
  30. package/dist/ButtonLink.js +1 -1
  31. package/dist/{ButtonToggle-Dv6VAm4W.js → ButtonToggle--sKvhBoA.js} +3 -3
  32. package/dist/{ButtonToggle-Dv6VAm4W.js.map → ButtonToggle--sKvhBoA.js.map} +1 -1
  33. package/dist/ButtonToggle.js +1 -1
  34. package/dist/{Calendar-NDOcurOz.js → Calendar-BkJs1qTF.js} +59 -69
  35. package/dist/Calendar-BkJs1qTF.js.map +1 -0
  36. package/dist/{Calendar-8bP4LsQV.js → Calendar-WHERvu2Y.js} +2 -2
  37. package/dist/{Calendar-8bP4LsQV.js.map → Calendar-WHERvu2Y.js.map} +1 -1
  38. package/dist/Calendar.css +52 -51
  39. package/dist/Calendar.js +2 -2
  40. package/dist/{Card-Cyoz-LaD.js → Card-Ch3sMUo5.js} +2 -2
  41. package/dist/{Card-Cyoz-LaD.js.map → Card-Ch3sMUo5.js.map} +1 -1
  42. package/dist/Card.js +1 -1
  43. package/dist/{Checkbox-Bsa1FgoI.js → Checkbox-Bhjj-jM4.js} +5 -5
  44. package/dist/{Checkbox-Bsa1FgoI.js.map → Checkbox-Bhjj-jM4.js.map} +1 -1
  45. package/dist/{Checkbox-BJnt8TFk.js → Checkbox-C5Qjq_tU.js} +2 -2
  46. package/dist/{Checkbox-BJnt8TFk.js.map → Checkbox-C5Qjq_tU.js.map} +1 -1
  47. package/dist/Checkbox.js +2 -2
  48. package/dist/{Chip-BGa1Inb8.js → Chip-X2EwdZ97.js} +4 -4
  49. package/dist/{Chip-BGa1Inb8.js.map → Chip-X2EwdZ97.js.map} +1 -1
  50. package/dist/Chip.js +1 -1
  51. package/dist/{Combobox-BfqKpX1v.js → Combobox-C4COM7BZ.js} +13 -13
  52. package/dist/{Combobox-BfqKpX1v.js.map → Combobox-C4COM7BZ.js.map} +1 -1
  53. package/dist/Combobox.js +1 -1
  54. package/dist/{DataTable-xUON92DR.js → DataTable-BkNCMaVu.js} +93 -89
  55. package/dist/DataTable-BkNCMaVu.js.map +1 -0
  56. package/dist/{DateField-Cm0FIG3Y.js → DateField-BNleIuS8.js} +6 -6
  57. package/dist/{DateField-Cm0FIG3Y.js.map → DateField-BNleIuS8.js.map} +1 -1
  58. package/dist/DateField.js +1 -1
  59. package/dist/{DateFieldRange-CGGqW_cg.js → DateFieldRange-BBgvno-_.js} +11 -8
  60. package/dist/{DateFieldRange-CGGqW_cg.js.map → DateFieldRange-BBgvno-_.js.map} +1 -1
  61. package/dist/DateFieldRange.js +1 -1
  62. package/dist/{DateFieldSingle-BYWuJ3IL.js → DateFieldSingle-Bcwkxogy.js} +11 -8
  63. package/dist/{DateFieldSingle-BYWuJ3IL.js.map → DateFieldSingle-Bcwkxogy.js.map} +1 -1
  64. package/dist/DateFieldSingle.js +1 -1
  65. package/dist/DateFieldYearless-DnVJaBBq.js +133 -0
  66. package/dist/DateFieldYearless-DnVJaBBq.js.map +1 -0
  67. package/dist/DateFieldYearless.js +1 -1
  68. package/dist/DateFieldYearlessRange-BivGidsU.js +178 -0
  69. package/dist/DateFieldYearlessRange-BivGidsU.js.map +1 -0
  70. package/dist/DateFieldYearlessRange.css +36 -0
  71. package/dist/DateFieldYearlessRange.d.ts +2 -0
  72. package/dist/DateFieldYearlessRange.js +2 -0
  73. package/dist/DateFieldYearlessRange.js.map +1 -0
  74. package/dist/{DaysOfTheWeek-BIi9dyJP.js → DaysOfTheWeek-Dn6zHxpt.js} +6 -6
  75. package/dist/{DaysOfTheWeek-BIi9dyJP.js.map → DaysOfTheWeek-Dn6zHxpt.js.map} +1 -1
  76. package/dist/DaysOfTheWeek.js +1 -1
  77. package/dist/{Details-Bg7QzlOm.js → Details-CkaKTRvc.js} +3 -3
  78. package/dist/{Details-Bg7QzlOm.js.map → Details-CkaKTRvc.js.map} +1 -1
  79. package/dist/Details.js +1 -1
  80. package/dist/{Dialog-fJClGTI6.js → Dialog-CxH4Vnbb.js} +4 -4
  81. package/dist/{Dialog-fJClGTI6.js.map → Dialog-CxH4Vnbb.js.map} +1 -1
  82. package/dist/Dialog.js +1 -1
  83. package/dist/{Divider-DYZFKug1.js → Divider-Olv8yWXD.js} +2 -2
  84. package/dist/{Divider-DYZFKug1.js.map → Divider-Olv8yWXD.js.map} +1 -1
  85. package/dist/Divider.js +1 -1
  86. package/dist/Dnd.js +1 -1
  87. package/dist/DndSort.js +7 -6
  88. package/dist/DndSort.js.map +1 -1
  89. package/dist/{Drawer-DyHDRTR-.js → Drawer-BLfDJU-e.js} +4 -4
  90. package/dist/{Drawer-DyHDRTR-.js.map → Drawer-BLfDJU-e.js.map} +1 -1
  91. package/dist/Drawer.js +1 -1
  92. package/dist/{EditCard-LdyduHqX.js → EditCard-Ds1UXJIS.js} +6 -6
  93. package/dist/{EditCard-LdyduHqX.js.map → EditCard-Ds1UXJIS.js.map} +1 -1
  94. package/dist/EditCard.js +1 -1
  95. package/dist/{FieldLabel-DIlzcPIQ.js → FieldLabel-CHMCV9wX.js} +38 -19
  96. package/dist/FieldLabel-CHMCV9wX.js.map +1 -0
  97. package/dist/FieldLabel.css +22 -7
  98. package/dist/FieldLabel.js +1 -1
  99. package/dist/{FieldMessage-BbARBii0.js → FieldMessage-DWONT3dr.js} +2 -2
  100. package/dist/{FieldMessage-BbARBii0.js.map → FieldMessage-DWONT3dr.js.map} +1 -1
  101. package/dist/FieldMessage.js +1 -1
  102. package/dist/{Flex-GLF5XRJg.js → Flex-CjPHUTeq.js} +2 -2
  103. package/dist/{Flex-GLF5XRJg.js.map → Flex-CjPHUTeq.js.map} +1 -1
  104. package/dist/Flex.js +1 -1
  105. package/dist/{Grid-BpAt2zA7.js → Grid-DW2cAuHi.js} +2 -2
  106. package/dist/{Grid-BpAt2zA7.js.map → Grid-DW2cAuHi.js.map} +1 -1
  107. package/dist/Grid.js +1 -1
  108. package/dist/{Helper-DHoKHqxV.js → Helper-DjWotFtO.js} +2 -2
  109. package/dist/{Helper-DHoKHqxV.js.map → Helper-DjWotFtO.js.map} +1 -1
  110. package/dist/{Icon-TcJbUdTz.js → Icon-BSuTVNaa.js} +2 -2
  111. package/dist/{Icon-TcJbUdTz.js.map → Icon-BSuTVNaa.js.map} +1 -1
  112. package/dist/Icon.js +1 -1
  113. package/dist/{InputMask-B6oJlChY.js → InputMask-Cd01c3Tj.js} +2 -2
  114. package/dist/{InputMask-B6oJlChY.js.map → InputMask-Cd01c3Tj.js.map} +1 -1
  115. package/dist/InputMask.js +1 -1
  116. package/dist/{Link-Br_AJ7Af.js → Link-DuYh7Xl2.js} +3 -3
  117. package/dist/{Link-Br_AJ7Af.js.map → Link-DuYh7Xl2.js.map} +1 -1
  118. package/dist/Link.js +1 -1
  119. package/dist/{LinkButton-CwiVzaro.js → LinkButton-pIUNATNE.js} +2 -2
  120. package/dist/{LinkButton-CwiVzaro.js.map → LinkButton-pIUNATNE.js.map} +1 -1
  121. package/dist/LinkButton.js +1 -1
  122. package/dist/{ListView-fBFSagWO.js → ListView-CZ5T8bR1.js} +3 -3
  123. package/dist/{ListView-fBFSagWO.js.map → ListView-CZ5T8bR1.js.map} +1 -1
  124. package/dist/ListView.js +1 -1
  125. package/dist/{Listbox-gtZ2Ao_I.js → Listbox-C-n4IVVj.js} +5 -5
  126. package/dist/{Listbox-gtZ2Ao_I.js.map → Listbox-C-n4IVVj.js.map} +1 -1
  127. package/dist/Listbox.js +1 -1
  128. package/dist/{LocalizationProvider-Cqattc3O.js → LocalizationProvider-u6xdKCBi.js} +2 -2
  129. package/dist/{LocalizationProvider-Cqattc3O.js.map → LocalizationProvider-u6xdKCBi.js.map} +1 -1
  130. package/dist/LocalizationProvider.js +1 -1
  131. package/dist/{Menu-CBbUK_sX.js → Menu-DUAfSImY.js} +4 -4
  132. package/dist/{Menu-CBbUK_sX.js.map → Menu-DUAfSImY.js.map} +1 -1
  133. package/dist/Menu.js +1 -1
  134. package/dist/{NumberField-CNskrtsN.js → NumberField-C62E56_v.js} +7 -7
  135. package/dist/{NumberField-CNskrtsN.js.map → NumberField-C62E56_v.js.map} +1 -1
  136. package/dist/NumberField.js +1 -1
  137. package/dist/Overflow.js +2 -3
  138. package/dist/Overflow.js.map +1 -1
  139. package/dist/{Page-4VdFrCjy.js → Page-CGZQ-nsg.js} +15 -15
  140. package/dist/Page-CGZQ-nsg.js.map +1 -0
  141. package/dist/Page.js +1 -1
  142. package/dist/{Pagination-CQjNN1yN.js → Pagination-BHEEnNas.js} +6 -6
  143. package/dist/{Pagination-CQjNN1yN.js.map → Pagination-BHEEnNas.js.map} +1 -1
  144. package/dist/Pagination.js +1 -1
  145. package/dist/{Popover--c9PXAVi.js → Popover-CIPg_ZgX.js} +5 -4
  146. package/dist/Popover-CIPg_ZgX.js.map +1 -0
  147. package/dist/Popover.js +1 -1
  148. package/dist/{ProgressBar-CXMuhBQV.js → ProgressBar-CUpF9fFW.js} +6 -6
  149. package/dist/{ProgressBar-CXMuhBQV.js.map → ProgressBar-CUpF9fFW.js.map} +1 -1
  150. package/dist/ProgressBar.js +1 -1
  151. package/dist/{Radio-CTYs8JpI.js → Radio-CyCFna1X.js} +2 -2
  152. package/dist/{Radio-CTYs8JpI.js.map → Radio-CyCFna1X.js.map} +1 -1
  153. package/dist/Radio.js +2 -2
  154. package/dist/{RadioGroup-BVGnsTuG.js → RadioGroup-DRS2EjVH.js} +5 -5
  155. package/dist/{RadioGroup-BVGnsTuG.js.map → RadioGroup-DRS2EjVH.js.map} +1 -1
  156. package/dist/{SearchField-DLqva3o3.js → SearchField-DrgNbG3I.js} +3 -3
  157. package/dist/{SearchField-DLqva3o3.js.map → SearchField-DrgNbG3I.js.map} +1 -1
  158. package/dist/SearchField.js +1 -1
  159. package/dist/{SegmentedControl-1OzOQmCp.js → SegmentedControl-DK1cwC7A.js} +12 -3
  160. package/dist/SegmentedControl-DK1cwC7A.js.map +1 -0
  161. package/dist/SegmentedControl.js +1 -1
  162. package/dist/{SelectCard-Dw7zW0UN.js → SelectCard-lBcnP5j5.js} +4 -4
  163. package/dist/{SelectCard-Dw7zW0UN.js.map → SelectCard-lBcnP5j5.js.map} +1 -1
  164. package/dist/SelectCard.js +1 -1
  165. package/dist/{SelectTrigger-BQNqyG3M.js → SelectTrigger-qvoGCkb1.js} +5 -5
  166. package/dist/{SelectTrigger-BQNqyG3M.js.map → SelectTrigger-qvoGCkb1.js.map} +1 -1
  167. package/dist/SelectTrigger.js +1 -1
  168. package/dist/{SelectTriggerBase-B-fxog4U.js → SelectTriggerBase-C4gebtca.js} +6 -6
  169. package/dist/{SelectTriggerBase-B-fxog4U.js.map → SelectTriggerBase-C4gebtca.js.map} +1 -1
  170. package/dist/{SideNav-COiPAIph.js → SideNav-B1sH17Uc.js} +3 -3
  171. package/dist/{SideNav-COiPAIph.js.map → SideNav-B1sH17Uc.js.map} +1 -1
  172. package/dist/SideNav.js +1 -1
  173. package/dist/Skeleton.js +1 -1
  174. package/dist/{Stepper-xcgOQzru.js → Stepper-BZr9ytpD.js} +7 -4
  175. package/dist/Stepper-BZr9ytpD.js.map +1 -0
  176. package/dist/Stepper.js +1 -1
  177. package/dist/{Switch-mhyHJeex.js → Switch-BXDPs2mD.js} +8 -6
  178. package/dist/Switch-BXDPs2mD.js.map +1 -0
  179. package/dist/Switch.js +1 -1
  180. package/dist/{Tab-BISlFW_i.js → Tab-6UavokJJ.js} +3 -3
  181. package/dist/{Tab-BISlFW_i.js.map → Tab-6UavokJJ.js.map} +1 -1
  182. package/dist/Tab.js +1 -1
  183. package/dist/Table.js +1 -1
  184. package/dist/{Text-CDzLZl1O.js → Text-kPA-VzsB.js} +2 -2
  185. package/dist/{Text-CDzLZl1O.js.map → Text-kPA-VzsB.js.map} +1 -1
  186. package/dist/Text.js +1 -1
  187. package/dist/{TextField-CUrYEZR4.js → TextField-CpVkZxMT.js} +2 -2
  188. package/dist/{TextField-CUrYEZR4.js.map → TextField-CpVkZxMT.js.map} +1 -1
  189. package/dist/{TextField-DPTJjF8V.js → TextField-CygbgVVt.js} +6 -5
  190. package/dist/TextField-CygbgVVt.js.map +1 -0
  191. package/dist/TextField.js +1 -1
  192. package/dist/{Textarea-f0jAKcvn.js → Textarea-DacevzmW.js} +4 -4
  193. package/dist/{Textarea-f0jAKcvn.js.map → Textarea-DacevzmW.js.map} +1 -1
  194. package/dist/Textarea.js +1 -1
  195. package/dist/{ThemeProvider-CUiXHn4p.js → ThemeProvider-Bmsz__5N.js} +2 -2
  196. package/dist/{ThemeProvider-CUiXHn4p.js.map → ThemeProvider-Bmsz__5N.js.map} +1 -1
  197. package/dist/ThemeProvider.js +1 -1
  198. package/dist/{TimeField-CGSwrpl0.js → TimeField-BkOB5ESa.js} +8 -7
  199. package/dist/{TimeField-CGSwrpl0.js.map → TimeField-BkOB5ESa.js.map} +1 -1
  200. package/dist/TimeField.js +1 -1
  201. package/dist/Toast.js +2 -2
  202. package/dist/{Toaster-C6iB4h0P.js → Toaster-BxbR-XcR.js} +2 -2
  203. package/dist/{Toaster-C6iB4h0P.js.map → Toaster-BxbR-XcR.js.map} +1 -1
  204. package/dist/{Toaster-D72xHdfH.js → Toaster-Dg7M4W4U.js} +4 -4
  205. package/dist/{Toaster-D72xHdfH.js.map → Toaster-Dg7M4W4U.js.map} +1 -1
  206. package/dist/{Toolbar-CcJa_YpH.js → Toolbar-XcfHQftc.js} +20 -20
  207. package/dist/{Toolbar-CcJa_YpH.js.map → Toolbar-XcfHQftc.js.map} +1 -1
  208. package/dist/Toolbar.js +1 -1
  209. package/dist/{Tooltip-BOfdwyTv.js → Tooltip-CZsoFe6C.js} +2 -2
  210. package/dist/{Tooltip-BOfdwyTv.js.map → Tooltip-CZsoFe6C.js.map} +1 -1
  211. package/dist/Tooltip.js +1 -1
  212. package/dist/YearlessDateInputWithPicker-MHLlAdrH.js +949 -0
  213. package/dist/YearlessDateInputWithPicker-MHLlAdrH.js.map +1 -0
  214. package/dist/YearlessDateInputWithPicker.css +199 -0
  215. package/dist/beta/components/Table/DataTable/DataTable.d.ts +4 -4
  216. package/dist/beta/components/Table/DataTable/internal/useAsyncData.d.ts +5 -0
  217. package/dist/beta.js +4 -4
  218. package/dist/components/DateFieldYearless/DateFieldYearless.d.ts +57 -3
  219. package/dist/components/DateFieldYearless/internal/PickerList.d.ts +61 -0
  220. package/dist/components/DateFieldYearless/internal/PickerListOption.d.ts +61 -0
  221. package/dist/components/DateFieldYearless/internal/YearlessDateInput.d.ts +51 -0
  222. package/dist/components/DateFieldYearless/internal/YearlessDateInputWithPicker.d.ts +134 -0
  223. package/dist/components/DateFieldYearless/internal/YearlessDateSelectionPopover.d.ts +27 -0
  224. package/dist/components/DateFieldYearless/internal/maskito/yearlessDatePlaceholderMask.d.ts +3 -1
  225. package/dist/components/DateFieldYearless/internal/maskito/yearlessDateSegmentsStepping.d.ts +12 -0
  226. package/dist/components/DateFieldYearless/internal/utils.d.ts +50 -1
  227. package/dist/components/DateFieldYearlessRange/DateFieldYearlessRange.d.ts +59 -0
  228. package/dist/components/DateFieldYearlessRange/index.d.ts +1 -0
  229. package/dist/components/Dnd/DndHandleButton.d.ts +2 -1
  230. package/dist/components/FieldLabel/FieldLabel.d.ts +9 -48
  231. package/dist/components/FieldLabel/internal/FieldLabelMoreInfoIcon.d.ts +3 -1
  232. package/dist/components/Popover/Popover.d.ts +1 -0
  233. package/dist/components/Popover/PopoverContent.d.ts +8 -0
  234. package/dist/components/index.d.ts +1 -0
  235. package/dist/{index-CUVkL0hr.js → index-ByS9WvPk.js} +4 -3
  236. package/dist/index-ByS9WvPk.js.map +1 -0
  237. package/dist/{index.esm-BwMVvxTV.js → index.esm-C2ZhC_8d.js} +2 -2
  238. package/dist/{index.esm-BwMVvxTV.js.map → index.esm-C2ZhC_8d.js.map} +1 -1
  239. package/dist/index.js +68 -67
  240. package/dist/index.js.map +1 -1
  241. package/dist/{useLayoutPropsUtil-C7FVYB8F.js → useLayoutPropsUtil-BlIWftBb.js} +2 -2
  242. package/dist/{useLayoutPropsUtil-C7FVYB8F.js.map → useLayoutPropsUtil-BlIWftBb.js.map} +1 -1
  243. package/dist/{utils-CyPyKUVh.js → utils-aSAOVHjX.js} +2 -2
  244. package/dist/{utils-CyPyKUVh.js.map → utils-aSAOVHjX.js.map} +1 -1
  245. package/package.json +2 -1
  246. package/dist/Calendar-NDOcurOz.js.map +0 -1
  247. package/dist/DataTable-xUON92DR.js.map +0 -1
  248. package/dist/DateFieldYearless-BXRgNWzy.js +0 -266
  249. package/dist/DateFieldYearless-BXRgNWzy.js.map +0 -1
  250. package/dist/FieldLabel-DIlzcPIQ.js.map +0 -1
  251. package/dist/Page-4VdFrCjy.js.map +0 -1
  252. package/dist/Popover--c9PXAVi.js.map +0 -1
  253. package/dist/SegmentedControl-1OzOQmCp.js.map +0 -1
  254. package/dist/Stepper-xcgOQzru.js.map +0 -1
  255. package/dist/Switch-mhyHJeex.js.map +0 -1
  256. package/dist/TextField-DPTJjF8V.js.map +0 -1
  257. package/dist/components/DateFieldYearless/internal/MaskedYearlessDateInput.d.ts +0 -35
  258. package/dist/index-CUVkL0hr.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YearlessDateInputWithPicker-MHLlAdrH.js","sources":["../src/components/DateFieldYearless/internal/PickerListOption.tsx","../src/components/DateFieldYearless/internal/PickerList.tsx","../src/components/DateFieldYearless/internal/utils.ts","../src/components/DateFieldYearless/internal/YearlessDateSelectionPopover.tsx","../src/components/DateFieldYearless/internal/maskito/yearlessDateSegmentsStepping.ts","../src/components/DateFieldYearless/internal/maskito/yearlessDatePlaceholderMask.ts","../src/components/DateFieldYearless/internal/YearlessDateInput.tsx","../src/components/DateFieldYearless/internal/YearlessDateInputWithPicker.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, MouseEvent } from \"react\";\nimport { Icon } from \"../../Icon\";\nimport { Flex, FlexProps } from \"../../Flex\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport { DataTrackingId } from \"../../../types\";\n\nimport cx from \"classnames\";\nimport styles from \"./PickerList.module.scss\";\n\n/**\n * Props for the PickerListOption component\n * @extends ComponentPropsWithoutRef<\"li\">\n */\nexport type PickerListOptionProps = ComponentPropsWithoutRef<\"li\"> & {\n /** The item object containing label, value, and optional disabled state */\n item: { label: string; value: number; disabled?: boolean };\n /** Whether this option is currently selected */\n isSelected: boolean;\n /** Callback when this option is selected */\n onSelectionChange: (\n selected: { label: string; value: number } | undefined,\n ) => void;\n /** Flex alignment for items */\n alignItems?: FlexProps[\"alignItems\"];\n /** Flex justification for items */\n justifyItems?: FlexProps[\"justifyItems\"];\n /** Flex alignment for content */\n alignContent?: FlexProps[\"alignContent\"];\n /** Flex justification for content */\n justifyContent?: FlexProps[\"justifyContent\"];\n /** Flex place-items property */\n placeItems?: FlexProps[\"placeItems\"];\n /** Flex place-content property */\n placeContent?: FlexProps[\"placeContent\"];\n} & DataTrackingId;\n\nexport const PickerListOption = forwardRef<\n HTMLLIElement,\n PickerListOptionProps\n>((props, ref) => {\n const {\n className,\n children,\n onClick,\n item,\n isSelected,\n onSelectionChange,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n ...rest\n } = props;\n\n const disabled = item.disabled || false;\n\n const handleSelection = () => {\n if (disabled) return;\n\n if (isSelected) {\n onSelectionChange(undefined);\n } else {\n onSelectionChange(item);\n }\n };\n\n const onClickHandler = (e: MouseEvent<HTMLLIElement>) => {\n onClick?.(e);\n handleSelection();\n };\n\n const onKeyDownHandler = (e: React.KeyboardEvent<HTMLLIElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleSelection();\n }\n };\n\n const PickerListOptionClassNames = cx(\n styles[\"picker-list-option\"],\n className,\n );\n\n return (\n <li\n className={PickerListOptionClassNames}\n data-anv=\"picker-list-option\"\n role=\"option\"\n aria-disabled={disabled}\n aria-selected={isSelected}\n data-item-label={item.label}\n onClick={onClickHandler}\n onKeyDown={onKeyDownHandler}\n tabIndex={-1}\n ref={ref}\n {...rest}\n >\n <Flex\n className={styles[\"children\"]}\n grow={1}\n shrink={1}\n alignItems={alignItems}\n justifyItems={justifyItems}\n alignContent={alignContent}\n justifyContent={justifyContent}\n placeItems={placeItems}\n placeContent={placeContent}\n >\n {children || item.label}\n </Flex>\n <Icon\n aria-hidden\n svg={Check}\n inherit\n className={styles[\"Icon\"]}\n style={{ opacity: isSelected ? 1 : 0 }}\n />\n </li>\n );\n});\n\nPickerListOption.displayName = \"PickerListOption\";\n","import {\n forwardRef,\n ComponentPropsWithoutRef,\n useRef,\n useImperativeHandle,\n} from \"react\";\nimport { LayoutUtilProps } from \"../../../types\";\nimport { PickerListOption } from \"./PickerListOption\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./PickerList.module.scss\";\n\n/**\n * Represents an item in the picker list with a label and optional disabled state.\n */\nexport type PickerListItem = {\n /** The display label for the item */\n label: string;\n /** The value of the item */\n value: number;\n /** Whether the item is disabled and cannot be selected */\n disabled?: boolean;\n};\n\n/**\n * Props for the PickerList component\n * @extends ComponentPropsWithoutRef<\"ul\">\n * @extends LayoutUtilProps\n */\nexport type PickerListProps = Omit<ComponentPropsWithoutRef<\"ul\">, \"children\"> &\n LayoutUtilProps & {\n /** Array of items to render */\n items: PickerListItem[];\n /** Currently selected item (controlled) */\n selected?: PickerListItem;\n /** Callback when selection changes */\n onSelectionChange?: (selected: PickerListItem | undefined) => void;\n };\n\n/**\n * Ref methods exposed by PickerList\n */\nexport type PickerListRef = {\n /** Scroll to a specific item by label */\n scrollToItem: (label: string, behavior?: ScrollBehavior) => void;\n /** Scroll to a specific item by value */\n scrollToValue: (value: number, behavior?: ScrollBehavior) => void;\n};\n\n/**\n * PickerList component for selecting items from a list.\n *\n * Features:\n * - Single selection mode only\n * - Mouse click selection\n * - Programmatic scrolling to specific items\n * - Support for disabled items\n * - Accessible with proper ARIA attributes\n * - Visual consistency with Listbox component\n *\n * @example\n * <PickerList\n * items={months}\n * selected={selectedMonth}\n * onSelectionChange={handleMonthChange}\n * />\n */\nexport const PickerList = forwardRef<PickerListRef, PickerListProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n items,\n onSelectionChange,\n selected: selectedProp,\n style,\n ...rest\n } = componentProps;\n\n const listRef = useRef<HTMLUListElement>(null);\n\n const scrollToItem = (\n label: string,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n const listElement = listRef.current;\n const itemElement = listElement?.querySelector(\n `li[data-item-label=\"${label}\"]`,\n ) as HTMLLIElement | null;\n\n if (listElement && itemElement) {\n // Calculate the target scroll position to center the item\n const itemTop = itemElement.offsetTop;\n const itemHeight = itemElement.offsetHeight;\n const listHeight = listElement.clientHeight;\n\n // Center the item vertically in the list\n const targetScrollTop = itemTop - listHeight / 2 + itemHeight / 2;\n\n // Ensure we don't scroll beyond the bounds\n const maxScrollTop = listElement.scrollHeight - listHeight;\n const clampedScrollTop = Math.max(\n 0,\n Math.min(targetScrollTop, maxScrollTop),\n );\n\n listElement.scrollTo({\n top: clampedScrollTop,\n behavior,\n });\n }\n };\n\n const scrollToValue = (\n value: number,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n const item = items.find((item) => item.value === value);\n if (item) {\n scrollToItem(item.label, behavior);\n }\n };\n\n useImperativeHandle(ref, () => ({\n scrollToItem,\n scrollToValue,\n }));\n\n const handleSelectionChange = (item: PickerListItem | undefined) => {\n onSelectionChange?.(item);\n };\n\n const PickerListClassNames = cx(styles[\"picker-list\"], className);\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <ul\n role=\"listbox\"\n style={styleCombined}\n className={PickerListClassNames}\n data-anv=\"picker-list\"\n ref={listRef}\n {...rest}\n tabIndex={-1}\n >\n {items.map((item) => (\n <PickerListOption\n key={item.label}\n item={item}\n isSelected={selectedProp?.value === item.value}\n onSelectionChange={handleSelectionChange}\n />\n ))}\n </ul>\n );\n },\n);\n\nPickerList.displayName = \"PickerList\";\n","import { YearlessDate, YearlessDateMode } 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\n/**\n * Return list of months\n * 🌍 localeName: name of local,\n * ✅ monthFormat: short, numeric, long (Default)\n */\nexport function getMonthNames({\n locale,\n format,\n}: {\n locale: string;\n format: Intl.DateTimeFormatOptions[\"month\"];\n}): string[] {\n const formatFn = new Intl.DateTimeFormat(locale, { month: format }).format;\n return [...Array(12).keys()].map((m) =>\n formatFn(new Date(Date.UTC(2021, (m + 1) % 12))),\n );\n}\n\n/**\n * Given a text value, parse it into a YearlessDate object and validate it.\n * @param value - The text value to parse.\n * @param mode - The mode of the date input.\n * @param removePlaceholder - The function to remove the placeholder from the text value.\n * @returns An object containing the parsed YearlessDate object, the input validity, and the input emptiness.\n */\nexport function 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\n/**\n * Swap the mode of a date input.\n * @param inputString - The text value to swap the mode of.\n * @param previousMode - The previous mode of the date input.\n * @param mode - The new mode of the date input.\n * @returns The text value with the new mode.\n */\nexport function 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\n/**\n * Given a text value and a mode, divide the segments of a date input.\n * @param value - The text value to divide the segments of.\n * @param mode - The mode of the date input.\n * @returns An object containing the day and month segments.\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\n/**\n * Convert a YearlessDate object into a text value.\n * @param day - The day of the date.\n * @param month - The month of the date.\n * @param mode - The mode of the date input.\n * @returns The stringified date.\n */\nexport function stringifyYearlessDate(\n day: number | string | null,\n month: number | string | null,\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\n/**\n * Get the number of days in a given month.\n * @param month - The month number (1-12)\n * @returns The number of days in the month\n */\nexport function getDaysInMonth(month: number): number {\n // Use a leap year (2024) to account for February having 29 days\n return new Date(2024, month, 0).getDate();\n}\n\n/**\n * Get months that don't have enough days for the given day.\n * @param day - The day number (1-31)\n * @returns Array of month numbers that don't have enough days for the given day\n */\nexport function getInvalidMonthsForDay(day: number): number[] {\n const invalidMonths: number[] = [];\n\n for (let month = 1; month <= 12; month++) {\n const daysInMonth = getDaysInMonth(month);\n if (day > daysInMonth) {\n invalidMonths.push(month);\n }\n }\n\n return invalidMonths;\n}\n","import { RefObject, useEffect, useMemo, useRef } from \"react\";\nimport Popover from \"../../Popover\";\nimport { PickerList, PickerListRef } from \"./PickerList\";\nimport { getMonthNames, getDaysInMonth, getInvalidMonthsForDay } from \"./utils\";\nimport { Flex } from \"../../Flex\";\nimport { YearlessDateMode } from \"..\";\nimport dateFieldYearlessStyles from \"../DateFieldYearless.module.scss\";\nimport type { PopoverTriggerProps } from \"../../Popover/PopoverTrigger\";\n\n/**\n * Props for the YearlessDateSelectionPopover component\n */\nexport type YearlessDateSelectionPopoverProps = {\n popoverRef: RefObject<{\n openPopover: () => void;\n closePopover: () => void;\n }>;\n popoverContentRef: RefObject<HTMLDivElement>;\n month: number | null;\n day: number | null;\n onMonthChange: (month: number | null) => void;\n onDayChange: (day: number | null) => void;\n onClose: () => void;\n mode: YearlessDateMode;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n} & PopoverTriggerProps;\n\n/**\n * A yearless date selection tool built into a popover.\n * @param param0\n * @returns\n */\nexport function YearlessDateSelectionPopover({\n children,\n popoverRef,\n popoverContentRef,\n month,\n day,\n onMonthChange,\n onDayChange,\n onClose,\n mode,\n onFocus,\n onBlur,\n}: YearlessDateSelectionPopoverProps) {\n const monthListboxRef = useRef<PickerListRef>(null);\n const dayListboxRef = useRef<PickerListRef>(null);\n\n const months = useMemo(() => {\n return getMonthNames({ locale: \"en-US\", format: \"short\" }).map(\n (name, index) => ({\n label: name,\n value: index + 1,\n }),\n );\n }, []);\n\n const days = useMemo(() => {\n return Array.from({ length: 31 }, (_, i) => ({\n label: `${i + 1}`,\n value: i + 1,\n }));\n }, []);\n\n const invalidDays = useMemo(() => {\n if (!month) {\n return [];\n }\n const daysInMonth = getDaysInMonth(month);\n return Array.from(\n { length: 31 - daysInMonth },\n (_, i) => daysInMonth + i + 1,\n );\n }, [month]);\n\n const invalidMonths = useMemo(() => {\n if (!day) {\n return [];\n }\n return getInvalidMonthsForDay(day);\n }, [day]);\n\n const scrollToSelectedOption = (\n value: number | null,\n ref: RefObject<PickerListRef>,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n if (value && ref.current) {\n ref.current.scrollToValue(value, behavior);\n }\n };\n\n useEffect(() => {\n scrollToSelectedOption(month, monthListboxRef, \"smooth\");\n }, [month]);\n\n useEffect(() => {\n scrollToSelectedOption(day, dayListboxRef, \"smooth\");\n }, [day]);\n\n const handleMonthChange = (\n selected: { label: string; value: number } | undefined,\n ) => {\n if (selected?.value) {\n onMonthChange?.(selected.value);\n\n // If current day is invalid for the new month, clear it\n if (day && invalidDays.includes(day)) {\n onDayChange?.(null);\n }\n }\n };\n\n const handleDayChange = (\n selected: { label: string; value: number } | undefined,\n ) => {\n if (selected?.value) {\n onDayChange?.(selected.value);\n\n // If current month is invalid for the new day, clear it\n if (month && invalidMonths.includes(month)) {\n onMonthChange?.(null);\n }\n }\n };\n\n const monthPicker = (\n <PickerList\n ref={monthListboxRef}\n items={months.map((item) => ({\n ...item,\n disabled: invalidMonths.includes(item.value),\n }))}\n selected={months.find((m) => m.value === month)}\n style={{ maxHeight: \"240px\", overflow: \"auto\" }}\n className={dateFieldYearlessStyles[\"scrolling-container\"]}\n onSelectionChange={handleMonthChange}\n />\n );\n\n const dayPicker = (\n <PickerList\n ref={dayListboxRef}\n items={days.map((item) => ({\n ...item,\n disabled: invalidDays.includes(item.value),\n }))}\n selected={days.find((d) => d.value === day)}\n className={dateFieldYearlessStyles[\"scrolling-container\"]}\n onSelectionChange={handleDayChange}\n />\n );\n\n return (\n <Popover\n ref={popoverRef}\n placement=\"bottom-start\"\n disableFlipFallback\n disableCaret\n disableAutoUpdate\n onClose={onClose}\n onOpenAnimationStart={() => {\n scrollToSelectedOption(month, monthListboxRef, \"instant\");\n scrollToSelectedOption(day, dayListboxRef, \"instant\");\n }}\n >\n <Popover.Trigger>\n {(triggerProps) => <>{children(triggerProps)}</>}\n </Popover.Trigger>\n <Popover.Content\n ref={popoverContentRef}\n hideWhileClosed\n onFocus={onFocus}\n onBlur={onBlur}\n >\n <Flex gap={2} style={{ maxHeight: \"240px\" }}>\n {mode === \"dd/mm\" ? (\n <>\n {dayPicker}\n {monthPicker}\n </>\n ) : (\n <>\n {monthPicker}\n {dayPicker}\n </>\n )}\n </Flex>\n </Popover.Content>\n </Popover>\n );\n}\n","import type { MaskitoPlugin, MaskitoElement } from \"@maskito/core\";\nimport { maskitoUpdateElement } from \"@maskito/core\";\n\nimport { YearlessDateMode } from \"../../types\";\nimport { getDaysInMonth } from \"../utils\";\n\ntype YearlessDateSegments = {\n month: number;\n day: number;\n};\n\ntype SegmentRange = [number, number];\n\n// Constants\nconst MIN_MONTH = 1;\nconst MAX_MONTH = 12;\nconst MIN_DAY = 1;\nconst MAX_DAY = 31;\nconst SEGMENT_LENGTH = 2;\n\n/**\n * Creates a Maskito plugin for yearless date segment stepping\n * @param mode - The date format mode (mm/dd or dd/mm)\n * @returns MaskitoPlugin that handles arrow key navigation\n * @example\n * const plugin = createYearlessDateSegmentsSteppingPlugin({ mode: \"mm/dd\" });\n */\nexport function createYearlessDateSegmentsSteppingPlugin({\n mode,\n}: {\n mode: YearlessDateMode;\n}): MaskitoPlugin {\n const segmentsIndexes = createSegmentIndexes(mode);\n\n return (element) => {\n const listener = (event: KeyboardEvent): void => {\n if (event.key === \"ArrowRight\") {\n handleArrowRight(element, event);\n return;\n }\n\n if (event.key !== \"ArrowUp\" && event.key !== \"ArrowDown\") {\n return;\n }\n\n event.preventDefault();\n\n const selectionStart = element.selectionStart ?? 0;\n const activeSegment = getActiveSegment({\n segmentsIndexes,\n selectionStart,\n });\n\n if (!activeSegment) {\n return;\n }\n\n const segmentSelection = segmentsIndexes.get(activeSegment);\n if (!segmentSelection) {\n return;\n }\n\n const maxValue = getMaxValueForSegment(\n activeSegment,\n element.value,\n segmentsIndexes,\n );\n\n const updatedValue = updateSegmentValue({\n selection: segmentSelection,\n value: element.value,\n increment: event.key === \"ArrowUp\" ? -1 : 1,\n min: MIN_DAY,\n max: maxValue,\n });\n\n // If we're updating the month, check if the day needs to be adjusted\n const finalValue =\n activeSegment === \"month\"\n ? adjustDayForNewMonth(updatedValue, segmentsIndexes)\n : updatedValue;\n\n maskitoUpdateElement(element, {\n value: finalValue,\n selection: [selectionStart, selectionStart],\n });\n };\n\n element.addEventListener(\"keydown\", listener);\n return () => element.removeEventListener(\"keydown\", listener);\n };\n}\n\nfunction createSegmentIndexes(\n mode: YearlessDateMode,\n): Map<keyof YearlessDateSegments, SegmentRange> {\n const map = new Map<keyof YearlessDateSegments, SegmentRange>();\n\n if (mode === \"mm/dd\") {\n map.set(\"month\", [0, SEGMENT_LENGTH]);\n map.set(\"day\", [SEGMENT_LENGTH + 1, SEGMENT_LENGTH * 2 + 1]);\n } else if (mode === \"dd/mm\") {\n map.set(\"day\", [0, SEGMENT_LENGTH]);\n map.set(\"month\", [SEGMENT_LENGTH + 1, SEGMENT_LENGTH * 2 + 1]);\n }\n\n return map;\n}\n\n/**\n * Handle ArrowRight key to insert separator at the right position\n */\nfunction handleArrowRight(element: MaskitoElement, event: KeyboardEvent): void {\n const selectionStart = element.selectionStart ?? 0;\n const value = element.value;\n\n // Position 3 is where the separator should be (after the first segment)\n if (selectionStart === SEGMENT_LENGTH && value.includes(\"__\")) {\n // Insert the separator\n event.preventDefault();\n maskitoUpdateElement(element, {\n value: value + \"/\",\n selection: [selectionStart + 1, selectionStart + 1],\n });\n }\n}\n\n/**\n * Adjust the day value if it's out of bounds for the new month\n */\nfunction adjustDayForNewMonth(\n value: string,\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>,\n): string {\n const monthSelection = segmentsIndexes.get(\"month\");\n const daySelection = segmentsIndexes.get(\"day\");\n\n if (!monthSelection || !daySelection) {\n return value;\n }\n\n const monthValue = parseSegmentValue(value, monthSelection);\n const dayValue = parseSegmentValue(value, daySelection);\n\n // If month or day is invalid, return original value\n if (monthValue < MIN_MONTH || monthValue > MAX_MONTH || dayValue < MIN_DAY) {\n return value;\n }\n\n const maxDaysInMonth = getDaysInMonth(monthValue);\n\n // If day is within bounds, no adjustment needed\n if (dayValue <= maxDaysInMonth) {\n return value;\n }\n\n // Adjust day to the last valid day of the month\n const [dayFrom, dayTo] = daySelection;\n const adjustedDay = String(maxDaysInMonth).padStart(dayTo - dayFrom, \"0\");\n\n return (\n value.slice(0, dayFrom) + adjustedDay + value.slice(dayTo, value.length)\n );\n}\n\n/**\n * Parse a segment value from the input string, treating empty segments as 0\n */\nfunction parseSegmentValue(value: string, selection: SegmentRange): number {\n const [from, to] = selection;\n const segmentText = value.slice(from, to);\n if (segmentText.includes(\"_\")) return 0;\n return Number(segmentText.padEnd(to - from, \"0\"));\n}\n\nfunction getMaxValueForSegment(\n segment: keyof YearlessDateSegments,\n value: string,\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>,\n): number {\n if (segment === \"month\") {\n return MAX_MONTH;\n }\n\n // For day segment, get the current month value to determine max days\n const monthSelection = segmentsIndexes.get(\"month\");\n if (!monthSelection) {\n return MAX_DAY;\n }\n\n const monthValue = parseSegmentValue(value, monthSelection);\n\n // If month is not valid, use default max\n if (monthValue < MIN_MONTH || monthValue > MAX_MONTH) {\n return MAX_DAY;\n }\n\n return getDaysInMonth(monthValue);\n}\n\nfunction getActiveSegment({\n segmentsIndexes,\n selectionStart,\n}: {\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>;\n selectionStart: number;\n}): keyof YearlessDateSegments | null {\n for (const [segmentName, segmentRange] of segmentsIndexes.entries()) {\n const [from, to] = segmentRange;\n if (from <= selectionStart && selectionStart <= to) {\n return segmentName;\n }\n }\n return null;\n}\n\nfunction updateSegmentValue({\n selection,\n value,\n increment,\n min,\n max,\n}: {\n selection: SegmentRange;\n value: string;\n increment: number;\n min: number;\n max: number;\n}): string {\n const [from, to] = selection;\n const segmentValue = parseSegmentValue(value, selection);\n // Prevent decrementing 0 losing negative and rolling up to 1.\n if (segmentValue === 0 && increment < 0) return value;\n const newSegmentValue = Math.max(\n min,\n Math.min(max, segmentValue + increment),\n );\n\n return (\n value.slice(0, from) +\n String(newSegmentValue).padStart(to - from, \"0\") +\n value.slice(to, value.length)\n );\n}\n","import { maskitoTransform, 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\";\nimport { createYearlessDateSegmentsSteppingPlugin } from \"./yearlessDateSegmentsStepping\";\n\nconst yearlessDatePlaceholderMask = ({\n mode,\n separator = \"/\",\n placeholder,\n enableStepping = false,\n}: {\n mode: YearlessDateMode;\n enableStepping: boolean;\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([\n ...(dateOptions.plugins || []),\n ...(enableStepping\n ? [createYearlessDateSegmentsSteppingPlugin({ mode })]\n : []),\n ]),\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 const transform = (value: string) => {\n return maskitoTransform(value, datePlaceholderMask);\n };\n\n return { options: datePlaceholderMask, removePlaceholder, transform };\n};\n\nexport default yearlessDatePlaceholderMask;\n","import { useMaskito } from \"@maskito/react\";\nimport {\n forwardRef,\n InputHTMLAttributes,\n useCallback,\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\";\nimport { swapMode, stringifyYearlessDate, parseInputValue } from \"./utils\";\nimport textFieldStyles from \"../../TextField/TextField.module.scss\";\nimport dateFieldYearlessStyles from \"../DateFieldYearless.module.scss\";\nimport cx from \"classnames\";\nimport { PassThroughPropsWithRef, Size } from \"../../../types\";\nimport { Spinner } from \"../../Spinner\";\n\nexport type YearlessDateInputChange = {\n event: React.ChangeEvent<HTMLInputElement> | null;\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n};\n\nexport type YearlessDateInputChangeHandler = (\n change: YearlessDateInputChange,\n) => void;\n\nexport type YearlessDateInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"value\" | \"ref\" | \"size\"\n> & {\n onChange: YearlessDateInputChangeHandler;\n mode?: YearlessDateMode;\n value?: YearlessDate | null;\n error?: boolean;\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n wrapperProps?: PassThroughPropsWithRef<\"div\">;\n rootProps?: PassThroughPropsWithRef<\"div\">;\n loading?: boolean;\n enableStepping?: boolean;\n};\n\nexport type YearlessDateInputRef = HTMLInputElement & {\n setValue: (value: YearlessDate | null) => {\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n };\n removePlaceholder: (value: string) => string;\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 YearlessDateInput = forwardRef<\n YearlessDateInputRef,\n YearlessDateInputProps\n>(\n (\n {\n onChange,\n mode = \"mm/dd\",\n value,\n error,\n size,\n wrapperProps,\n rootProps,\n loading = false,\n enableStepping = false,\n className: classNameProp,\n ...restProps\n },\n ref,\n ) => {\n const placeholder = \"__/__\";\n const [inputValue, setInputValue] = useState(placeholder);\n const { options, removePlaceholder, transform } =\n yearlessDatePlaceholderMask({\n mode,\n placeholder,\n enableStepping,\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 const triggerAutoChange = useCallback(\n (stringValue: string) => {\n const {\n value: v,\n isInputValid,\n isInputEmpty,\n } = parseInputValue(stringValue, mode, removePlaceholder);\n onChange?.({\n event: null,\n value: v,\n isInputValid,\n isInputEmpty,\n });\n },\n [mode, removePlaceholder, onChange],\n );\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 const stringValue = stringifyYearlessDate(\n value.day,\n value.month,\n mode,\n );\n const transformedValue = transform(stringValue);\n setInputValue(transformedValue);\n if (transformedValue !== stringValue) {\n triggerAutoChange(transformedValue);\n }\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, transform, triggerAutoChange]);\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 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 YearlessDateInputRef;\n return Object.assign(input, {\n setValue: (value: YearlessDate | null) => {\n if (!value) {\n setInputValue(placeholder);\n return parseInputValue(placeholder, mode, removePlaceholder);\n }\n const valueAsString = stringifyYearlessDate(\n value.day ?? null,\n value.month ?? null,\n mode,\n );\n const transformedValue = transform(valueAsString);\n setInputValue(transformedValue);\n return parseInputValue(transformedValue, mode, removePlaceholder);\n },\n removePlaceholder,\n });\n }, [mode, placeholder, removePlaceholder, transform]);\n\n return (\n <div\n className={cx(textFieldStyles[\"textfield\"])}\n data-anv=\"yearless-date-input\"\n {...rootProps}\n >\n <div\n {...wrapperProps}\n className={cx(\n textFieldStyles[\"input-wrapper\"],\n wrapperProps?.className,\n {\n [textFieldStyles[\"small\"]]: size === \"small\",\n [textFieldStyles[\"large\"]]: size === \"large\",\n [dateFieldYearlessStyles[\"small\"]]: size === \"small\",\n [dateFieldYearlessStyles[\"large\"]]: size === \"large\",\n },\n )}\n >\n <input\n {...restProps}\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 value={inputValue}\n onChange={handleChange}\n className={cx(\n textFieldStyles[\"input\"],\n dateFieldYearlessStyles[\"input\"],\n {\n [textFieldStyles[\"error\"]]: error ?? false,\n },\n classNameProp,\n )}\n />\n {loading ? (\n <div className={textFieldStyles[\"loading-spinner-wrapper\"]}>\n <Spinner />\n </div>\n ) : null}\n </div>\n </div>\n );\n },\n);\n\nYearlessDateInput.displayName = \"YearlessDateInput\";\n","import {\n forwardRef,\n InputHTMLAttributes,\n Ref,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { YearlessDateMode, YearlessDate } from \"../types\";\nimport { YearlessDateSelectionPopover } from \"./YearlessDateSelectionPopover\";\nimport { DateFieldYearlessChangeHandler } from \"../DateFieldYearless\";\nimport {\n YearlessDateInput,\n YearlessDateInputChange,\n YearlessDateInputRef,\n} from \"./YearlessDateInput\";\nimport { validateYearlessDate } from \"./utils\";\nimport {\n useFocusWithin,\n useOptionallyControlledState,\n usePopoverSupport,\n} from \"../../../internal\";\nimport { Size } from \"../../../types\";\nimport { mergeRefs } from \"../../../hooks/useMergeRefs/useMergeRefs\";\n\nexport type YearlessDateInputWithPickerProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"value\" | \"ref\" | \"size\" | \"defaultValue\" | \"onFocus\" | \"onBlur\"\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 /**\n * Whether the picker is disabled\n */\n disablePicker?: boolean;\n /**\n * The size of the input\n */\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n /**\n * Whether the input has an error\n */\n error?: boolean;\n /**\n * Whether the input is in loading state\n */\n loading?: boolean;\n /**\n * Function to call when the input is focused\n */\n onFocus?: (event: React.FocusEvent) => void;\n /**\n * Function to call when the input is blurred\n */\n onBlur?: (event: React.FocusEvent) => void;\n};\n\nexport type YearlessDateInputWithPickerRef = {\n focus: () => void;\n setValue: (value: YearlessDate | null) => void;\n};\n\nexport const YearlessDateInputWithPicker = forwardRef<\n YearlessDateInputWithPickerRef,\n YearlessDateInputWithPickerProps\n>((props, ref) => {\n const {\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange: onChangeProp,\n minDate,\n maxDate,\n unavailable,\n required,\n disablePicker = false,\n mode = \"mm/dd\",\n size = \"medium\",\n error = false,\n loading = false,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n ...restProps\n } = props;\n\n const inputRef = useRef<YearlessDateInputRef>(null);\n const popoverRef = useRef<{\n openPopover: () => void;\n closePopover: () => void;\n }>(null);\n const popoverContentRef = useRef<HTMLDivElement>(null);\n const popoverSupported = usePopoverSupport();\n\n const [value, setValue] = useOptionallyControlledState<YearlessDate | null>({\n controlledValue: valueProp,\n defaultValue: defaultValueProp,\n });\n const [tempPickerValue, setTempPickerValue] = useState<YearlessDate | null>(\n value,\n );\n\n useImperativeHandle(\n ref,\n (): YearlessDateInputWithPickerRef => ({\n focus: () => {\n if (!inputRef.current) return;\n return inputRef.current.focus();\n },\n setValue: (value: YearlessDate | null) => {\n if (!inputRef.current) return;\n inputRef.current.setValue(value);\n },\n }),\n [inputRef],\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: YearlessDateInputChange) => {\n const { event, value, ...restChange } = change;\n setValue(value);\n setTempPickerValue(value);\n onChangeProp?.({\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 const inputProps = {\n required,\n mode,\n autoComplete: \"off\",\n ...restProps,\n value: value,\n onChange: handleInputChange,\n \"data-valid\": currentValidity,\n size,\n error,\n loading,\n };\n\n const { props: focusWithinProps } = useFocusWithin({\n onFocus: (e) => {\n requestAnimationFrame(() => {\n onFocusProp?.(e);\n });\n },\n onBlur: (e) => {\n requestAnimationFrame(() => {\n onBlurProp?.(e);\n });\n popoverRef.current?.closePopover();\n },\n otherRelatedElements: popoverContentRef?.current\n ? [popoverContentRef.current]\n : [],\n });\n\n if (disablePicker || !popoverSupported) {\n return <YearlessDateInput ref={inputRef} {...inputProps} />;\n }\n\n const handlePickerChange = (newValue: YearlessDate) => {\n setTempPickerValue(newValue);\n if (!inputRef.current) return;\n if (\n (mode === \"mm/dd\" && newValue.month) ||\n (mode === \"dd/mm\" && newValue.day)\n ) {\n const valueSet = inputRef.current.setValue(newValue);\n setValue(valueSet.value);\n onChangeProp?.({\n ...valueSet,\n isValid: validateYearlessDate({\n value: valueSet.value,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n });\n }\n };\n\n const handlePickerMonthChange = (month: number | null) => {\n handlePickerChange({\n day: value?.day ?? tempPickerValue?.day ?? null,\n month,\n });\n };\n\n const handlePickerDayChange = (day: number | null) => {\n handlePickerChange({\n day,\n month: value?.month ?? tempPickerValue?.month ?? null,\n });\n };\n\n const handlePickerClose = () => {\n setTempPickerValue(null);\n };\n\n const handleInputFocus = (event: React.FocusEvent) => {\n focusWithinProps.onFocus?.(event as React.FocusEvent<HTMLElement>);\n };\n const handleInputBlur = (event: React.FocusEvent) => {\n focusWithinProps.onBlur?.(event as React.FocusEvent<HTMLElement>);\n };\n\n const handlePopoverBlur = (event: React.FocusEvent) => {\n focusWithinProps.onBlur?.(event as React.FocusEvent<HTMLElement>);\n };\n\n return (\n <YearlessDateSelectionPopover\n popoverRef={popoverRef}\n popoverContentRef={popoverContentRef}\n month={value?.month ?? tempPickerValue?.month ?? null}\n day={value?.day ?? tempPickerValue?.day ?? null}\n onMonthChange={handlePickerMonthChange}\n onDayChange={handlePickerDayChange}\n onClose={handlePickerClose}\n mode={mode}\n onBlur={handlePopoverBlur}\n >\n {({ ref, onKeyDown }) => (\n <YearlessDateInput\n {...inputProps}\n ref={mergeRefs([\n inputRef,\n ref as unknown as Ref<YearlessDateInputRef>,\n ])}\n onKeyDown={(ev) => {\n onKeyDown?.(ev);\n inputProps.onKeyDown?.(ev);\n }}\n onClick={(ev) => {\n inputProps.onClick?.(ev);\n popoverRef.current?.openPopover();\n }}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n enableStepping\n />\n )}\n </YearlessDateSelectionPopover>\n );\n});\n\nYearlessDateInputWithPicker.displayName = \"YearlessDateInputWithPicker\";\n"],"names":["Icon","Check","item","value","ref"],"mappings":"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"}
@@ -0,0 +1,199 @@
1
+ @layer starter, reset, base, state, application;
2
+ @layer reset {
3
+ ._listbox_hme83_2, ._picker-list_hme83_2 {
4
+ all: unset;
5
+ font-family: var(--font-family-base, "Nunito Sans", sans-serif);
6
+ font-size: 100%;
7
+ color: var(--foreground-color, #141414);
8
+ margin: 0;
9
+ padding: 0;
10
+ border-style: none;
11
+ border-width: 0;
12
+ border-color: transparent;
13
+ box-sizing: border-box;
14
+ display: flex;
15
+ }
16
+ ._listbox_hme83_2 ._option_hme83_15, ._picker-list_hme83_2 ._option_hme83_15, ._listbox_hme83_2 ._picker-list-option_hme83_15, ._picker-list_hme83_2 ._picker-list-option_hme83_15 {
17
+ all: unset;
18
+ font-family: var(--font-family-base, "Nunito Sans", sans-serif);
19
+ font-size: 100%;
20
+ color: var(--foreground-color, #141414);
21
+ margin: 0;
22
+ padding: 0;
23
+ border-style: none;
24
+ border-width: 0;
25
+ border-color: transparent;
26
+ box-sizing: border-box;
27
+ display: flex;
28
+ }
29
+ }
30
+ @layer base {
31
+ ._listbox_hme83_2, ._picker-list_hme83_2 {
32
+ flex-direction: column;
33
+ gap: 0.25rem;
34
+ border-radius: 0.375rem;
35
+ padding-block: 0.5rem;
36
+ padding-inline: 0.5rem;
37
+ }
38
+ ._listbox_hme83_2:focus-visible ._option_hme83_15[data-focused=true], ._picker-list_hme83_2:focus-visible ._option_hme83_15[data-focused=true], ._listbox_hme83_2:focus-visible [data-focused=true]._picker-list-option_hme83_15, ._picker-list_hme83_2:focus-visible [data-focused=true]._picker-list-option_hme83_15 {
39
+ outline-width: 0.125rem;
40
+ }
41
+ ._listbox_hme83_2:focus-visible ._option_hme83_15[data-focused=true][aria-selected=true], ._picker-list_hme83_2:focus-visible ._option_hme83_15[data-focused=true][aria-selected=true], ._listbox_hme83_2:focus-visible [data-focused=true][aria-selected=true]._picker-list-option_hme83_15, ._picker-list_hme83_2:focus-visible [data-focused=true][aria-selected=true]._picker-list-option_hme83_15 {
42
+ outline-width: 0.125rem;
43
+ }
44
+ ._listbox_hme83_2 ._option-group_hme83_43, ._picker-list_hme83_2 ._option-group_hme83_43 {
45
+ gap: 0.25rem;
46
+ display: flex;
47
+ flex-direction: column;
48
+ }
49
+ ._listbox_hme83_2 ._option-group_hme83_43:not(:first-of-type), ._picker-list_hme83_2 ._option-group_hme83_43:not(:first-of-type) {
50
+ margin-block-start: 0.5rem;
51
+ }
52
+ ._listbox_hme83_2 ._option-group_hme83_43:not(:first-of-type) ._label_hme83_51, ._picker-list_hme83_2 ._option-group_hme83_43:not(:first-of-type) ._label_hme83_51 {
53
+ padding-block-start: 1rem;
54
+ padding-block-end: 0.5rem;
55
+ padding-inline-start: 1rem;
56
+ padding-inline-end: 1rem;
57
+ border-top: 0.0625rem solid var(--border-color-subdued, #dfe0e1);
58
+ }
59
+ ._listbox_hme83_2 ._option-group_hme83_43 ._label_hme83_51, ._picker-list_hme83_2 ._option-group_hme83_43 ._label_hme83_51 {
60
+ padding-block: 0.5rem;
61
+ padding-inline: 1rem;
62
+ display: block;
63
+ }
64
+ ._listbox_hme83_2 ._option-group_hme83_43 ._label_hme83_51._disabled_hme83_63, ._picker-list_hme83_2 ._option-group_hme83_43 ._label_hme83_51._disabled_hme83_63 {
65
+ opacity: 0.6;
66
+ }
67
+ ._listbox_hme83_2 ._option_hme83_15, ._picker-list_hme83_2 ._option_hme83_15, ._listbox_hme83_2 ._picker-list-option_hme83_15, ._picker-list_hme83_2 ._picker-list-option_hme83_15 {
68
+ cursor: pointer;
69
+ position: relative;
70
+ font-size: 0.875rem;
71
+ color: var(--foreground-color, #141414);
72
+ padding-block: 0.5rem;
73
+ padding-inline: 1rem;
74
+ border-radius: 0.375rem;
75
+ line-height: 1.125rem;
76
+ outline-offset: 0.125rem;
77
+ outline: 0 solid var(--focus-ring-color, #0265DC);
78
+ }
79
+ ._listbox_hme83_2 ._option_hme83_15::before, ._picker-list_hme83_2 ._option_hme83_15::before, ._listbox_hme83_2 ._picker-list-option_hme83_15::before, ._picker-list_hme83_2 ._picker-list-option_hme83_15::before {
80
+ position: absolute;
81
+ inset-block-start: 0;
82
+ inset-block-end: 0;
83
+ inset-inline-start: 0;
84
+ inset-inline-end: 0;
85
+ width: 100%;
86
+ height: 100%;
87
+ border-radius: inherit;
88
+ }
89
+ ._listbox_hme83_2 ._option_hme83_15 ._children_hme83_88, ._picker-list_hme83_2 ._option_hme83_15 ._children_hme83_88, ._listbox_hme83_2 ._picker-list-option_hme83_15 ._children_hme83_88, ._picker-list_hme83_2 ._picker-list-option_hme83_15 ._children_hme83_88 {
90
+ padding-inline-end: 0.5rem;
91
+ }
92
+ ._listbox_hme83_2 ._option_hme83_15 ._Icon_hme83_91, ._picker-list_hme83_2 ._option_hme83_15 ._Icon_hme83_91, ._listbox_hme83_2 ._picker-list-option_hme83_15 ._Icon_hme83_91, ._picker-list_hme83_2 ._picker-list-option_hme83_15 ._Icon_hme83_91 {
93
+ padding-block-start: 0.0625rem;
94
+ }
95
+ }
96
+ @layer state {
97
+ ._listbox_hme83_2:focus-visible ._option_hme83_15[data-focused=true], ._picker-list_hme83_2:focus-visible ._option_hme83_15[data-focused=true], ._listbox_hme83_2:focus-visible [data-focused=true]._picker-list-option_hme83_15, ._picker-list_hme83_2:focus-visible [data-focused=true]._picker-list-option_hme83_15 {
98
+ outline-width: 0.125rem;
99
+ }
100
+ ._listbox_hme83_2:focus-visible ._option_hme83_15[data-focused=true][aria-selected=true], ._picker-list_hme83_2:focus-visible ._option_hme83_15[data-focused=true][aria-selected=true], ._listbox_hme83_2:focus-visible [data-focused=true][aria-selected=true]._picker-list-option_hme83_15, ._picker-list_hme83_2:focus-visible [data-focused=true][aria-selected=true]._picker-list-option_hme83_15 {
101
+ outline-width: 0.125rem;
102
+ }
103
+ ._listbox_hme83_2 ._option-group_hme83_43 ._label_hme83_51._disabled_hme83_63, ._picker-list_hme83_2 ._option-group_hme83_43 ._label_hme83_51._disabled_hme83_63 {
104
+ opacity: 0.6;
105
+ }
106
+ ._option_hme83_15[data-interactive=focus-visible]:not([aria-disabled=true]), [data-interactive=focus-visible]._picker-list-option_hme83_15:not([aria-disabled=true]) {
107
+ outline-width: 0.125rem;
108
+ }
109
+ ._option_hme83_15[data-interactive=focus-visible]:not([aria-disabled=true])[aria-selected=true], [data-interactive=focus-visible]._picker-list-option_hme83_15:not([aria-disabled=true])[aria-selected=true] {
110
+ outline-width: 0.125rem;
111
+ }
112
+ ._option_hme83_15[data-interactive=hover]:not([aria-disabled=true])::before, [data-interactive=hover]._picker-list-option_hme83_15:not([aria-disabled=true])::before, ._option_hme83_15:hover:not([aria-disabled=true])::before, ._picker-list-option_hme83_15:hover:not([aria-disabled=true])::before {
113
+ content: "";
114
+ background-color: var(--overlay-color-hover, rgba(20, 20, 20, 0.0784313725));
115
+ }
116
+ ._option_hme83_15[aria-disabled=true], [aria-disabled=true]._picker-list-option_hme83_15 {
117
+ opacity: 0.6;
118
+ cursor: not-allowed;
119
+ }
120
+ ._option_hme83_15[aria-selected=true], [aria-selected=true]._picker-list-option_hme83_15 {
121
+ color: var(--foreground-color-primary, #0265DC);
122
+ background-color: var(--background-color-primary-subdued, #E0F2FF);
123
+ }
124
+ ._option_hme83_15[aria-selected=true] > div[data-anv=flex], [aria-selected=true]._picker-list-option_hme83_15 > div[data-anv=flex] {
125
+ color: var(--foreground-color-primary, #0265DC);
126
+ }
127
+ ._option_hme83_15[aria-selected=true]:hover, [aria-selected=true]._picker-list-option_hme83_15:hover, ._option_hme83_15[aria-selected=true][data-interactive=hover], [aria-selected=true][data-interactive=hover]._picker-list-option_hme83_15 {
128
+ color: var(--foreground-color-hover-primary, #004491);
129
+ }
130
+ ._option_hme83_15[aria-selected=true]:hover > div[data-anv=flex], [aria-selected=true]._picker-list-option_hme83_15:hover > div[data-anv=flex], ._option_hme83_15[aria-selected=true][data-interactive=hover] > div[data-anv=flex], [aria-selected=true][data-interactive=hover]._picker-list-option_hme83_15 > div[data-anv=flex] {
131
+ color: var(--foreground-color-hover-primary, #004491);
132
+ }
133
+ ._option_hme83_15[aria-selected=true]:hover:not([aria-disabled=true])::before, [aria-selected=true]._picker-list-option_hme83_15:hover:not([aria-disabled=true])::before, ._option_hme83_15[aria-selected=true][data-interactive=hover]:not([aria-disabled=true])::before, [aria-selected=true][data-interactive=hover]._picker-list-option_hme83_15:not([aria-disabled=true])::before {
134
+ background-color: var(--overlay-color-hover-primary, rgba(2, 101, 220, 0.1019607843));
135
+ }
136
+ ._option_hme83_15[aria-selected=true]:active, [aria-selected=true]._picker-list-option_hme83_15:active, ._option_hme83_15[aria-selected=true][data-interactive=active], [aria-selected=true][data-interactive=active]._picker-list-option_hme83_15 {
137
+ color: var(--foreground-color-active-primary, #004491);
138
+ }
139
+ ._option_hme83_15[aria-selected=true]:active > div[data-anv=flex], [aria-selected=true]._picker-list-option_hme83_15:active > div[data-anv=flex], ._option_hme83_15[aria-selected=true][data-interactive=active] > div[data-anv=flex], [aria-selected=true][data-interactive=active]._picker-list-option_hme83_15 > div[data-anv=flex] {
140
+ color: var(--foreground-color-active-primary, #004491);
141
+ }
142
+ ._option_hme83_15[aria-selected=true]:active:not([aria-disabled=true])::before, [aria-selected=true]._picker-list-option_hme83_15:active:not([aria-disabled=true])::before, ._option_hme83_15[aria-selected=true][data-interactive=active]:not([aria-disabled=true])::before, [aria-selected=true][data-interactive=active]._picker-list-option_hme83_15:not([aria-disabled=true])::before {
143
+ background-color: var(--overlay-color-active-primary, rgba(2, 101, 220, 0.3019607843));
144
+ }
145
+ }
146
+ [data-anv=picker-list][data-anv=picker-list] {
147
+ all: revert-layer;
148
+ width: 100%;
149
+ }
150
+
151
+ @layer reset {
152
+ ._picker-list_hme83_2 {
153
+ all: unset;
154
+ font-family: var(--font-family-base, "Nunito Sans", sans-serif);
155
+ font-size: 100%;
156
+ color: var(--foreground-color, #141414);
157
+ margin: 0;
158
+ padding: 0;
159
+ border-style: none;
160
+ border-width: 0;
161
+ border-color: transparent;
162
+ box-sizing: border-box;
163
+ display: flex;
164
+ }
165
+ ._picker-list_hme83_2 ._picker-list-option_hme83_15 {
166
+ all: unset;
167
+ font-family: var(--font-family-base, "Nunito Sans", sans-serif);
168
+ font-size: 100%;
169
+ color: var(--foreground-color, #141414);
170
+ margin: 0;
171
+ padding: 0;
172
+ border-style: none;
173
+ border-width: 0;
174
+ border-color: transparent;
175
+ box-sizing: border-box;
176
+ display: flex;
177
+ }
178
+ }
179
+ @layer base {
180
+ ._picker-list_hme83_2 {
181
+ padding: 0;
182
+ overflow: auto;
183
+ scrollbar-width: thin;
184
+ }
185
+ ._picker-list_hme83_2::-webkit-scrollbar {
186
+ width: 8px;
187
+ }
188
+ }@layer starter, reset, base, state, application;
189
+
190
+ [data-anv=yearless-date-input][data-anv=yearless-date-input] > [class*=input-wrapper] > [class*=input] {
191
+ all: revert-layer;
192
+ width: 100%;
193
+ }
194
+
195
+ @layer application {
196
+ ._scrolling-container_141ci_7 {
197
+ max-height: 240px;
198
+ }
199
+ }
@@ -22,10 +22,6 @@ export type SortedColumn = {
22
22
  * @extends ComponentPropsWithoutRef<"div">
23
23
  */
24
24
  export type DataTableProps<T> = LayoutUtilProps & ComponentPropsWithoutRef<"div"> & {
25
- /**
26
- * The data for the table. Must be an array of objects with an `id` property.
27
- */
28
- data: TableRow<T>[] | Promise<TableRow<T>[]>;
29
25
  /**
30
26
  * The columns for the table, created with the `createColumnHelper` factory function.
31
27
  */
@@ -39,6 +35,10 @@ export type DataTableProps<T> = LayoutUtilProps & ComponentPropsWithoutRef<"div"
39
35
  * The custom footer content for the table. Will be overridden by the footer content of the columns.
40
36
  */
41
37
  customFooter?: CustomTableFooterCellProps[][];
38
+ /**
39
+ * The data for the table. Must be an array of objects with an `id` property.
40
+ */
41
+ data?: TableRow<T>[] | Promise<TableRow<T>[]>;
42
42
  /**
43
43
  * The default expanded row ids. Can be "all" to expand all rows, or an array of row ids to expand specific rows.
44
44
  */
@@ -0,0 +1,5 @@
1
+ export declare const useAsyncData: <T>(dataOrPromise: T | Promise<T>) => {
2
+ data: T | null;
3
+ error: boolean;
4
+ isLoading: boolean;
5
+ };
package/dist/beta.js CHANGED
@@ -1,5 +1,5 @@
1
- export { D as DataTable, a as chipsFormatter, c as createColumnHelper, b as currencyFormatter, p as percentFormatter } from './DataTable-xUON92DR.js';
2
- export { T as Toolbar, a as ToolbarButton, c as ToolbarButtonLink, b as ToolbarButtonToggle, e as ToolbarControlGroup, g as ToolbarElement, f as ToolbarSearchField, d as ToolbarSelect } from './Toolbar-CcJa_YpH.js';
3
- export { u as useCalendarBetaProps } from './Calendar-NDOcurOz.js';
4
- export { C as Calendar } from './Calendar-8bP4LsQV.js';
1
+ export { D as DataTable, a as chipsFormatter, c as createColumnHelper, b as currencyFormatter, p as percentFormatter } from './DataTable-BkNCMaVu.js';
2
+ export { T as Toolbar, a as ToolbarButton, c as ToolbarButtonLink, b as ToolbarButtonToggle, e as ToolbarControlGroup, g as ToolbarElement, f as ToolbarSearchField, d as ToolbarSelect } from './Toolbar-XcfHQftc.js';
3
+ export { u as useCalendarBetaProps } from './Calendar-BkJs1qTF.js';
4
+ export { C as Calendar } from './Calendar-WHERvu2Y.js';
5
5
  //# sourceMappingURL=beta.js.map
@@ -1,7 +1,9 @@
1
- import { DataTrackingId } from '../../types';
1
+ import { DataTrackingId, LayoutUtilProps, Size } from '../../types';
2
2
  import { YearlessDate, YearlessDateMode } from './types';
3
- import { MaskedYearlessDateInputProps } from './internal/MaskedYearlessDateInput';
4
- export type DateFieldYearlessProps = Omit<MaskedYearlessDateInputProps, "onChange" | "value" | "defaultValue" | "ref" | "required" | "autoComplete"> & {
3
+ import { ReactElement, ReactNode, ComponentPropsWithoutRef } from 'react';
4
+ import { FieldLabelProps } from '../FieldLabel';
5
+ import { HelperProps } from '../../internal/components';
6
+ export type DateFieldYearlessProps = Omit<ComponentPropsWithoutRef<"input">, "onChange" | "value" | "defaultValue" | "ref" | "size" | "type" | "onFocus" | "onBlur"> & LayoutUtilProps & {
5
7
  /**
6
8
  * The controlled value of the date field
7
9
  */
@@ -39,6 +41,58 @@ export type DateFieldYearlessProps = Omit<MaskedYearlessDateInputProps, "onChang
39
41
  */
40
42
  dates?: YearlessDate[];
41
43
  };
44
+ /**
45
+ * Whether the picker is disabled
46
+ */
47
+ disablePicker?: boolean;
48
+ /**
49
+ * Error state or error message
50
+ */
51
+ error?: ReactElement | string | boolean;
52
+ /**
53
+ * Label for the field
54
+ */
55
+ label?: FieldLabelProps["children"];
56
+ /**
57
+ * Props for the label component
58
+ */
59
+ labelProps?: FieldLabelProps;
60
+ /**
61
+ * Description text for the field
62
+ */
63
+ description?: HelperProps["description"];
64
+ /**
65
+ * Error aria-live setting
66
+ */
67
+ errorAriaLive?: HelperProps["errorAriaLive"];
68
+ /**
69
+ * Size of the input
70
+ */
71
+ size?: Extract<Size, "small" | "medium" | "large">;
72
+ /**
73
+ * Whether the field is disabled
74
+ */
75
+ disabled?: boolean;
76
+ /**
77
+ * Whether the field is in loading state
78
+ */
79
+ loading?: boolean;
80
+ /**
81
+ * Additional info content
82
+ */
83
+ moreInfo?: ReactNode;
84
+ /**
85
+ * Whether to disable the format hint
86
+ */
87
+ disableHint?: boolean;
88
+ /**
89
+ * Function to call when the field is focused
90
+ */
91
+ onFocus?: (event: React.FocusEvent) => void;
92
+ /**
93
+ * Function to call when the field is blurred
94
+ */
95
+ onBlur?: (event: React.FocusEvent) => void;
42
96
  } & DataTrackingId;
43
97
  /**
44
98
  * Represents a change event for the DateFieldYearless component
@@ -0,0 +1,61 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ import { LayoutUtilProps } from '../../../types';
3
+ /**
4
+ * Represents an item in the picker list with a label and optional disabled state.
5
+ */
6
+ export type PickerListItem = {
7
+ /** The display label for the item */
8
+ label: string;
9
+ /** The value of the item */
10
+ value: number;
11
+ /** Whether the item is disabled and cannot be selected */
12
+ disabled?: boolean;
13
+ };
14
+ /**
15
+ * Props for the PickerList component
16
+ * @extends ComponentPropsWithoutRef<"ul">
17
+ * @extends LayoutUtilProps
18
+ */
19
+ export type PickerListProps = Omit<ComponentPropsWithoutRef<"ul">, "children"> & LayoutUtilProps & {
20
+ /** Array of items to render */
21
+ items: PickerListItem[];
22
+ /** Currently selected item (controlled) */
23
+ selected?: PickerListItem;
24
+ /** Callback when selection changes */
25
+ onSelectionChange?: (selected: PickerListItem | undefined) => void;
26
+ };
27
+ /**
28
+ * Ref methods exposed by PickerList
29
+ */
30
+ export type PickerListRef = {
31
+ /** Scroll to a specific item by label */
32
+ scrollToItem: (label: string, behavior?: ScrollBehavior) => void;
33
+ /** Scroll to a specific item by value */
34
+ scrollToValue: (value: number, behavior?: ScrollBehavior) => void;
35
+ };
36
+ /**
37
+ * PickerList component for selecting items from a list.
38
+ *
39
+ * Features:
40
+ * - Single selection mode only
41
+ * - Mouse click selection
42
+ * - Programmatic scrolling to specific items
43
+ * - Support for disabled items
44
+ * - Accessible with proper ARIA attributes
45
+ * - Visual consistency with Listbox component
46
+ *
47
+ * @example
48
+ * <PickerList
49
+ * items={months}
50
+ * selected={selectedMonth}
51
+ * onSelectionChange={handleMonthChange}
52
+ * />
53
+ */
54
+ export declare const PickerList: import('react').ForwardRefExoticComponent<Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLUListElement>, HTMLUListElement>, "ref">, "children"> & LayoutUtilProps & {
55
+ /** Array of items to render */
56
+ items: PickerListItem[];
57
+ /** Currently selected item (controlled) */
58
+ selected?: PickerListItem;
59
+ /** Callback when selection changes */
60
+ onSelectionChange?: (selected: PickerListItem | undefined) => void;
61
+ } & import('react').RefAttributes<PickerListRef>>;
@@ -0,0 +1,61 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ import { FlexProps } from '../../Flex';
3
+ import { DataTrackingId } from '../../../types';
4
+ /**
5
+ * Props for the PickerListOption component
6
+ * @extends ComponentPropsWithoutRef<"li">
7
+ */
8
+ export type PickerListOptionProps = ComponentPropsWithoutRef<"li"> & {
9
+ /** The item object containing label, value, and optional disabled state */
10
+ item: {
11
+ label: string;
12
+ value: number;
13
+ disabled?: boolean;
14
+ };
15
+ /** Whether this option is currently selected */
16
+ isSelected: boolean;
17
+ /** Callback when this option is selected */
18
+ onSelectionChange: (selected: {
19
+ label: string;
20
+ value: number;
21
+ } | undefined) => void;
22
+ /** Flex alignment for items */
23
+ alignItems?: FlexProps["alignItems"];
24
+ /** Flex justification for items */
25
+ justifyItems?: FlexProps["justifyItems"];
26
+ /** Flex alignment for content */
27
+ alignContent?: FlexProps["alignContent"];
28
+ /** Flex justification for content */
29
+ justifyContent?: FlexProps["justifyContent"];
30
+ /** Flex place-items property */
31
+ placeItems?: FlexProps["placeItems"];
32
+ /** Flex place-content property */
33
+ placeContent?: FlexProps["placeContent"];
34
+ } & DataTrackingId;
35
+ export declare const PickerListOption: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & {
36
+ /** The item object containing label, value, and optional disabled state */
37
+ item: {
38
+ label: string;
39
+ value: number;
40
+ disabled?: boolean;
41
+ };
42
+ /** Whether this option is currently selected */
43
+ isSelected: boolean;
44
+ /** Callback when this option is selected */
45
+ onSelectionChange: (selected: {
46
+ label: string;
47
+ value: number;
48
+ } | undefined) => void;
49
+ /** Flex alignment for items */
50
+ alignItems?: FlexProps["alignItems"];
51
+ /** Flex justification for items */
52
+ justifyItems?: FlexProps["justifyItems"];
53
+ /** Flex alignment for content */
54
+ alignContent?: FlexProps["alignContent"];
55
+ /** Flex justification for content */
56
+ justifyContent?: FlexProps["justifyContent"];
57
+ /** Flex place-items property */
58
+ placeItems?: FlexProps["placeItems"];
59
+ /** Flex place-content property */
60
+ placeContent?: FlexProps["placeContent"];
61
+ } & DataTrackingId & import('react').RefAttributes<HTMLLIElement>>;