@servicetitan/anvil2 2.9.2 → 3.0.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 (499) hide show
  1. package/CHANGELOG.md +79 -2
  2. package/dist/{AiMark-DhgDh95y.js → AiMark-B1-M3ZgP.js} +27 -26
  3. package/dist/{AiMark-DhgDh95y.js.map → AiMark-B1-M3ZgP.js.map} +1 -1
  4. package/dist/AiMark.css +246 -256
  5. package/dist/AiMark.js +1 -1
  6. package/dist/{Alert-DffLPz0l.js → Alert-C04WIw7A.js} +20 -31
  7. package/dist/Alert-C04WIw7A.js.map +1 -0
  8. package/dist/Alert.css +72 -90
  9. package/dist/Alert.js +1 -1
  10. package/dist/{Announcement-B9zm-_1S.js → Announcement-_C5g2Lzm.js} +14 -14
  11. package/dist/{Announcement-B9zm-_1S.js.map → Announcement-_C5g2Lzm.js.map} +1 -1
  12. package/dist/Announcement.css +108 -97
  13. package/dist/Announcement.js +1 -1
  14. package/dist/{AnvilProvider-DUPYyMc7.js → AnvilProvider-JXEbeQjR.js} +13 -8
  15. package/dist/AnvilProvider-JXEbeQjR.js.map +1 -0
  16. package/dist/AnvilProvider.css +1 -2
  17. package/dist/AnvilProvider.js +1 -1
  18. package/dist/{Avatar-ChybzixS.js → Avatar-BmNcLUg-.js} +2 -2
  19. package/dist/{Avatar-ChybzixS.js.map → Avatar-BmNcLUg-.js.map} +1 -1
  20. package/dist/{Avatar-BckUfs1N.js → Avatar-Cw8B8xZV.js} +24 -24
  21. package/dist/Avatar-Cw8B8xZV.js.map +1 -0
  22. package/dist/Avatar.css +116 -177
  23. package/dist/Avatar.js +2 -2
  24. package/dist/{Badge-C2W7Dls9.js → Badge-C_wTvtnB.js} +7 -7
  25. package/dist/{Badge-C2W7Dls9.js.map → Badge-C_wTvtnB.js.map} +1 -1
  26. package/dist/Badge.css +42 -50
  27. package/dist/Badge.js +1 -1
  28. package/dist/{Breadcrumbs-CkPZHJGM.js → Breadcrumbs-CAJMeA1D.js} +7 -7
  29. package/dist/{Breadcrumbs-CkPZHJGM.js.map → Breadcrumbs-CAJMeA1D.js.map} +1 -1
  30. package/dist/Breadcrumbs.css +37 -45
  31. package/dist/Breadcrumbs.js +1 -1
  32. package/dist/{Button-BdrrhBTI.js → Button-Bnt8XUI7.js} +13 -10
  33. package/dist/{Button-BdrrhBTI.js.map → Button-Bnt8XUI7.js.map} +1 -1
  34. package/dist/Button.css +274 -335
  35. package/dist/Button.js +1 -1
  36. package/dist/Button.module-DsGhJYRw.js +23 -0
  37. package/dist/Button.module-DsGhJYRw.js.map +1 -0
  38. package/dist/{ButtonCompound-Cmw3cgMY.js → ButtonCompound-DsrK7G3q.js} +11 -4
  39. package/dist/ButtonCompound-DsrK7G3q.js.map +1 -0
  40. package/dist/ButtonCompound.css +25 -0
  41. package/dist/ButtonCompound.js +1 -1
  42. package/dist/{ButtonLink-BJKTJER8.js → ButtonLink-j3h_wRNi.js} +9 -6
  43. package/dist/ButtonLink-j3h_wRNi.js.map +1 -0
  44. package/dist/ButtonLink.js +1 -1
  45. package/dist/{ButtonToggle-DaFQ3DBG.js → ButtonToggle-Ct9_5bhC.js} +7 -4
  46. package/dist/ButtonToggle-Ct9_5bhC.js.map +1 -0
  47. package/dist/ButtonToggle.css +109 -0
  48. package/dist/ButtonToggle.js +1 -1
  49. package/dist/{Calendar-CaWPwtb3.js → Calendar-BAbAagIx.js} +2 -2
  50. package/dist/{Calendar-CaWPwtb3.js.map → Calendar-BAbAagIx.js.map} +1 -1
  51. package/dist/{Calendar-0DG2so95.js → Calendar-CaCMa_jq.js} +38 -35
  52. package/dist/Calendar-CaCMa_jq.js.map +1 -0
  53. package/dist/Calendar.css +250 -301
  54. package/dist/Calendar.js +2 -2
  55. package/dist/{Card-wz71dEVA.js → Card-DSFuXUGk.js} +11 -11
  56. package/dist/{Card-wz71dEVA.js.map → Card-DSFuXUGk.js.map} +1 -1
  57. package/dist/Card.css +51 -65
  58. package/dist/Card.js +1 -1
  59. package/dist/{Checkbox-B1I1OfZU.js → Checkbox-BSAS8-DM.js} +28 -39
  60. package/dist/Checkbox-BSAS8-DM.js.map +1 -0
  61. package/dist/{Checkbox-CTR7JfWk.js → Checkbox-Ckl8EFpF.js} +2 -2
  62. package/dist/{Checkbox-CTR7JfWk.js.map → Checkbox-Ckl8EFpF.js.map} +1 -1
  63. package/dist/Checkbox.css +237 -271
  64. package/dist/Checkbox.js +1 -1
  65. package/dist/Checkbox.module-TYMeYIxw.js +28 -0
  66. package/dist/Checkbox.module-TYMeYIxw.js.map +1 -0
  67. package/dist/{Chip-lIWu8uXb.js → Chip-Da8c7tKP.js} +31 -23
  68. package/dist/Chip-Da8c7tKP.js.map +1 -0
  69. package/dist/Chip.css +191 -206
  70. package/dist/Chip.js +1 -1
  71. package/dist/{Combobox-Dt3AnO9Z.js → Combobox-CBLaT1lU.js} +59 -72
  72. package/dist/Combobox-CBLaT1lU.js.map +1 -0
  73. package/dist/Combobox.css +158 -176
  74. package/dist/Combobox.js +1 -1
  75. package/dist/{DataTable-bMoIuYBK.js → DataTable-BDXdCF7J.js} +73 -72
  76. package/dist/{DataTable-bMoIuYBK.js.map → DataTable-BDXdCF7J.js.map} +1 -1
  77. package/dist/DataTable.css +593 -780
  78. package/dist/{DateFieldRange-B_D6v-F7.js → DateFieldRange-DPTC3EZz.js} +6 -6
  79. package/dist/{DateFieldRange-B_D6v-F7.js.map → DateFieldRange-DPTC3EZz.js.map} +1 -1
  80. package/dist/DateFieldRange.js +1 -1
  81. package/dist/{DateFieldSingle-D_Ve0E6q.js → DateFieldSingle-w1G-zd9G.js} +6 -6
  82. package/dist/{DateFieldSingle-D_Ve0E6q.js.map → DateFieldSingle-w1G-zd9G.js.map} +1 -1
  83. package/dist/DateFieldSingle.js +1 -1
  84. package/dist/{DateFieldYearless-Bg7OLIsT.js → DateFieldYearless-DHNVc7Sd.js} +7 -7
  85. package/dist/{DateFieldYearless-Bg7OLIsT.js.map → DateFieldYearless-DHNVc7Sd.js.map} +1 -1
  86. package/dist/DateFieldYearless.js +1 -1
  87. package/dist/{DateFieldYearlessRange-C40uUmLK.js → DateFieldYearlessRange-C5ktVUgG.js} +10 -10
  88. package/dist/{DateFieldYearlessRange-C40uUmLK.js.map → DateFieldYearlessRange-C5ktVUgG.js.map} +1 -1
  89. package/dist/DateFieldYearlessRange.css +11 -19
  90. package/dist/DateFieldYearlessRange.js +1 -1
  91. package/dist/{DaysOfTheWeek-2a8Ukq59.js → DaysOfTheWeek-BubWkBZ0.js} +10 -10
  92. package/dist/{DaysOfTheWeek-2a8Ukq59.js.map → DaysOfTheWeek-BubWkBZ0.js.map} +1 -1
  93. package/dist/DaysOfTheWeek.css +19 -27
  94. package/dist/DaysOfTheWeek.js +1 -1
  95. package/dist/{Details-CZOIpNP_.js → Details-DYRJcLWL.js} +10 -10
  96. package/dist/{Details-CZOIpNP_.js.map → Details-DYRJcLWL.js.map} +1 -1
  97. package/dist/Details.css +134 -138
  98. package/dist/Details.js +1 -1
  99. package/dist/{Dialog-zxpNOCDS.js → Dialog-ByTyuybu.js} +29 -28
  100. package/dist/Dialog-ByTyuybu.js.map +1 -0
  101. package/dist/Dialog.css +108 -143
  102. package/dist/Dialog.js +1 -1
  103. package/dist/{DialogCancelButton-Czz4Wpse.js → DialogCancelButton-CbtQcf2J.js} +2 -2
  104. package/dist/{DialogCancelButton-Czz4Wpse.js.map → DialogCancelButton-CbtQcf2J.js.map} +1 -1
  105. package/dist/{Divider-B1UoK8ho.js → Divider-Ds3WKsKa.js} +19 -19
  106. package/dist/{Divider-B1UoK8ho.js.map → Divider-Ds3WKsKa.js.map} +1 -1
  107. package/dist/Divider.css +93 -169
  108. package/dist/Divider.js +1 -1
  109. package/dist/Dnd.js +1 -1
  110. package/dist/DndSort.css +18 -34
  111. package/dist/DndSort.js +10 -10
  112. package/dist/{Drawer-DkCcE434.js → Drawer-CwyfBcwt.js} +27 -28
  113. package/dist/{Drawer-DkCcE434.js.map → Drawer-CwyfBcwt.js.map} +1 -1
  114. package/dist/Drawer.css +109 -144
  115. package/dist/Drawer.js +1 -1
  116. package/dist/DrillDown.css +117 -131
  117. package/dist/DrillDown.js +1 -1
  118. package/dist/DrillDown.module-D1Bf9_yP.js +27 -0
  119. package/dist/{DrillDown.module-C8VOhzaF.js.map → DrillDown.module-D1Bf9_yP.js.map} +1 -1
  120. package/dist/{EditCard-BKHmnbKP.js → EditCard-DqLSnkih.js} +21 -20
  121. package/dist/{EditCard-BKHmnbKP.js.map → EditCard-DqLSnkih.js.map} +1 -1
  122. package/dist/EditCard.css +71 -65
  123. package/dist/EditCard.js +1 -1
  124. package/dist/{FieldLabel-M5v4-PAV.js → FieldLabel-DZWu5dMp.js} +17 -17
  125. package/dist/{FieldLabel-M5v4-PAV.js.map → FieldLabel-DZWu5dMp.js.map} +1 -1
  126. package/dist/FieldLabel.css +66 -102
  127. package/dist/FieldLabel.js +1 -1
  128. package/dist/FieldMessage-DzxfodaI.js +81 -0
  129. package/dist/FieldMessage-DzxfodaI.js.map +1 -0
  130. package/dist/FieldMessage.css +20 -29
  131. package/dist/FieldMessage.js +1 -1
  132. package/dist/{Toolbar-Dsaufi65.js → FilterBar-BU8StPPd.js} +129 -941
  133. package/dist/FilterBar-BU8StPPd.js.map +1 -0
  134. package/dist/FilterBar.css +59 -0
  135. package/dist/FilterBar.d.ts +6 -0
  136. package/dist/FilterBar.js +2 -0
  137. package/dist/FilterBar.js.map +1 -0
  138. package/dist/{Flex-WyyZm1bf.js → Flex-DOUtHiPi.js} +4 -4
  139. package/dist/{Flex-WyyZm1bf.js.map → Flex-DOUtHiPi.js.map} +1 -1
  140. package/dist/Flex.css +25 -28
  141. package/dist/Flex.js +1 -1
  142. package/dist/{Grid-DeYIx5k4.js → Grid-B1VVssDD.js} +5 -5
  143. package/dist/{Grid-DeYIx5k4.js.map → Grid-B1VVssDD.js.map} +1 -1
  144. package/dist/Grid.css +37 -54
  145. package/dist/Grid.js +1 -1
  146. package/dist/{Helper-B_FIOlhy.js → Helper-DtDeaYTn.js} +8 -10
  147. package/dist/Helper-DtDeaYTn.js.map +1 -0
  148. package/dist/Helper.css +4 -16
  149. package/dist/{Icon-DuIlne4x.js → Icon-BMMbp40n.js} +7 -7
  150. package/dist/{Icon-DuIlne4x.js.map → Icon-BMMbp40n.js.map} +1 -1
  151. package/dist/Icon.css +42 -48
  152. package/dist/Icon.js +1 -1
  153. package/dist/{InputMask-PVCfJodz.js → InputMask-EwEJlW-t.js} +3 -3
  154. package/dist/{InputMask-PVCfJodz.js.map → InputMask-EwEJlW-t.js.map} +1 -1
  155. package/dist/InputMask.js +1 -1
  156. package/dist/{InteractiveCard-GTYbR6Xy.js → InteractiveCard-CnW0m_F-.js} +7 -7
  157. package/dist/{InteractiveCard-GTYbR6Xy.js.map → InteractiveCard-CnW0m_F-.js.map} +1 -1
  158. package/dist/InteractiveCard.css +56 -57
  159. package/dist/InteractiveCard.js +1 -1
  160. package/dist/{Layout-CISAxILX.js → Layout-C2Q2hyLG.js} +80 -80
  161. package/dist/{Layout-CISAxILX.js.map → Layout-C2Q2hyLG.js.map} +1 -1
  162. package/dist/Layout.css +260 -324
  163. package/dist/Layout.js +1 -1
  164. package/dist/{Link-jTvzyXca.js → Link-BUgivkGS.js} +8 -8
  165. package/dist/{Link-jTvzyXca.js.map → Link-BUgivkGS.js.map} +1 -1
  166. package/dist/Link.css +48 -65
  167. package/dist/Link.js +1 -1
  168. package/dist/Link.module-DJc0cOlg.js +12 -0
  169. package/dist/Link.module-DJc0cOlg.js.map +1 -0
  170. package/dist/{LinkButton-DGyHR1E7.js → LinkButton-CuHSdGdj.js} +7 -16
  171. package/dist/LinkButton-CuHSdGdj.js.map +1 -0
  172. package/dist/LinkButton.js +1 -1
  173. package/dist/{List--KhCpjZn.js → List-BXyHWQ9e.js} +8 -8
  174. package/dist/{List--KhCpjZn.js.map → List-BXyHWQ9e.js.map} +1 -1
  175. package/dist/List.css +39 -58
  176. package/dist/List.js +1 -1
  177. package/dist/{ListView-DT32FdKH.js → ListView-DBO9Bl1H.js} +4 -4
  178. package/dist/{ListView-DT32FdKH.js.map → ListView-DBO9Bl1H.js.map} +1 -1
  179. package/dist/ListView.css +108 -120
  180. package/dist/ListView.js +1 -1
  181. package/dist/ListView.module-CRk9NfLG.js +9 -0
  182. package/dist/ListView.module-CRk9NfLG.js.map +1 -0
  183. package/dist/{Listbox-BR0HTJaM.js → Listbox-C0tjQFDF.js} +7 -7
  184. package/dist/{Listbox-BR0HTJaM.js.map → Listbox-C0tjQFDF.js.map} +1 -1
  185. package/dist/Listbox.css +102 -143
  186. package/dist/Listbox.js +1 -1
  187. package/dist/Listbox.module-CfpLm9pS.js +18 -0
  188. package/dist/Listbox.module-CfpLm9pS.js.map +1 -0
  189. package/dist/{LocalizationProvider-DWCyga_d.js → LocalizationProvider-CO8fQGqs.js} +2 -2
  190. package/dist/{LocalizationProvider-DWCyga_d.js.map → LocalizationProvider-CO8fQGqs.js.map} +1 -1
  191. package/dist/LocalizationProvider.js +1 -1
  192. package/dist/{Menu-CCavGohP.js → Menu-wpTyUDac.js} +10 -10
  193. package/dist/{Menu-CCavGohP.js.map → Menu-wpTyUDac.js.map} +1 -1
  194. package/dist/Menu.css +135 -137
  195. package/dist/Menu.js +1 -1
  196. package/dist/MultiSelectField.js +1 -1
  197. package/dist/{MultiSelectFieldSync-fV2O5J0N.js → MultiSelectFieldSync-ueey5UBM.js} +34 -33
  198. package/dist/MultiSelectFieldSync-ueey5UBM.js.map +1 -0
  199. package/dist/MultiSelectFieldSync.css +263 -257
  200. package/dist/MultiSelectMenu.js +1 -1
  201. package/dist/{MultiSelectMenuSync-BViWKlX1.js → MultiSelectMenuSync-D7hqugcQ.js} +4 -4
  202. package/dist/{MultiSelectMenuSync-BViWKlX1.js.map → MultiSelectMenuSync-D7hqugcQ.js.map} +1 -1
  203. package/dist/{NumberField-BxWTjbmF.js → NumberField-DJbdyatF.js} +15 -12
  204. package/dist/{NumberField-BxWTjbmF.js.map → NumberField-DJbdyatF.js.map} +1 -1
  205. package/dist/NumberField.css +34 -49
  206. package/dist/NumberField.js +1 -1
  207. package/dist/Overflow.css +143 -164
  208. package/dist/Overflow.js +44 -42
  209. package/dist/Overflow.js.map +1 -1
  210. package/dist/{Page-DFjOwTzH.js → Page-DbK-JKyB.js} +66 -66
  211. package/dist/Page-DbK-JKyB.js.map +1 -0
  212. package/dist/Page.css +384 -404
  213. package/dist/Page.js +1 -1
  214. package/dist/{Pagination-B9pdkp_V.js → Pagination-Bg5Nsdik.js} +29 -34
  215. package/dist/{Pagination-B9pdkp_V.js.map → Pagination-Bg5Nsdik.js.map} +1 -1
  216. package/dist/Pagination.css +63 -117
  217. package/dist/Pagination.js +1 -1
  218. package/dist/{Popover-CfG1IJP6.js → Popover-CyB7yzSf.js} +8 -8
  219. package/dist/{Popover-CfG1IJP6.js.map → Popover-CyB7yzSf.js.map} +1 -1
  220. package/dist/Popover.css +84 -97
  221. package/dist/Popover.js +1 -1
  222. package/dist/{ProgressBar-CFKKuXeN.js → ProgressBar-DSrjgLTx.js} +15 -15
  223. package/dist/{ProgressBar-CFKKuXeN.js.map → ProgressBar-DSrjgLTx.js.map} +1 -1
  224. package/dist/ProgressBar.css +59 -81
  225. package/dist/ProgressBar.js +1 -1
  226. package/dist/{Radio-CeVjHOXe.js → Radio-CQaXJ72d.js} +2 -2
  227. package/dist/{Radio-CeVjHOXe.js.map → Radio-CQaXJ72d.js.map} +1 -1
  228. package/dist/{Radio-Dda5sh2r.js → Radio-DO4UhbBE.js} +45 -48
  229. package/dist/Radio-DO4UhbBE.js.map +1 -0
  230. package/dist/Radio.css +233 -229
  231. package/dist/Radio.js +1 -1
  232. package/dist/{SearchField-im7AHGYo.js → SearchField-BKJOW-vI.js} +11 -20
  233. package/dist/SearchField-BKJOW-vI.js.map +1 -0
  234. package/dist/SearchField-BplvDpBG.js +13 -0
  235. package/dist/SearchField-BplvDpBG.js.map +1 -0
  236. package/dist/SearchField.css +22 -39
  237. package/dist/SearchField.js +1 -1
  238. package/dist/{SegmentedControl-B9NWUF7s.js → SegmentedControl-Chhqyyra.js} +15 -16
  239. package/dist/SegmentedControl-Chhqyyra.js.map +1 -0
  240. package/dist/SegmentedControl.css +103 -122
  241. package/dist/SegmentedControl.js +1 -1
  242. package/dist/SelectCard-CtXwY8FZ.js +351 -0
  243. package/dist/SelectCard-CtXwY8FZ.js.map +1 -0
  244. package/dist/SelectCard.css +135 -82
  245. package/dist/SelectCard.js +1 -1
  246. package/dist/SelectField.js +1 -1
  247. package/dist/{SelectFieldLabel-ChEvk0uS.js → SelectFieldLabel-DLT5dKbx.js} +3 -3
  248. package/dist/{SelectFieldLabel-ChEvk0uS.js.map → SelectFieldLabel-DLT5dKbx.js.map} +1 -1
  249. package/dist/{SelectFieldSync-CDIRIYv2.js → SelectFieldSync-W_-jTf7z.js} +9 -8
  250. package/dist/SelectFieldSync-W_-jTf7z.js.map +1 -0
  251. package/dist/SelectMenu.js +1 -1
  252. package/dist/{SelectMenuSync-DkQrikHz.js → SelectMenuSync-QcjbQtCO.js} +4 -4
  253. package/dist/{SelectMenuSync-DkQrikHz.js.map → SelectMenuSync-QcjbQtCO.js.map} +1 -1
  254. package/dist/{SelectOptions-BN1tCi7P.js → SelectOptions-BsX0f22q.js} +2 -2
  255. package/dist/{SelectOptions-BN1tCi7P.js.map → SelectOptions-BsX0f22q.js.map} +1 -1
  256. package/dist/{SelectTrigger-LZUtpAFW.js → SelectTrigger-BaDvF9JD.js} +5 -5
  257. package/dist/{SelectTrigger-LZUtpAFW.js.map → SelectTrigger-BaDvF9JD.js.map} +1 -1
  258. package/dist/SelectTrigger.js +1 -1
  259. package/dist/{SelectTriggerBase-qeFownmF.js → SelectTriggerBase-kMRqbXwu.js} +8 -7
  260. package/dist/{SelectTriggerBase-qeFownmF.js.map → SelectTriggerBase-kMRqbXwu.js.map} +1 -1
  261. package/dist/SelectTriggerBase.css +231 -305
  262. package/dist/SelectTriggerBase.module-DKF1FQnc.js +37 -0
  263. package/dist/SelectTriggerBase.module-DKF1FQnc.js.map +1 -0
  264. package/dist/{SideNav-CrxYExjh.js → SideNav-CZRVOSbt.js} +19 -14
  265. package/dist/SideNav-CZRVOSbt.js.map +1 -0
  266. package/dist/SideNav.css +126 -294
  267. package/dist/SideNav.js +1 -1
  268. package/dist/Skeleton.css +57 -65
  269. package/dist/Skeleton.js +16 -16
  270. package/dist/Skeleton.js.map +1 -1
  271. package/dist/{Spinner-BqmcE2pb.js → Spinner-lPMo68yW.js} +16 -17
  272. package/dist/Spinner-lPMo68yW.js.map +1 -0
  273. package/dist/Spinner.css +33 -43
  274. package/dist/Spinner.js +1 -1
  275. package/dist/{SrOnly-eUpYGpAT.js → SrOnly-pnf8ajnh.js} +2 -2
  276. package/dist/{SrOnly-eUpYGpAT.js.map → SrOnly-pnf8ajnh.js.map} +1 -1
  277. package/dist/SrOnly.css +12 -14
  278. package/dist/SrOnly.js +1 -1
  279. package/dist/StatusIcon-BwULopyH.js +57 -0
  280. package/dist/StatusIcon-BwULopyH.js.map +1 -0
  281. package/dist/StatusIcon.css +32 -0
  282. package/dist/{Stepper-Dt2xAXth.js → Stepper-CYY64NU1.js} +16 -16
  283. package/dist/{Stepper-Dt2xAXth.js.map → Stepper-CYY64NU1.js.map} +1 -1
  284. package/dist/Stepper.css +180 -239
  285. package/dist/Stepper.js +1 -1
  286. package/dist/{Switch-3u7oAQQV.js → Switch-DeBu4Ucg.js} +17 -13
  287. package/dist/{Switch-3u7oAQQV.js.map → Switch-DeBu4Ucg.js.map} +1 -1
  288. package/dist/Switch.css +109 -125
  289. package/dist/Switch.js +1 -1
  290. package/dist/{Tab-BZpTCG0i.js → Tab-CewPzmuK.js} +20 -34
  291. package/dist/Tab-CewPzmuK.js.map +1 -0
  292. package/dist/Tab.css +232 -194
  293. package/dist/Tab.js +1 -1
  294. package/dist/Table.js +1 -1
  295. package/dist/{Text-DQ78JchQ.js → Text-BH8gglCL.js} +15 -38
  296. package/dist/Text-BH8gglCL.js.map +1 -0
  297. package/dist/Text.css +101 -142
  298. package/dist/Text.js +1 -1
  299. package/dist/Text.module-BXrY87ui.js +23 -0
  300. package/dist/Text.module-BXrY87ui.js.map +1 -0
  301. package/dist/{TextField-DHk1k3cf.js → TextField-CRDTnuUN.js} +7 -7
  302. package/dist/{TextField-DHk1k3cf.js.map → TextField-CRDTnuUN.js.map} +1 -1
  303. package/dist/{TextField-Bu5kAe9_.js → TextField-YlMkDHp-.js} +2 -2
  304. package/dist/{TextField-Bu5kAe9_.js.map → TextField-YlMkDHp-.js.map} +1 -1
  305. package/dist/TextField.css +156 -148
  306. package/dist/TextField.js +1 -1
  307. package/dist/TextField.module-MRVo1X9H.js +23 -0
  308. package/dist/TextField.module-MRVo1X9H.js.map +1 -0
  309. package/dist/{Textarea-CYv02rxW.js → Textarea-CxXmr_Gx.js} +16 -13
  310. package/dist/{Textarea-CYv02rxW.js.map → Textarea-CxXmr_Gx.js.map} +1 -1
  311. package/dist/Textarea.css +71 -81
  312. package/dist/Textarea.js +1 -1
  313. package/dist/{ThemeProvider-CaYW3RuA.js → ThemeProvider-D4KdGCaP.js} +11 -9
  314. package/dist/ThemeProvider-D4KdGCaP.js.map +1 -0
  315. package/dist/ThemeProvider.css +586 -517
  316. package/dist/ThemeProvider.js +1 -1
  317. package/dist/{TimeField-BYtP64Qx.js → TimeField-Cz4tMYb3.js} +7 -7
  318. package/dist/{TimeField-BYtP64Qx.js.map → TimeField-Cz4tMYb3.js.map} +1 -1
  319. package/dist/TimeField.css +5 -8
  320. package/dist/TimeField.js +1 -1
  321. package/dist/{TimezoneMessage-Cnsl4cHT.js → TimezoneMessage-BrKB_psP.js} +2 -2
  322. package/dist/{TimezoneMessage-Cnsl4cHT.js.map → TimezoneMessage-BrKB_psP.js.map} +1 -1
  323. package/dist/TimezoneMessage.css +5 -5
  324. package/dist/Toast.js +2 -2
  325. package/dist/{Toaster-BRjGoIQu.js → Toaster-BV8RjmIN.js} +35 -34
  326. package/dist/Toaster-BV8RjmIN.js.map +1 -0
  327. package/dist/{Toaster-DO83u5o3.js → Toaster-DYGDohJT.js} +2 -2
  328. package/dist/{Toaster-DO83u5o3.js.map → Toaster-DYGDohJT.js.map} +1 -1
  329. package/dist/Toaster.css +210 -242
  330. package/dist/Toolbar-Dzj2KMEy.js +588 -0
  331. package/dist/Toolbar-Dzj2KMEy.js.map +1 -0
  332. package/dist/Toolbar.css +29 -204
  333. package/dist/Toolbar.js +2 -1
  334. package/dist/Toolbar.js.map +1 -1
  335. package/dist/ToolbarButtonToggle--2Ka05N8.js +284 -0
  336. package/dist/ToolbarButtonToggle--2Ka05N8.js.map +1 -0
  337. package/dist/ToolbarButtonToggle.css +41 -0
  338. package/dist/{Tooltip-C1PBRnJv.js → Tooltip-BlStOXN3.js} +8 -8
  339. package/dist/{Tooltip-C1PBRnJv.js.map → Tooltip-BlStOXN3.js.map} +1 -1
  340. package/dist/Tooltip.css +46 -58
  341. package/dist/Tooltip.js +1 -1
  342. package/dist/{YearlessDateInputWithPicker-CChqr1gR.js → YearlessDateInputWithPicker-DyytWt0x.js} +14 -16
  343. package/dist/{YearlessDateInputWithPicker-CChqr1gR.js.map → YearlessDateInputWithPicker-DyytWt0x.js.map} +1 -1
  344. package/dist/YearlessDateInputWithPicker.css +110 -196
  345. package/dist/assets/css-utils/a2-border.css +47 -45
  346. package/dist/assets/css-utils/a2-color.css +443 -227
  347. package/dist/assets/css-utils/a2-font.css +0 -2
  348. package/dist/assets/css-utils/a2-spacing.css +476 -478
  349. package/dist/assets/css-utils/a2-utils.css +992 -772
  350. package/dist/assets/css-utils/border.css +47 -45
  351. package/dist/assets/css-utils/color.css +443 -227
  352. package/dist/assets/css-utils/font.css +0 -2
  353. package/dist/assets/css-utils/spacing.css +476 -478
  354. package/dist/assets/css-utils/utils.css +992 -772
  355. package/dist/assets/icons/st/unsorted.svg +1 -1
  356. package/dist/beta/components/FilterBar/FilterBar.d.ts +87 -0
  357. package/dist/beta/components/{Toolbar/Filters → FilterBar}/FilterToggleButton.d.ts +1 -1
  358. package/dist/beta/components/FilterBar/index.d.ts +3 -0
  359. package/dist/beta/components/{Toolbar/Filters → FilterBar}/internal/FilterGroupContext.d.ts +5 -5
  360. package/dist/beta/components/{Toolbar/Filters → FilterBar}/internal/types.d.ts +2 -2
  361. package/dist/beta/components/{Toolbar/Filters → FilterBar}/internal/utils/test.d.ts +1 -0
  362. package/dist/beta/components/Toolbar/Toolbar.d.ts +0 -54
  363. package/dist/beta/components/Toolbar/index.d.ts +0 -1
  364. package/dist/beta/components/index.d.ts +1 -0
  365. package/dist/beta.js +12 -10
  366. package/dist/beta.js.map +1 -1
  367. package/dist/{indeterminate_check_box-B4zobNlt.js → check_box-0U1tbEAd.js} +2 -4
  368. package/dist/check_box-0U1tbEAd.js.map +1 -0
  369. package/dist/components/DateFieldRange/internal/MaskedDateRangeInput.d.ts +1 -1
  370. package/dist/components/DateFieldRange/internal/useDateFieldRangeConversion.d.ts +1 -1
  371. package/dist/components/DateFieldSingle/internal/MaskedDateInput.d.ts +1 -1
  372. package/dist/components/DateFieldYearless/internal/YearlessDateInput.d.ts +1 -1
  373. package/dist/components/DateFieldYearless/internal/YearlessDateInputWithPicker.d.ts +1 -1
  374. package/dist/components/NumberField/NumberField.d.ts +1 -1
  375. package/dist/components/Page/Page.d.ts +2 -2
  376. package/dist/components/SearchField/internal/SearchField.d.ts +1 -1
  377. package/dist/components/Stepper/Stepper.d.ts +1 -1
  378. package/dist/components/Stepper/StepperStep.d.ts +1 -1
  379. package/dist/components/Tab/Tab.d.ts +1 -1
  380. package/dist/components/Tab/TabButton.d.ts +1 -1
  381. package/dist/indeterminate_check_box-jjLG4UY6.js +6 -0
  382. package/dist/indeterminate_check_box-jjLG4UY6.js.map +1 -0
  383. package/dist/{index-D6ag_WQW.js → index-ByMdotWU.js} +18 -18
  384. package/dist/{index-D6ag_WQW.js.map → index-ByMdotWU.js.map} +1 -1
  385. package/dist/index.css +98 -126
  386. package/dist/index.js +85 -82
  387. package/dist/index.js.map +1 -1
  388. package/dist/index2.css +57 -74
  389. package/dist/internal/components/StatusIcon/StatusIcon.d.ts +5 -5
  390. package/dist/internal/hooks/useSelectOrchestration.d.ts +1 -1
  391. package/dist/primitive-DXlHdTFb.js +1056 -0
  392. package/dist/primitive-DXlHdTFb.js.map +1 -0
  393. package/dist/providers/ThemeProvider/ThemeProvider.d.ts +1 -0
  394. package/dist/{stripInlineMarkdown-V3M_UxQ8.js → stripInlineMarkdown-BWbMy7r_.js} +2 -2
  395. package/dist/{stripInlineMarkdown-V3M_UxQ8.js.map → stripInlineMarkdown-BWbMy7r_.js.map} +1 -1
  396. package/dist/{syncFilterUtils-DtOBvzdr.js → syncFilterUtils-nJS_tCsu.js} +50 -50
  397. package/dist/syncFilterUtils-nJS_tCsu.js.map +1 -0
  398. package/dist/syncFilterUtils.css +189 -217
  399. package/dist/token/core/component-variables.scss +1088 -131
  400. package/dist/token/core/component.d.ts +558 -0
  401. package/dist/token/core/component.js +6685 -249
  402. package/dist/token/core/component.scss +557 -69
  403. package/dist/token/core/css-utils/a2-border.css +47 -45
  404. package/dist/token/core/css-utils/a2-color.css +443 -227
  405. package/dist/token/core/css-utils/a2-font.css +0 -2
  406. package/dist/token/core/css-utils/a2-spacing.css +476 -478
  407. package/dist/token/core/css-utils/a2-utils.css +992 -772
  408. package/dist/token/core/css-utils/border.css +47 -45
  409. package/dist/token/core/css-utils/color.css +443 -227
  410. package/dist/token/core/css-utils/font.css +0 -2
  411. package/dist/token/core/css-utils/spacing.css +476 -478
  412. package/dist/token/core/css-utils/utils.css +992 -772
  413. package/dist/token/core/index.d.ts +6 -0
  414. package/dist/token/core/index.js +1 -1
  415. package/dist/token/core/primitive-variables.scss +148 -65
  416. package/dist/token/core/primitive.d.ts +209 -0
  417. package/dist/token/core/primitive.js +779 -61
  418. package/dist/token/core/primitive.scss +207 -124
  419. package/dist/token/core/semantic-variables.scss +363 -245
  420. package/dist/token/core/semantic.d.ts +221 -0
  421. package/dist/token/core/semantic.js +1592 -347
  422. package/dist/token/core/semantic.scss +219 -140
  423. package/dist/token.js +9075 -828
  424. package/dist/token.js.map +1 -1
  425. package/dist/{useBreakpoint-okJ64T1D.js → useBreakpoint-CeaUyHxh.js} +2 -2
  426. package/dist/{useBreakpoint-okJ64T1D.js.map → useBreakpoint-CeaUyHxh.js.map} +1 -1
  427. package/dist/useBreakpoint.js +1 -1
  428. package/dist/{useDrillDownContext-BssSasVB.js → useDrillDownContext-iUvoTget.js} +2 -2
  429. package/dist/{useDrillDownContext-BssSasVB.js.map → useDrillDownContext-iUvoTget.js.map} +1 -1
  430. package/dist/{useDrilldown-CK9KzXvI.js → useDrilldown-DwzT0Fse.js} +8 -8
  431. package/dist/{useDrilldown-CK9KzXvI.js.map → useDrilldown-DwzT0Fse.js.map} +1 -1
  432. package/dist/{useInitialFocus-BIvXK1Rp.js → useInitialFocus-BUxEDMEG.js} +2 -2
  433. package/dist/{useInitialFocus-BIvXK1Rp.js.map → useInitialFocus-BUxEDMEG.js.map} +1 -1
  434. package/dist/{useLayoutPropsUtil-DMDdfIah.js → useLayoutPropsUtil-CB_zHDbW.js} +3 -3
  435. package/dist/{useLayoutPropsUtil-DMDdfIah.js.map → useLayoutPropsUtil-CB_zHDbW.js.map} +1 -1
  436. package/dist/{usePopoverTransitionStates-B1opfxxn.js → usePopoverTransitionStates-CDXCdyKa.js} +2 -1
  437. package/dist/{usePopoverTransitionStates-B1opfxxn.js.map → usePopoverTransitionStates-CDXCdyKa.js.map} +1 -1
  438. package/dist/{useToggleSelection-BMXohj4f.js → useToggleSelection-CAwGOeXk.js} +2 -2
  439. package/dist/{useToggleSelection-BMXohj4f.js.map → useToggleSelection-CAwGOeXk.js.map} +1 -1
  440. package/package.json +11 -11
  441. package/dist/Alert-DffLPz0l.js.map +0 -1
  442. package/dist/AnvilProvider-DUPYyMc7.js.map +0 -1
  443. package/dist/Avatar-BckUfs1N.js.map +0 -1
  444. package/dist/Button.module-wCtFYGVD.js +0 -26
  445. package/dist/Button.module-wCtFYGVD.js.map +0 -1
  446. package/dist/ButtonCompound-Cmw3cgMY.js.map +0 -1
  447. package/dist/ButtonLink-BJKTJER8.js.map +0 -1
  448. package/dist/ButtonToggle-DaFQ3DBG.js.map +0 -1
  449. package/dist/Calendar-0DG2so95.js.map +0 -1
  450. package/dist/Checkbox-B1I1OfZU.js.map +0 -1
  451. package/dist/Checkbox.module-EkRZO48Y.js +0 -28
  452. package/dist/Checkbox.module-EkRZO48Y.js.map +0 -1
  453. package/dist/Chip-lIWu8uXb.js.map +0 -1
  454. package/dist/Combobox-Dt3AnO9Z.js.map +0 -1
  455. package/dist/Dialog-zxpNOCDS.js.map +0 -1
  456. package/dist/DrillDown.module-C8VOhzaF.js +0 -27
  457. package/dist/FieldMessage-COHqUdj5.js +0 -132
  458. package/dist/FieldMessage-COHqUdj5.js.map +0 -1
  459. package/dist/Helper-B_FIOlhy.js.map +0 -1
  460. package/dist/Link.module-CZt9wvuD.js +0 -12
  461. package/dist/Link.module-CZt9wvuD.js.map +0 -1
  462. package/dist/LinkButton-DGyHR1E7.js.map +0 -1
  463. package/dist/LinkButton.css +0 -5
  464. package/dist/ListView.module-BilDg12y.js +0 -9
  465. package/dist/ListView.module-BilDg12y.js.map +0 -1
  466. package/dist/Listbox.module-HAXMOKvC.js +0 -18
  467. package/dist/Listbox.module-HAXMOKvC.js.map +0 -1
  468. package/dist/MultiSelectFieldSync-fV2O5J0N.js.map +0 -1
  469. package/dist/Page-DFjOwTzH.js.map +0 -1
  470. package/dist/Radio-Dda5sh2r.js.map +0 -1
  471. package/dist/SearchField-im7AHGYo.js.map +0 -1
  472. package/dist/SegmentedControl-B9NWUF7s.js.map +0 -1
  473. package/dist/SelectCard-COJn0wT6.js +0 -352
  474. package/dist/SelectCard-COJn0wT6.js.map +0 -1
  475. package/dist/SelectFieldSync-CDIRIYv2.js.map +0 -1
  476. package/dist/SelectTriggerBase.module-CKoq6qzX.js +0 -38
  477. package/dist/SelectTriggerBase.module-CKoq6qzX.js.map +0 -1
  478. package/dist/SideNav-CrxYExjh.js.map +0 -1
  479. package/dist/Spinner-BqmcE2pb.js.map +0 -1
  480. package/dist/Tab-BZpTCG0i.js.map +0 -1
  481. package/dist/Text-DQ78JchQ.js.map +0 -1
  482. package/dist/TextField.module-BP-hDP5m.js +0 -22
  483. package/dist/TextField.module-BP-hDP5m.js.map +0 -1
  484. package/dist/ThemeProvider-CaYW3RuA.js.map +0 -1
  485. package/dist/Toaster-BRjGoIQu.js.map +0 -1
  486. package/dist/Toolbar-Dsaufi65.js.map +0 -1
  487. package/dist/beta/components/Toolbar/Filters/FilterGroup.d.ts +0 -25
  488. package/dist/indeterminate_check_box-B4zobNlt.js.map +0 -1
  489. package/dist/primitive-C3RFDRA8.js +0 -255
  490. package/dist/primitive-C3RFDRA8.js.map +0 -1
  491. package/dist/syncFilterUtils-DtOBvzdr.js.map +0 -1
  492. package/dist/token/core/raw.js +0 -234
  493. /package/dist/beta/components/{Toolbar/Filters → FilterBar}/FilterButton.d.ts +0 -0
  494. /package/dist/beta/components/{Toolbar/Filters → FilterBar}/FilterDateRange.d.ts +0 -0
  495. /package/dist/beta/components/{Toolbar/Filters → FilterBar}/FilterDateSingle.d.ts +0 -0
  496. /package/dist/beta/components/{Toolbar/Filters → FilterBar}/FilterDrawer.d.ts +0 -0
  497. /package/dist/beta/components/{Toolbar/Filters → FilterBar}/FilterItemWrapper.d.ts +0 -0
  498. /package/dist/beta/components/{Toolbar/Filters → FilterBar}/FilterSelect.d.ts +0 -0
  499. /package/dist/beta/components/{Toolbar/Filters → FilterBar}/internal/utils/filter-state.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"Avatar-BckUfs1N.js","sources":["../src/internal/functions/getInitial.ts","../src/components/Avatar/internal/AvatarBase.tsx","../src/components/Avatar/AvatarGroup.tsx","../src/components/Avatar/internal/Avatar.tsx"],"sourcesContent":["/**\n * Extracts initials from a full name string.\n *\n * Features:\n * - Handles single names (returns first two characters)\n * - Handles multiple names (returns first and last name initials)\n * - Automatically capitalizes all initials\n * - Filters out empty strings and whitespace\n * - Handles edge cases like empty names and single characters\n * - Preserves proper capitalization rules\n * - Returns undefined for empty or falsy input\n *\n * @param name - The full name string to extract initials from\n * @returns The initials as a string, or undefined if name is empty\n */\nexport function getInitial(name: string) {\n if (!name) return undefined;\n\n const nameArray = name.split(\" \").filter(Boolean);\n\n if (nameArray.length > 1)\n return `${nameArray[0][0]?.toUpperCase()}${nameArray[\n nameArray.length - 1\n ][0].toUpperCase()}`;\n\n if (nameArray[0][1]) {\n return `${nameArray[0][0].toUpperCase()}${nameArray[0][1].toLowerCase()}`;\n }\n return `${nameArray[0][0].toUpperCase()}`;\n}\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n useContext,\n useRef,\n useState,\n useEffect,\n useMemo,\n} from \"react\";\nimport cx from \"classnames\";\nimport tinycolor from \"tinycolor2\";\n\nimport { LayoutUtilProps, Size } from \"../../../types\";\nimport { SrOnly } from \"../../SrOnly\";\nimport {\n useAccessibleColor,\n useMergeRefs,\n usePrefersColorScheme,\n} from \"../../../hooks\";\n\nimport styles from \"./AvatarBase.module.scss\";\nimport { ThemeProviderContext } from \"../../../providers/ThemeProvider/internal/ThemeProviderContext\";\n\n/**\n * Props for the AvatarBase component\n * @extends ComponentPropsWithoutRef<\"span\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type AvatarBaseProps = ComponentPropsWithoutRef<\"span\"> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * Full name\n * @accessibility This is used for alt text and Screenreader\n */\n name: string;\n /**\n * Custom color of the AvatarBase\n */\n color?: string;\n /**\n * Image source to be used for AvatarBase\n */\n image?: string;\n /**\n * Initials to display if no image is provided\n */\n initials?: string;\n /**\n * @default medium\n */\n size?: Extract<Size, \"xsmall\" | \"small\" | \"medium\" | \"large\">;\n /**\n * Online status of the AvatarBase\n */\n status?: \"online\" | \"offline\";\n };\n\n/**\n * Base Avatar component that handles the core avatar functionality.\n *\n * Features:\n * - Renders user avatars with images or initials\n * - Supports custom colors with accessible contrast\n * - Shows online/offline status indicator\n * - Handles image loading errors gracefully\n * - Supports light and dark themes\n * - Fully accessible with screen reader support\n *\n * @example\n * <AvatarBase name=\"John Doe\" size=\"medium\" status=\"online\" />\n */\nexport const AvatarBase = forwardRef<HTMLSpanElement, AvatarBaseProps>(\n (props, ref) => {\n const {\n className,\n color,\n status,\n name,\n image,\n initials,\n style,\n size,\n ...rest\n } = props;\n\n const elRef = useRef<HTMLSpanElement>(null);\n const imgRef = useRef<HTMLImageElement>(null);\n const [hasImageErrored, setHasImageErrored] = useState(false);\n const avatarBaseClassNames = cx(styles[\"avatar-base\"], className, {\n [styles[`${size}`]]: size,\n });\n const onlineIndicatorClassNames = cx(styles[\"indicator\"], {\n [styles[\"offline\"]]: !status || status === \"offline\",\n [styles[\"online\"]]: status && status === \"online\",\n });\n\n const { mode: themeMode } = useContext(ThemeProviderContext);\n const { mode: sysMode } = usePrefersColorScheme();\n const mode = themeMode ?? sysMode;\n\n const { foreground, background, border } = useAccessibleColor(color, mode);\n\n const styleWithColor = {\n \"--int-bg-color\": color && background,\n \"--int-font-color\": color && foreground,\n \"--int-border-color\": color && border,\n ...style,\n };\n\n const onlineIndicatorBorderColor = useMemo(() => {\n if (mode === \"dark\") {\n if (color) {\n return tinycolor(background).brighten(20).toHexString();\n }\n }\n return \"var(--background-color)\";\n }, [color, mode, background]);\n\n const onlineIndicatorStyles = {\n \"--int-border-color\": onlineIndicatorBorderColor,\n } as React.CSSProperties;\n\n const onlineString = status;\n const srOnly = [name, onlineString].filter(Boolean).join(\" \");\n\n // if the image prop updates, also reset the error state for the new image\n useEffect(() => {\n if (image) {\n setHasImageErrored(false);\n }\n }, [image]);\n\n // if the image is already complete on our first render (likely due to SSR),\n // check the error state of the already complete image\n useEffect(() => {\n if (image && imgRef.current && imgRef.current.complete) {\n const img = new Image();\n img.onerror = () => setHasImageErrored(true);\n img.src = image;\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <span\n className={avatarBaseClassNames}\n style={styleWithColor}\n data-anv=\"avatarBase\"\n {...rest}\n ref={useMergeRefs([elRef, ref])}\n >\n {image && !hasImageErrored ? (\n <img\n className={styles[\"img\"]}\n aria-hidden\n src={image}\n alt={name}\n onError={() => setHasImageErrored(true)}\n ref={imgRef}\n />\n ) : initials ? (\n <span className={styles[\"initial\"]} aria-hidden>\n {initials}\n </span>\n ) : (\n <span aria-hidden>?</span>\n )}\n\n {status && (\n <span\n aria-hidden\n className={onlineIndicatorClassNames}\n style={onlineIndicatorStyles}\n />\n )}\n\n <SrOnly>{srOnly}</SrOnly>\n </span>\n );\n },\n);\n\nAvatarBase.displayName = \"AvatarBase\";\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n Children,\n isValidElement,\n cloneElement,\n CSSProperties,\n ReactElement,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./AvatarGroup.module.scss\";\nimport avatarBaseStyles from \"./internal/AvatarBase.module.scss\";\nimport type { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { AvatarBase } from \"./internal/AvatarBase\";\n\n/**\n * Props for the AvatarGroup component\n * @property {number} [max] - Maximum number of avatars to display before truncating\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"span\">\n */\nexport type AvatarGroupProps = LayoutUtilProps &\n ComponentPropsWithoutRef<\"span\"> & {\n /**\n * Max child to show before truncating\n */\n max?: number;\n };\n\n/**\n * AvatarGroup component for displaying multiple avatars in a group.\n *\n * Features:\n * - Displays multiple avatars in a stacked layout\n * - Handles overflow with a count indicator\n * - Maintains consistent sizing across all avatars\n * - Supports custom styling and layout\n * - Automatically adjusts z-index for proper stacking\n * - Fully accessible with screen reader support\n *\n * @example\n * <Avatar.Group max={3}>\n * <Avatar name=\"John Doe\" />\n * <Avatar name=\"Jane Smith\" />\n * <Avatar name=\"Bob Johnson\" />\n * <Avatar name=\"Alice Brown\" />\n * </Avatar.Group>\n */\nexport const AvatarGroup = forwardRef<HTMLSpanElement, AvatarGroupProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { className, max, style, children, ...rest } = componentProps;\n const childrenArr = Children.toArray(children);\n const inferredSize =\n (isValidElement(childrenArr[0]) && childrenArr[0].props.size) ?? \"medium\";\n const isOverflowing = max ? max < childrenArr.length : false;\n\n const overflowCount = max && childrenArr.length - max;\n\n const avatarGroupClassNames = cx(styles[\"avatar-group\"], className, {\n [styles[`${inferredSize}`]]: inferredSize,\n });\n\n const avatarBaseOverflowClassNames = cx(\n avatarBaseStyles[\"avatar-base-overflow\"],\n {\n [avatarBaseStyles[\"overflow-ten-plus\"]]:\n overflowCount && overflowCount > 9,\n },\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n return (\n <span\n ref={ref}\n className={avatarGroupClassNames}\n style={styleCombined}\n data-anv=\"avatar-group\"\n {...rest}\n >\n {childrenArr.map((child, i) => {\n let childEl = child;\n if (isValidElement(child)) {\n const nIndex = childrenArr.length - i;\n const nStyle: CSSProperties = {\n ...child.props.style,\n zIndex: nIndex,\n };\n childEl = cloneElement(child as ReactElement, {\n style: nStyle,\n });\n }\n\n if (!max) return childEl;\n if (i < max) return childEl;\n return null;\n })}\n {isOverflowing && max && (\n <AvatarBase\n className={avatarBaseOverflowClassNames}\n name={`+${overflowCount}`}\n initials={`+${overflowCount}`}\n size={inferredSize}\n />\n )}\n </span>\n );\n },\n);\n\nAvatarGroup.displayName = \"AvatarGroup\";\n","import { ComponentPropsWithoutRef, forwardRef, useMemo } from \"react\";\nimport { AvatarGroup } from \"../AvatarGroup\";\nimport { LayoutUtilProps } from \"../../../types\";\nimport { getInitial } from \"../../../internal/functions\";\n\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport { AvatarBase, AvatarBaseProps } from \"./AvatarBase\";\n\n/**\n * Props for the Avatar component\n * @property {string} name - Full name of the user. Used for alt text and screen reader announcements\n * @property {string} [color] - Custom color of the avatar. Should maintain sufficient contrast ratio for accessibility\n * @property {string} [image] - Image source to be used for avatar. Falls back to initials if image fails to load\n * @property {Extract<Size, \"small\" | \"medium\" | \"large\">} [size] - Size of the Avatar\n * @property {\"online\" | \"offline\"} [status] - Online status of the Avatar\n * @extends ComponentPropsWithoutRef<\"span\">\n * @extends Omit<AvatarBaseProps, \"initials\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type AvatarProps = ComponentPropsWithoutRef<\"span\"> &\n Omit<AvatarBaseProps, \"initials\"> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">;\n\n/**\n * Avatar component for displaying user avatars with initials or images.\n *\n * Features:\n * - Displays user initials when no image is provided\n * - Supports custom colors and sizes\n * - Shows online/offline status\n * - Fully accessible with screen reader support\n * - Automatic image fallback handling\n * - Supports layout utilities for positioning and spacing\n *\n * @example\n * <Avatar\n * name=\"John Doe\"\n * image=\"https://example.com/avatar.jpg\"\n * size=\"medium\"\n * status=\"online\"\n * />\n */\nexport const Avatar = Object.assign(\n forwardRef<HTMLSpanElement, AvatarProps>(function AvatarInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { name, style, ...rest } = componentProps;\n\n const styleWithLayout = useMemo(() => {\n return {\n ...layoutStyles,\n ...style,\n };\n }, [layoutStyles, style]);\n\n const initials = getInitial(name);\n\n return (\n <AvatarBase\n style={styleWithLayout}\n data-anv=\"avatar\"\n name={name}\n ref={ref}\n initials={rest.size === \"small\" ? initials?.[0] : initials}\n {...rest}\n />\n );\n }),\n {\n /**\n * AvatarGroup component for displaying multiple avatars in a group.\n *\n * Features:\n * - Displays multiple avatars in a stacked layout\n * - Handles overflow with a count indicator\n * - Maintains consistent sizing across all avatars\n * - Supports custom styling and layout\n * - Automatically adjusts z-index for proper stacking\n * - Fully accessible with screen reader support\n *\n * @example\n * <Avatar.Group max={3}>\n * <Avatar name=\"John Doe\" />\n * <Avatar name=\"Jane Smith\" />\n * <Avatar name=\"Bob Johnson\" />\n * <Avatar name=\"Alice Brown\" />\n * </Avatar.Group>\n */\n Group: AvatarGroup,\n },\n);\nAvatar.displayName = \"Avatar\";\n"],"names":["styles"],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import './Button.css';const button = "_button_1988s_2";
2
- const icon = "_icon_1988s_62";
3
- const loading = "_loading_1988s_70";
4
- const styles = {
5
- button: button,
6
- "type-icon": "_type-icon_1988s_16",
7
- icon: icon,
8
- loading: loading,
9
- "loading-spinner": "_loading-spinner_1988s_73",
10
- "size-xsmall": "_size-xsmall_1988s_76",
11
- "size-small": "_size-small_1988s_85",
12
- "size-medium": "_size-medium_1988s_94",
13
- "size-large": "_size-large_1988s_102",
14
- "appearance-primary": "_appearance-primary_1988s_110",
15
- "appearance-secondary": "_appearance-secondary_1988s_125",
16
- "appearance-ghost": "_appearance-ghost_1988s_140",
17
- "danger-primary": "_danger-primary_1988s_155",
18
- "danger-secondary": "_danger-secondary_1988s_170",
19
- "button-compound": "_button-compound_1988s_241",
20
- "shape-rounded": "_shape-rounded_1988s_262",
21
- "shape-pill": "_shape-pill_1988s_265",
22
- "shape-circular": "_shape-circular_1988s_268",
23
- "button-toggle": "_button-toggle_1988s_273"};
24
-
25
- export { styles as s };
26
- //# sourceMappingURL=Button.module-wCtFYGVD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Button.module-wCtFYGVD.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ButtonCompound-Cmw3cgMY.js","sources":["../src/components/ButtonCompound/ButtonCompound.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId, LayoutUtilProps } from \"../../types\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"../Button/Button.module.scss\";\n\n/**\n * Props for the ButtonCompound component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type ButtonCompoundProps = LayoutUtilProps &\n ComponentPropsWithoutRef<\"button\"> & {\n /**\n * The shape of the compound button.\n * @default rounded\n */\n shape?: \"pill\" | \"circular\" | \"rounded\";\n } &\n /**\n * Data tracking id\n */\n DataTrackingId;\n\n/**\n * ButtonCompound component for creating compound button layouts.\n *\n * Features:\n * - Three shape options (pill, circular, rounded)\n * - Transparent background for compound layouts\n * - Supports layout utilities for positioning and spacing\n * - Full accessibility support with proper ARIA attributes\n * - Flexible content support\n * - Consistent styling with other button components\n * - Hover and active state management\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ButtonCompound shape=\"circular\">\n * <Avatar name=\"John Doe\" />\n * </ButtonCompound>\n */\nexport const ButtonCompound = forwardRef(\n (props: ButtonCompoundProps, ref: Ref<HTMLButtonElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n shape = \"rounded\",\n type,\n disabled,\n children,\n style,\n ...rest\n } = componentProps;\n\n const data = {\n children: childrenToString(props.children),\n shape,\n type,\n };\n\n const trackingId = useTrackingId({\n name: \"ButtonCompound\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const buttonClassNames = cx(\n className,\n styles[\"button\"],\n styles[\"button-compound\"],\n {\n [styles[\"shape-pill\"]]: shape === \"pill\",\n [styles[\"shape-circular\"]]: shape === \"circular\",\n [styles[\"shape-rounded\"]]: shape === \"rounded\",\n },\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <button\n data-tracking-id={trackingId}\n className={buttonClassNames}\n type={type}\n disabled={disabled}\n data-anv=\"button-compound\"\n ref={ref}\n style={styleCombined}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nButtonCompound.displayName = \"ButtonCompound\";\n"],"names":[],"mappings":";;;;;;;;AA6CO,MAAM,cAAA,GAAiB,UAAA;AAAA,EAC5B,CAAC,OAA4B,GAAA,KAAgC;AAC3D,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,KAAA,GAAQ,SAAA;AAAA,MACR,IAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,QAAA,EAAU,gBAAA,CAAiB,KAAA,CAAM,QAAQ,CAAA;AAAA,MACzC,KAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,gBAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,gBAAA,GAAmB,EAAA;AAAA,MACvB,SAAA;AAAA,MACA,OAAO,QAAQ,CAAA;AAAA,MACf,OAAO,iBAAiB,CAAA;AAAA,MACxB;AAAA,QACE,CAAC,MAAA,CAAO,YAAY,CAAC,GAAG,KAAA,KAAU,MAAA;AAAA,QAClC,CAAC,MAAA,CAAO,gBAAgB,CAAC,GAAG,KAAA,KAAU,UAAA;AAAA,QACtC,CAAC,MAAA,CAAO,eAAe,CAAC,GAAG,KAAA,KAAU;AAAA;AACvC,KACF;AAEA,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAkB,UAAA;AAAA,QAClB,SAAA,EAAW,gBAAA;AAAA,QACX,IAAA;AAAA,QACA,QAAA;AAAA,QACA,UAAA,EAAS,iBAAA;AAAA,QACT,GAAA;AAAA,QACA,KAAA,EAAO,aAAA;AAAA,QACN,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ButtonLink-BJKTJER8.js","sources":["../src/components/ButtonLink/ButtonLink.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n KeyboardEvent,\n MouseEvent,\n Ref,\n forwardRef,\n} from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport {\n DataTrackingId,\n ButtonAppearance,\n LayoutUtilProps,\n Size,\n} from \"../../types\";\nimport Icon, { IconProps } from \"../Icon\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport Spinner from \"../Spinner\";\n\nimport cx from \"classnames\";\nimport styles from \"../Button/Button.module.scss\";\n\n/**\n * Props for the ButtonLink component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"a\">\n */\nexport type ButtonLinkProps = LayoutUtilProps &\n ComponentPropsWithoutRef<\"a\"> & {\n /**\n * The disabled state of the button link.\n * @default false\n */\n disabled?: boolean;\n\n /**\n * The visual variant of the button link.\n * @default secondary\n */\n appearance?: ButtonAppearance;\n\n /**\n * The size of the button link.\n * @default medium\n */\n size?: Extract<Size, \"xsmall\" | \"small\" | \"medium\" | \"large\">;\n\n /**\n * The icons of the button link.\n */\n icon?:\n | IconProps[\"svg\"]\n | {\n after: IconProps[\"svg\"];\n }\n | {\n before: IconProps[\"svg\"];\n };\n\n /**\n * The loading state of the button link.\n * If true, it will show infinite state of the loading.\n * @default false\n */\n loading?: boolean;\n } &\n /**\n * Data tracking id\n */\n DataTrackingId;\n\n/**\n * ButtonLink component for creating clickable links that look like buttons.\n *\n * Features:\n * - Multiple visual appearances (primary, secondary, ghost, danger variants)\n * - Four size options (xsmall, small, medium, large)\n * - Loading state with spinner animation\n * - Icon support (before, after, or icon-only)\n * - Full accessibility support with proper ARIA attributes\n * - Supports layout utilities for positioning and spacing\n * - Keyboard navigation support (Space and Enter keys)\n * - Automatic disabled state when loading\n * - Prevents navigation when disabled or loading\n * - Flexible content with text and/or icons\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ButtonLink href=\"/dashboard\" appearance=\"primary\" size=\"medium\">\n * Go to Dashboard\n * </ButtonLink>\n */\nexport const ButtonLink = forwardRef(\n (props: ButtonLinkProps, ref: Ref<HTMLAnchorElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n children,\n className,\n appearance = \"secondary\",\n size = \"medium\",\n icon,\n loading = false,\n disabled,\n onClick,\n onKeyUp,\n onKeyDown,\n style,\n href,\n type,\n ...rest\n } = componentProps;\n\n const data = {\n children: childrenToString(props.children),\n appearance,\n href,\n icon,\n size,\n type,\n };\n\n const iconBefore = (icon: ButtonLinkProps[\"icon\"]) => {\n if (icon && typeof icon === \"object\" && \"before\" in icon) {\n return (\n <Icon\n aria-hidden\n className={styles[\"icon\"]}\n inherit\n svg={icon.before}\n />\n );\n }\n if (icon && typeof icon !== \"object\") {\n return (\n <Icon aria-hidden className={styles[\"icon\"]} inherit svg={icon} />\n );\n }\n return;\n };\n\n const handleOnClick = (e: MouseEvent<HTMLAnchorElement>) => {\n if (disabled || loading) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLAnchorElement>) => {\n if (e.code === \"Space\") {\n e.preventDefault();\n onKeyDown?.(e);\n return;\n }\n\n onKeyDown?.(e);\n };\n\n const onKeyUpHandler = (e: KeyboardEvent<HTMLAnchorElement>) => {\n if (e.code === \"Space\" || e.code === \"Enter\") {\n e.preventDefault();\n if (onClick) {\n e.currentTarget.click();\n }\n }\n\n onKeyUp?.(e);\n };\n\n const trackingId = useTrackingId({\n name: \"ButtonLink\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const buttonClassNames = cx(className, styles[\"button\"], {\n [styles[\"appearance-primary\"]]: appearance === \"primary\",\n [styles[\"appearance-secondary\"]]: appearance === \"secondary\",\n [styles[\"appearance-ghost\"]]: appearance === \"ghost\",\n [styles[\"danger-secondary\"]]: appearance === \"danger-secondary\",\n [styles[\"danger-primary\"]]: appearance === \"danger\",\n [styles[\"size-xsmall\"]]: size === \"xsmall\",\n [styles[\"size-small\"]]: size === \"small\",\n [styles[\"size-medium\"]]: size === \"medium\",\n [styles[\"size-large\"]]: size === \"large\",\n [styles[\"type-icon\"]]: !children,\n [styles[\"loading\"]]: loading,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <a\n data-tracking-id={trackingId}\n className={buttonClassNames}\n aria-disabled={disabled || loading}\n aria-busy={loading}\n data-anv=\"button-link\"\n tabIndex={disabled || loading ? -1 : 0}\n onClick={handleOnClick}\n onKeyDown={onKeyDownHandler}\n onKeyUp={onKeyUpHandler}\n style={styleCombined}\n ref={ref}\n href={href}\n {...rest}\n >\n {loading ? (\n <Spinner inherit size=\"small\" className={styles[\"loading-spinner\"]} />\n ) : icon ? (\n iconBefore(icon)\n ) : null}\n {children}\n {typeof icon === \"object\" && \"after\" in icon ? (\n <Icon\n className={styles[\"icon\"]}\n inherit\n aria-hidden\n svg={icon.after}\n />\n ) : null}\n </a>\n );\n },\n);\n\nButtonLink.displayName = \"ButtonLink\";\n"],"names":["icon"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ButtonToggle-DaFQ3DBG.js","sources":["../src/components/ButtonToggle/ButtonToggle.tsx"],"sourcesContent":["import {\n forwardRef,\n KeyboardEvent,\n MouseEvent,\n Ref,\n useEffect,\n useState,\n} from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\nimport { Button, ButtonProps } from \"../Button/Button\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"../Button/Button.module.scss\";\n\nexport type ButtonToggleState = {\n pressed: boolean;\n value?: string;\n};\n\n/**\n * Props for the ButtonToggle component\n * @extends Omit<ButtonProps, \"appearance\" | \"loading\">\n */\nexport type ButtonToggleProps = Omit<ButtonProps, \"appearance\" | \"loading\"> & {\n /**\n * The default pressed(selected) state of the toggle button.\n * @default false\n */\n defaultChecked?: boolean;\n\n /**\n * The controlled pressed(selected) state of the toggle button.\n */\n checked?: boolean;\n\n /**\n * The value of the toggle button.\n */\n value?: string;\n\n /**\n * Callback for when pressed(selected) changes.\n */\n onChange?: (\n e: MouseEvent<HTMLButtonElement> | KeyboardEvent<HTMLButtonElement>,\n state: ButtonToggleState,\n ) => void;\n} &\n /**\n * Data tracking id\n */\n DataTrackingId;\n\n/**\n * ButtonToggle component for creating toggleable button states.\n *\n * Features:\n * - Supports both controlled and uncontrolled state management\n * - Toggle state with pressed/selected visual feedback\n * - Full accessibility support with aria-pressed attribute\n * - Callback support for state changes\n * - Supports layout utilities for positioning and spacing\n * - Inherits all button features except appearance and loading\n * - Flexible content with text and/or icons\n * - Keyboard interaction support\n * - Value association for form-like behavior\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ButtonToggle\n * defaultChecked={false}\n * onChange={(e, state) => console.log('Toggle state:', state.pressed)}\n * >\n * Toggle Me\n * </ButtonToggle>\n */\nexport const ButtonToggle = forwardRef(\n (props: ButtonToggleProps, ref: Ref<HTMLButtonElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n value,\n defaultChecked = false,\n checked,\n className,\n onClick,\n onChange,\n onKeyDown,\n style,\n icon,\n size,\n type,\n ...rest\n } = componentProps;\n\n const [isPressed, setIsPressed] = useState(checked ?? defaultChecked);\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (typeof checked === \"undefined\") {\n setIsPressed(!isPressed);\n onChange?.(e, { pressed: !isPressed, value });\n }\n onClick?.(e);\n };\n\n useEffect(() => {\n if (typeof checked === \"undefined\") return;\n setIsPressed(checked);\n }, [checked]);\n\n const data = {\n children: childrenToString(props.children),\n icon,\n size,\n value,\n type,\n };\n\n const trackingId = useTrackingId({\n name: \"ButtonToggle\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const ButtonToggleClassNames = cx(className, styles[\"button-toggle\"]);\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n return (\n <Button\n data-tracking-id={trackingId}\n data-anv=\"button-toggle\"\n aria-pressed={isPressed}\n onClick={onClickHandler}\n className={ButtonToggleClassNames}\n value={value}\n style={styleCombined}\n icon={icon}\n size={size}\n type={type}\n ref={ref}\n {...rest}\n />\n );\n },\n);\n\nButtonToggle.displayName = \"ButtonToggle\";\n"],"names":[],"mappings":";;;;;;;;;AA+EO,MAAM,YAAA,GAAe,UAAA;AAAA,EAC1B,CAAC,OAA0B,GAAA,KAAgC;AACzD,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA,cAAA,GAAiB,KAAA;AAAA,MACjB,OAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,QAAA,CAAS,WAAW,cAAc,CAAA;AAEpE,IAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KAAqC;AAC3D,MAAA,IAAI,OAAO,YAAY,WAAA,EAAa;AAClC,QAAA,YAAA,CAAa,CAAC,SAAS,CAAA;AACvB,QAAA,QAAA,GAAW,GAAG,EAAE,OAAA,EAAS,CAAC,SAAA,EAAW,OAAO,CAAA;AAAA,MAC9C;AACA,MAAA,OAAA,GAAU,CAAC,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,OAAO,YAAY,WAAA,EAAa;AACpC,MAAA,YAAA,CAAa,OAAO,CAAA;AAAA,IACtB,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,QAAA,EAAU,gBAAA,CAAiB,KAAA,CAAM,QAAQ,CAAA;AAAA,MACzC,IAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,cAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,sBAAA,GAAyB,EAAA,CAAG,SAAA,EAAW,MAAA,CAAO,eAAe,CAAC,CAAA;AAEpE,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AACA,IAAA,uBACE,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAkB,UAAA;AAAA,QAClB,UAAA,EAAS,eAAA;AAAA,QACT,cAAA,EAAc,SAAA;AAAA,QACd,OAAA,EAAS,cAAA;AAAA,QACT,SAAA,EAAW,sBAAA;AAAA,QACX,KAAA;AAAA,QACA,KAAA,EAAO,aAAA;AAAA,QACP,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Calendar-0DG2so95.js","sources":["../src/components/Calendar/CalendarContext.tsx","../src/components/Calendar/internal/utils.ts","../src/components/Calendar/CalendarNowButton.tsx","../src/components/Calendar/CalendarYearButton.tsx","../src/components/Calendar/CalendarPrevButton.tsx","../src/components/Calendar/CalendarNextButton.tsx","../src/components/Calendar/CalendarMonthButton.tsx","../src/components/Calendar/internal/CalendarDay.tsx","../src/components/Calendar/internal/CalendarWeek.tsx","../src/components/Calendar/CalendarMonth.tsx","../src/internal/components/YearSelector/internal/useYearSelectorKeys.ts","../src/internal/components/YearSelector/internal/YearItem.tsx","../src/internal/components/YearSelector/YearSelector.tsx","../src/components/Calendar/internal/CalendarMonthSelection.tsx","../src/beta/components/Calendar/CalendarBetaPropsContext.tsx","../src/beta/components/Calendar/useCalendarBetaProps.tsx","../src/components/Calendar/Calendar.tsx"],"sourcesContent":["import { createContext, Dispatch, SetStateAction, useContext } from \"react\";\nimport { CalendarProps, CalendarRangeValue, CalendarValue } from \"./Calendar\";\nimport { DateTime } from \"luxon\";\nimport { IanaZone } from \"../../types\";\n\ntype CalendarContextCommonProps = {\n /**\n * Whether the calendar should focus on the focused date.\n */\n disableAutofocus: boolean;\n /**\n * The focused date. Used to determine what month and year is currently selected.\n */\n focusedDate: DateTime;\n /**\n * The function to call when the focused date changes.\n *\n * @param date - The date that is focused.\n */\n setFocusedDate: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"focusedDate\"]>\n >;\n /**\n * The selected month. Used to determine what month is currently selected in the month button.\n */\n selectedMonth: DateTime[\"month\"];\n /**\n * The function to call when the selected month changes.\n *\n * @param month - The month that is selected.\n */\n setSelectedMonth: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"selectedMonth\"]>\n >;\n /**\n * The selected year. Used to determine what year is currently selected in the year button.\n */\n selectedYear: DateTime[\"year\"];\n /**\n * The function to call when the selected year changes.\n *\n * @param year - The year that is selected.\n */\n setSelectedYear: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"selectedYear\"]>\n >;\n /**\n * The hovered date. Used to determine what date is currently hovered over.\n */\n hoveredDate: DateTime;\n setHoveredDate: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"hoveredDate\"] | undefined>\n >;\n /**\n * The default time zone to use for the calendar.\n */\n defaultTimeZone: IanaZone;\n /**\n * The minimum date allowed.\n */\n minDate: DateTime | null;\n /**\n * The maximum date allowed.\n */\n maxDate: DateTime | null;\n /**\n * The days of the week and dates that are unavailable.\n */\n unavailable: {\n /**\n * The specific dates that are unavailable.\n */\n dates: Set<string>;\n /**\n * The days of the week that are unavailable.\n */\n daysOfWeek: Set<number>;\n };\n /**\n * The locale to use for the calendar.\n */\n locale: Exclude<CalendarProps[\"locale\"], undefined>;\n /**\n * The id of the calendar.\n */\n id: string;\n /**\n * The date format to use for the calendar.\n */\n dateFormat: Intl.DateTimeFormatOptions;\n /**\n * The day of the week to start the calendar on.\n */\n startDay: \"Sunday\" | \"Monday\";\n /**\n * Whether the calendar is controlled.\n */\n controlled?: boolean;\n /**\n * The date metadata to determine if a date has a pip associated with it.\n */\n dateMetadata?: Map<string, string>;\n};\n\nexport type CalendarSingleContextProps = CalendarContextCommonProps & {\n /**\n * The value of the calendar.\n */\n value: DateTime | null;\n /**\n * The function to call when the value changes.\n */\n setValue: Dispatch<SetStateAction<CalendarSingleContextProps[\"value\"]>>;\n /**\n * The function to call when the selection changes.\n *\n * @param data - The data to pass to the function.\n */\n onSelection?: (data: { value: CalendarValue }) => void;\n /**\n * Whether the calendar is in range mode.\n */\n range?: false;\n};\nexport type CalendarRangeContextProps = CalendarContextCommonProps & {\n /**\n * The value of the calendar.\n */\n value: { start?: DateTime | null; end?: DateTime | null };\n /**\n * The function to call when the value changes.\n */\n setValue: Dispatch<SetStateAction<CalendarRangeContextProps[\"value\"]>>;\n /**\n * The function to call when the selection changes.\n *\n * @param data - The data to pass to the function.\n */\n onSelection?: (data: { value: CalendarRangeValue }) => void;\n /**\n * Whether the calendar is in range mode.\n */\n range: true;\n};\n\nexport type CalendarContextProps =\n | CalendarSingleContextProps\n | CalendarRangeContextProps;\n\n/**\n * The context for the calendar.\n */\nexport const CalendarContext = createContext<CalendarContextProps | null>(null);\n\n/**\n * A hook to access the calendar context.\n *\n * @returns The calendar context.\n */\nexport function useCalendar(): CalendarContextProps {\n const context = useContext(CalendarContext);\n if (!context) {\n throw new Error(\"useCalendar must be used within a <Calendar>\");\n }\n return context;\n}\n","import {\n CalendarContextProps,\n CalendarRangeContextProps,\n} from \"../CalendarContext\";\nimport { DateTime } from \"luxon\";\n\nexport const isSameDay = (d1?: DateTime | null, d2?: DateTime | null) => {\n if (!d1 || !d2) return undefined;\n try {\n if (\n d1.hasSame(d2, \"month\") &&\n d1.hasSame(d2, \"year\") &&\n d1.hasSame(d2, \"day\")\n ) {\n return true;\n }\n return false;\n } catch {\n return false;\n }\n};\n\nexport const isSameMonth = (d1?: DateTime | null, d2?: DateTime | null) => {\n if (!d1 || !d2) return undefined;\n if (d1.hasSame(d2, \"month\") && d1.hasSame(d2, \"year\")) return true;\n return false;\n};\n\nexport const isSameYear = (d1?: DateTime | null, d2?: DateTime | null) => {\n if (!d1 || !d2) return undefined;\n if (d1.hasSame(d2, \"year\")) return true;\n return false;\n};\n\nexport const isUnavailableDate = (\n n: DateTime,\n unavailable: CalendarContextProps[\"unavailable\"],\n timeZone: string,\n) => {\n const tmpSet = new Set();\n unavailable.dates?.forEach((date) => {\n tmpSet.add(toDateString(DateTime.fromISO(date, { zone: timeZone })));\n });\n if (unavailable.daysOfWeek?.has(n.weekday)) {\n return true;\n }\n const dateISO = n.toISO();\n if (!dateISO) return;\n return tmpSet.has(\n toDateString(DateTime.fromISO(dateISO, { zone: timeZone })),\n );\n};\n\nexport const isBeyondMinDate = (\n n: DateTime,\n minDate: CalendarContextProps[\"minDate\"],\n) => minDate && minDate.toMillis() > n.toMillis();\n\nexport const isBeyondMaxDate = (\n n: DateTime,\n maxDate: CalendarContextProps[\"maxDate\"],\n) => maxDate && maxDate.toMillis() < n.toMillis();\n\nexport const isValidDate = (\n n: DateTime | undefined,\n minDate = \"\",\n maxDate = \"\",\n unavailable: CalendarContextProps[\"unavailable\"],\n timeZone: string,\n) => {\n if (!n) return false;\n const normalizedMinDate = normalizeDate(minDate, timeZone);\n const normalizedMaxDate = normalizeDate(maxDate, timeZone);\n if (normalizedMinDate && isBeyondMinDate(n, normalizedMinDate)) return false;\n if (normalizedMaxDate && isBeyondMaxDate(n, normalizedMaxDate)) return false;\n return !isUnavailableDate(n, unavailable, timeZone);\n};\n\nexport const normalizeDate = (date: string, defaultTimeZone: string) => {\n return DateTime.fromISO(date, { zone: defaultTimeZone }).startOf(\"day\");\n};\n\nexport const toDateString = (date: DateTime<boolean>) =>\n date.startOf(\"day\").toISO();\n\nexport function rangeUpdater(\n value: CalendarRangeContextProps[\"value\"],\n newDate: DateTime,\n setValue: CalendarRangeContextProps[\"setValue\"],\n onSelection: CalendarRangeContextProps[\"onSelection\"],\n) {\n if (value.start && isSameDay(value.start, newDate) && !value.end) {\n setValue((prev) => {\n return { ...prev, end: newDate };\n });\n onSelection?.({\n value: {\n start: toDateString(value.start) ?? undefined,\n end: toDateString(newDate) ?? undefined,\n },\n });\n return;\n }\n if (\n (!value.start && !value.end) ||\n (value.start && value.end) ||\n (value.start &&\n !value.end &&\n value.start.startOf(\"day\").toMillis() > newDate.startOf(\"day\").toMillis())\n ) {\n setValue({ start: newDate, end: null });\n onSelection?.({\n value: {\n start: toDateString(newDate) ?? undefined,\n end: undefined,\n },\n });\n return;\n }\n if (\n value.start &&\n !value.end &&\n value.start.startOf(\"day\").toMillis() < newDate.startOf(\"day\").toMillis()\n ) {\n setValue((prev) => {\n return { ...prev, end: newDate };\n });\n onSelection?.({\n value: {\n start: toDateString(value.start) ?? undefined,\n end: toDateString(newDate) ?? undefined,\n },\n });\n return;\n }\n if (!value.start && value.end) {\n setValue((prev) => {\n return { ...prev, start: newDate };\n });\n onSelection?.({\n value: {\n start: toDateString(newDate) ?? undefined,\n end: toDateString(value.end) ?? undefined,\n },\n });\n return;\n }\n}\n\nexport const getDateMetadata = (\n date: DateTime,\n dateMetadata: Map<string, string> | undefined,\n): string | undefined => {\n if (!dateMetadata) return undefined;\n const dateString = date.toISODate(); // Returns \"2024-01-15\" format\n return dateString ? dateMetadata.get(dateString) : undefined;\n};\n","import { DateTime } from \"luxon\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { MouseEvent, MouseEventHandler, forwardRef } from \"react\";\nimport {\n isBeyondMaxDate,\n isBeyondMinDate,\n isUnavailableDate,\n rangeUpdater,\n toDateString,\n} from \"./internal/utils\";\n\nexport type CalendarNowProps = {\n /**\n * @deprecated This is overridden internally\n */\n onClick?: (e: MouseEvent<HTMLButtonElement>, date: string | null) => void;\n onClickFixed?: MouseEventHandler<HTMLButtonElement> | undefined;\n} & Omit<ButtonProps, \"onClick\">;\n\n/**\n * A button that displays the current date and allows the user to select it.\n *\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the current date and allows the user to select it.\n */\nexport const CalendarNow = forwardRef<HTMLButtonElement, CalendarNowProps>(\n (props, ref) => {\n const { onClick, onClickFixed, ...rest } = props;\n const {\n setFocusedDate,\n setSelectedMonth,\n setSelectedYear,\n value,\n setValue,\n defaultTimeZone,\n unavailable,\n onSelection,\n minDate,\n maxDate,\n controlled,\n range,\n } = useCalendar();\n\n const nToday = DateTime.fromISO(DateTime.now().toISO(), {\n zone: defaultTimeZone,\n }).startOf(\"day\");\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClickFixed?.(e);\n setFocusedDate(nToday);\n setSelectedMonth(nToday.month);\n setSelectedYear(nToday.year);\n if (!range) {\n onSelection?.({\n value: toDateString(nToday) ?? undefined,\n });\n if (!controlled) {\n setValue(nToday);\n }\n return;\n }\n rangeUpdater(value, nToday, setValue, onSelection);\n };\n\n const isDisabled =\n isBeyondMaxDate(nToday, maxDate) ||\n isBeyondMinDate(nToday, minDate) ||\n isUnavailableDate(nToday, unavailable, defaultTimeZone);\n\n return (\n <Button\n ref={ref}\n onClick={onClickHandler}\n appearance=\"ghost\"\n disabled={isDisabled}\n data-anv=\"calendar-now\"\n size=\"small\"\n {...rest}\n >\n Today\n </Button>\n );\n },\n);\n\nCalendarNow.displayName = \"CalendarNowButton\";\n","import { Button, ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { forwardRef } from \"react\";\nimport IconKeyboardArrowDown from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_down.svg\";\nimport IconKeyboardArrowUp from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_up.svg\";\nimport { DateTime } from \"luxon\";\n\nexport type CalendarYearButtonProps = ButtonProps & {\n /**\n * The current selection state of the calendar.\n */\n calendarSelectionState: \"day\" | \"month\" | \"year\";\n};\n\n/**\n * A button that displays the current year and allows the user to select a different year.\n *\n * @param props.calendarSelectionState - The current selection state of the calendar.\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the current year and allows the user to select a different year.\n */\nexport const CalendarYearButton = forwardRef<\n HTMLButtonElement,\n CalendarYearButtonProps\n>((props, ref) => {\n const { calendarSelectionState, ...rest } = props;\n const { selectedYear, locale } = useCalendar();\n\n const currentYear = DateTime.fromObject({ year: selectedYear })\n .setLocale(locale)\n .toLocaleString({ year: \"numeric\" });\n\n return (\n <Button\n ref={ref}\n appearance=\"ghost\"\n size=\"small\"\n icon={{\n after:\n calendarSelectionState === \"year\"\n ? IconKeyboardArrowUp\n : IconKeyboardArrowDown,\n }}\n {...rest}\n >\n {currentYear}\n </Button>\n );\n});\n\nCalendarYearButton.displayName = \"CalendarYearButton\";\n","import { Button, ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { MouseEvent, forwardRef, useEffect, useState } from \"react\";\nimport Prev from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_left.svg\";\nimport styles from \"./Calendar.module.scss\";\nimport { isSameMonth } from \"./internal/utils\";\nimport cx from \"classnames\";\n\nexport type CalendarPrevProps = ButtonProps;\n\n/**\n * A button that displays the previous month and allows the user to select a different month.\n *\n * @param props.onClick - The function to call when the button is clicked.\n * @param props.className - The class name to apply to the button.\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the previous month and allows the user to select a different month.\n */\nexport const CalendarPrev = forwardRef<HTMLButtonElement, CalendarPrevProps>(\n (props, ref) => {\n const { onClick, className, ...rest } = props;\n const {\n focusedDate,\n setFocusedDate,\n minDate,\n setSelectedMonth,\n setSelectedYear,\n } = useCalendar();\n\n const [disabled, setDisabled] = useState(false);\n\n useEffect(() => {\n setDisabled(\n minDate != null &&\n focusedDate.minus({ month: 1 }).endOf(\"month\") < minDate,\n );\n }, [minDate, focusedDate]);\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n\n const targetMonth = focusedDate.minus({ month: 1 }).endOf(\"month\");\n const targetDate = focusedDate.minus({ month: 1 });\n\n // Check if we're crossing year boundary (January to December)\n const isCrossingYearBoundary =\n focusedDate.month === 1 && targetDate.month === 12;\n\n if (minDate !== null) {\n if (targetDate.toMillis() >= minDate?.toMillis()) {\n setFocusedDate(targetDate);\n setSelectedMonth(targetDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(targetDate.year);\n }\n return;\n }\n\n if (!isSameMonth(targetMonth, focusedDate)) {\n setFocusedDate(minDate);\n setSelectedMonth(minDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(minDate.year);\n }\n }\n return;\n }\n setFocusedDate(targetDate);\n setSelectedMonth(targetDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(targetDate.year);\n }\n };\n\n return (\n <Button\n ref={ref}\n onClick={onClickHandler}\n className={cx(styles[\"controller-button\"], className)}\n appearance=\"ghost\"\n size=\"small\"\n icon={Prev}\n data-anv=\"calendar-prev\"\n aria-label=\"Previous Month\"\n {...rest}\n disabled={disabled}\n />\n );\n },\n);\n\nCalendarPrev.displayName = \"CalendarPrevButton\";\n","import { Button, ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { MouseEvent, forwardRef, useEffect, useState } from \"react\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_right.svg\";\nimport { isSameMonth } from \"./internal/utils\";\nimport cx from \"classnames\";\nimport styles from \"./Calendar.module.scss\";\n\nexport type CalendarNextProps = ButtonProps;\n\n/**\n * A button that displays the next month and allows the user to select a different month.\n *\n * @param props.onClick - The function to call when the button is clicked.\n * @param props.className - The class name to apply to the button.\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the next month and allows the user to select a different month.\n */\nexport const CalendarNext = forwardRef<HTMLButtonElement, CalendarNextProps>(\n (props, ref) => {\n const { onClick, className, ...rest } = props;\n const {\n focusedDate,\n setFocusedDate,\n maxDate,\n setSelectedMonth,\n setSelectedYear,\n } = useCalendar();\n\n const [disabled, setDisabled] = useState(false);\n\n useEffect(() => {\n setDisabled(\n maxDate != null &&\n focusedDate.plus({ month: 1 }).startOf(\"month\") > maxDate,\n );\n }, [maxDate, focusedDate]);\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n\n const targetMonth = focusedDate.plus({ month: 1 }).startOf(\"month\");\n const targetDate = focusedDate.plus({ month: 1 });\n\n // Check if we're crossing year boundary (December to January)\n const isCrossingYearBoundary =\n focusedDate.month === 12 && targetDate.month === 1;\n\n if (maxDate !== null) {\n if (targetDate.toMillis() <= maxDate?.toMillis()) {\n setFocusedDate(targetDate);\n setSelectedMonth(targetDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(targetDate.year);\n }\n return;\n }\n\n if (!isSameMonth(targetMonth, focusedDate)) {\n setFocusedDate(maxDate);\n setSelectedMonth(maxDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(maxDate.year);\n }\n }\n return;\n }\n setFocusedDate(targetDate);\n setSelectedMonth(targetDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(targetDate.year);\n }\n };\n\n return (\n <Button\n onClick={onClickHandler}\n appearance=\"ghost\"\n size=\"small\"\n className={cx(styles[\"controller-button\"], className)}\n icon={Next}\n aria-label=\"Next Month\"\n data-anv=\"calendar-next\"\n ref={ref}\n {...rest}\n disabled={disabled}\n />\n );\n },\n);\n\nCalendarNext.displayName = \"CalendarNextButton\";\n","import { Button, ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { forwardRef } from \"react\";\nimport IconKeyboardArrowDown from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_down.svg\";\nimport IconKeyboardArrowUp from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_up.svg\";\nimport { DateTime } from \"luxon\";\n\nexport type CalendarMonthButtonProps = ButtonProps & {\n /**\n * The current selection state of the calendar.\n */\n calendarSelectionState: \"day\" | \"month\" | \"year\";\n};\n\n/**\n * A button that displays the current month and allows the user to select a different month.\n *\n * @param props.calendarSelectionState - The current selection state of the calendar.\n * @param props.onClick - The function to call when the button is clicked.\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the current month and allows the user to select a different month.\n */\nexport const CalendarMonthButton = forwardRef<\n HTMLButtonElement,\n CalendarMonthButtonProps\n>((props, ref) => {\n const { calendarSelectionState, onClick, ...rest } = props;\n const { selectedMonth, locale } = useCalendar();\n\n const currentMonth = DateTime.fromObject({ month: selectedMonth })\n .setLocale(locale)\n .toFormat(\"MMM\");\n\n return (\n <Button\n ref={ref}\n appearance=\"ghost\"\n size=\"small\"\n onClick={onClick}\n icon={{\n after:\n calendarSelectionState === \"month\"\n ? IconKeyboardArrowUp\n : IconKeyboardArrowDown,\n }}\n {...rest}\n >\n {currentMonth}\n </Button>\n );\n});\n\nCalendarMonthButton.displayName = \"CalendarMonthButton\";\n","import { useCalendar } from \"../CalendarContext\";\nimport {\n ComponentPropsWithoutRef,\n KeyboardEvent,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"../Calendar.module.scss\";\nimport { DateTime, Info } from \"luxon\";\nimport {\n isBeyondMaxDate,\n isBeyondMinDate,\n isSameDay,\n isSameMonth,\n isUnavailableDate,\n rangeUpdater,\n toDateString,\n getDateMetadata,\n} from \"./utils\";\n\nexport type CalendarDayProps = ComponentPropsWithoutRef<\"td\"> & {\n /**\n * The date to display.\n */\n date: DateTime;\n};\n\n/**\n * A component that displays a day in the calendar.\n *\n * @param props.date - The date to display.\n * @param props - The rest of the props for the td element.\n * @returns A component that displays a day in the calendar.\n */\nexport const CalendarDay = forwardRef<HTMLTableCellElement, CalendarDayProps>(\n (props, ref) => {\n const { className, date, ...rest } = props;\n const context = useCalendar();\n const {\n disableAutofocus,\n value,\n setValue,\n focusedDate,\n setFocusedDate,\n hoveredDate,\n setHoveredDate,\n onSelection,\n locale,\n minDate,\n maxDate,\n unavailable,\n defaultTimeZone,\n controlled,\n id: uid,\n range,\n dateFormat,\n startDay,\n setSelectedMonth,\n setSelectedYear,\n dateMetadata,\n } = context;\n\n const initialized = useRef(false);\n\n const futureDateSelection = useCallback(\n (targetDate: DateTime) => {\n if (maxDate !== null && targetDate.toMillis() > maxDate?.toMillis()) {\n return;\n }\n\n if (isUnavailableDate(targetDate, unavailable, defaultTimeZone)) {\n let nextFocusDate = targetDate.plus({ days: 1 });\n for (let i = 0; i < 365; i++) {\n if (\n maxDate !== null &&\n nextFocusDate.toMillis() > maxDate?.toMillis()\n ) {\n break;\n }\n if (\n isUnavailableDate(nextFocusDate, unavailable, defaultTimeZone)\n ) {\n nextFocusDate = nextFocusDate.plus({ days: 1 });\n } else {\n // setHoveredDate(nextFocusDate);\n setFocusedDate(nextFocusDate);\n break;\n }\n }\n return;\n }\n\n setFocusedDate(targetDate);\n\n if (targetDate.month !== focusedDate.month) {\n setSelectedMonth(targetDate.month);\n if (targetDate.year !== focusedDate.year) {\n setSelectedYear(targetDate.year);\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps -- we don't need to re-render when the selected month or year changes\n [maxDate, setFocusedDate, defaultTimeZone, unavailable],\n );\n\n const pastDateSelection = (targetDate: DateTime) => {\n if (minDate !== null && targetDate.toMillis() < minDate?.toMillis()) {\n return;\n }\n\n if (isUnavailableDate(targetDate, unavailable, defaultTimeZone)) {\n let prevFocusDate = targetDate.minus({ days: 1 });\n for (let i = 0; i < 365; i++) {\n if (\n minDate !== null &&\n prevFocusDate.toMillis() < minDate?.toMillis()\n ) {\n break;\n }\n if (isUnavailableDate(prevFocusDate, unavailable, defaultTimeZone)) {\n prevFocusDate = prevFocusDate.minus({ days: 1 });\n } else {\n // setHoveredDate(prevFocusDate);\n setFocusedDate(prevFocusDate);\n break;\n }\n }\n return;\n }\n\n setFocusedDate(targetDate);\n\n if (targetDate.month !== focusedDate.month) {\n setSelectedMonth(targetDate.month);\n if (targetDate.year !== focusedDate.year) {\n setSelectedYear(targetDate.year);\n }\n }\n };\n\n const isSelectedDate = (date: DateTime, compareDate?: DateTime) => {\n if (!range) {\n return isSameDay(date, compareDate ?? value);\n }\n if (value.start && value.end) {\n return (\n date.toMillis() >= value.start.startOf(\"day\").toMillis() &&\n date.toMillis() <= value.end.endOf(\"day\").toMillis()\n );\n }\n\n return isSameDay(date, value.start);\n };\n\n const isRange = (date: DateTime) => {\n if (!range) {\n return false;\n }\n if (value.start && value.end) {\n return (\n date.toMillis() >= value.start.startOf(\"day\").toMillis() &&\n date.toMillis() <= value.end.endOf(\"day\").toMillis() &&\n !isSameDay(value.start, date) &&\n !isSameDay(value.end, date)\n );\n }\n\n return false;\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n switch (e.code) {\n case \"Space\":\n case \"Enter\":\n e.preventDefault();\n if (!range) {\n if (!controlled) {\n setValue(isSameDay(value, focusedDate) ? null : focusedDate);\n }\n onSelection?.({\n value: isSameDay(value, focusedDate)\n ? undefined\n : (focusedDate\n .setZone(defaultTimeZone)\n .startOf(\"day\")\n .toISO() ?? undefined),\n });\n break;\n }\n rangeUpdater(value, focusedDate, setValue, onSelection);\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n pastDateSelection(focusedDate.minus({ days: 1 }));\n break;\n case \"ArrowRight\":\n e.preventDefault();\n futureDateSelection(focusedDate.plus({ days: 1 }));\n break;\n case \"ArrowUp\":\n e.preventDefault();\n pastDateSelection(focusedDate.minus({ days: 7 }));\n break;\n case \"ArrowDown\":\n e.preventDefault();\n futureDateSelection(focusedDate.plus({ days: 7 }));\n break;\n case \"PageUp\":\n e.preventDefault();\n if (e.shiftKey) {\n pastDateSelection(focusedDate.minus({ years: 1 }));\n break;\n }\n pastDateSelection(focusedDate.minus({ months: 1 }));\n break;\n case \"PageDown\":\n e.preventDefault();\n if (e.shiftKey) {\n futureDateSelection(focusedDate.plus({ years: 1 }));\n break;\n }\n futureDateSelection(focusedDate.plus({ months: 1 }));\n break;\n\n default:\n break;\n }\n };\n\n let startDayIndex = 6;\n switch (startDay) {\n case \"Monday\":\n startDayIndex = 0;\n break;\n case \"Sunday\":\n default:\n startDayIndex = 6;\n }\n\n const weekdaysArr: string[] = [];\n for (let i = 0; i < 7; i++) {\n const dayIndex = (startDayIndex + i) % 7;\n weekdaysArr.push(Info.weekdays(\"narrow\", { locale })[dayIndex]);\n }\n\n const firstDay = focusedDate.startOf(\"month\");\n\n const prevArr: DateTime<boolean>[] = [];\n if (firstDay.weekday !== startDayIndex + 1) {\n // Complete the first row with the previous month's dates.\n for (let i = 1; i < 8; i++) {\n const prevDay = firstDay.minus({ days: i });\n prevArr.push(prevDay);\n if (prevDay.weekday === startDayIndex + 1) break;\n }\n }\n prevArr.reverse();\n\n const onClickHandler = (d: DateTime) => {\n setFocusedDate(d);\n if (!range) {\n onSelection?.({\n value: toDateString(d.setZone(defaultTimeZone)) ?? undefined,\n });\n if (!controlled) {\n setValue(d);\n }\n return;\n }\n\n rangeUpdater(value, d, setValue, onSelection);\n };\n\n const onFocusHandler = (d: DateTime) => {\n setHoveredDate(d);\n };\n const onBlurHandler = () => {\n setHoveredDate(undefined);\n };\n\n const onMouseEnterHandler = (d: DateTime) => {\n setHoveredDate(d);\n };\n\n useEffect(() => {\n if (!initialized.current) {\n initialized.current = true;\n return;\n }\n // Skip all cells except the focused date.\n if (!isSameDay(date, focusedDate)) return;\n requestAnimationFrame(() => {\n const dateId = `${uid}-${focusedDate.toISODate()}`;\n const targetElement =\n document.getElementById(dateId) ||\n document.activeElement?.shadowRoot?.getElementById(dateId);\n // In DateField context, only move focus when a day cell is already\n // focused — prevents stealing from the input or toolbar.\n // In Shadow DOM, document.activeElement is the host; traverse into the\n // shadow root to find the actual focused element.\n const deepActiveEl =\n document.activeElement?.shadowRoot?.activeElement ??\n document.activeElement;\n const isDayFocused = !!deepActiveEl?.id?.startsWith(`${uid}-`);\n if (!disableAutofocus || isDayFocused) {\n targetElement?.focus();\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- `date` is intentionally omitted: including it causes an infinite loop because Calendar re-renders on hover create new DateTime references, retriggering this effect. The isSameDay guard above reads `date` from the closure, which is always current at effect-run time.\n }, [focusedDate, uid, disableAutofocus]);\n\n useEffect(() => {\n if (!isUnavailableDate(focusedDate, unavailable, defaultTimeZone)) return;\n futureDateSelection(focusedDate.plus({ days: 1 }));\n }, [focusedDate, futureDateSelection, defaultTimeZone, unavailable]);\n\n const isDisabled =\n !isSameMonth(date, focusedDate) ||\n isBeyondMinDate(date, minDate) ||\n isBeyondMaxDate(date, maxDate) ||\n isUnavailableDate(date, unavailable, defaultTimeZone);\n const isUnavailable = isUnavailableDate(date, unavailable, defaultTimeZone);\n\n const hasMetadata = getDateMetadata(date, dateMetadata);\n\n const hoverRange =\n range &&\n hoveredDate &&\n value.start &&\n !value.end &&\n date.toMillis() > value.start.toMillis() &&\n date.toMillis() <= hoveredDate.toMillis();\n\n const cellCx = cx(styles[\"cell\"], {\n [styles[\"selected\"]]: !isUnavailable && isSelectedDate(date),\n [styles[\"range-first\"]]:\n range &&\n value.start &&\n (value.end || hoveredDate) &&\n isSameDay(date, value.start),\n [styles[\"range-last\"]]:\n range &&\n ((value.start && value.end && isSameDay(date, value.end)) ||\n (hoverRange && isSameDay(date, hoveredDate))),\n [styles[\"range\"]]: isRange(date) || hoverRange,\n [styles[\"is-unavailable\"]]: isUnavailable,\n [styles[\"overflow\"]]: !isSameMonth(date, focusedDate),\n [styles[\"hover-last\"]]: hoverRange && isSameDay(date, hoveredDate),\n [styles[\"has-metadata\"]]: hasMetadata,\n });\n const isMinDate =\n minDate !== null && date.toMillis() <= minDate?.toMillis();\n const isMaxDate =\n maxDate !== null && date.toMillis() >= maxDate?.toMillis();\n\n return (\n <td key={date.toISODate()} role=\"gridcell\" {...rest} ref={ref}>\n {!isUnavailable && (isRange(date) || hoverRange) ? (\n <div\n role=\"presentation\"\n className={cx(styles[\"range-fill\"], {\n [styles[\"range-disabled\"]]: isDisabled,\n [styles[\"hover-last\"]]:\n hoverRange && isSameDay(date, hoveredDate),\n })}\n />\n ) : null}\n <button\n onClick={() => onClickHandler(date)}\n onFocus={() => onFocusHandler(date)}\n onBlur={() => onBlurHandler()}\n className={cellCx}\n onKeyDown={onKeyDownHandler}\n onMouseEnter={() => onMouseEnterHandler(date)}\n tabIndex={\n disableAutofocus ? -1 : isSameDay(date, focusedDate) ? 0 : -1\n }\n disabled={isDisabled ? true : undefined}\n aria-label={`${date.toLocaleString(dateFormat)}${isSelectedDate(date) ? \" selected\" : \"\"}${hasMetadata ? `, ${hasMetadata}` : \"\"}${isMinDate ? \", You are on the first available date\" : \"\"}${isMaxDate ? \", You are on the last available date\" : \"\"}`}\n id={`${uid}-${date.toISODate()}`}\n >\n {date.day}\n {hasMetadata && <span className={styles[\"pip\"]} aria-hidden=\"true\" />}\n </button>\n </td>\n );\n },\n);\n\nCalendarDay.displayName = \"CalendarDay\";\n","import { useCalendar } from \"../CalendarContext\";\nimport {\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { DateTime, Info } from \"luxon\";\nimport { isUnavailableDate } from \"./utils\";\nimport { CalendarDay } from \"./CalendarDay\";\n\nexport type CalendarWeekProps = ComponentPropsWithoutRef<\"tr\"> & {\n /**\n * @deprecated This is overridden internally\n */\n className?: ComponentPropsWithoutRef<\"tr\">[\"className\"];\n /**\n * The dates for the week.\n */\n week: DateTime[];\n};\n\n/**\n * A component that displays a week in the calendar.\n *\n * @param props - The props for the tr element.\n * @returns A component that displays a week in the calendar.\n */\nexport const CalendarWeek = forwardRef<HTMLTableRowElement, CalendarWeekProps>(\n (props, ref) => {\n const { className, week, ...rest } = props;\n const context = useCalendar();\n const {\n focusedDate,\n setFocusedDate,\n locale,\n maxDate,\n unavailable,\n defaultTimeZone,\n id: uid,\n startDay,\n } = context;\n\n const initialized = useRef(false);\n\n const futureDateSelection = useCallback(\n (targetDate: DateTime) => {\n if (maxDate !== null && targetDate.toMillis() > maxDate?.toMillis()) {\n return;\n }\n\n if (isUnavailableDate(targetDate, unavailable, defaultTimeZone)) {\n let nextFocusDate = targetDate.plus({ days: 1 });\n for (let i = 0; i < 365; i++) {\n if (\n maxDate !== null &&\n nextFocusDate.toMillis() > maxDate?.toMillis()\n ) {\n break;\n }\n if (\n isUnavailableDate(nextFocusDate, unavailable, defaultTimeZone)\n ) {\n nextFocusDate = nextFocusDate.plus({ days: 1 });\n } else {\n // setHoveredDate(nextFocusDate);\n setFocusedDate(nextFocusDate);\n break;\n }\n }\n return;\n }\n\n setFocusedDate(targetDate);\n },\n [maxDate, setFocusedDate, defaultTimeZone, unavailable],\n );\n\n let startDayIndex = 6;\n switch (startDay) {\n case \"Monday\":\n startDayIndex = 0;\n break;\n case \"Sunday\":\n default:\n startDayIndex = 6;\n }\n\n const weekdaysArr: string[] = [];\n for (let i = 0; i < 7; i++) {\n const dayIndex = (startDayIndex + i) % 7;\n weekdaysArr.push(Info.weekdays(\"narrow\", { locale })[dayIndex]);\n }\n\n const firstDay = focusedDate.startOf(\"month\");\n\n const prevArr: DateTime<boolean>[] = [];\n if (firstDay.weekday !== startDayIndex + 1) {\n // Complete the first row with the previous month's dates.\n for (let i = 1; i < 8; i++) {\n const prevDay = firstDay.minus({ days: i });\n prevArr.push(prevDay);\n if (prevDay.weekday === startDayIndex + 1) break;\n }\n }\n prevArr.reverse();\n\n useEffect(() => {\n if (!initialized.current) return;\n setTimeout(() => {\n const targetElement = document.getElementById(\n `${uid}-${focusedDate.toISODate()}`,\n );\n targetElement?.focus();\n }, 100);\n }, [focusedDate, uid]);\n\n useEffect(() => {\n if (!isUnavailableDate(focusedDate, unavailable, defaultTimeZone)) return;\n futureDateSelection(focusedDate.plus({ days: 1 }));\n }, [focusedDate, futureDateSelection, defaultTimeZone, unavailable]);\n\n return (\n <tr {...rest} ref={ref}>\n {week.map((n) => {\n return <CalendarDay date={n} key={n.toISODate()} />;\n })}\n </tr>\n );\n },\n);\n\nCalendarWeek.displayName = \"CalendarWeek\";\n","import { useCalendar } from \"./CalendarContext\";\nimport {\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Calendar.module.scss\";\nimport { DateTime, Info } from \"luxon\";\nimport {\n isBeyondMaxDate,\n isBeyondMinDate,\n isUnavailableDate,\n} from \"./internal/utils\";\nimport { useSwipe, UseSwipeFn } from \"../../hooks\";\nimport { SrOnly } from \"../SrOnly\";\nimport { CalendarWeek } from \"./internal/CalendarWeek\";\n\nexport type CalendarMonthProps = ComponentPropsWithoutRef<\"table\">;\n\n/**\n * A component that displays a month in the calendar.\n *\n * @param props - The props for the table element.\n * @returns A component that displays a month in the calendar.\n */\nexport const CalendarMonth = forwardRef<HTMLTableElement, CalendarMonthProps>(\n (props, ref) => {\n const { className, ...rest } = props;\n const context = useCalendar();\n const {\n value,\n focusedDate,\n setFocusedDate,\n setHoveredDate,\n locale,\n minDate,\n maxDate,\n unavailable,\n defaultTimeZone,\n id: uid,\n range,\n dateFormat,\n startDay,\n } = context;\n\n const initialized = useRef(false);\n\n const ViewCX = cx(styles[\"grid\"], className);\n const futureDateSelection = useCallback(\n (targetDate: DateTime) => {\n if (maxDate !== null && targetDate.toMillis() > maxDate?.toMillis()) {\n return;\n }\n\n if (isUnavailableDate(targetDate, unavailable, defaultTimeZone)) {\n let nextFocusDate = targetDate.plus({ days: 1 });\n for (let i = 0; i < 365; i++) {\n if (\n maxDate !== null &&\n nextFocusDate.toMillis() > maxDate?.toMillis()\n ) {\n break;\n }\n if (\n isUnavailableDate(nextFocusDate, unavailable, defaultTimeZone)\n ) {\n nextFocusDate = nextFocusDate.plus({ days: 1 });\n } else {\n // setHoveredDate(nextFocusDate);\n setFocusedDate(nextFocusDate);\n break;\n }\n }\n return;\n }\n\n setFocusedDate(targetDate);\n },\n [maxDate, setFocusedDate, defaultTimeZone, unavailable],\n );\n\n let startDayIndex = 6;\n switch (startDay) {\n case \"Monday\":\n startDayIndex = 0;\n break;\n case \"Sunday\":\n default:\n startDayIndex = 6;\n }\n\n const weekdaysArr: string[] = [];\n for (let i = 0; i < 7; i++) {\n const dayIndex = (startDayIndex + i) % 7;\n weekdaysArr.push(Info.weekdays(\"narrow\", { locale })[dayIndex]);\n }\n\n const firstDay = focusedDate.startOf(\"month\");\n const lastDay = focusedDate.endOf(\"month\");\n\n const monthArr = Array.from(new Array(firstDay.daysInMonth)).map((_, i) => {\n return firstDay.plus({ days: i });\n });\n\n const prevArr: DateTime<boolean>[] = [];\n if (firstDay.weekday !== startDayIndex + 1) {\n // Complete the first row with the previous month's dates.\n for (let i = 1; i < 8; i++) {\n const prevDay = firstDay.minus({ days: i });\n prevArr.push(prevDay);\n if (prevDay.weekday === startDayIndex + 1) break;\n }\n }\n prevArr.reverse();\n\n const nextArr = Array.from(new Array(14)).map((_, i) => {\n return lastDay.plus({ days: i + 1 });\n });\n\n const fullArr: DateTime[] = [...prevArr, ...monthArr, ...nextArr];\n\n const splitArr = [...Array(Math.ceil(fullArr.length / 7))]\n .map((_, i) => fullArr.slice(7 * i, 7 + 7 * i))\n .slice(0, 6);\n\n const onMouseLeaveHandler = () => {\n setHoveredDate(undefined);\n };\n\n const onSwipe = (dir: UseSwipeFn[\"direction\"]) => {\n if (dir === \"left\") {\n const targetMonth = focusedDate.plus({ month: 1 });\n if (\n isBeyondMinDate(targetMonth, minDate) ||\n isBeyondMaxDate(targetMonth, maxDate)\n )\n return;\n setFocusedDate(targetMonth);\n return;\n }\n if (dir === \"right\") {\n const targetMonth = focusedDate.minus({ month: 1 });\n if (\n isBeyondMinDate(targetMonth, minDate) ||\n isBeyondMaxDate(targetMonth, maxDate)\n )\n return;\n setFocusedDate(targetMonth);\n return;\n }\n };\n\n const { direction, ...touchProps } = useSwipe(onSwipe);\n\n useEffect(() => {\n if (!initialized.current) return;\n setTimeout(() => {\n const targetElement = document.getElementById(\n `${uid}-${focusedDate.toISODate()}`,\n );\n targetElement?.focus();\n }, 100);\n }, [focusedDate, uid]);\n\n useEffect(() => {\n if (!isUnavailableDate(focusedDate, unavailable, defaultTimeZone)) return;\n futureDateSelection(focusedDate.plus({ days: 1 }));\n }, [focusedDate, futureDateSelection, defaultTimeZone, unavailable]);\n\n return (\n <>\n <table\n ref={ref}\n data-anv=\"calendar-month\"\n onFocus={() => {\n initialized.current = true;\n }}\n onBlur={() => {\n initialized.current = false;\n }}\n className={ViewCX}\n onMouseLeave={onMouseLeaveHandler}\n role=\"grid\"\n {...rest}\n {...touchProps}\n >\n <thead aria-hidden className={styles[\"weekdays\"]}>\n <tr>\n {weekdaysArr.map((weekday, i) => {\n return (\n <th\n scope=\"col\"\n key={`${weekday}${i}`}\n className={styles[\"weekday\"]}\n >\n {weekday}\n </th>\n );\n })}\n </tr>\n <tr className={styles[\"spacer\"]}>\n <td colSpan={7} />\n </tr>\n </thead>\n <tbody\n className={styles[\"day-grid\"]}\n key={focusedDate.startOf(\"month\").toMillis()}\n >\n {splitArr.map((week, i) => {\n return <CalendarWeek week={week} key={i} />;\n })}\n </tbody>\n </table>\n {range && value ? (\n <SrOnly aria-live=\"polite\">\n {`Range starts at ${\n value.start && value.start.toLocaleString(dateFormat)\n }, ${\n value.end\n ? `ends at ${value.end.toLocaleString(dateFormat)}`\n : \"select an end date\"\n }`}\n </SrOnly>\n ) : null}\n </>\n );\n },\n);\n\nCalendarMonth.displayName = \"CalendarMonth\";\n","import { useEffect, useRef } from \"react\";\n\nexport type UseYearSelectorKeysParams = {\n columns: number;\n scrollToYear: (year: number, { focus }: { focus?: boolean }) => void;\n initialFocus: number;\n onSelect: (year: number | null) => void;\n onConfirm: () => void;\n min: number;\n max: number;\n disabled: boolean;\n pseudoFocused: number;\n setPseudoFocused: (year: number) => void;\n required: boolean;\n};\n\nexport type UseYearSelectorKeysReturn = {\n listRef: React.RefObject<HTMLDivElement>;\n};\n\nexport const useYearSelectorKeys = ({\n columns,\n scrollToYear,\n initialFocus,\n onSelect,\n onConfirm,\n pseudoFocused,\n setPseudoFocused,\n min,\n max,\n disabled,\n required,\n}: UseYearSelectorKeysParams): UseYearSelectorKeysReturn => {\n const listRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const list = listRef.current;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (pseudoFocused === null) return;\n if (\n [\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"Home\",\n \"PageUp\",\n \"PageDown\",\n \"Enter\",\n \" \",\n \"Backspace\",\n \"Delete\",\n ].includes(e.key)\n ) {\n e.preventDefault();\n if (\n e.key === \"ArrowLeft\" ||\n e.key === \"ArrowRight\" ||\n e.key === \"ArrowUp\" ||\n e.key === \"ArrowDown\"\n ) {\n const newYear =\n e.key === \"ArrowLeft\" || e.key === \"ArrowUp\"\n ? pseudoFocused - 1\n : pseudoFocused + 1;\n const clampedYear = Math.min(Math.max(newYear, min), max);\n scrollToYear(newYear, { focus: true });\n setPseudoFocused(newYear);\n if (!disabled) {\n onSelect(clampedYear);\n }\n return;\n }\n if (!required && (e.key === \"Backspace\" || e.key === \"Delete\")) {\n onSelect(null);\n return;\n }\n if (e.key === \"PageUp\" || e.key === \"PageDown\") {\n const newYear = e.key === \"PageUp\" ? min : max;\n scrollToYear(newYear, { focus: true });\n setPseudoFocused(newYear);\n if (!disabled) {\n onSelect(newYear);\n }\n return;\n }\n if (e.key === \"Home\") {\n scrollToYear(initialFocus, { focus: true });\n setPseudoFocused(initialFocus);\n if (!disabled) {\n onSelect(initialFocus);\n }\n return;\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n if (!disabled) {\n onConfirm();\n }\n return;\n }\n }\n };\n list?.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n list?.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [\n pseudoFocused,\n columns,\n scrollToYear,\n onSelect,\n min,\n max,\n initialFocus,\n disabled,\n setPseudoFocused,\n required,\n onConfirm,\n ]);\n\n return { listRef };\n};\n","import styles from \"../YearSelector.module.scss\";\nimport cx from \"classnames\";\nimport { ComponentPropsWithoutRef } from \"react\";\nimport SelectCard from \"../../../../components/SelectCard\";\n\ntype YearItemProps = Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> & {\n year: number;\n onChange: (year: number) => void;\n selected: boolean;\n pseudoFocused: boolean;\n disabled: boolean;\n};\nexport const YearItem = ({\n year,\n onChange,\n selected,\n pseudoFocused,\n disabled,\n onFocus,\n ...rest\n}: YearItemProps) => {\n return (\n <SelectCard\n disabled={disabled}\n id={year}\n onChange={!disabled ? () => onChange(year) : () => {}}\n checked={selected}\n checkboxProps={{\n tabIndex: -1,\n onFocus,\n }}\n flexGrow={1}\n className={cx(styles[\"year-item\"], {\n [styles[\"pseudo-focused\"]]: pseudoFocused,\n })}\n data-year={year}\n tabIndex={-1}\n {...rest}\n >\n {year}\n </SelectCard>\n );\n};\n","import { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { forwardRef, useCallback, useEffect, useRef, useState } from \"react\";\nimport styles from \"./YearSelector.module.scss\";\nimport cx from \"classnames\";\nimport { useYearSelectorKeys } from \"./internal/useYearSelectorKeys\";\nimport { useOptionallyControlledState, usePrevious } from \"../../hooks\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { YearItem } from \"./internal/YearItem\";\nimport { PassThroughProps } from \"../../../types\";\n\nconst DEFAULT_MIN = 1900;\nconst DEFAULT_MAX = 2200;\n\nexport interface YearSelectorProps {\n /**\n * The minimum selectable year\n * Defaults to 1900.\n */\n min?: number;\n /**\n * The maximum selectable year.\n * Defaults to 2200.\n */\n max?: number;\n /**\n * The currently selected year\n */\n value?: number | null;\n /**\n * The default value of the selected year\n */\n defaultValue?: number;\n /**\n * The function to call when the selected year changes\n *\n * @param year - The year that is selected.\n */\n onChange?: (year: number | null) => void;\n /**\n * The function to call when the selected year is affirmatively changed.\n * This is called when the user confirms the selection by pressing Enter, pressing Space, or clicking.\n *\n * @param year - The year that is selected.\n */\n onConfirm?: (year: number | null) => void;\n /**\n * If a `value` or `defaultValue` is not provided, this will be used as the starting scroll position (and initial focus for accessibility).\n */\n startingYear?: number;\n /**\n * The number of columns to display.\n * @default 2\n */\n columns?: number;\n /**\n * The class name to apply to the component.\n */\n className?: string;\n /**\n * Controls whether a year can be deselected, i.e. set to null.\n * @default false\n */\n required?: boolean;\n /**\n * Controls whether the component allows the user to select a year.\n * @default false\n */\n disabled?: boolean;\n /**\n * The aria-label for the component.\n * @default \"Year selection\"\n */\n ariaLabel?: string;\n /**\n * Props forwarded onto the root element of the component.\n */\n rootProps?: PassThroughProps<\"div\">;\n}\nconst currentYear = new Date().getFullYear();\n\nexport const YearSelector = forwardRef<HTMLDivElement, YearSelectorProps>(\n (\n {\n min = DEFAULT_MIN,\n max = DEFAULT_MAX,\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange,\n onConfirm,\n startingYear = currentYear,\n columns: columnsProp,\n className,\n required = false,\n disabled = false,\n ariaLabel = \"Year selection\",\n rootProps,\n },\n ref,\n ) => {\n const columns = Math.max(columnsProp ?? 2, 1);\n const [value, setValue] = useOptionallyControlledState<number | null>({\n controlledValue: valueProp,\n defaultValue: defaultValueProp ?? null,\n onChange,\n });\n const previousValue = usePrevious(value);\n const initialFocusYear = value ?? startingYear;\n const [pseudoFocused, setPseudoFocused] =\n useState<number>(initialFocusYear);\n\n const handleChange = (year: number | null) => {\n if (!required && value === year) {\n setValue(null);\n return;\n }\n setValue(year);\n if (year !== null) {\n setPseudoFocused(year);\n }\n };\n\n const handleItemChange = (year: number) => {\n handleChange(year);\n onConfirm?.(year);\n };\n\n const gap = 12;\n const rowHeight = 58;\n const rowCount = Math.ceil((max - min + 1) / columns);\n const initialOffset =\n ((initialFocusYear - min) * (rowHeight + gap)) / columns + gap / 2;\n\n // The virtualizer\n const rowVirtualizer = useVirtualizer({\n count: rowCount,\n getScrollElement: () => parentRef.current,\n estimateSize: () => rowHeight,\n gap,\n initialOffset,\n paddingEnd: gap / 2,\n });\n\n const scrollToYear = useCallback(\n (year: number, { focus }: { focus?: boolean } = {}) => {\n const index = Math.floor((year - min) / columns);\n rowVirtualizer.scrollToIndex(index, { align: \"center\" });\n if (focus) {\n setPseudoFocused(year);\n }\n },\n [min, columns, rowVirtualizer, setPseudoFocused],\n );\n\n const parentRef = useRef(null);\n const { listRef } = useYearSelectorKeys({\n columns,\n scrollToYear,\n initialFocus: initialFocusYear,\n onSelect: handleChange,\n onConfirm: () => onConfirm?.(value),\n min,\n max,\n disabled,\n pseudoFocused,\n setPseudoFocused,\n required,\n });\n\n useEffect(() => {\n if (value !== null && previousValue !== value) {\n scrollToYear(value, { focus: true });\n }\n }, [value, previousValue, scrollToYear, listRef]);\n\n const jointRef = useMergeRefs([parentRef, listRef, ref]);\n\n return (\n <>\n {/* The scrollable element */}\n <div\n ref={jointRef}\n aria-label={ariaLabel}\n tabIndex={0}\n className={cx(styles[\"year-selector\"], className)}\n role=\"spinbutton\"\n aria-valuenow={value ?? undefined}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuetext={value ? `${value}` : \"No year selected\"}\n data-test={rowVirtualizer.options.paddingEnd}\n style={{\n maxHeight: `${\n rowVirtualizer.getTotalSize() + 8 // Accounts for the padding of the container\n }px`,\n }}\n {...rootProps}\n >\n {/* The large inner element to hold all of the items */}\n <div\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n width: \"100%\",\n position: \"relative\",\n }}\n >\n {/* Only the visible items in the virtualizer, manually positioned to be in view */}\n {rowVirtualizer.getVirtualItems().map((virtualItem) => {\n const years = Array.from(\n { length: columns },\n (_, i) => virtualItem.index * columns + i + min,\n );\n return (\n <div\n key={virtualItem.key}\n data-testid=\"v-row\"\n className={styles[\"year-grid\"]}\n style={{\n transform: `translateY(${virtualItem.start}px)`,\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n }}\n >\n {years.map((year) => {\n if (year > max) return <div key={year} />;\n return (\n <YearItem\n key={year}\n disabled={disabled}\n year={year}\n onChange={handleItemChange}\n selected={value === year}\n pseudoFocused={pseudoFocused === year}\n onFocus={() => {\n listRef.current?.focus();\n setPseudoFocused(year);\n }}\n />\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n </>\n );\n },\n);\n\nYearSelector.displayName = \"YearSelector\";\n","import { DateTime } from \"luxon\";\nimport {\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Grid } from \"../../Grid\";\nimport { SelectCard } from \"../../SelectCard\";\nimport { useCalendar } from \"../CalendarContext\";\nimport styles from \"../Calendar.module.scss\";\nimport cx from \"classnames\";\nimport { useMergeRefs } from \"../../../hooks\";\n\nexport type CalendarMonthSelectionProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * The function to call when a month is selected.\n *\n * @param month - The month that is selected.\n */\n onMonthSelection: (month: DateTime[\"month\"]) => void;\n};\n\n/**\n * A component that displays a grid of month cards and allows the user to select a month.\n *\n * @param props.onMonthSelection - The function to call when a month is selected.\n * @param props - The rest of the props for the div wrapper.\n * @returns A component that displays a grid of month cards and allows the user to select a month.\n */\nexport const CalendarMonthSelection = forwardRef<\n HTMLDivElement,\n CalendarMonthSelectionProps\n>(({ onMonthSelection, ...props }, ref) => {\n const { defaultTimeZone, maxDate, minDate, selectedMonth, selectedYear } =\n useCalendar();\n\n const monthSelectionRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([ref, monthSelectionRef]);\n\n const currentDate = useMemo(\n () =>\n DateTime.fromObject({ year: selectedYear, month: selectedMonth })\n .setZone(defaultTimeZone)\n .startOf(\"day\"),\n [defaultTimeZone, selectedYear, selectedMonth],\n );\n\n const dates = useMemo(\n () =>\n Array.from({ length: 12 }, (_, i) => {\n const date = DateTime.fromObject({\n year: selectedYear,\n month: 1,\n }).plus({\n month: i,\n });\n\n // disable the select card if outside the min or max date\n const disabled =\n (minDate && date < minDate && !date.hasSame(minDate, \"month\")) ||\n (maxDate && date > maxDate && !date.hasSame(maxDate, \"month\"));\n\n return {\n month: date.month,\n disabled: disabled ?? false,\n };\n }),\n [maxDate, minDate, selectedYear],\n );\n\n const classes = cx(styles[\"month-selection\"], props.className);\n\n const [focusedIndex, setFocusedIndex] = useState(selectedMonth - 1);\n\n // reset focused index when current date changes\n useEffect(() => {\n if (minDate || maxDate) {\n // find the next enabled month\n let index = dates.findIndex(({ month }) => month === selectedMonth);\n while (dates[index].disabled && index < 11) {\n index++;\n }\n setFocusedIndex(index);\n } else {\n setFocusedIndex(selectedMonth - 1);\n }\n }, [selectedMonth, minDate, maxDate, dates]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n const target = e.target as HTMLElement;\n const cards = monthSelectionRef.current?.querySelectorAll(\n \"input[type='checkbox']\",\n );\n if (!cards || cards.length === 0) {\n return;\n }\n\n const cardArray = Array.from(cards);\n const currentIndex = cardArray.indexOf(target as HTMLButtonElement);\n\n if (currentIndex === -1) return;\n\n const updateFocusedIndex = (index: number) => {\n e.preventDefault();\n (cardArray[index] as HTMLButtonElement).focus();\n setFocusedIndex(index);\n };\n\n let newIndex: number;\n switch (e.key) {\n case \"ArrowLeft\":\n newIndex = currentIndex > 0 ? currentIndex - 1 : 11;\n while (dates[newIndex].disabled) {\n newIndex = newIndex > 0 ? newIndex - 1 : 11;\n }\n updateFocusedIndex(newIndex);\n break;\n\n case \"ArrowRight\":\n newIndex = currentIndex < 11 ? currentIndex + 1 : 0;\n while (dates[newIndex].disabled) {\n newIndex = newIndex < 11 ? newIndex + 1 : 0;\n }\n updateFocusedIndex(newIndex);\n break;\n\n case \"ArrowUp\":\n if (currentIndex < 3) {\n newIndex = currentIndex + 9;\n } else {\n newIndex = currentIndex - 3;\n }\n while (dates[newIndex].disabled) {\n if (newIndex > 2) {\n newIndex -= 3;\n } else {\n newIndex += 9;\n }\n }\n updateFocusedIndex(newIndex);\n break;\n\n case \"ArrowDown\":\n if (currentIndex > 8) {\n newIndex = currentIndex - 9;\n } else {\n newIndex = currentIndex + 3;\n }\n while (dates[newIndex].disabled) {\n if (newIndex < 9) {\n newIndex += 3;\n } else {\n newIndex -= 9;\n }\n }\n updateFocusedIndex(newIndex);\n break;\n\n case \"Enter\":\n case \" \":\n e.preventDefault();\n if (!dates[currentIndex].disabled) {\n onMonthSelection(dates[currentIndex].month);\n }\n break;\n }\n },\n [dates, onMonthSelection],\n );\n\n return (\n <div\n ref={combinedRef}\n data-anv=\"calendar-month-selection\"\n className={classes}\n {...props}\n >\n <div role=\"grid\" aria-label=\"Calendar month selection\">\n <Grid\n templateColumns=\"repeat(3, minmax(0, 1fr))\"\n gap={3}\n onKeyDown={handleKeyDown}\n role=\"row\"\n >\n {dates.map(({ month, disabled }, index) => (\n <div role=\"gridcell\" key={month.toString()}>\n <SelectCard\n id={month.toString()}\n disabled={disabled}\n onChange={() => onMonthSelection(month)}\n checked={\n selectedMonth === month && selectedYear === currentDate.year\n }\n checkboxProps={{\n className: styles[\"selection-checkbox\"],\n tabIndex: focusedIndex === index ? 0 : -1,\n }}\n className={styles[\"selection-card\"]}\n >\n {DateTime.fromObject({ month }).toFormat(\"MMMM\")}\n </SelectCard>\n </div>\n ))}\n </Grid>\n </div>\n </div>\n );\n});\n\nCalendarMonthSelection.displayName = \"CalendarMonthSelection\";\n","import { createContext } from \"react\";\nimport { CalendarBetaProps } from \"./Calendar\";\n\nexport const CalendarBetaPropsContext = createContext<CalendarBetaProps>({});\n","import { useContext } from \"react\";\nimport { CalendarBetaPropsContext } from \"./CalendarBetaPropsContext\";\n\nexport const useCalendarBetaProps = () => {\n return useContext(CalendarBetaPropsContext);\n};\n","import { DateTime, type WeekdayNumbers } from \"luxon\";\nimport {\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { IanaZone, LayoutUtilProps, Locale } from \"../../types\";\nimport { CalendarNow } from \"./CalendarNowButton\";\nimport { CalendarYearButton } from \"./CalendarYearButton\";\nimport { CalendarPrev } from \"./CalendarPrevButton\";\nimport { CalendarNext } from \"./CalendarNextButton\";\nimport { CalendarMonthButton } from \"./CalendarMonthButton\";\nimport { CalendarMonth } from \"./CalendarMonth\";\nimport {\n CalendarContext,\n CalendarContextProps,\n CalendarRangeContextProps,\n} from \"./CalendarContext\";\nimport { useMergeRefs } from \"../../hooks\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport styles from \"./Calendar.module.scss\";\nimport cx from \"classnames\";\nimport { normalizeDate } from \"./internal/utils\";\nimport { CalendarMonthSelection } from \"./internal/CalendarMonthSelection\";\nimport { YearSelector } from \"../../internal/components/YearSelector\";\nimport { useCalendarBetaProps } from \"../../beta\";\n\nexport type CalendarValue = string | undefined;\n\nexport type CalendarRangeValue = { start?: string; end?: string } | undefined;\n\nconst toolbarFocusStates = [\"month\", \"year\", \"next\", \"prev\", \"now\"] as const;\n\n/**\n * Props for the Calendar component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"value\" | \"defaultValue\">\n * @extends LayoutUtilProps\n */\ntype CalendarCommonProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"value\" | \"defaultValue\"\n> & {\n /**\n * @deprecated children will be overridden internally\n */\n children?: ComponentPropsWithoutRef<\"div\">[\"children\"];\n /**\n * The default focused date. Used to determine what month and year is shown.\n */\n defaultFocusedDate?: string | null;\n /**\n * The focused date. Used to determine what month and year is currently shown.\n */\n focusedDate?: string | null;\n /**\n * The minimum date allowed.\n */\n minDate?: string;\n /**\n * The maximum date allowed.\n */\n maxDate?: string;\n /**\n * The days of the week and dates that are unavailable.\n */\n unavailable?: {\n /**\n * The days of the week that are unavailable.\n */\n daysOfWeek?: WeekdayNumbers[];\n /**\n * The specific dates that are unavailable.\n */\n dates?: string[];\n };\n /**\n * The locale to use for the calendar.\n */\n locale?: Locale;\n /**\n * The time zone to use for the calendar.\n */\n defaultTimeZone?: IanaZone;\n /**\n * The day of the week to start the calendar on.\n */\n startDay?: \"Sunday\" | \"Monday\";\n\n /**\n * Whether the calendar should focus on the focused date.\n * @internal - Do not use this prop directly.\n */\n _disableAutofocus?: boolean;\n /** Whether the calendar should set all tab indexes to -1.\n * @internal - Do not use this prop directly.\n */\n _disableFocus?: boolean;\n};\n\ntype CalendarSingleProps = CalendarCommonProps & {\n /**\n * The function to call when the value changes.\n *\n * @param data - The data to pass to the function.\n */\n onSelection?: (data: { value: CalendarValue }) => void;\n /**\n * The default date value for uncontrolled mode.\n */\n defaultValue?: string | false;\n /**\n * The value for controlled mode.\n */\n value?: string;\n /**\n * Whether the calendar is in range mode.\n */\n range?: false;\n};\n\ntype CalendarRangeProps = CalendarCommonProps & {\n /**\n * The function to call when the value changes.\n *\n * @param data.value - The date value that is selected.\n */\n onSelection?: (data: { value: CalendarRangeValue }) => void;\n /**\n * The default date value for uncontrolled mode.\n */\n defaultValue?: { start?: string; end?: string };\n /**\n * The date value for controlled mode.\n */\n value?: { start?: string; end?: string };\n /**\n * Whether the calendar is in range mode.\n */\n range: true;\n};\n\nexport type CalendarProps = LayoutUtilProps &\n (CalendarSingleProps | CalendarRangeProps);\n\n/**\n * Calendar component for viewing and selecting a date or range of dates.\n *\n * Features:\n * - Single date and date range selection modes\n * - Month and year navigation with header buttons\n * - Configurable start day (Sunday or Monday)\n * - Date range restrictions with min/max dates\n * - Unavailable dates and days of week support\n * - Locale and timezone customization\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Responsive design with automatic width detection\n * - Month and year selection views\n * - Today button for quick navigation\n *\n * @example\n * <Calendar\n * value=\"2024-01-15\"\n * onSelection={({ value }) => console.log('Selected:', value)}\n * minDate=\"2024-01-01\"\n * maxDate=\"2024-12-31\"\n * />\n */\nexport const Calendar = Object.assign(\n forwardRef<HTMLDivElement, CalendarProps>(function CalendarInner(props, ref) {\n const uid = useId();\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n children,\n focusedDate: focusProp,\n defaultFocusedDate,\n locale = Intl.DateTimeFormat().resolvedOptions().locale as Locale,\n defaultTimeZone = Intl.DateTimeFormat().resolvedOptions()\n .timeZone as IanaZone,\n startDay = \"Sunday\",\n minDate,\n maxDate,\n unavailable = {\n dates: [],\n daysOfWeek: [],\n },\n id,\n style,\n value: iValue,\n defaultValue: iDefaultValue,\n onSelection,\n range,\n className,\n _disableAutofocus,\n _disableFocus,\n ...remainingProps\n } = componentProps;\n\n const { dateMetadata, onMonthView } = useCalendarBetaProps();\n\n const calendarRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([ref, calendarRef]);\n const lastIValue = useRef(iValue);\n const yearButtonRef = useRef<HTMLButtonElement>(null);\n const monthButtonRef = useRef<HTMLButtonElement>(null);\n const headerRef = useRef<HTMLSpanElement>(null);\n const [toolbarFocus, setToolbarFocus] = useState<\n (typeof toolbarFocusStates)[number]\n >(toolbarFocusStates[0]);\n\n const [calendarWidth, setCalendarWidth] = useState<number | undefined>(\n undefined,\n );\n\n const [calendarSelectionState, setCalendarSelectionState] = useState<\n \"day\" | \"month\" | \"year\"\n >(\"day\");\n\n const visibleHeaderButtons = useMemo(() => {\n if (calendarSelectionState !== \"day\") {\n return toolbarFocusStates.slice(0, 2);\n }\n return toolbarFocusStates;\n }, [calendarSelectionState]);\n\n useEffect(() => {\n if (!calendarRef.current || style?.width != null) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const width = entry.contentRect.width;\n if (calendarSelectionState === \"day\" && width > 100) {\n setCalendarWidth(width);\n }\n }\n });\n\n resizeObserver.observe(calendarRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [calendarSelectionState, style?.width]);\n\n // Common\n const styleCombined = {\n width: calendarWidth,\n ...style,\n ...layoutStyles,\n };\n\n const classNameCombined = cx(styles[\"calendar\"], className);\n\n const { nDate, nDefaultDate, nToday } = useMemo(\n () => ({\n nDate: iValue\n ? typeof iValue === \"string\"\n ? normalizeDate(iValue, defaultTimeZone)\n : {\n start: iValue.start\n ? normalizeDate(iValue.start, defaultTimeZone)\n : null,\n end: iValue.end\n ? normalizeDate(iValue.end, defaultTimeZone)\n : null,\n }\n : null,\n nDefaultDate: iDefaultValue\n ? typeof iDefaultValue === \"string\"\n ? normalizeDate(iDefaultValue, defaultTimeZone)\n : {\n start: iDefaultValue.start\n ? normalizeDate(iDefaultValue.start, defaultTimeZone)\n : null,\n end: iDefaultValue?.end\n ? normalizeDate(iDefaultValue.end, defaultTimeZone)\n : null,\n }\n : null,\n nToday:\n typeof iValue === \"string\"\n ? normalizeDate(DateTime.now().toISO(), defaultTimeZone)\n : {\n start: normalizeDate(DateTime.now().toISO(), defaultTimeZone),\n end: normalizeDate(DateTime.now().toISO(), defaultTimeZone),\n },\n }),\n [iValue, iDefaultValue, defaultTimeZone],\n );\n\n const [value, setValue] = useState<\n | CalendarContextProps[\"value\"]\n | CalendarRangeContextProps[\"value\"]\n | undefined\n >(nDate ?? nDefaultDate ?? nToday);\n\n const getInitialDate = useMemo(() => {\n if (defaultFocusedDate) {\n return normalizeDate(defaultFocusedDate, defaultTimeZone);\n }\n if (iDefaultValue) {\n const date =\n typeof iDefaultValue === \"string\"\n ? normalizeDate(iDefaultValue, defaultTimeZone)\n : normalizeDate(\n iDefaultValue.start ?? iDefaultValue.end ?? \"\",\n defaultTimeZone,\n );\n return date;\n }\n if (\n !DateTime.isDateTime(nDate) &&\n !DateTime.isDateTime(nDefaultDate) &&\n !DateTime.isDateTime(nToday)\n ) {\n return nDate?.start ?? nDefaultDate?.start ?? nToday?.start;\n }\n\n return (nDate ?? nDefaultDate ?? nToday) as DateTime;\n }, [\n defaultFocusedDate,\n iDefaultValue,\n nDate,\n nDefaultDate,\n nToday,\n defaultTimeZone,\n ]);\n\n const initialDate = getInitialDate ?? DateTime.now();\n\n const [focusedDate, setFocusedDate] = useState<\n | CalendarContextProps[\"focusedDate\"]\n | CalendarRangeContextProps[\"focusedDate\"]\n | undefined\n >(initialDate);\n\n const [hoveredDate, setHoveredDate] = useState<\n | CalendarContextProps[\"hoveredDate\"]\n | CalendarRangeContextProps[\"hoveredDate\"]\n >();\n\n const [selectedMonth, setSelectedMonth] = useState<DateTime[\"month\"]>(\n initialDate.month,\n );\n const [selectedYear, setSelectedYear] = useState<DateTime[\"year\"]>(\n initialDate.year,\n );\n\n const currentVisibleMonth = useMemo(() => {\n return {\n year: focusedDate?.year ?? selectedYear,\n month: focusedDate?.month ?? selectedMonth,\n };\n }, [focusedDate?.month, focusedDate?.year, selectedYear, selectedMonth]);\n\n useEffect(\n () => onMonthView?.(currentVisibleMonth),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- omit onMonthView from deps because we don't want to trigger infinite re-renders\n [currentVisibleMonth],\n );\n\n useEffect(() => {\n if (!focusProp && !defaultFocusedDate) return;\n if (focusProp) {\n setFocusedDate(normalizeDate(focusProp, defaultTimeZone));\n } else if (defaultFocusedDate) {\n setFocusedDate(normalizeDate(defaultFocusedDate, defaultTimeZone));\n setSelectedMonth(\n normalizeDate(defaultFocusedDate, defaultTimeZone).month,\n );\n setSelectedYear(\n normalizeDate(defaultFocusedDate, defaultTimeZone).year,\n );\n }\n // defaultTimeZone should not rerender\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [focusProp, defaultFocusedDate]);\n\n useEffect(() => {\n if (!iValue) {\n lastIValue.current = iValue;\n return;\n }\n if (typeof iValue === \"string\") {\n setValue(normalizeDate(iValue, defaultTimeZone));\n setFocusedDate(normalizeDate(iValue, defaultTimeZone));\n } else if (\n iValue.end &&\n (typeof lastIValue.current !== \"object\" ||\n lastIValue?.current?.end !== iValue.end)\n ) {\n setValue({\n start: iValue.start\n ? normalizeDate(iValue.start, defaultTimeZone)\n : null,\n end: iValue.end ? normalizeDate(iValue.end, defaultTimeZone) : null,\n });\n setFocusedDate(normalizeDate(iValue.end, defaultTimeZone));\n } else if (\n iValue.start &&\n (typeof lastIValue.current !== \"object\" ||\n lastIValue?.current?.start !== iValue.start)\n ) {\n setFocusedDate(normalizeDate(iValue.start, defaultTimeZone));\n }\n lastIValue.current = iValue;\n // defaultTimeZone should not rerender\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [iValue]);\n\n // Memoize normalized minDate and maxDate to avoid new references on every render\n const normalizedMinDate = useMemo(\n () => (minDate ? normalizeDate(minDate, defaultTimeZone) : null),\n [minDate, defaultTimeZone],\n );\n const normalizedMaxDate = useMemo(\n () => (maxDate ? normalizeDate(maxDate, defaultTimeZone) : null),\n [maxDate, defaultTimeZone],\n );\n\n const dateMetadataMap = useMemo(() => {\n if (!dateMetadata) return undefined;\n return new Map(dateMetadata.map((item) => [item.date, item.context]));\n }, [dateMetadata]);\n\n const providerValue = useMemo(() => {\n // TODO FUTURE: Hookup with dateformat from localization provider\n const format = {\n weekday: \"long\",\n month: \"long\",\n day: \"2-digit\",\n year: \"numeric\",\n } as const;\n\n return {\n disableAutofocus: _disableAutofocus ?? false,\n focusedDate,\n setFocusedDate,\n selectedMonth,\n setSelectedMonth,\n selectedYear,\n setSelectedYear,\n hoveredDate,\n setHoveredDate,\n value,\n setValue,\n defaultTimeZone,\n id: id ?? uid,\n onSelection,\n controlled: !!iValue,\n range,\n minDate: normalizedMinDate,\n maxDate: normalizedMaxDate,\n unavailable: {\n dates: new Set(unavailable.dates),\n daysOfWeek: new Set(unavailable.daysOfWeek),\n },\n locale,\n dateFormat: format,\n startDay,\n dateMetadata: dateMetadataMap,\n };\n }, [\n focusedDate,\n selectedMonth,\n selectedYear,\n hoveredDate,\n id,\n locale,\n normalizedMaxDate,\n normalizedMinDate,\n iValue,\n onSelection,\n range,\n defaultTimeZone,\n uid,\n unavailable,\n value,\n startDay,\n dateMetadataMap,\n _disableAutofocus,\n ]);\n\n const handleHeaderKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n if (calendarSelectionState === \"day\") {\n const focusedDayId = `${id ?? uid}-${focusedDate?.toISODate()}`;\n const root =\n (e.currentTarget.getRootNode() as Document | ShadowRoot) ??\n document;\n root.getElementById(focusedDayId)?.focus();\n }\n break;\n }\n case \"ArrowLeft\":\n e.preventDefault();\n setToolbarFocus((previousToolbarFocus) => {\n const newToolbarFocus =\n previousToolbarFocus === visibleHeaderButtons[0]\n ? visibleHeaderButtons[visibleHeaderButtons.length - 1]\n : (visibleHeaderButtons[\n visibleHeaderButtons.indexOf(previousToolbarFocus) - 1\n ] ?? visibleHeaderButtons[visibleHeaderButtons.length - 1]);\n const button = headerRef.current?.querySelector(\n `[data-calendar-header-button-name=\"${newToolbarFocus}\"]`,\n );\n if (\n button &&\n \"focus\" in button &&\n typeof (button as HTMLElement).focus === \"function\"\n ) {\n (button as HTMLElement).focus();\n }\n return newToolbarFocus;\n });\n\n break;\n case \"ArrowRight\":\n e.preventDefault();\n setToolbarFocus((previousToolbarFocus) => {\n const newToolbarFocus =\n previousToolbarFocus ===\n visibleHeaderButtons[visibleHeaderButtons.length - 1]\n ? visibleHeaderButtons[0]\n : (visibleHeaderButtons[\n visibleHeaderButtons.indexOf(previousToolbarFocus) + 1\n ] ?? visibleHeaderButtons[0]);\n const button = headerRef.current?.querySelector(\n `[data-calendar-header-button-name=\"${newToolbarFocus}\"]`,\n );\n if (\n button &&\n \"focus\" in button &&\n typeof (button as HTMLElement).focus === \"function\"\n ) {\n (button as HTMLElement).focus();\n }\n return newToolbarFocus;\n });\n }\n },\n [visibleHeaderButtons, calendarSelectionState, focusedDate, id, uid],\n );\n\n const handleMonthSelection = useCallback(\n (month: DateTime[\"month\"]) => {\n monthButtonRef.current?.focus();\n setToolbarFocus(toolbarFocusStates[0]);\n setSelectedMonth(month);\n setFocusedDate(\n DateTime.fromObject(\n {\n year: focusedDate?.year ?? 1,\n month: month,\n day: 1,\n },\n { zone: defaultTimeZone },\n ).startOf(\"day\"),\n );\n setCalendarSelectionState(\"day\");\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [focusedDate],\n );\n\n const handleYearSelection = useCallback(\n (year: number | null) => {\n if (year === null) return;\n yearButtonRef.current?.focus();\n setToolbarFocus(toolbarFocusStates[1]);\n setSelectedYear(year);\n setFocusedDate(\n DateTime.fromObject(\n {\n year: year,\n month: focusedDate?.month ?? 1,\n day: 1,\n },\n { zone: defaultTimeZone },\n ).startOf(\"day\"),\n );\n setCalendarSelectionState(\"day\");\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [focusedDate?.month],\n );\n\n return (\n <CalendarContext.Provider value={providerValue as CalendarContextProps}>\n <div\n ref={combinedRef}\n id={id ?? uid}\n style={styleCombined}\n className={classNameCombined}\n data-anv=\"calendar\"\n {...remainingProps}\n >\n <div className={styles[\"header\"]}>\n <span\n ref={headerRef}\n aria-label=\"Calendar navigation\"\n role=\"toolbar\"\n onKeyDown={handleHeaderKeyDown}\n className={styles[\"controller\"]}\n >\n <CalendarMonthButton\n ref={monthButtonRef}\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[0]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[0]}\n calendarSelectionState={calendarSelectionState}\n onClick={() => {\n setCalendarSelectionState((prev) =>\n prev === \"month\" ? \"day\" : \"month\",\n );\n setToolbarFocus(toolbarFocusStates[0]);\n }}\n />\n <CalendarYearButton\n ref={yearButtonRef}\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[1]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[1]}\n calendarSelectionState={calendarSelectionState}\n onClick={() => {\n setCalendarSelectionState((prev) =>\n prev === \"year\" ? \"day\" : \"year\",\n );\n setToolbarFocus(toolbarFocusStates[1]);\n }}\n />\n {calendarSelectionState === \"day\" && (\n <>\n <CalendarPrev\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[2]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[2]}\n onClick={() => setToolbarFocus(toolbarFocusStates[2])}\n />\n <CalendarNext\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[3]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[3]}\n onClick={() => setToolbarFocus(toolbarFocusStates[3])}\n />\n <CalendarNow\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[4]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[4]}\n onClickFixed={() => setToolbarFocus(toolbarFocusStates[4])}\n />\n </>\n )}\n </span>\n </div>\n {calendarSelectionState === \"day\" && <CalendarMonth />}\n {calendarSelectionState === \"month\" && (\n <CalendarMonthSelection onMonthSelection={handleMonthSelection} />\n )}\n {calendarSelectionState === \"year\" && (\n // Wrapper div provides some manual offsetting to account for internal padding of the year selector\n <div className={styles[\"year-selector\"]}>\n <YearSelector\n onConfirm={handleYearSelection}\n required\n defaultValue={selectedYear}\n min={normalizedMinDate?.year}\n max={normalizedMaxDate?.year}\n />\n </div>\n )}\n </div>\n </CalendarContext.Provider>\n );\n }),\n {\n /**\n * Calendar.Now component for navigating to today's date.\n *\n * Features:\n * - Quick navigation to current date\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.Now />\n */\n Now: CalendarNow,\n /**\n * Calendar.Month component for displaying the month grid.\n *\n * Features:\n * - Displays calendar days in a table format\n * - Handles day selection and navigation\n * - Supports range selection mode\n * - Accessible with proper ARIA attributes\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.Month />\n */\n Month: CalendarMonth,\n /**\n * Calendar.Next component for navigating to the next month.\n *\n * Features:\n * - Navigation to next month\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.Next />\n */\n Next: CalendarNext,\n /**\n * Calendar.Prev component for navigating to the previous month.\n *\n * Features:\n * - Navigation to previous month\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.Prev />\n */\n Prev: CalendarPrev,\n /**\n * Calendar.MonthButton component for switching to month selection view.\n *\n * Features:\n * - Switches calendar to month selection mode\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.MonthButton />\n */\n MonthButton: CalendarMonthButton,\n /**\n * Calendar.YearButton component for switching to year selection view.\n *\n * Features:\n * - Switches calendar to year selection mode\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.YearButton />\n */\n YearButton: CalendarYearButton,\n },\n);\nCalendar.displayName = \"Calendar\";\n// export const useCalendar = useCoreCalendar;\nexport const CalendarElement = Calendar;\n"],"names":["IconKeyboardArrowUp","IconKeyboardArrowDown","styles","Prev","Next","date"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Checkbox-B1I1OfZU.js","sources":["../src/components/Checkbox/internal/CheckboxGroupContext.tsx","../src/components/Checkbox/CheckboxGroup.tsx","../src/components/Checkbox/internal/Checkbox.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\n/**\n * Context value for CheckboxGroup\n * @property {boolean} hasError - Whether the group has an error state\n */\nexport type CheckboxGroupContextValue = {\n /**\n * Whether the checkbox group has an error state\n */\n hasError: boolean;\n};\n\n/**\n * Context for sharing state between CheckboxGroup and child Checkbox components\n */\nexport const CheckboxGroupContext = createContext<\n CheckboxGroupContextValue | undefined\n>(undefined);\n\n/**\n * Hook to access CheckboxGroup context from child Checkbox components\n * @returns CheckboxGroupContextValue if inside a CheckboxGroup, undefined otherwise\n */\nexport const useCheckboxGroupContext = () => {\n return useContext(CheckboxGroupContext);\n};\n","import {\n forwardRef,\n ComponentPropsWithoutRef,\n ReactElement,\n useId,\n useMemo,\n} from \"react\";\nimport { stripInlineMarkdown, warnOnce } from \"../../internal/functions\";\nimport styles from \"./Checkbox.module.scss\";\nimport cx from \"classnames\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { FieldLabel } from \"../FieldLabel\";\nimport type { FieldLabelProps as FieldLabelElementProps } from \"../FieldLabel\";\nimport { FieldLabelProps as InternalFieldLabelProps } from \"../../internal/types\";\nimport { HelperProps } from \"../../internal/components\";\nimport FieldMessage, { warnDeprecatedErrorUsage } from \"../FieldMessage\";\nimport { CheckboxGroupContext } from \"./internal/CheckboxGroupContext\";\n\n/**\n * Props for the CheckboxGroup component\n * @extends ComponentPropsWithoutRef<\"fieldset\">\n * @extends LayoutUtilProps\n * @extends Omit<InternalFieldLabelProps, \"labelProps\">\n */\nexport type CheckboxGroupProps = ComponentPropsWithoutRef<\"fieldset\"> &\n LayoutUtilProps &\n Omit<InternalFieldLabelProps, \"labelProps\"> & {\n /**\n * required flag for label\n * @accessibility This does not enforce error when nothing is selected.\n * @default false\n */\n required?: boolean;\n\n // TODO(v4.0.0): type becomes string only\n /**\n * Legend for the fieldset.\n * Passing `ReactNode` is deprecated — use a plain string with inline markdown instead.\n */\n legend: string | ReactElement;\n\n /**\n * Additional props for the legend `FieldLabel` (for example `aiMark`, `className`).\n */\n legendProps?: Omit<FieldLabelElementProps, \"el\">;\n\n /**\n * Error state for the field. Pass `true` to indicate error styling without a message.\n * Pass a string, string[], or ReactElement (deprecated) for error messages.\n */\n error?: boolean | string | ReactElement | string[];\n /**\n * @deprecated No longer used. Error messages always use `aria-live=\"assertive\"`.\n */\n errorAriaLive?: HelperProps[\"errorAriaLive\"];\n /**\n * Warning message(s) to display. Supports a single string or an array of strings.\n */\n warning?: string | string[];\n /**\n * Description text to display below the field.\n */\n description?: HelperProps[\"description\"];\n /**\n * Hint text to display below the field.\n */\n hint?: HelperProps[\"hint\"];\n /**\n * When `true`, hides the visual label row. The sr-only `<legend>` always remains for screen readers.\n * @default false\n */\n hideLabel?: boolean;\n };\n\n/**\n * CheckboxGroup component for grouping related checkboxes together.\n *\n * Features:\n * - Groups multiple checkboxes with a common legend\n * - Supports required field indication\n * - Optional helper text and descriptions\n * - Full accessibility support with fieldset/legend\n * - Focus management for keyboard navigation\n * - Layout utility props for positioning and spacing\n * - Flexible layout direction (row/column)\n * - Screen reader support with hidden labels\n *\n * @example\n * <CheckboxGroup legend=\"Select your interests\" required>\n * <Checkbox label=\"Technology\" />\n * <Checkbox label=\"Sports\" />\n * <Checkbox label=\"Music\" />\n * </CheckboxGroup>\n */\nexport const CheckboxGroup = forwardRef<\n HTMLFieldSetElement,\n CheckboxGroupProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n className,\n children,\n description,\n error,\n errorAriaLive: _errorAriaLive,\n hint,\n warning,\n hideLabel = false,\n legend,\n moreInfo,\n legendProps,\n onBlur,\n onFocus,\n required,\n style,\n ...rest\n } = componentProps;\n\n const checkboxGroupClassNames = cx(styles[\"checkbox-group\"], className);\n const helperUid = useId();\n const moreInfoUid = useId();\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n alignItems:\n layoutStyles?.alignItems ??\n (layoutStyles?.flexDirection === \"row\" ? \"flex-start\" : undefined),\n };\n\n const labelClassNames = cx(styles[\"label\"], {\n [styles[\"direction-row\"]]: layoutStyles?.flexDirection === \"row\",\n });\n\n warnDeprecatedErrorUsage(\"CheckboxGroup\", error);\n\n // TODO(v4.0.0): remove once legend is string only\n if (typeof legend !== \"string\") {\n warnOnce(\n \"CheckboxGroup: Passing ReactNode to legend is deprecated. Use a plain string with inline markdown instead.\",\n );\n }\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n\n const hasHelperText = hint || errorMessages || warning || description;\n\n const ariaDescribedBy =\n [hasHelperText && helperUid, moreInfo && moreInfoUid]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const contextValue = useMemo(\n () => ({\n hasError: !!error,\n }),\n [error],\n );\n\n return (\n <fieldset\n role=\"group\"\n data-anv=\"checkbox-group\"\n className={checkboxGroupClassNames}\n ref={ref}\n style={styleCombined}\n onFocus={onFocus}\n onBlur={onBlur}\n {...rest}\n aria-describedby={ariaDescribedBy}\n >\n <legend className={styles[\"legend\"]}>\n {/* TODO(v4.0.0): remove typeof check — legend will always be string */}\n {typeof legend === \"string\" ? stripInlineMarkdown(legend) : legend}\n {required && \", required\"}\n </legend>\n {!hideLabel && (\n <div className={styles[\"label-row\"]}>\n <FieldLabel\n aria-hidden\n required={required}\n moreInfo={moreInfo}\n moreInfoId={moreInfo ? moreInfoUid : undefined}\n {...legendProps}\n className={cx(labelClassNames, legendProps?.className)}\n >\n {legend}\n </FieldLabel>\n </div>\n )}\n <CheckboxGroupContext.Provider value={contextValue}>\n <div\n className={styles[\"children\"]}\n style={{\n flexDirection: layoutStyles?.flexDirection,\n gap: layoutStyles?.gap,\n }}\n >\n {children}\n </div>\n </CheckboxGroupContext.Provider>\n {hasHelperText ? (\n <FieldMessage\n id={helperUid}\n hint={hint}\n error={errorMessages}\n warning={warning}\n description={description}\n />\n ) : null}\n </fieldset>\n );\n});\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n","import {\n forwardRef,\n ChangeEvent,\n ComponentPropsWithoutRef,\n ReactElement,\n MouseEvent,\n useId,\n} from \"react\";\nimport cx from \"classnames\";\nimport { Icon } from \"../../Icon\";\nimport CheckboxOutline from \"@servicetitan/hammer-icon/mdi/round/check_box_outline_blank.svg\";\nimport CheckboxChecked from \"@servicetitan/hammer-icon/mdi/round/check_box.svg\";\nimport CheckboxIndeterminate from \"@servicetitan/hammer-icon/mdi/round/indeterminate_check_box.svg\";\n\nimport styles from \"../Checkbox.module.scss\";\nimport { Svg, LayoutUtilProps } from \"../../../types\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport { Helper, HelperProps } from \"../../../internal/components\";\nimport { CheckboxState } from \"../types\";\nimport { useCheckboxGroupContext } from \"./CheckboxGroupContext\";\n\nexport type { CheckboxState };\n\n/**\n * Props for the Checkbox component\n * @extends LayoutUtilProps\n * @extends Omit<ComponentPropsWithoutRef<\"input\">, \"onChange\" | \"onClick\" | \"indeterminate\">\n */\nexport type CheckboxProps = LayoutUtilProps &\n Omit<\n ComponentPropsWithoutRef<\"input\">,\n \"onChange\" | \"onClick\" | \"indeterminate\"\n > & {\n /**\n * Controlled state\n * @default false\n */\n checked?: boolean;\n\n /**\n * Uncontrolled state\n * @default false\n */\n defaultChecked?: boolean;\n\n /**\n * Indeterminate state of the checkbox\n * @accessibility Applies aria-checked=\"mixed\"\n * @default false\n */\n indeterminate?: boolean;\n\n /**\n * Callback when checkbox is changed\n */\n onChange?: (\n e: ChangeEvent<HTMLInputElement>,\n state?: CheckboxState,\n ) => void;\n\n /**\n * Callback when checkbox is clicked\n */\n onClick?: (e?: MouseEvent<HTMLInputElement>, state?: CheckboxState) => void;\n\n /**\n * label for checkbox\n * @accessibility This should either be a string or have text content inside for accessibility\n */\n label?: string | ReactElement;\n\n /**\n * Error state for the checkbox\n * @accessibility Applies aria-invalid=\"true\"\n * @default false\n */\n error?: boolean;\n\n /**\n * Icon overrides\n */\n icons?: {\n checked?: Svg;\n indeterminate?: Svg;\n unchecked?: Svg;\n };\n\n description?: HelperProps[\"description\"];\n\n /**\n * When `true`, hides the checkbox for visual users.\n * @default false\n */\n hideCheckbox?: boolean;\n\n /**\n * Additional className applied to the label wrapper span\n */\n labelWrapperClassName?: string;\n };\n\nconst CheckboxElement = forwardRef<HTMLInputElement, CheckboxProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n indeterminate,\n onChange,\n onClick,\n value,\n className,\n disabled,\n error,\n icons,\n checked: checkedProp,\n defaultChecked,\n label,\n style,\n required,\n description,\n hideCheckbox = false,\n labelWrapperClassName,\n ...rest\n } = componentProps;\n\n const groupContext = useCheckboxGroupContext();\n const {\n checked: checkedIcon = CheckboxChecked,\n indeterminate: indeterminateIcon = CheckboxIndeterminate,\n unchecked: uncheckedIcon = CheckboxOutline,\n } = { ...icons };\n\n const isControlled = typeof checkedProp !== \"undefined\";\n\n const onChangeHandler = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e, { value, checked: checkedProp ?? e.target.checked });\n };\n\n const onClickHandler = (e: MouseEvent<HTMLInputElement>) => {\n onClick?.(e, {\n value,\n checked: checkedProp ?? (e.target as HTMLInputElement).checked,\n });\n };\n\n const helperUid = useId();\n\n // Combine local error state with group error state\n const hasError = error || groupContext?.hasError;\n\n const wrapperClassNames = cx(\n styles[\"wrapper\"],\n { [styles[\"focus\"]]: hideCheckbox },\n className,\n );\n\n const checkboxClassNames = cx(styles[\"checkbox\"], {\n [styles[\"error\"]]: hasError,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n className={wrapperClassNames}\n style={styleCombined}\n data-anv=\"checkbox\"\n >\n <label className={checkboxClassNames}>\n <input\n type=\"checkbox\"\n disabled={disabled}\n value={value}\n onChange={onChangeHandler}\n onClick={onClickHandler}\n aria-checked={\n indeterminate ? \"mixed\" : (checkedProp ?? defaultChecked)\n }\n checked={isControlled ? checkedProp : undefined}\n defaultChecked={defaultChecked}\n aria-invalid={hasError}\n aria-describedby={description ? helperUid : undefined}\n ref={ref}\n {...rest}\n />\n\n <span\n className={cx(styles[\"icon-wrapper\"], {\n [styles[\"sr-only\"]]: hideCheckbox,\n })}\n aria-hidden\n >\n <Icon\n size=\"large\"\n svg={indeterminateIcon}\n className={styles[\"icon-indeterminate\"]}\n />\n\n <Icon\n size=\"large\"\n svg={checkedIcon}\n className={styles[\"icon-checked\"]}\n />\n\n <Icon\n size=\"large\"\n svg={uncheckedIcon}\n className={styles[\"icon-unchecked\"]}\n />\n </span>\n\n <span\n className={cx(labelWrapperClassName, {\n [styles[\"focus-label\"]]: hideCheckbox,\n })}\n >\n {label}\n\n {required && (\n <span aria-hidden className={styles[\"required-asterisk\"]}>\n *\n </span>\n )}\n </span>\n </label>\n\n {description ? (\n <div className={styles[\"helper-wrapper\"]}>\n <Helper id={helperUid} description={description} />\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nCheckboxElement.displayName = \"Checkbox\";\n\n/**\n * Checkbox component for selecting one or more options from a list.\n *\n * Features:\n * - Controlled and uncontrolled state management\n * - Indeterminate state for partial selections\n * - Customizable icons for different states\n * - Error state with accessibility support\n * - Optional helper text and descriptions\n * - Hide checkbox option for visual-only interactions\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n *\n * @example\n * <Checkbox\n * label=\"Accept terms and conditions\"\n * onChange={(e, state) => console.log('Checked:', state.checked)}\n * required\n * />\n */\nexport const Checkbox = CheckboxElement;\n"],"names":["styles","CheckboxChecked","CheckboxIndeterminate","CheckboxOutline"],"mappings":";;;;;;;;;;;;;;AAgBO,MAAM,oBAAA,GAAuB,cAElC,MAAS,CAAA;AAMJ,MAAM,0BAA0B,MAAM;AAC3C,EAAA,OAAO,WAAW,oBAAoB,CAAA;AACxC,CAAA;;ACqEO,MAAM,aAAA,GAAgB,UAAA,CAG3B,CAAC,KAAA,EAAO,GAAA,KAAQ;AAChB,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AAEjE,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA,EAAe,cAAA;AAAA,IACf,IAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA,GAAY,KAAA;AAAA,IACZ,MAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,cAAA;AAEJ,EAAA,MAAM,uBAAA,GAA0B,EAAA,CAAGA,cAAA,CAAO,gBAAgB,GAAG,SAAS,CAAA;AACtE,EAAA,MAAM,YAAY,KAAA,EAAM;AACxB,EAAA,MAAM,cAAc,KAAA,EAAM;AAE1B,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,GAAG,KAAA;AAAA,IACH,GAAG,YAAA;AAAA,IACH,YACE,YAAA,EAAc,UAAA,KACb,YAAA,EAAc,aAAA,KAAkB,QAAQ,YAAA,GAAe,MAAA;AAAA,GAC5D;AAEA,EAAA,MAAM,eAAA,GAAkB,EAAA,CAAGA,cAAA,CAAO,OAAO,CAAA,EAAG;AAAA,IAC1C,CAACA,cAAA,CAAO,eAAe,CAAC,GAAG,cAAc,aAAA,KAAkB;AAAA,GAC5D,CAAA;AAED,EAAA,wBAAA,CAAyB,iBAAiB,KAAK,CAAA;AAG/C,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,IAAA,QAAA;AAAA,MACE;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,gBACJ,OAAO,KAAA,KAAU,SAAA,IAAa,KAAA,KAAU,SAAY,MAAA,GAAY,KAAA;AAElE,EAAA,MAAM,aAAA,GAAgB,IAAA,IAAQ,aAAA,IAAiB,OAAA,IAAW,WAAA;AAE1D,EAAA,MAAM,eAAA,GACJ,CAAC,aAAA,IAAiB,SAAA,EAAW,QAAA,IAAY,WAAW,CAAA,CACjD,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAElB,EAAA,MAAM,YAAA,GAAe,OAAA;AAAA,IACnB,OAAO;AAAA,MACL,QAAA,EAAU,CAAC,CAAC;AAAA,KACd,CAAA;AAAA,IACA,CAAC,KAAK;AAAA,GACR;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,OAAA;AAAA,MACL,UAAA,EAAS,gBAAA;AAAA,MACT,SAAA,EAAW,uBAAA;AAAA,MACX,GAAA;AAAA,MACA,KAAA,EAAO,aAAA;AAAA,MACP,OAAA;AAAA,MACA,MAAA;AAAA,MACC,GAAG,IAAA;AAAA,MACJ,kBAAA,EAAkB,eAAA;AAAA,MAElB,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAWA,cAAA,CAAO,QAAQ,CAAA,EAE/B,QAAA,EAAA;AAAA,UAAA,OAAO,MAAA,KAAW,QAAA,GAAW,mBAAA,CAAoB,MAAM,CAAA,GAAI,MAAA;AAAA,UAC3D,QAAA,IAAY;AAAA,SAAA,EACf,CAAA;AAAA,QACC,CAAC,SAAA,oBACA,GAAA,CAAC,SAAI,SAAA,EAAWA,cAAA,CAAO,WAAW,CAAA,EAChC,QAAA,kBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAW,IAAA;AAAA,YACX,QAAA;AAAA,YACA,QAAA;AAAA,YACA,UAAA,EAAY,WAAW,WAAA,GAAc,MAAA;AAAA,YACpC,GAAG,WAAA;AAAA,YACJ,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,WAAA,EAAa,SAAS,CAAA;AAAA,YAEpD,QAAA,EAAA;AAAA;AAAA,SACH,EACF,CAAA;AAAA,wBAEF,GAAA,CAAC,oBAAA,CAAqB,QAAA,EAArB,EAA8B,OAAO,YAAA,EACpC,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWA,eAAO,UAAU,CAAA;AAAA,YAC5B,KAAA,EAAO;AAAA,cACL,eAAe,YAAA,EAAc,aAAA;AAAA,cAC7B,KAAK,YAAA,EAAc;AAAA,aACrB;AAAA,YAEC;AAAA;AAAA,SACH,EACF,CAAA;AAAA,QACC,aAAA,mBACC,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,SAAA;AAAA,YACJ,IAAA;AAAA,YACA,KAAA,EAAO,aAAA;AAAA,YACP,OAAA;AAAA,YACA;AAAA;AAAA,SACF,GACE;AAAA;AAAA;AAAA,GACN;AAEJ,CAAC;AAED,aAAA,CAAc,WAAA,GAAc,eAAA;;ACpH5B,MAAM,eAAA,GAAkB,UAAA;AAAA,EACtB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,aAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MACT,cAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA,GAAe,KAAA;AAAA,MACf,qBAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,eAAe,uBAAA,EAAwB;AAC7C,IAAA,MAAM;AAAA,MACJ,SAAS,WAAA,GAAcC,WAAA;AAAA,MACvB,eAAe,iBAAA,GAAoBC,wBAAA;AAAA,MACnC,WAAW,aAAA,GAAgBC;AAAA,KAC7B,GAAI,EAAE,GAAG,KAAA,EAAM;AAEf,IAAA,MAAM,YAAA,GAAe,OAAO,WAAA,KAAgB,WAAA;AAE5C,IAAA,MAAM,eAAA,GAAkB,CAAC,CAAA,KAAqC;AAC5D,MAAA,QAAA,GAAW,CAAA,EAAG,EAAE,KAAA,EAAO,OAAA,EAAS,eAAe,CAAA,CAAE,MAAA,CAAO,SAAS,CAAA;AAAA,IACnE,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KAAoC;AAC1D,MAAA,OAAA,GAAU,CAAA,EAAG;AAAA,QACX,KAAA;AAAA,QACA,OAAA,EAAS,WAAA,IAAgB,CAAA,CAAE,MAAA,CAA4B;AAAA,OACxD,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,MAAM,YAAY,KAAA,EAAM;AAGxB,IAAA,MAAM,QAAA,GAAW,SAAS,YAAA,EAAc,QAAA;AAExC,IAAA,MAAM,iBAAA,GAAoB,EAAA;AAAA,MACxBH,eAAO,SAAS,CAAA;AAAA,MAChB,EAAE,CAACA,cAAA,CAAO,OAAO,CAAC,GAAG,YAAA,EAAa;AAAA,MAClC;AAAA,KACF;AAEA,IAAA,MAAM,kBAAA,GAAqB,EAAA,CAAGA,cAAA,CAAO,UAAU,CAAA,EAAG;AAAA,MAChD,CAACA,cAAA,CAAO,OAAO,CAAC,GAAG;AAAA,KACpB,CAAA;AAED,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,iBAAA;AAAA,QACX,KAAA,EAAO,aAAA;AAAA,QACP,UAAA,EAAS,UAAA;AAAA,QAET,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,OAAA,EAAA,EAAM,WAAW,kBAAA,EAChB,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,UAAA;AAAA,gBACL,QAAA;AAAA,gBACA,KAAA;AAAA,gBACA,QAAA,EAAU,eAAA;AAAA,gBACV,OAAA,EAAS,cAAA;AAAA,gBACT,cAAA,EACE,aAAA,GAAgB,OAAA,GAAW,WAAA,IAAe,cAAA;AAAA,gBAE5C,OAAA,EAAS,eAAe,WAAA,GAAc,MAAA;AAAA,gBACtC,cAAA;AAAA,gBACA,cAAA,EAAc,QAAA;AAAA,gBACd,kBAAA,EAAkB,cAAc,SAAA,GAAY,MAAA;AAAA,gBAC5C,GAAA;AAAA,gBACC,GAAG;AAAA;AAAA,aACN;AAAA,4BAEA,IAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA,CAAGA,cAAA,CAAO,cAAc,CAAA,EAAG;AAAA,kBACpC,CAACA,cAAA,CAAO,SAAS,CAAC,GAAG;AAAA,iBACtB,CAAA;AAAA,gBACD,aAAA,EAAW,IAAA;AAAA,gBAEX,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,IAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,OAAA;AAAA,sBACL,GAAA,EAAK,iBAAA;AAAA,sBACL,SAAA,EAAWA,eAAO,oBAAoB;AAAA;AAAA,mBACxC;AAAA,kCAEA,GAAA;AAAA,oBAAC,IAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,OAAA;AAAA,sBACL,GAAA,EAAK,WAAA;AAAA,sBACL,SAAA,EAAWA,eAAO,cAAc;AAAA;AAAA,mBAClC;AAAA,kCAEA,GAAA;AAAA,oBAAC,IAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,OAAA;AAAA,sBACL,GAAA,EAAK,aAAA;AAAA,sBACL,SAAA,EAAWA,eAAO,gBAAgB;AAAA;AAAA;AACpC;AAAA;AAAA,aACF;AAAA,4BAEA,IAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,GAAG,qBAAA,EAAuB;AAAA,kBACnC,CAACA,cAAA,CAAO,aAAa,CAAC,GAAG;AAAA,iBAC1B,CAAA;AAAA,gBAEA,QAAA,EAAA;AAAA,kBAAA,KAAA;AAAA,kBAEA,QAAA,wBACE,MAAA,EAAA,EAAK,aAAA,EAAW,MAAC,SAAA,EAAWA,cAAA,CAAO,mBAAmB,CAAA,EAAG,QAAA,EAAA,GAAA,EAE1D;AAAA;AAAA;AAAA;AAEJ,WAAA,EACF,CAAA;AAAA,UAEC,WAAA,mBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWA,cAAA,CAAO,gBAAgB,CAAA,EACrC,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,EAAA,EAAI,SAAA,EAAW,WAAA,EAA0B,GACnD,CAAA,GACE;AAAA;AAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AAEA,eAAA,CAAgB,WAAA,GAAc,UAAA;AAuBvB,MAAM,QAAA,GAAW;;;;"}
@@ -1,28 +0,0 @@
1
- import './Checkbox.css';const checkbox = "_checkbox_20dx6_8";
2
- const wrapper = "_wrapper_20dx6_23";
3
- const error = "_error_20dx6_103";
4
- const label = "_label_20dx6_215";
5
- const legend = "_legend_20dx6_247";
6
- const children = "_children_20dx6_264";
7
- const checkboxStyles = {
8
- checkbox: checkbox,
9
- wrapper: wrapper,
10
- "required-asterisk": "_required-asterisk_20dx6_37",
11
- "focus-label": "_focus-label_20dx6_41",
12
- "icon-wrapper": "_icon-wrapper_20dx6_47",
13
- "helper-wrapper": "_helper-wrapper_20dx6_80",
14
- "icon-indeterminate": "_icon-indeterminate_20dx6_85",
15
- "icon-unchecked": "_icon-unchecked_20dx6_86",
16
- "icon-checked": "_icon-checked_20dx6_87",
17
- error: error,
18
- "sr-only": "_sr-only_20dx6_201",
19
- "checkbox-group": "_checkbox-group_20dx6_215",
20
- label: label,
21
- "direction-row": "_direction-row_20dx6_215",
22
- legend: legend,
23
- "label-row": "_label-row_20dx6_259",
24
- children: children
25
- };
26
-
27
- export { checkboxStyles as c };
28
- //# sourceMappingURL=Checkbox.module-EkRZO48Y.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Checkbox.module-EkRZO48Y.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}