@servicetitan/anvil2 2.6.0 → 2.7.0

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 (363) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/{Alert-efJbA3Sy.js → Alert-C_o2f78C.js} +4 -4
  3. package/dist/{Alert-efJbA3Sy.js.map → Alert-C_o2f78C.js.map} +1 -1
  4. package/dist/Alert.js +1 -1
  5. package/dist/{Announcement-D9eVhPwx.js → Announcement-CyrTvgP4.js} +4 -4
  6. package/dist/{Announcement-D9eVhPwx.js.map → Announcement-CyrTvgP4.js.map} +1 -1
  7. package/dist/Announcement.js +1 -1
  8. package/dist/{AnvilProvider-DrjU73_k.js → AnvilProvider-ClfmLl_6.js} +3 -3
  9. package/dist/{AnvilProvider-DrjU73_k.js.map → AnvilProvider-ClfmLl_6.js.map} +1 -1
  10. package/dist/AnvilProvider.js +1 -1
  11. package/dist/{Avatar--E9iBILU.js → Avatar--CnTAnfD.js} +2 -2
  12. package/dist/{Avatar--E9iBILU.js.map → Avatar--CnTAnfD.js.map} +1 -1
  13. package/dist/{Avatar-CJCAu9Hk.js → Avatar-CCnbKkCm.js} +3 -3
  14. package/dist/{Avatar-CJCAu9Hk.js.map → Avatar-CCnbKkCm.js.map} +1 -1
  15. package/dist/Avatar.js +2 -2
  16. package/dist/{Badge-pHlnInjl.js → Badge-C2W7Dls9.js} +3 -3
  17. package/dist/{Badge-pHlnInjl.js.map → Badge-C2W7Dls9.js.map} +1 -1
  18. package/dist/Badge.js +1 -1
  19. package/dist/{Breadcrumbs-B5deMJRX.js → Breadcrumbs-3Y7jnj-F.js} +5 -5
  20. package/dist/{Breadcrumbs-B5deMJRX.js.map → Breadcrumbs-3Y7jnj-F.js.map} +1 -1
  21. package/dist/Breadcrumbs.js +1 -1
  22. package/dist/{Button-DuvaXRZ5.js → Button-CVsGhVJz.js} +4 -4
  23. package/dist/{Button-DuvaXRZ5.js.map → Button-CVsGhVJz.js.map} +1 -1
  24. package/dist/Button.js +1 -1
  25. package/dist/{ButtonCompound-CfRJlClF.js → ButtonCompound-Cmw3cgMY.js} +2 -2
  26. package/dist/{ButtonCompound-CfRJlClF.js.map → ButtonCompound-Cmw3cgMY.js.map} +1 -1
  27. package/dist/ButtonCompound.js +1 -1
  28. package/dist/{ButtonLink-B5Ixd5d5.js → ButtonLink-BJKTJER8.js} +4 -4
  29. package/dist/{ButtonLink-B5Ixd5d5.js.map → ButtonLink-BJKTJER8.js.map} +1 -1
  30. package/dist/ButtonLink.js +1 -1
  31. package/dist/{ButtonToggle-BkDR0AcM.js → ButtonToggle-DaYJWso_.js} +3 -3
  32. package/dist/{ButtonToggle-BkDR0AcM.js.map → ButtonToggle-DaYJWso_.js.map} +1 -1
  33. package/dist/ButtonToggle.js +1 -1
  34. package/dist/{Calendar-MXQWMrwC.js → Calendar-C1U2npPP.js} +2 -2
  35. package/dist/{Calendar-MXQWMrwC.js.map → Calendar-C1U2npPP.js.map} +1 -1
  36. package/dist/{Calendar-M8K2O28r.js → Calendar-SGlTt-bs.js} +6 -6
  37. package/dist/{Calendar-M8K2O28r.js.map → Calendar-SGlTt-bs.js.map} +1 -1
  38. package/dist/Calendar.js +2 -2
  39. package/dist/{Card-C5TyS0Iv.js → Card-wz71dEVA.js} +2 -2
  40. package/dist/{Card-C5TyS0Iv.js.map → Card-wz71dEVA.js.map} +1 -1
  41. package/dist/Card.js +1 -1
  42. package/dist/{Checkbox-Czx6UCfq.js → Checkbox-CjEKa5Iv.js} +2 -2
  43. package/dist/{Checkbox-Czx6UCfq.js.map → Checkbox-CjEKa5Iv.js.map} +1 -1
  44. package/dist/{Checkbox-LPr8zpzs.js → Checkbox-CtKUNeyu.js} +20 -11
  45. package/dist/Checkbox-CtKUNeyu.js.map +1 -0
  46. package/dist/Checkbox.js +1 -1
  47. package/dist/{Chip-BJmzOMOd.js → Chip-DjTAR0va.js} +5 -5
  48. package/dist/{Chip-BJmzOMOd.js.map → Chip-DjTAR0va.js.map} +1 -1
  49. package/dist/Chip.js +1 -1
  50. package/dist/{Combobox-CnzBCYLC.js → Combobox-By8-34bw.js} +13 -12
  51. package/dist/{Combobox-CnzBCYLC.js.map → Combobox-By8-34bw.js.map} +1 -1
  52. package/dist/Combobox.js +1 -1
  53. package/dist/{DataTable-Cau6ylNR.js → DataTable-BYOS6icI.js} +95 -53
  54. package/dist/DataTable-BYOS6icI.js.map +1 -0
  55. package/dist/DataTable.css +68 -55
  56. package/dist/{DateFieldRange-B1BR8K7C.js → DateFieldRange-C8Uzrboc.js} +45 -54
  57. package/dist/DateFieldRange-C8Uzrboc.js.map +1 -0
  58. package/dist/DateFieldRange.js +1 -1
  59. package/dist/{DateFieldSingle-CaWruBBO.js → DateFieldSingle-DrhLIjlK.js} +43 -52
  60. package/dist/DateFieldSingle-DrhLIjlK.js.map +1 -0
  61. package/dist/DateFieldSingle.js +1 -1
  62. package/dist/{DateFieldYearless-ClF88lnZ.js → DateFieldYearless-DbivK4Hm.js} +6 -6
  63. package/dist/{DateFieldYearless-ClF88lnZ.js.map → DateFieldYearless-DbivK4Hm.js.map} +1 -1
  64. package/dist/DateFieldYearless.js +1 -1
  65. package/dist/{DateFieldYearlessRange-LZFr55tn.js → DateFieldYearlessRange-BEqJe4Uf.js} +7 -7
  66. package/dist/{DateFieldYearlessRange-LZFr55tn.js.map → DateFieldYearlessRange-BEqJe4Uf.js.map} +1 -1
  67. package/dist/DateFieldYearlessRange.js +1 -1
  68. package/dist/{DaysOfTheWeek-BLdndX4a.js → DaysOfTheWeek-BR32AA32.js} +6 -6
  69. package/dist/{DaysOfTheWeek-BLdndX4a.js.map → DaysOfTheWeek-BR32AA32.js.map} +1 -1
  70. package/dist/DaysOfTheWeek.js +1 -1
  71. package/dist/{Details-C9temdJE.js → Details-Dxq_v3Qg.js} +3 -3
  72. package/dist/{Details-C9temdJE.js.map → Details-Dxq_v3Qg.js.map} +1 -1
  73. package/dist/Details.js +1 -1
  74. package/dist/{Dialog-CXnUkcrS.js → Dialog-CGhwkwvq.js} +5 -5
  75. package/dist/{Dialog-CXnUkcrS.js.map → Dialog-CGhwkwvq.js.map} +1 -1
  76. package/dist/Dialog.js +1 -1
  77. package/dist/{DialogCancelButton-LfPkSYCE.js → DialogCancelButton-DQDMzGeT.js} +2 -2
  78. package/dist/{DialogCancelButton-LfPkSYCE.js.map → DialogCancelButton-DQDMzGeT.js.map} +1 -1
  79. package/dist/{Divider-HHjG0KYA.js → Divider-B1UoK8ho.js} +2 -2
  80. package/dist/{Divider-HHjG0KYA.js.map → Divider-B1UoK8ho.js.map} +1 -1
  81. package/dist/Divider.js +1 -1
  82. package/dist/Dnd.js +1 -1
  83. package/dist/DndSort.js +8 -10
  84. package/dist/DndSort.js.map +1 -1
  85. package/dist/{Drawer-BmNHRJJJ.js → Drawer-DA4iAgt-.js} +5 -5
  86. package/dist/{Drawer-BmNHRJJJ.js.map → Drawer-DA4iAgt-.js.map} +1 -1
  87. package/dist/Drawer.js +1 -1
  88. package/dist/DrillDown.js +1 -1
  89. package/dist/{EditCard-8gQ6IJez.js → EditCard-CLN0GBN_.js} +6 -6
  90. package/dist/{EditCard-8gQ6IJez.js.map → EditCard-CLN0GBN_.js.map} +1 -1
  91. package/dist/EditCard.js +1 -1
  92. package/dist/{FieldLabel-35fac7b-.js → FieldLabel-DbMosKtd.js} +5 -5
  93. package/dist/{FieldLabel-35fac7b-.js.map → FieldLabel-DbMosKtd.js.map} +1 -1
  94. package/dist/FieldLabel.js +1 -1
  95. package/dist/{FieldMessage-eYenMJY5.js → FieldMessage-COHqUdj5.js} +3 -3
  96. package/dist/{FieldMessage-eYenMJY5.js.map → FieldMessage-COHqUdj5.js.map} +1 -1
  97. package/dist/FieldMessage.js +2 -2
  98. package/dist/{Flex-DZu-_z-U.js → Flex-WyyZm1bf.js} +2 -2
  99. package/dist/{Flex-DZu-_z-U.js.map → Flex-WyyZm1bf.js.map} +1 -1
  100. package/dist/Flex.js +1 -1
  101. package/dist/{Grid-xRKvVHA2.js → Grid-ONcUpb__.js} +2 -2
  102. package/dist/{Grid-xRKvVHA2.js.map → Grid-ONcUpb__.js.map} +1 -1
  103. package/dist/Grid.js +1 -1
  104. package/dist/{Helper-CDZD_AOG.js → Helper-B_FIOlhy.js} +3 -3
  105. package/dist/{Helper-CDZD_AOG.js.map → Helper-B_FIOlhy.js.map} +1 -1
  106. package/dist/{Icon-Bgkq1egx.js → Icon-DuIlne4x.js} +2 -2
  107. package/dist/{Icon-Bgkq1egx.js.map → Icon-DuIlne4x.js.map} +1 -1
  108. package/dist/Icon.js +1 -1
  109. package/dist/{InputMask-DkvZ4MIT.js → InputMask-HjaNCb73.js} +3 -3
  110. package/dist/{InputMask-DkvZ4MIT.js.map → InputMask-HjaNCb73.js.map} +1 -1
  111. package/dist/InputMask.js +1 -1
  112. package/dist/{InteractiveCard-B3_FAoIE.js → InteractiveCard-GTYbR6Xy.js} +3 -3
  113. package/dist/{InteractiveCard-B3_FAoIE.js.map → InteractiveCard-GTYbR6Xy.js.map} +1 -1
  114. package/dist/InteractiveCard.js +1 -1
  115. package/dist/{Layout-DTAU7jS5.js → Layout-VfhlilMG.js} +2 -2
  116. package/dist/{Layout-DTAU7jS5.js.map → Layout-VfhlilMG.js.map} +1 -1
  117. package/dist/Layout.js +1 -1
  118. package/dist/{Link-DSyeiS7g.js → Link-jTvzyXca.js} +3 -3
  119. package/dist/{Link-DSyeiS7g.js.map → Link-jTvzyXca.js.map} +1 -1
  120. package/dist/Link.js +1 -1
  121. package/dist/{LinkButton-DOI4osnN.js → LinkButton-DGyHR1E7.js} +2 -2
  122. package/dist/{LinkButton-DOI4osnN.js.map → LinkButton-DGyHR1E7.js.map} +1 -1
  123. package/dist/LinkButton.js +1 -1
  124. package/dist/{List-Cyvkt0Px.js → List-CJZjElAQ.js} +2 -2
  125. package/dist/{List-Cyvkt0Px.js.map → List-CJZjElAQ.js.map} +1 -1
  126. package/dist/List.js +1 -1
  127. package/dist/{ListView-VzdUffCe.js → ListView-mujFK6mQ.js} +3 -3
  128. package/dist/{ListView-VzdUffCe.js.map → ListView-mujFK6mQ.js.map} +1 -1
  129. package/dist/ListView.js +1 -1
  130. package/dist/{Listbox-SRBgb1VS.js → Listbox-BtAgBDRS.js} +6 -6
  131. package/dist/{Listbox-SRBgb1VS.js.map → Listbox-BtAgBDRS.js.map} +1 -1
  132. package/dist/Listbox.css +29 -29
  133. package/dist/Listbox.js +1 -1
  134. package/dist/Listbox.module-HAXMOKvC.js +18 -0
  135. package/dist/Listbox.module-HAXMOKvC.js.map +1 -0
  136. package/dist/{Menu-Bxbrulia.js → Menu-BXsmCP20.js} +6 -5
  137. package/dist/{Menu-Bxbrulia.js.map → Menu-BXsmCP20.js.map} +1 -1
  138. package/dist/Menu.js +1 -1
  139. package/dist/MultiSelectField.js +1 -1
  140. package/dist/{MultiSelectFieldSync-B6J42MpG.js → MultiSelectFieldSync-DGpGgu8q.js} +91 -176
  141. package/dist/MultiSelectFieldSync-DGpGgu8q.js.map +1 -0
  142. package/dist/MultiSelectMenu.d.ts +2 -0
  143. package/dist/MultiSelectMenu.js +2 -0
  144. package/dist/MultiSelectMenu.js.map +1 -0
  145. package/dist/MultiSelectMenuSync-DiLddJDw.js +432 -0
  146. package/dist/MultiSelectMenuSync-DiLddJDw.js.map +1 -0
  147. package/dist/{NumberField-BgeDEoHw.js → NumberField-svhZp1kB.js} +8 -8
  148. package/dist/{NumberField-BgeDEoHw.js.map → NumberField-svhZp1kB.js.map} +1 -1
  149. package/dist/NumberField.js +1 -1
  150. package/dist/Overflow.js +2 -2
  151. package/dist/{Page-DgqEClR7.js → Page-Be029Dij.js} +123 -82
  152. package/dist/Page-Be029Dij.js.map +1 -0
  153. package/dist/Page.css +84 -72
  154. package/dist/Page.js +1 -1
  155. package/dist/{Pagination-DIredMzG.js → Pagination-BAwqfl_2.js} +8 -8
  156. package/dist/{Pagination-DIredMzG.js.map → Pagination-BAwqfl_2.js.map} +1 -1
  157. package/dist/Pagination.js +1 -1
  158. package/dist/{Popover-CsVesD9_.js → Popover-D0qSKZ1J.js} +6 -5
  159. package/dist/{Popover-CsVesD9_.js.map → Popover-D0qSKZ1J.js.map} +1 -1
  160. package/dist/{Popover-ZyaN26OB.js → Popover-DxZF6lbJ.js} +28 -15
  161. package/dist/Popover-DxZF6lbJ.js.map +1 -0
  162. package/dist/Popover.js +1 -1
  163. package/dist/{ProgressBar-x1cyKo1E.js → ProgressBar-JpRDW5vG.js} +7 -7
  164. package/dist/{ProgressBar-x1cyKo1E.js.map → ProgressBar-JpRDW5vG.js.map} +1 -1
  165. package/dist/ProgressBar.js +1 -1
  166. package/dist/{Radio-Beneo_h3.js → Radio-BOq9UkpC.js} +2 -2
  167. package/dist/{Radio-Beneo_h3.js.map → Radio-BOq9UkpC.js.map} +1 -1
  168. package/dist/{Radio-D8HSazJ6.js → Radio-BQg7exDG.js} +17 -8
  169. package/dist/{Radio-D8HSazJ6.js.map → Radio-BQg7exDG.js.map} +1 -1
  170. package/dist/Radio.js +1 -1
  171. package/dist/{SearchField-Dn_5cMo3.js → SearchField-im7AHGYo.js} +4 -4
  172. package/dist/{SearchField-Dn_5cMo3.js.map → SearchField-im7AHGYo.js.map} +1 -1
  173. package/dist/SearchField.js +1 -1
  174. package/dist/{SegmentedControl-BshzGPsW.js → SegmentedControl-7fDLhgvh.js} +3 -3
  175. package/dist/{SegmentedControl-BshzGPsW.js.map → SegmentedControl-7fDLhgvh.js.map} +1 -1
  176. package/dist/SegmentedControl.js +1 -1
  177. package/dist/{SelectCard-D94UKLxM.js → SelectCard-cu4MBuh8.js} +24 -15
  178. package/dist/{SelectCard-D94UKLxM.js.map → SelectCard-cu4MBuh8.js.map} +1 -1
  179. package/dist/SelectCard.css +23 -18
  180. package/dist/SelectCard.js +1 -1
  181. package/dist/SelectField.js +1 -1
  182. package/dist/SelectFieldLabel-Dr8HeW3N.js +31 -0
  183. package/dist/SelectFieldLabel-Dr8HeW3N.js.map +1 -0
  184. package/dist/{SelectFieldSync-BQrC0j2-.js → SelectFieldSync-CJ2Ie_v1.js} +79 -168
  185. package/dist/SelectFieldSync-CJ2Ie_v1.js.map +1 -0
  186. package/dist/SelectMenu.d.ts +2 -0
  187. package/dist/SelectMenu.js +2 -0
  188. package/dist/SelectMenu.js.map +1 -0
  189. package/dist/SelectMenuSync-CJA_coqD.js +327 -0
  190. package/dist/SelectMenuSync-CJA_coqD.js.map +1 -0
  191. package/dist/SelectOptions-Bf4xsFek.js +26 -0
  192. package/dist/SelectOptions-Bf4xsFek.js.map +1 -0
  193. package/dist/{SelectTrigger-D8xkq1wa.js → SelectTrigger-ObsnAKNp.js} +4 -4
  194. package/dist/{SelectTrigger-D8xkq1wa.js.map → SelectTrigger-ObsnAKNp.js.map} +1 -1
  195. package/dist/SelectTrigger.js +1 -1
  196. package/dist/{SelectTriggerBase-CBS5URqs.js → SelectTriggerBase-DKfOL2RJ.js} +8 -8
  197. package/dist/{SelectTriggerBase-CBS5URqs.js.map → SelectTriggerBase-DKfOL2RJ.js.map} +1 -1
  198. package/dist/{SideNav-2CgD8uxD.js → SideNav-KksbSQn7.js} +3 -3
  199. package/dist/{SideNav-2CgD8uxD.js.map → SideNav-KksbSQn7.js.map} +1 -1
  200. package/dist/SideNav.js +1 -1
  201. package/dist/Skeleton.js +1 -1
  202. package/dist/{Spinner-CpEm3Lud.js → Spinner-BqmcE2pb.js} +2 -2
  203. package/dist/{Spinner-CpEm3Lud.js.map → Spinner-BqmcE2pb.js.map} +1 -1
  204. package/dist/Spinner.js +1 -1
  205. package/dist/{SrOnly-CrdBTl6E.js → SrOnly-eUpYGpAT.js} +2 -2
  206. package/dist/{SrOnly-CrdBTl6E.js.map → SrOnly-eUpYGpAT.js.map} +1 -1
  207. package/dist/SrOnly.js +1 -1
  208. package/dist/{Stepper-D71Zhlr9.js → Stepper-Dt8_ImvJ.js} +4 -4
  209. package/dist/{Stepper-D71Zhlr9.js.map → Stepper-Dt8_ImvJ.js.map} +1 -1
  210. package/dist/Stepper.js +1 -1
  211. package/dist/{Switch-DxkmA-o4.js → Switch-DpPHr3G3.js} +5 -5
  212. package/dist/{Switch-DxkmA-o4.js.map → Switch-DpPHr3G3.js.map} +1 -1
  213. package/dist/Switch.js +1 -1
  214. package/dist/{Tab-2mEMF0vc.js → Tab-DO7LaUbw.js} +3 -3
  215. package/dist/{Tab-2mEMF0vc.js.map → Tab-DO7LaUbw.js.map} +1 -1
  216. package/dist/Tab.js +1 -1
  217. package/dist/Table.js +1 -1
  218. package/dist/{Text-BqES2rv3.js → Text-BJo4oMI2.js} +2 -2
  219. package/dist/{Text-BqES2rv3.js.map → Text-BJo4oMI2.js.map} +1 -1
  220. package/dist/Text.js +1 -1
  221. package/dist/{TextField-Dk90SWXl.js → TextField-BW8sJAls.js} +2 -2
  222. package/dist/{TextField-Dk90SWXl.js.map → TextField-BW8sJAls.js.map} +1 -1
  223. package/dist/{TextField-Dn6HWZoH.js → TextField-DeHpgPag.js} +12 -7
  224. package/dist/TextField-DeHpgPag.js.map +1 -0
  225. package/dist/TextField.js +1 -1
  226. package/dist/{Textarea-D4gqy2ZR.js → Textarea-DyqdMTvQ.js} +5 -5
  227. package/dist/{Textarea-D4gqy2ZR.js.map → Textarea-DyqdMTvQ.js.map} +1 -1
  228. package/dist/Textarea.js +1 -1
  229. package/dist/{ThemeProvider-BwZHpkFv.js → ThemeProvider-CaYW3RuA.js} +2 -2
  230. package/dist/{ThemeProvider-BwZHpkFv.js.map → ThemeProvider-CaYW3RuA.js.map} +1 -1
  231. package/dist/ThemeProvider.js +1 -1
  232. package/dist/{TimeField-DgdGwPF9.js → TimeField-Dc0Y1JD-.js} +6 -7
  233. package/dist/{TimeField-DgdGwPF9.js.map → TimeField-Dc0Y1JD-.js.map} +1 -1
  234. package/dist/TimeField.js +1 -1
  235. package/dist/Toast.js +2 -2
  236. package/dist/{Toaster-BBcWImWl.js → Toaster-DikGo_hR.js} +2 -2
  237. package/dist/{Toaster-BBcWImWl.js.map → Toaster-DikGo_hR.js.map} +1 -1
  238. package/dist/{Toaster-C07D40P9.js → Toaster-b0-Ub3yt.js} +7 -7
  239. package/dist/{Toaster-C07D40P9.js.map → Toaster-b0-Ub3yt.js.map} +1 -1
  240. package/dist/{Toolbar-4LHKM6ub.js → Toolbar-DAuz4Gs2.js} +41 -129
  241. package/dist/Toolbar-DAuz4Gs2.js.map +1 -0
  242. package/dist/Toolbar.js +1 -1
  243. package/dist/{Tooltip-BiW5nNAy.js → Tooltip-Bupqao9B.js} +5 -4
  244. package/dist/{Tooltip-BiW5nNAy.js.map → Tooltip-Bupqao9B.js.map} +1 -1
  245. package/dist/Tooltip.js +1 -1
  246. package/dist/{YearlessDateInputWithPicker-CxfcJqro.js → YearlessDateInputWithPicker-DFi08TLG.js} +13 -15
  247. package/dist/YearlessDateInputWithPicker-DFi08TLG.js.map +1 -0
  248. package/dist/YearlessDateInputWithPicker.css +33 -33
  249. package/dist/beta/components/MultiSelectField/MultiSelectFieldSync.d.ts +2 -3
  250. package/dist/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +8 -7
  251. package/dist/beta/components/MultiSelectField/internal/useSelectModeMultiple.d.ts +6 -4
  252. package/dist/beta/components/MultiSelectField/types.d.ts +2 -3
  253. package/dist/beta/components/MultiSelectMenu/MultiSelectMenu.d.ts +30 -0
  254. package/dist/beta/components/MultiSelectMenu/MultiSelectMenuSync.d.ts +54 -0
  255. package/dist/beta/components/MultiSelectMenu/index.d.ts +3 -0
  256. package/dist/beta/components/MultiSelectMenu/types.d.ts +170 -0
  257. package/dist/beta/components/SelectField/SelectFieldSync.d.ts +2 -3
  258. package/dist/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
  259. package/dist/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
  260. package/dist/beta/components/SelectField/internal/useCombo.d.ts +7 -7
  261. package/dist/beta/components/SelectField/internal/useSelectMode.d.ts +7 -6
  262. package/dist/beta/components/SelectField/types.d.ts +2 -9
  263. package/dist/beta/components/SelectMenu/SelectMenu.d.ts +27 -0
  264. package/dist/beta/components/SelectMenu/SelectMenuSync.d.ts +41 -0
  265. package/dist/beta/components/SelectMenu/index.d.ts +3 -0
  266. package/dist/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +72 -0
  267. package/dist/beta/components/SelectMenu/types.d.ts +153 -0
  268. package/dist/beta/components/Table/DataTable/DataTable.d.ts +7 -1
  269. package/dist/beta/components/Table/DataTable/internal/cells/CellFocusContext.d.ts +1 -1
  270. package/dist/beta/components/Table/DataTable/internal/cells/CellStatus.d.ts +12 -0
  271. package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +7 -1
  272. package/dist/beta/components/Table/createColumnHelper.d.ts +6 -0
  273. package/dist/beta/components/Table/types.d.ts +20 -0
  274. package/dist/beta/components/Toolbar/ToolbarSelect.d.ts +3 -3
  275. package/dist/beta/components/index.d.ts +2 -0
  276. package/dist/beta.js +10 -8
  277. package/dist/beta.js.map +1 -1
  278. package/dist/components/Announcement/Announcement.figma.d.ts +1 -0
  279. package/dist/components/Checkbox/internal/Checkbox.d.ts +8 -0
  280. package/dist/components/DateFieldYearless/internal/YearlessDateSelectionPopover.d.ts +1 -1
  281. package/dist/components/DndSort/internal/test-utils.d.ts +15 -8
  282. package/dist/components/FieldMessage/FieldMessage.figma.d.ts +1 -0
  283. package/dist/components/Page/Page.d.ts +1 -1
  284. package/dist/components/Page/PageContent.d.ts +5 -5
  285. package/dist/components/Page/PageContext.d.ts +2 -0
  286. package/dist/components/Page/PageFooter.d.ts +1 -0
  287. package/dist/components/Radio/internal/Radio.d.ts +8 -0
  288. package/dist/components/Toolbar/ToolbarSelect.d.ts +3 -3
  289. package/dist/{match-sorter.esm-adzV1NDp.js → downshift.esm-xtSnQp44.js} +3 -907
  290. package/dist/downshift.esm-xtSnQp44.js.map +1 -0
  291. package/dist/{floating-ui.react-S01OoTc9.js → floating-ui.react-C_s3_nEb.js} +2 -2
  292. package/dist/{floating-ui.react-S01OoTc9.js.map → floating-ui.react-C_s3_nEb.js.map} +1 -1
  293. package/dist/{floating-ui.react-dom-DSiPHZwm.js → floating-ui.react-dom-imrk9N49.js} +2 -17
  294. package/dist/floating-ui.react-dom-imrk9N49.js.map +1 -0
  295. package/dist/{index-DuDm69S1.js → index-D6ag_WQW.js} +4 -4
  296. package/dist/{index-DuDm69S1.js.map → index-D6ag_WQW.js.map} +1 -1
  297. package/dist/{index-SvGbrGuT.js → index-De1g9FRV.js} +2 -2
  298. package/dist/{index-SvGbrGuT.js.map → index-De1g9FRV.js.map} +1 -1
  299. package/dist/index.js +73 -100
  300. package/dist/index.js.map +1 -1
  301. package/dist/internal/components/MultiSelectOptions.d.ts +23 -0
  302. package/dist/{beta/components/SelectField/internal/FieldDialog/FieldDialog.d.ts → internal/components/OptionsDialog/OptionsDialog.d.ts} +2 -2
  303. package/dist/internal/components/OptionsPanel.d.ts +26 -0
  304. package/dist/internal/components/OptionsPopover/OptionsPopover.d.ts +16 -0
  305. package/dist/internal/components/Popover/Popover.d.ts +3 -2
  306. package/dist/internal/components/Popover/PopoverContent.d.ts +4 -0
  307. package/dist/internal/components/Popover/internal/PopoverContext.d.ts +2 -2
  308. package/dist/internal/components/SelectOption.d.ts +13 -0
  309. package/dist/internal/components/SelectOptions.d.ts +23 -0
  310. package/dist/internal/components/VirtualizedOptionsPanel.d.ts +2 -0
  311. package/dist/internal/functions/buildSelectItems.d.ts +22 -0
  312. package/dist/internal/functions/syncFilterUtils.d.ts +10 -0
  313. package/dist/{beta/components/SelectField/internal → internal/hooks}/useGroupedOptions.d.ts +4 -3
  314. package/dist/{beta/components/SelectField/internal/useFieldListSections.d.ts → internal/hooks/useOptionsSections.d.ts} +7 -8
  315. package/dist/{beta/components/SelectField/internal → internal/hooks}/usePinnedOptions.d.ts +1 -1
  316. package/dist/{beta/components/SelectField/internal → internal/hooks}/useProcessedOptions.d.ts +2 -2
  317. package/dist/internal/hooks/useSelectOrchestration.d.ts +38 -0
  318. package/dist/{beta/components/MultiSelectField/internal → internal/hooks}/useToggleSelection.d.ts +2 -2
  319. package/dist/{beta/components/SelectField/internal/types.d.ts → internal/types/selectFieldInternalTypes.d.ts} +11 -3
  320. package/dist/match-sorter.esm-CGAauEiU.js +908 -0
  321. package/dist/match-sorter.esm-CGAauEiU.js.map +1 -0
  322. package/dist/safePopover-BDso-xSH.js +17 -0
  323. package/dist/safePopover-BDso-xSH.js.map +1 -0
  324. package/dist/{FieldDialog-DaRvLS6m.js → syncFilterUtils-vt8ldsES.js} +287 -146
  325. package/dist/syncFilterUtils-vt8ldsES.js.map +1 -0
  326. package/dist/{FieldDialog.css → syncFilterUtils.css} +18 -11
  327. package/dist/{useDrilldown-CuvPT4gS.js → useDrilldown-wwXRpNgb.js} +5 -5
  328. package/dist/{useDrilldown-CuvPT4gS.js.map → useDrilldown-wwXRpNgb.js.map} +1 -1
  329. package/dist/useMenuInteraction-zR_78KQC.js +249 -0
  330. package/dist/useMenuInteraction-zR_78KQC.js.map +1 -0
  331. package/dist/useToggleSelection-BdXW3Zg3.js +63 -0
  332. package/dist/useToggleSelection-BdXW3Zg3.js.map +1 -0
  333. package/dist/{utils-pudAMGnO.js → utils-CM48ODEJ.js} +3 -13
  334. package/dist/utils-CM48ODEJ.js.map +1 -0
  335. package/dist/warnOnce-Y9PRHcU4.js +13 -0
  336. package/dist/warnOnce-Y9PRHcU4.js.map +1 -0
  337. package/package.json +10 -9
  338. package/dist/Checkbox-LPr8zpzs.js.map +0 -1
  339. package/dist/DataTable-Cau6ylNR.js.map +0 -1
  340. package/dist/DateFieldRange-B1BR8K7C.js.map +0 -1
  341. package/dist/DateFieldSingle-CaWruBBO.js.map +0 -1
  342. package/dist/FieldDialog-DaRvLS6m.js.map +0 -1
  343. package/dist/Listbox.module-XuKszT3X.js +0 -18
  344. package/dist/Listbox.module-XuKszT3X.js.map +0 -1
  345. package/dist/MultiSelectFieldSync-B6J42MpG.js.map +0 -1
  346. package/dist/Page-DgqEClR7.js.map +0 -1
  347. package/dist/Popover-ZyaN26OB.js.map +0 -1
  348. package/dist/SelectFieldSync-BQrC0j2-.js.map +0 -1
  349. package/dist/TextField-Dn6HWZoH.js.map +0 -1
  350. package/dist/Toolbar-4LHKM6ub.js.map +0 -1
  351. package/dist/YearlessDateInputWithPicker-CxfcJqro.js.map +0 -1
  352. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldList.d.ts +0 -24
  353. package/dist/beta/components/SelectField/internal/FieldListBase.d.ts +0 -27
  354. package/dist/beta/components/SelectField/internal/FieldPopover/FieldPopover.d.ts +0 -9
  355. package/dist/beta/components/SelectField/internal/SelectFieldList.d.ts +0 -26
  356. package/dist/beta/components/SelectField/internal/SelectFieldListItem.d.ts +0 -14
  357. package/dist/beta/components/SelectField/internal/VirtualizedFieldListBase.d.ts +0 -2
  358. package/dist/beta/components/SelectField/internal/buildDownshiftItems.d.ts +0 -22
  359. package/dist/beta/components/Table/DataTable/internal/cells/CellError.d.ts +0 -10
  360. package/dist/floating-ui.react-dom-DSiPHZwm.js.map +0 -1
  361. package/dist/match-sorter.esm-adzV1NDp.js.map +0 -1
  362. package/dist/utils-pudAMGnO.js.map +0 -1
  363. /package/dist/{beta/components/SelectField/internal → internal/components}/InView.d.ts +0 -0
@@ -0,0 +1,249 @@
1
+ import { useState, useId, useRef, useCallback } from 'react';
2
+
3
+ const useMenuInteraction = ({
4
+ items,
5
+ sectionsMeta: _sectionsMeta,
6
+ onItemActivate,
7
+ selectedItemIds,
8
+ displayAs: _displayAs,
9
+ closeOnActivate,
10
+ disabled = false,
11
+ id,
12
+ triggerRef,
13
+ label
14
+ }) => {
15
+ const [isOpen, setIsOpen] = useState(false);
16
+ const [highlightedIndex, setHighlightedIndex] = useState(-1);
17
+ const generatedId = useId();
18
+ const menuId = `${id}-menu-${generatedId}`;
19
+ const menuContainerRef = useRef(null);
20
+ const listRef = useRef(null);
21
+ const isItemDisabled = useCallback(
22
+ (item) => {
23
+ return (disabled || item.disabled) ?? false;
24
+ },
25
+ [disabled]
26
+ );
27
+ const findNextEnabledIndex = useCallback(
28
+ (startIndex, direction, wrap = true) => {
29
+ if (items.length === 0) return -1;
30
+ const len = items.length;
31
+ let index = startIndex;
32
+ for (let i = 0; i < len; i++) {
33
+ index = wrap ? (index + direction + len) % len : Math.min(Math.max(index + direction, 0), len - 1);
34
+ if (!isItemDisabled(items[index])) return index;
35
+ if (!wrap && (index === 0 || index === len - 1)) return -1;
36
+ }
37
+ return -1;
38
+ },
39
+ [items, isItemDisabled]
40
+ );
41
+ const openMenu = useCallback(() => {
42
+ if (disabled) return;
43
+ setIsOpen(true);
44
+ }, [disabled]);
45
+ const closeMenu = useCallback(
46
+ (options) => {
47
+ setIsOpen(false);
48
+ setHighlightedIndex(-1);
49
+ if (options?.restoreFocus !== false) {
50
+ triggerRef.current?.focus();
51
+ }
52
+ },
53
+ [triggerRef]
54
+ );
55
+ const getItemId = useCallback(
56
+ (index) => `${menuId}-option-${index}`,
57
+ [menuId]
58
+ );
59
+ const handleKeyDown = useCallback(
60
+ (e) => {
61
+ if (!isOpen) return;
62
+ switch (e.key) {
63
+ case "ArrowDown": {
64
+ e.preventDefault();
65
+ const next = highlightedIndex < 0 ? findNextEnabledIndex(-1, 1) : findNextEnabledIndex(highlightedIndex, 1);
66
+ if (next >= 0) {
67
+ setHighlightedIndex(next);
68
+ listRef.current?.scrollToIndex(next);
69
+ }
70
+ break;
71
+ }
72
+ case "ArrowUp": {
73
+ e.preventDefault();
74
+ const prev = highlightedIndex < 0 ? findNextEnabledIndex(items.length, -1) : findNextEnabledIndex(highlightedIndex, -1);
75
+ if (prev >= 0) {
76
+ setHighlightedIndex(prev);
77
+ listRef.current?.scrollToIndex(prev);
78
+ }
79
+ break;
80
+ }
81
+ case "Home": {
82
+ e.preventDefault();
83
+ const first = findNextEnabledIndex(-1, 1, false);
84
+ if (first >= 0) {
85
+ setHighlightedIndex(first);
86
+ listRef.current?.scrollToIndex(first);
87
+ }
88
+ break;
89
+ }
90
+ case "End": {
91
+ e.preventDefault();
92
+ const last = findNextEnabledIndex(items.length, -1, false);
93
+ if (last >= 0) {
94
+ setHighlightedIndex(last);
95
+ listRef.current?.scrollToIndex(last);
96
+ }
97
+ break;
98
+ }
99
+ case "Enter": {
100
+ e.preventDefault();
101
+ if (highlightedIndex >= 0 && highlightedIndex < items.length) {
102
+ const item = items[highlightedIndex];
103
+ if (!isItemDisabled(item)) {
104
+ onItemActivate(item);
105
+ if (closeOnActivate) {
106
+ closeMenu();
107
+ }
108
+ }
109
+ }
110
+ break;
111
+ }
112
+ case " ": {
113
+ const target = e.target;
114
+ if (target.tagName === "INPUT") break;
115
+ e.preventDefault();
116
+ if (highlightedIndex >= 0 && highlightedIndex < items.length) {
117
+ const item = items[highlightedIndex];
118
+ if (!isItemDisabled(item)) {
119
+ onItemActivate(item);
120
+ if (closeOnActivate) {
121
+ closeMenu();
122
+ }
123
+ }
124
+ }
125
+ break;
126
+ }
127
+ case "Escape": {
128
+ e.preventDefault();
129
+ closeMenu();
130
+ break;
131
+ }
132
+ case "Tab": {
133
+ closeMenu({ restoreFocus: false });
134
+ break;
135
+ }
136
+ }
137
+ },
138
+ [
139
+ isOpen,
140
+ highlightedIndex,
141
+ items,
142
+ findNextEnabledIndex,
143
+ isItemDisabled,
144
+ onItemActivate,
145
+ closeOnActivate,
146
+ closeMenu
147
+ ]
148
+ );
149
+ const handleTriggerKeyDown = useCallback(
150
+ (e) => {
151
+ if (e.key === "ArrowDown" || e.key === "ArrowUp") {
152
+ e.preventDefault();
153
+ if (!isOpen) openMenu();
154
+ }
155
+ if (e.key === "Enter" || e.key === " ") {
156
+ e.preventDefault();
157
+ if (isOpen) {
158
+ closeMenu();
159
+ } else {
160
+ openMenu();
161
+ }
162
+ }
163
+ },
164
+ [isOpen, openMenu, closeMenu]
165
+ );
166
+ const getTriggerProps = useCallback(() => {
167
+ return {
168
+ ref: triggerRef,
169
+ onClick: () => {
170
+ if (isOpen) {
171
+ closeMenu();
172
+ } else {
173
+ openMenu();
174
+ }
175
+ },
176
+ onKeyDown: handleTriggerKeyDown,
177
+ "aria-haspopup": "listbox",
178
+ "aria-controls": menuId,
179
+ "aria-expanded": isOpen,
180
+ "data-state": isOpen ? "open" : "close"
181
+ };
182
+ }, [isOpen, openMenu, closeMenu, menuId, handleTriggerKeyDown, triggerRef]);
183
+ const getMenuProps = useCallback(
184
+ (opts) => {
185
+ return {
186
+ role: "listbox",
187
+ id: menuId,
188
+ "aria-label": label,
189
+ tabIndex: 0,
190
+ "aria-activedescendant": highlightedIndex >= 0 ? getItemId(highlightedIndex) : void 0,
191
+ ref: menuContainerRef,
192
+ onKeyDown: handleKeyDown,
193
+ className: opts?.className,
194
+ style: { outline: "none", ...opts?.style }
195
+ };
196
+ },
197
+ [menuId, label, highlightedIndex, getItemId, handleKeyDown]
198
+ );
199
+ const getItemProps = useCallback(
200
+ (opts) => {
201
+ const { item, index, className, "data-type": dataType } = opts;
202
+ return {
203
+ role: "option",
204
+ id: getItemId(index),
205
+ "aria-selected": selectedItemIds.has(item.original.id),
206
+ "aria-disabled": isItemDisabled(item) || void 0,
207
+ onClick: () => {
208
+ if (isItemDisabled(item)) return;
209
+ onItemActivate(item);
210
+ if (closeOnActivate) {
211
+ closeMenu();
212
+ }
213
+ },
214
+ onMouseMove: () => {
215
+ if (highlightedIndex !== index) {
216
+ setHighlightedIndex(index);
217
+ }
218
+ },
219
+ className,
220
+ "data-type": dataType
221
+ };
222
+ },
223
+ [
224
+ getItemId,
225
+ selectedItemIds,
226
+ isItemDisabled,
227
+ onItemActivate,
228
+ closeOnActivate,
229
+ closeMenu,
230
+ highlightedIndex
231
+ ]
232
+ );
233
+ return {
234
+ isOpen,
235
+ openMenu,
236
+ closeMenu,
237
+ highlightedIndex,
238
+ setHighlightedIndex,
239
+ getTriggerProps,
240
+ getMenuProps,
241
+ getItemProps,
242
+ listRef,
243
+ menuContainerRef,
244
+ handleKeyDown
245
+ };
246
+ };
247
+
248
+ export { useMenuInteraction as u };
249
+ //# sourceMappingURL=useMenuInteraction-zR_78KQC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMenuInteraction-zR_78KQC.js","sources":["../src/beta/components/SelectMenu/internal/useMenuInteraction.ts"],"sourcesContent":["import {\n CSSProperties,\n KeyboardEvent,\n RefObject,\n useCallback,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport {\n SelectItem,\n SectionMeta,\n} from \"../../../../internal/types/selectFieldInternalTypes\";\nimport { OptionsPanelHandle } from \"../../../../internal/components/OptionsPanel\";\n\nexport type UseMenuInteractionConfig = {\n items: SelectItem[];\n sectionsMeta: SectionMeta[];\n onItemActivate: (item: SelectItem) => void;\n selectedItemIds: Set<string | number>;\n displayAs: \"popover\" | \"dialog\";\n closeOnActivate: boolean;\n disabled?: boolean;\n id: string;\n triggerRef: RefObject<HTMLButtonElement>;\n label: string;\n};\n\nexport type MenuTriggerProps = {\n ref: RefObject<HTMLButtonElement>;\n onClick: () => void;\n onKeyDown: (e: KeyboardEvent) => void;\n \"aria-haspopup\": \"listbox\";\n \"aria-controls\": string;\n \"aria-expanded\": boolean;\n \"data-state\": \"open\" | \"close\";\n};\n\ntype MenuPropsArg = {\n className?: string;\n style?: CSSProperties;\n};\n\ntype MenuReturnProps = MenuPropsArg & {\n role: \"listbox\";\n id: string;\n \"aria-label\": string;\n \"aria-labelledby\"?: string;\n tabIndex?: number;\n \"aria-activedescendant\"?: string;\n ref: RefObject<HTMLDivElement>;\n onKeyDown: (e: KeyboardEvent) => void;\n};\n\ntype ItemPropsArg = {\n item: SelectItem;\n index: number;\n className?: string;\n \"data-type\"?: string;\n};\n\ntype ItemReturnProps = {\n role: \"option\";\n id: string;\n \"aria-selected\": boolean;\n \"aria-disabled\"?: boolean;\n onClick: () => void;\n onMouseMove: () => void;\n className?: string;\n \"data-type\"?: string;\n};\n\nexport type GetMenuPropsFn = (opts?: MenuPropsArg) => MenuReturnProps;\nexport type GetItemPropsFn = (opts: ItemPropsArg) => ItemReturnProps;\n\nexport const useMenuInteraction = ({\n items,\n sectionsMeta: _sectionsMeta,\n onItemActivate,\n selectedItemIds,\n displayAs: _displayAs,\n closeOnActivate,\n disabled = false,\n id,\n triggerRef,\n label,\n}: UseMenuInteractionConfig) => {\n const [isOpen, setIsOpen] = useState(false);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n const generatedId = useId();\n const menuId = `${id}-menu-${generatedId}`;\n const menuContainerRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<OptionsPanelHandle>(null);\n\n const isItemDisabled = useCallback(\n (item: SelectItem) => {\n return (disabled || item.disabled) ?? false;\n },\n [disabled],\n );\n\n const findNextEnabledIndex = useCallback(\n (startIndex: number, direction: 1 | -1, wrap = true): number => {\n if (items.length === 0) return -1;\n const len = items.length;\n let index = startIndex;\n for (let i = 0; i < len; i++) {\n index = wrap\n ? (index + direction + len) % len\n : Math.min(Math.max(index + direction, 0), len - 1);\n if (!isItemDisabled(items[index])) return index;\n if (!wrap && (index === 0 || index === len - 1)) return -1;\n }\n return -1;\n },\n [items, isItemDisabled],\n );\n\n const openMenu = useCallback(() => {\n if (disabled) return;\n setIsOpen(true);\n }, [disabled]);\n\n const closeMenu = useCallback(\n (options?: { restoreFocus?: boolean }) => {\n setIsOpen(false);\n setHighlightedIndex(-1);\n if (options?.restoreFocus !== false) {\n triggerRef.current?.focus();\n }\n },\n [triggerRef],\n );\n\n const getItemId = useCallback(\n (index: number) => `${menuId}-option-${index}`,\n [menuId],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (!isOpen) return;\n\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n const next =\n highlightedIndex < 0\n ? findNextEnabledIndex(-1, 1)\n : findNextEnabledIndex(highlightedIndex, 1);\n if (next >= 0) {\n setHighlightedIndex(next);\n listRef.current?.scrollToIndex(next);\n }\n break;\n }\n case \"ArrowUp\": {\n e.preventDefault();\n const prev =\n highlightedIndex < 0\n ? findNextEnabledIndex(items.length, -1)\n : findNextEnabledIndex(highlightedIndex, -1);\n if (prev >= 0) {\n setHighlightedIndex(prev);\n listRef.current?.scrollToIndex(prev);\n }\n break;\n }\n case \"Home\": {\n e.preventDefault();\n const first = findNextEnabledIndex(-1, 1, false);\n if (first >= 0) {\n setHighlightedIndex(first);\n listRef.current?.scrollToIndex(first);\n }\n break;\n }\n case \"End\": {\n e.preventDefault();\n const last = findNextEnabledIndex(items.length, -1, false);\n if (last >= 0) {\n setHighlightedIndex(last);\n listRef.current?.scrollToIndex(last);\n }\n break;\n }\n case \"Enter\": {\n e.preventDefault();\n if (highlightedIndex >= 0 && highlightedIndex < items.length) {\n const item = items[highlightedIndex];\n if (!isItemDisabled(item)) {\n onItemActivate(item);\n if (closeOnActivate) {\n closeMenu();\n }\n }\n }\n break;\n }\n case \" \": {\n // Only activate on Space when the menu container itself has focus.\n // If a search input is focused, Space should type a space character.\n const target = e.target as HTMLElement;\n if (target.tagName === \"INPUT\") break;\n e.preventDefault();\n if (highlightedIndex >= 0 && highlightedIndex < items.length) {\n const item = items[highlightedIndex];\n if (!isItemDisabled(item)) {\n onItemActivate(item);\n if (closeOnActivate) {\n closeMenu();\n }\n }\n }\n break;\n }\n case \"Escape\": {\n e.preventDefault();\n closeMenu();\n break;\n }\n case \"Tab\": {\n closeMenu({ restoreFocus: false });\n break;\n }\n }\n },\n [\n isOpen,\n highlightedIndex,\n items,\n findNextEnabledIndex,\n isItemDisabled,\n onItemActivate,\n closeOnActivate,\n closeMenu,\n ],\n );\n\n const handleTriggerKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n if (!isOpen) openMenu();\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (isOpen) {\n closeMenu();\n } else {\n openMenu();\n }\n }\n },\n [isOpen, openMenu, closeMenu],\n );\n\n const getTriggerProps = useCallback((): MenuTriggerProps => {\n return {\n ref: triggerRef,\n onClick: () => {\n if (isOpen) {\n closeMenu();\n } else {\n openMenu();\n }\n },\n onKeyDown: handleTriggerKeyDown,\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": menuId,\n \"aria-expanded\": isOpen,\n \"data-state\": isOpen ? \"open\" : \"close\",\n };\n }, [isOpen, openMenu, closeMenu, menuId, handleTriggerKeyDown, triggerRef]);\n\n const getMenuProps: GetMenuPropsFn = useCallback(\n (opts?: MenuPropsArg): MenuReturnProps => {\n return {\n role: \"listbox\",\n id: menuId,\n \"aria-label\": label,\n tabIndex: 0,\n \"aria-activedescendant\":\n highlightedIndex >= 0 ? getItemId(highlightedIndex) : undefined,\n ref: menuContainerRef,\n onKeyDown: handleKeyDown,\n className: opts?.className,\n style: { outline: \"none\", ...opts?.style },\n };\n },\n [menuId, label, highlightedIndex, getItemId, handleKeyDown],\n );\n\n const getItemProps: GetItemPropsFn = useCallback(\n (opts: ItemPropsArg): ItemReturnProps => {\n const { item, index, className, \"data-type\": dataType } = opts;\n return {\n role: \"option\",\n id: getItemId(index),\n \"aria-selected\": selectedItemIds.has(item.original.id),\n \"aria-disabled\": isItemDisabled(item) || undefined,\n onClick: () => {\n if (isItemDisabled(item)) return;\n onItemActivate(item);\n if (closeOnActivate) {\n closeMenu();\n }\n },\n onMouseMove: () => {\n if (highlightedIndex !== index) {\n setHighlightedIndex(index);\n }\n },\n className,\n \"data-type\": dataType,\n };\n },\n [\n getItemId,\n selectedItemIds,\n isItemDisabled,\n onItemActivate,\n closeOnActivate,\n closeMenu,\n highlightedIndex,\n ],\n );\n\n return {\n isOpen,\n openMenu,\n closeMenu,\n highlightedIndex,\n setHighlightedIndex,\n getTriggerProps,\n getMenuProps,\n getItemProps,\n listRef,\n menuContainerRef,\n handleKeyDown,\n };\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef, useMemo, useCallback } from 'react';
3
+ import { V as VirtualizedOptionsPanel, O as OptionsPanel } from './syncFilterUtils-vt8ldsES.js';
4
+
5
+ const MultiSelectOptions = forwardRef(({ selectedOptions, items, virtualize, ...rest }, ref) => {
6
+ const selectedIds = useMemo(
7
+ () => new Set(selectedOptions.map((opt) => opt.id)),
8
+ [selectedOptions]
9
+ );
10
+ const getCheckedState = useCallback(
11
+ (item) => {
12
+ if (item.type === "select-all" || item.type === "select-filtered") {
13
+ return item.checkState ?? "indeterminate";
14
+ }
15
+ const checkId = item.type === "pinned-option" ? item.original.id : item.id;
16
+ return selectedIds.has(checkId) ? "checked" : "unchecked";
17
+ },
18
+ [selectedIds]
19
+ );
20
+ const ListComponent = virtualize ? VirtualizedOptionsPanel : OptionsPanel;
21
+ return /* @__PURE__ */ jsx(
22
+ ListComponent,
23
+ {
24
+ ...rest,
25
+ ref,
26
+ items,
27
+ selectionType: "multiple",
28
+ getCheckedState
29
+ }
30
+ );
31
+ });
32
+ MultiSelectOptions.displayName = "MultiSelectOptions";
33
+
34
+ const useToggleSelection = ({
35
+ options,
36
+ pinnedSections,
37
+ selectedOptions,
38
+ onSelectedOptionsChange
39
+ }) => {
40
+ const allPinnedOptions = useMemo(() => {
41
+ return pinnedSections.flatMap((section) => section.options);
42
+ }, [pinnedSections]);
43
+ const handleItemClick = useCallback(
44
+ (option) => {
45
+ const isSelected = selectedOptions.some((opt) => opt.id === option.id);
46
+ if (isSelected) {
47
+ onSelectedOptionsChange(
48
+ selectedOptions.filter((opt) => opt.id !== option.id)
49
+ );
50
+ } else {
51
+ const fullOption = options.find((opt) => opt.id === option.id) || allPinnedOptions.find((opt) => opt.id === option.id);
52
+ if (fullOption) {
53
+ onSelectedOptionsChange([...selectedOptions, fullOption]);
54
+ }
55
+ }
56
+ },
57
+ [selectedOptions, onSelectedOptionsChange, options, allPinnedOptions]
58
+ );
59
+ return { handleItemClick, allPinnedOptions };
60
+ };
61
+
62
+ export { MultiSelectOptions as M, useToggleSelection as u };
63
+ //# sourceMappingURL=useToggleSelection-BdXW3Zg3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToggleSelection-BdXW3Zg3.js","sources":["../src/internal/components/MultiSelectOptions.tsx","../src/internal/hooks/useToggleSelection.ts"],"sourcesContent":["import { MultiSelectFieldOption } from \"../../beta/components/MultiSelectField/types\";\nimport { CheckState } from \"../../types\";\nimport { CSSProperties, forwardRef, useCallback, useMemo } from \"react\";\nimport { OptionsPanel, OptionsPanelHandle } from \"./OptionsPanel\";\nimport { VirtualizedOptionsPanel } from \"./VirtualizedOptionsPanel\";\nimport {\n GetItemPropsFn,\n GetMenuPropsFn,\n SectionMeta,\n SelectItem,\n} from \"../types/selectFieldInternalTypes\";\n\nexport type MultiSelectOptionsProps = {\n isOpen: boolean;\n items: SelectItem[];\n getMenuProps: GetMenuPropsFn;\n getItemProps: GetItemPropsFn;\n highlightedIndex: number;\n selectedOptions: MultiSelectFieldOption[];\n hasMore: boolean;\n onLoadMore: () => void;\n loading: boolean;\n loadingMore: boolean;\n disableAutoLoadMore?: boolean;\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n sectionsMeta?: SectionMeta[];\n virtualize?: boolean;\n};\n\nexport const MultiSelectOptions = forwardRef<\n OptionsPanelHandle,\n MultiSelectOptionsProps\n>(({ selectedOptions, items, virtualize, ...rest }, ref) => {\n const selectedIds = useMemo(\n () => new Set(selectedOptions.map((opt) => opt.id)),\n [selectedOptions],\n );\n\n const getCheckedState = useCallback(\n (item: SelectItem): CheckState => {\n if (item.type === \"select-all\" || item.type === \"select-filtered\") {\n return item.checkState ?? \"indeterminate\";\n }\n const checkId =\n item.type === \"pinned-option\" ? item.original.id : item.id;\n return selectedIds.has(checkId) ? \"checked\" : \"unchecked\";\n },\n [selectedIds],\n );\n\n const ListComponent = virtualize ? VirtualizedOptionsPanel : OptionsPanel;\n\n return (\n <ListComponent\n {...rest}\n ref={ref}\n items={items}\n selectionType=\"multiple\"\n getCheckedState={getCheckedState}\n />\n );\n});\n\nMultiSelectOptions.displayName = \"MultiSelectOptions\";\n","import { useCallback, useMemo } from \"react\";\nimport { SelectFieldOption } from \"../../beta/components/SelectField/types\";\nimport { NormalizedPinnedSection } from \"./usePinnedOptions\";\n\ntype UseToggleSelectionParams = {\n options: SelectFieldOption[];\n pinnedSections: NormalizedPinnedSection[];\n selectedOptions: SelectFieldOption[];\n onSelectedOptionsChange: (options: SelectFieldOption[]) => void;\n};\n\n/**\n * Shared multi-select toggle logic: computes allPinnedOptions and provides\n * handleItemClick to add/remove an option from the selection.\n * Used by both useComboMultiple and useSelectModeMultiple.\n */\nexport const useToggleSelection = ({\n options,\n pinnedSections,\n selectedOptions,\n onSelectedOptionsChange,\n}: UseToggleSelectionParams) => {\n const allPinnedOptions = useMemo(() => {\n return pinnedSections.flatMap((section) => section.options);\n }, [pinnedSections]);\n\n const handleItemClick = useCallback(\n (option: { id: string | number; label: string }) => {\n const isSelected = selectedOptions.some((opt) => opt.id === option.id);\n if (isSelected) {\n onSelectedOptionsChange(\n selectedOptions.filter((opt) => opt.id !== option.id),\n );\n } else {\n const fullOption =\n options.find((opt) => opt.id === option.id) ||\n allPinnedOptions.find((opt) => opt.id === option.id);\n if (fullOption) {\n onSelectedOptionsChange([...selectedOptions, fullOption]);\n }\n }\n },\n [selectedOptions, onSelectedOptionsChange, options, allPinnedOptions],\n );\n\n return { handleItemClick, allPinnedOptions };\n};\n"],"names":[],"mappings":";;;;AA+BO,MAAM,kBAAA,GAAqB,UAAA,CAGhC,CAAC,EAAE,eAAA,EAAiB,OAAO,UAAA,EAAY,GAAG,IAAA,EAAK,EAAG,GAAA,KAAQ;AAC1D,EAAA,MAAM,WAAA,GAAc,OAAA;AAAA,IAClB,MAAM,IAAI,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAC,GAAA,KAAQ,GAAA,CAAI,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,eAAe;AAAA,GAClB;AAEA,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,IAAA,KAAiC;AAChC,MAAA,IAAI,IAAA,CAAK,IAAA,KAAS,YAAA,IAAgB,IAAA,CAAK,SAAS,iBAAA,EAAmB;AACjE,QAAA,OAAO,KAAK,UAAA,IAAc,eAAA;AAAA,MAC5B;AACA,MAAA,MAAM,UACJ,IAAA,CAAK,IAAA,KAAS,kBAAkB,IAAA,CAAK,QAAA,CAAS,KAAK,IAAA,CAAK,EAAA;AAC1D,MAAA,OAAO,WAAA,CAAY,GAAA,CAAI,OAAO,CAAA,GAAI,SAAA,GAAY,WAAA;AAAA,IAChD,CAAA;AAAA,IACA,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,MAAM,aAAA,GAAgB,aAAa,uBAAA,GAA0B,YAAA;AAE7D,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA,EAAc,UAAA;AAAA,MACd;AAAA;AAAA,GACF;AAEJ,CAAC;AAED,kBAAA,CAAmB,WAAA,GAAc,oBAAA;;ACjD1B,MAAM,qBAAqB,CAAC;AAAA,EACjC,OAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,KAAgC;AAC9B,EAAA,MAAM,gBAAA,GAAmB,QAAQ,MAAM;AACrC,IAAA,OAAO,cAAA,CAAe,OAAA,CAAQ,CAAC,OAAA,KAAY,QAAQ,OAAO,CAAA;AAAA,EAC5D,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,MAAA,KAAmD;AAClD,MAAA,MAAM,UAAA,GAAa,gBAAgB,IAAA,CAAK,CAAC,QAAQ,GAAA,CAAI,EAAA,KAAO,OAAO,EAAE,CAAA;AACrE,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,uBAAA;AAAA,UACE,gBAAgB,MAAA,CAAO,CAAC,QAAQ,GAAA,CAAI,EAAA,KAAO,OAAO,EAAE;AAAA,SACtD;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAM,aACJ,OAAA,CAAQ,IAAA,CAAK,CAAC,GAAA,KAAQ,IAAI,EAAA,KAAO,MAAA,CAAO,EAAE,CAAA,IAC1C,iBAAiB,IAAA,CAAK,CAAC,QAAQ,GAAA,CAAI,EAAA,KAAO,OAAO,EAAE,CAAA;AACrD,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,uBAAA,CAAwB,CAAC,GAAG,eAAA,EAAiB,UAAU,CAAC,CAAA;AAAA,QAC1D;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,eAAA,EAAiB,uBAAA,EAAyB,OAAA,EAAS,gBAAgB;AAAA,GACtE;AAEA,EAAA,OAAO,EAAE,iBAAiB,gBAAA,EAAiB;AAC7C;;;;"}
@@ -1,15 +1,5 @@
1
1
  import { isValidElement } from 'react';
2
-
3
- const warned = /* @__PURE__ */ new Set();
4
- function warnOnce(message) {
5
- if (process.env.NODE_ENV === "production") {
6
- return;
7
- }
8
- if (!warned.has(message)) {
9
- warned.add(message);
10
- console.warn(message);
11
- }
12
- }
2
+ import { w as warnOnce } from './warnOnce-Y9PRHcU4.js';
13
3
 
14
4
  function warnDeprecatedErrorUsage(componentName, error) {
15
5
  if (error === void 0 || typeof error === "boolean") return;
@@ -21,5 +11,5 @@ function warnDeprecatedErrorUsage(componentName, error) {
21
11
  }
22
12
  }
23
13
 
24
- export { warnOnce as a, warnDeprecatedErrorUsage as w };
25
- //# sourceMappingURL=utils-pudAMGnO.js.map
14
+ export { warnDeprecatedErrorUsage as w };
15
+ //# sourceMappingURL=utils-CM48ODEJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-CM48ODEJ.js","sources":["../src/components/FieldMessage/utils.ts"],"sourcesContent":["import { isValidElement, type ReactElement } from \"react\";\nimport { warnOnce } from \"../../internal/functions\";\n\n/**\n * Logs a dev-only deprecation warning when `error` is passed as a `ReactElement`.\n * String values are the preferred type and are NOT deprecated.\n * Should be called in consumer components that accept the union `error` prop.\n */\nexport function warnDeprecatedErrorUsage(\n componentName: string,\n error: ReactElement | string | boolean | string[] | undefined,\n): void {\n if (error === undefined || typeof error === \"boolean\") return;\n if (typeof error === \"string\" || Array.isArray(error)) return;\n\n // At this point, error is a ReactElement\n if (isValidElement(error)) {\n warnOnce(\n `[Anvil2 ${componentName}] Passing a ReactElement to the \\`error\\` prop is deprecated. ` +\n `Use a string or string[] instead: \\`error=\"message\"\\` or \\`error={[\"msg1\", \"msg2\"]}\\`. ` +\n `See https://beta.anvil.servicetitan.com/docs/web/components/field-message/code`,\n );\n }\n}\n"],"names":[],"mappings":";;;AAQO,SAAS,wBAAA,CACd,eACA,KAAA,EACM;AACN,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,OAAO,KAAA,KAAU,SAAA,EAAW;AACvD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AAGvD,EAAA,IAAI,cAAA,CAAe,KAAK,CAAA,EAAG;AACzB,IAAA,QAAA;AAAA,MACE,WAAW,aAAa,CAAA,mOAAA;AAAA,KAG1B;AAAA,EACF;AACF;;;;"}
@@ -0,0 +1,13 @@
1
+ const warned = /* @__PURE__ */ new Set();
2
+ function warnOnce(message) {
3
+ if (process.env.NODE_ENV === "production") {
4
+ return;
5
+ }
6
+ if (!warned.has(message)) {
7
+ warned.add(message);
8
+ console.warn(message);
9
+ }
10
+ }
11
+
12
+ export { warnOnce as w };
13
+ //# sourceMappingURL=warnOnce-Y9PRHcU4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnOnce-Y9PRHcU4.js","sources":["../src/internal/functions/warnOnce.ts"],"sourcesContent":["const warned = new Set<string>();\n\n/**\n * Logs a console.warn in development only, and only once per unique message.\n * Tree-shaken in production builds via the `process.env.NODE_ENV` guard.\n */\nexport function warnOnce(message: string): void {\n if (process.env.NODE_ENV === \"production\") {\n return;\n }\n\n if (!warned.has(message)) {\n warned.add(message);\n console.warn(message);\n }\n}\n"],"names":[],"mappings":"AAAA,MAAM,MAAA,uBAAa,GAAA,EAAY;AAMxB,SAAS,SAAS,OAAA,EAAuB;AAC9C,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA,EAAG;AACxB,IAAA,MAAA,CAAO,IAAI,OAAO,CAAA;AAClB,IAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AAAA,EACtB;AACF;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/anvil2",
3
- "version": "2.6.0",
3
+ "version": "2.7.0",
4
4
  "type": "module",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.js",
@@ -59,8 +59,8 @@
59
59
  "tabbable": "^6.2.0",
60
60
  "tinycolor2": "^1.6.0",
61
61
  "uuid": "^10.0.0",
62
- "@servicetitan/hammer-token": "2.5.1",
63
- "@servicetitan/hammer-icon": "1.2.0"
62
+ "@servicetitan/hammer-icon": "1.2.0",
63
+ "@servicetitan/hammer-token": "2.5.1"
64
64
  },
65
65
  "peerDependencies": {
66
66
  "@types/react": "^18 || ^19",
@@ -71,11 +71,12 @@
71
71
  "devDependencies": {
72
72
  "@chromatic-com/storybook": "^5.0.1",
73
73
  "@figma/code-connect": "^1.3.12",
74
- "@storybook/addon-a11y": "10.2.9",
75
- "@storybook/addon-docs": "10.2.9",
76
- "@storybook/addon-links": "10.2.9",
77
- "@storybook/addon-vitest": "10.2.9",
78
- "@storybook/react-vite": "10.2.9",
74
+ "@storybook/addon-a11y": "10.3.3",
75
+ "@storybook/addon-docs": "10.3.3",
76
+ "@storybook/addon-links": "10.3.3",
77
+ "@storybook/addon-mcp": "0.4.2",
78
+ "@storybook/addon-vitest": "10.3.3",
79
+ "@storybook/react-vite": "10.3.3",
79
80
  "@testing-library/jest-dom": "^5.17.0",
80
81
  "@testing-library/react": "^16.1.0",
81
82
  "@testing-library/user-event": "^14.5.2",
@@ -101,7 +102,7 @@
101
102
  "remark-parse": "^11.0.0",
102
103
  "remark-stringify": "^11.0.0",
103
104
  "sass": "1.87.0",
104
- "storybook": "10.2.9",
105
+ "storybook": "10.3.3",
105
106
  "svgo": "^3.3.2",
106
107
  "typescript": "^5.7.2",
107
108
  "unified": "^11.0.5",
@@ -1 +0,0 @@
1
- {"version":3,"file":"Checkbox-LPr8zpzs.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 styles from \"./Checkbox.module.scss\";\nimport cx from \"classnames\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { FieldLabel } from \"../FieldLabel\";\nimport { FieldLabelMoreInfoIcon } from \"../FieldLabel/internal/FieldLabelMoreInfoIcon\";\nimport { FieldLabelProps } 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<FieldLabelProps, \"labelProps\">\n */\nexport type CheckboxGroupProps = ComponentPropsWithoutRef<\"fieldset\"> &\n LayoutUtilProps &\n Omit<FieldLabelProps, \"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 /**\n * legend for the fieldset\n */\n legend: string | ReactElement;\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\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 legend,\n moreInfo,\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 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 {legend}\n {required && \", required\"}\n </legend>\n <div className={styles[\"label-row\"]}>\n <FieldLabel aria-hidden required={required} className={labelClassNames}>\n {legend}\n </FieldLabel>\n {moreInfo && (\n <FieldLabelMoreInfoIcon\n moreInfo={moreInfo}\n moreInfoId={moreInfoUid}\n />\n )}\n </div>\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\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 ...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 className={cx({ [styles[\"focus-label\"]]: hideCheckbox })}>\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":"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"}