@servicetitan/anvil2 2.7.0 → 2.8.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 (389) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/dist/{floating-ui.react-C_s3_nEb.js → AiMark-Cwc9KoyE.js} +767 -5
  3. package/dist/AiMark-Cwc9KoyE.js.map +1 -0
  4. package/dist/AiMark.css +260 -0
  5. package/dist/AiMark.d.ts +2 -0
  6. package/dist/AiMark.js +2 -0
  7. package/dist/AiMark.js.map +1 -0
  8. package/dist/{Alert-C_o2f78C.js → Alert-5qhkSUN3.js} +27 -13
  9. package/dist/Alert-5qhkSUN3.js.map +1 -0
  10. package/dist/Alert.css +23 -15
  11. package/dist/Alert.js +1 -1
  12. package/dist/{Announcement-CyrTvgP4.js → Announcement-fQmFNysn.js} +2 -2
  13. package/dist/{Announcement-CyrTvgP4.js.map → Announcement-fQmFNysn.js.map} +1 -1
  14. package/dist/Announcement.js +1 -1
  15. package/dist/{Avatar-CCnbKkCm.js → Avatar-BckUfs1N.js} +48 -46
  16. package/dist/{Avatar-CCnbKkCm.js.map → Avatar-BckUfs1N.js.map} +1 -1
  17. package/dist/Avatar-ChybzixS.js +35 -0
  18. package/dist/Avatar-ChybzixS.js.map +1 -0
  19. package/dist/Avatar.js +2 -2
  20. package/dist/Breadcrumbs-BXo2FO2n.js +107 -0
  21. package/dist/Breadcrumbs-BXo2FO2n.js.map +1 -0
  22. package/dist/Breadcrumbs.js +1 -1
  23. package/dist/Button-a_D7tUgM.js +4517 -0
  24. package/dist/Button-a_D7tUgM.js.map +1 -0
  25. package/dist/Button.js +1 -1
  26. package/dist/{ButtonToggle-DaYJWso_.js → ButtonToggle-CmY77gUp.js} +2 -2
  27. package/dist/{ButtonToggle-DaYJWso_.js.map → ButtonToggle-CmY77gUp.js.map} +1 -1
  28. package/dist/ButtonToggle.js +1 -1
  29. package/dist/{Calendar-SGlTt-bs.js → Calendar-Bd_WELZC.js} +130 -119
  30. package/dist/Calendar-Bd_WELZC.js.map +1 -0
  31. package/dist/{Calendar-C1U2npPP.js → Calendar-d2owsYe9.js} +2 -2
  32. package/dist/{Calendar-C1U2npPP.js.map → Calendar-d2owsYe9.js.map} +1 -1
  33. package/dist/Calendar.css +51 -51
  34. package/dist/Calendar.js +2 -2
  35. package/dist/Card-wz71dEVA.js.map +1 -1
  36. package/dist/{Checkbox-CtKUNeyu.js → Checkbox-BlFc6ZWy.js} +25 -14
  37. package/dist/Checkbox-BlFc6ZWy.js.map +1 -0
  38. package/dist/Checkbox-DbaZrUE2.js +52 -0
  39. package/dist/Checkbox-DbaZrUE2.js.map +1 -0
  40. package/dist/Checkbox.js +1 -1
  41. package/dist/{Chip-DjTAR0va.js → Chip-BnofwIUN.js} +43 -13
  42. package/dist/Chip-BnofwIUN.js.map +1 -0
  43. package/dist/Chip.css +44 -28
  44. package/dist/Chip.js +1 -1
  45. package/dist/{Combobox-By8-34bw.js → Combobox-BOxAzG9v.js} +186 -183
  46. package/dist/{Combobox-By8-34bw.js.map → Combobox-BOxAzG9v.js.map} +1 -1
  47. package/dist/Combobox.js +1 -1
  48. package/dist/{DataTable-BYOS6icI.js → DataTable-DK9xRjnq.js} +762 -651
  49. package/dist/DataTable-DK9xRjnq.js.map +1 -0
  50. package/dist/DataTable.css +84 -74
  51. package/dist/{DateFieldRange-C8Uzrboc.js → DateFieldRange-5Jrz6dLl.js} +20 -6
  52. package/dist/DateFieldRange-5Jrz6dLl.js.map +1 -0
  53. package/dist/DateFieldRange.js +1 -1
  54. package/dist/{DateFieldSingle-DrhLIjlK.js → DateFieldSingle-DWFr6Ew4.js} +8 -8
  55. package/dist/{DateFieldSingle-DrhLIjlK.js.map → DateFieldSingle-DWFr6Ew4.js.map} +1 -1
  56. package/dist/DateFieldSingle.js +1 -1
  57. package/dist/{DateFieldYearless-DbivK4Hm.js → DateFieldYearless-UU22A5-E.js} +22 -6
  58. package/dist/DateFieldYearless-UU22A5-E.js.map +1 -0
  59. package/dist/DateFieldYearless.js +1 -1
  60. package/dist/{DateFieldYearlessRange-BEqJe4Uf.js → DateFieldYearlessRange-BoPLxm6t.js} +3 -3
  61. package/dist/DateFieldYearlessRange-BoPLxm6t.js.map +1 -0
  62. package/dist/DateFieldYearlessRange.js +1 -1
  63. package/dist/{DaysOfTheWeek-BR32AA32.js → DaysOfTheWeek-4cfTmjzm.js} +4 -4
  64. package/dist/{DaysOfTheWeek-BR32AA32.js.map → DaysOfTheWeek-4cfTmjzm.js.map} +1 -1
  65. package/dist/DaysOfTheWeek.js +1 -1
  66. package/dist/{Details-Dxq_v3Qg.js → Details-CZOIpNP_.js} +8 -8
  67. package/dist/Details-CZOIpNP_.js.map +1 -0
  68. package/dist/Details.js +1 -1
  69. package/dist/{Dialog-CGhwkwvq.js → Dialog-Dn836WQM.js} +73 -73
  70. package/dist/Dialog-Dn836WQM.js.map +1 -0
  71. package/dist/Dialog.js +1 -1
  72. package/dist/{DialogCancelButton-DQDMzGeT.js → DialogCancelButton-B-jfihJr.js} +2 -2
  73. package/dist/{DialogCancelButton-DQDMzGeT.js.map → DialogCancelButton-B-jfihJr.js.map} +1 -1
  74. package/dist/{Drawer-DA4iAgt-.js → Drawer-CdDWt_Ba.js} +86 -86
  75. package/dist/Drawer-CdDWt_Ba.js.map +1 -0
  76. package/dist/Drawer.js +1 -1
  77. package/dist/DrillDown.js +1 -1
  78. package/dist/{EditCard-CLN0GBN_.js → EditCard-CZibhEfS.js} +3 -3
  79. package/dist/{EditCard-CLN0GBN_.js.map → EditCard-CZibhEfS.js.map} +1 -1
  80. package/dist/EditCard.js +1 -1
  81. package/dist/FieldLabel-Dr41PRxH.js +180 -0
  82. package/dist/FieldLabel-Dr41PRxH.js.map +1 -0
  83. package/dist/FieldLabel.css +33 -73
  84. package/dist/FieldLabel.js +1 -1
  85. package/dist/Grid-DeYIx5k4.js +149 -0
  86. package/dist/Grid-DeYIx5k4.js.map +1 -0
  87. package/dist/Grid.js +1 -1
  88. package/dist/{InputMask-HjaNCb73.js → InputMask-CcXqzqdx.js} +3 -3
  89. package/dist/{InputMask-HjaNCb73.js.map → InputMask-CcXqzqdx.js.map} +1 -1
  90. package/dist/InputMask.js +1 -1
  91. package/dist/{Layout-VfhlilMG.js → Layout-CISAxILX.js} +34 -33
  92. package/dist/Layout-CISAxILX.js.map +1 -0
  93. package/dist/Layout.js +1 -1
  94. package/dist/List--KhCpjZn.js +103 -0
  95. package/dist/List--KhCpjZn.js.map +1 -0
  96. package/dist/List.js +1 -1
  97. package/dist/{ListView-mujFK6mQ.js → ListView-D9cZUVer.js} +6 -6
  98. package/dist/ListView-D9cZUVer.js.map +1 -0
  99. package/dist/ListView.js +1 -1
  100. package/dist/{Listbox-BtAgBDRS.js → Listbox-CgDwzRfz.js} +6 -5
  101. package/dist/Listbox-CgDwzRfz.js.map +1 -0
  102. package/dist/Listbox.js +1 -1
  103. package/dist/{Menu-BXsmCP20.js → Menu-CPbuIsqC.js} +367 -367
  104. package/dist/Menu-CPbuIsqC.js.map +1 -0
  105. package/dist/Menu.js +1 -1
  106. package/dist/MultiSelectField.js +1 -1
  107. package/dist/{MultiSelectFieldSync-DGpGgu8q.js → MultiSelectFieldSync-Ei7DXzvs.js} +31 -18
  108. package/dist/MultiSelectFieldSync-Ei7DXzvs.js.map +1 -0
  109. package/dist/MultiSelectMenu.js +1 -1
  110. package/dist/{MultiSelectMenuSync-DiLddJDw.js → MultiSelectMenuSync-B_mXpTEe.js} +29 -9
  111. package/dist/MultiSelectMenuSync-B_mXpTEe.js.map +1 -0
  112. package/dist/{NumberField-svhZp1kB.js → NumberField-C5t47Obp.js} +16 -5
  113. package/dist/NumberField-C5t47Obp.js.map +1 -0
  114. package/dist/NumberField.js +1 -1
  115. package/dist/Overflow.css +27 -26
  116. package/dist/Overflow.js +11 -11
  117. package/dist/{Page-Be029Dij.js → Page-2hbQxUj6.js} +223 -207
  118. package/dist/Page-2hbQxUj6.js.map +1 -0
  119. package/dist/Page.css +78 -76
  120. package/dist/Page.js +1 -1
  121. package/dist/{Pagination-BAwqfl_2.js → Pagination-CjGmJ_rU.js} +20 -18
  122. package/dist/Pagination-CjGmJ_rU.js.map +1 -0
  123. package/dist/Pagination.js +1 -1
  124. package/dist/{Popover-D0qSKZ1J.js → Popover-CpU9VAcb.js} +356 -358
  125. package/dist/Popover-CpU9VAcb.js.map +1 -0
  126. package/dist/Popover.js +1 -1
  127. package/dist/{ProgressBar-JpRDW5vG.js → ProgressBar-FMuK8viJ.js} +2 -2
  128. package/dist/{ProgressBar-JpRDW5vG.js.map → ProgressBar-FMuK8viJ.js.map} +1 -1
  129. package/dist/ProgressBar.js +1 -1
  130. package/dist/{Radio-BQg7exDG.js → Radio-CZZd8phn.js} +25 -14
  131. package/dist/Radio-CZZd8phn.js.map +1 -0
  132. package/dist/Radio-DmtVWAmN.js +60 -0
  133. package/dist/Radio-DmtVWAmN.js.map +1 -0
  134. package/dist/Radio.js +1 -1
  135. package/dist/{SegmentedControl-7fDLhgvh.js → SegmentedControl-B9NWUF7s.js} +81 -77
  136. package/dist/{SegmentedControl-7fDLhgvh.js.map → SegmentedControl-B9NWUF7s.js.map} +1 -1
  137. package/dist/SegmentedControl.js +1 -1
  138. package/dist/SelectCard-8OmIDl1m.js +352 -0
  139. package/dist/SelectCard-8OmIDl1m.js.map +1 -0
  140. package/dist/SelectCard.js +1 -1
  141. package/dist/SelectField.js +1 -1
  142. package/dist/{SelectFieldLabel-Dr8HeW3N.js → SelectFieldLabel-C8PrXxDU.js} +5 -4
  143. package/dist/SelectFieldLabel-C8PrXxDU.js.map +1 -0
  144. package/dist/{SelectFieldSync-CJ2Ie_v1.js → SelectFieldSync-DGK8F2G9.js} +13 -13
  145. package/dist/SelectFieldSync-DGK8F2G9.js.map +1 -0
  146. package/dist/SelectMenu.js +1 -1
  147. package/dist/{SelectMenuSync-CJA_coqD.js → SelectMenuSync-CuZp9mnt.js} +29 -9
  148. package/dist/SelectMenuSync-CuZp9mnt.js.map +1 -0
  149. package/dist/{SelectOptions-Bf4xsFek.js → SelectOptions-CmElsiTd.js} +2 -2
  150. package/dist/{SelectOptions-Bf4xsFek.js.map → SelectOptions-CmElsiTd.js.map} +1 -1
  151. package/dist/{SelectTrigger-ObsnAKNp.js → SelectTrigger-KF8w6Ynk.js} +8 -6
  152. package/dist/SelectTrigger-KF8w6Ynk.js.map +1 -0
  153. package/dist/SelectTrigger.js +1 -1
  154. package/dist/{SelectTriggerBase-DKfOL2RJ.js → SelectTriggerBase-Bxmv6oXk.js} +4 -4
  155. package/dist/{SelectTriggerBase-DKfOL2RJ.js.map → SelectTriggerBase-Bxmv6oXk.js.map} +1 -1
  156. package/dist/{SideNav-KksbSQn7.js → SideNav-CrxYExjh.js} +137 -135
  157. package/dist/{SideNav-KksbSQn7.js.map → SideNav-CrxYExjh.js.map} +1 -1
  158. package/dist/SideNav.css +72 -55
  159. package/dist/SideNav.js +1 -1
  160. package/dist/Skeleton.css +18 -12
  161. package/dist/Skeleton.js +24 -11
  162. package/dist/Skeleton.js.map +1 -1
  163. package/dist/{Stepper-Dt8_ImvJ.js → Stepper-_27Lmm2K.js} +158 -158
  164. package/dist/{Stepper-Dt8_ImvJ.js.map → Stepper-_27Lmm2K.js.map} +1 -1
  165. package/dist/Stepper.js +1 -1
  166. package/dist/{Switch-DpPHr3G3.js → Switch-DPGz7wC_.js} +14 -2
  167. package/dist/Switch-DPGz7wC_.js.map +1 -0
  168. package/dist/Switch.js +1 -1
  169. package/dist/{Tab-DO7LaUbw.js → Tab-BZpTCG0i.js} +227 -223
  170. package/dist/Tab-BZpTCG0i.js.map +1 -0
  171. package/dist/Tab.js +1 -1
  172. package/dist/Table.js +1 -1
  173. package/dist/{Text-BJo4oMI2.js → Text-MVxRo6yx.js} +30 -12
  174. package/dist/Text-MVxRo6yx.js.map +1 -0
  175. package/dist/Text.css +37 -20
  176. package/dist/Text.js +1 -1
  177. package/dist/{TextField-DeHpgPag.js → TextField-BpSxZa0z.js} +21 -5
  178. package/dist/TextField-BpSxZa0z.js.map +1 -0
  179. package/dist/{TextField-BW8sJAls.js → TextField-D93iv_pk.js} +2 -2
  180. package/dist/{TextField-BW8sJAls.js.map → TextField-D93iv_pk.js.map} +1 -1
  181. package/dist/TextField.js +1 -1
  182. package/dist/{Textarea-DyqdMTvQ.js → Textarea-1u2fSMTh.js} +21 -5
  183. package/dist/Textarea-1u2fSMTh.js.map +1 -0
  184. package/dist/Textarea.js +1 -1
  185. package/dist/{TimeField-Dc0Y1JD-.js → TimeField-B4gLlBQJ.js} +6 -5
  186. package/dist/{TimeField-Dc0Y1JD-.js.map → TimeField-B4gLlBQJ.js.map} +1 -1
  187. package/dist/TimeField.js +1 -1
  188. package/dist/Toast.js +2 -2
  189. package/dist/{Toaster-b0-Ub3yt.js → Toaster-CSJfSOHx.js} +5 -5
  190. package/dist/Toaster-CSJfSOHx.js.map +1 -0
  191. package/dist/{Toaster-DikGo_hR.js → Toaster-DbWYnF_t.js} +2 -2
  192. package/dist/{Toaster-DikGo_hR.js.map → Toaster-DbWYnF_t.js.map} +1 -1
  193. package/dist/{Toolbar-DAuz4Gs2.js → Toolbar-CWRk523l.js} +150 -149
  194. package/dist/{Toolbar-DAuz4Gs2.js.map → Toolbar-CWRk523l.js.map} +1 -1
  195. package/dist/Toolbar.js +1 -1
  196. package/dist/{Tooltip-Bupqao9B.js → Tooltip-C1PBRnJv.js} +225 -228
  197. package/dist/Tooltip-C1PBRnJv.js.map +1 -0
  198. package/dist/Tooltip.js +1 -1
  199. package/dist/{YearlessDateInputWithPicker-DFi08TLG.js → YearlessDateInputWithPicker-BSl5z2zo.js} +2 -3
  200. package/dist/{YearlessDateInputWithPicker-DFi08TLG.js.map → YearlessDateInputWithPicker-BSl5z2zo.js.map} +1 -1
  201. package/dist/assets/icons/st/ai_mark_gradient.svg +1 -1
  202. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  203. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldInput.d.ts +3 -2
  204. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  205. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldTrigger.d.ts +3 -2
  206. package/dist/beta/components/MultiSelectField/internal/types.d.ts +4 -3
  207. package/dist/beta/components/MultiSelectField/types.d.ts +28 -7
  208. package/dist/beta/components/MultiSelectMenu/types.d.ts +15 -0
  209. package/dist/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
  210. package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +4 -4
  211. package/dist/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
  212. package/dist/beta/components/SelectField/types.d.ts +5 -5
  213. package/dist/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +3 -1
  214. package/dist/beta/components/SelectMenu/types.d.ts +15 -0
  215. package/dist/beta/components/Table/DataTable/DataTable.d.ts +2 -15
  216. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectAsyncCell.d.ts +35 -0
  217. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.d.ts +4 -3
  218. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectAsyncCell.d.ts +7 -0
  219. package/dist/beta/components/Table/DataTable/internal/editable-cells/useEditableMenuCell.d.ts +34 -0
  220. package/dist/beta/components/Table/DataTable/internal/usePageDataCache.d.ts +29 -0
  221. package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +2 -4
  222. package/dist/beta/components/Table/DataTable/types.d.ts +48 -1
  223. package/dist/beta/components/Table/createColumnHelper.d.ts +23 -68
  224. package/dist/beta/components/Table/types.d.ts +218 -42
  225. package/dist/beta/components/Toolbar/Toolbar.d.ts +175 -44
  226. package/dist/beta/components/Toolbar/ToolbarSelect.d.ts +5 -3
  227. package/dist/beta.js +9 -9
  228. package/dist/components/AiMark/AiMark.d.ts +87 -0
  229. package/dist/components/AiMark/index.d.ts +1 -0
  230. package/dist/components/AiMark/internal/AiMarkIconAnimated.d.ts +30 -0
  231. package/dist/components/AiMark/internal/AiMarkInteractive.d.ts +10 -0
  232. package/dist/components/AiMark/stories/aiMarkStoryArgTypes.d.ts +16 -0
  233. package/dist/components/Alert/Alert.d.ts +12 -0
  234. package/dist/components/Avatar/Avatar.d.ts +14 -0
  235. package/dist/components/Button/Button.d.ts +14 -6
  236. package/dist/components/Button/internal/buttonAiMarkUtils.d.ts +18 -0
  237. package/dist/components/Button/internal/index.d.ts +1 -0
  238. package/dist/components/Calendar/Calendar.d.ts +84 -26
  239. package/dist/components/Card/Card.d.ts +6 -1
  240. package/dist/components/Checkbox/Checkbox.d.ts +2 -0
  241. package/dist/components/Checkbox/CheckboxGroup.d.ts +27 -6
  242. package/dist/components/Chip/Chip.d.ts +10 -1
  243. package/dist/components/Chip/internal/Chip.d.ts +4 -0
  244. package/dist/components/Combobox/Combobox.d.ts +172 -1
  245. package/dist/components/DateFieldRange/internal/MaskedDateRangeInput.d.ts +1 -1
  246. package/dist/components/DateFieldRange/internal/useDateFieldRangeConversion.d.ts +1 -1
  247. package/dist/components/DateFieldSingle/internal/MaskedDateInput.d.ts +1 -1
  248. package/dist/components/DateFieldYearless/DateFieldYearless.d.ts +8 -1
  249. package/dist/components/DateFieldYearless/internal/YearlessDateInput.d.ts +1 -1
  250. package/dist/components/DateFieldYearless/internal/YearlessDateInputWithPicker.d.ts +1 -1
  251. package/dist/components/DateFieldYearlessRange/DateFieldYearlessRange.d.ts +7 -0
  252. package/dist/components/Dialog/Dialog.d.ts +96 -28
  253. package/dist/components/DrillDown/DrillDown.d.ts +7 -1
  254. package/dist/components/FieldLabel/FieldLabel.d.ts +2 -1
  255. package/dist/components/FieldLabel/internal/FieldLabelButton.d.ts +3 -2
  256. package/dist/components/Layout/Layout.d.ts +52 -44
  257. package/dist/components/ListView/ListView.d.ts +5 -5
  258. package/dist/components/Listbox/Listbox.d.ts +5 -23
  259. package/dist/components/Menu/Menu.d.ts +1 -4
  260. package/dist/components/NumberField/NumberField.d.ts +29 -2
  261. package/dist/components/Radio/Radio.d.ts +2 -0
  262. package/dist/components/Radio/RadioGroup.d.ts +27 -6
  263. package/dist/components/SelectCard/SelectCard.d.ts +1 -1
  264. package/dist/components/SelectCard/SelectCardGroup.d.ts +18 -1
  265. package/dist/components/SelectCard/internal/SelectCardContext.d.ts +11 -0
  266. package/dist/components/SelectCard/internal/SelectCardProvider.d.ts +11 -1
  267. package/dist/components/Skeleton/SkeletonCircle.d.ts +8 -0
  268. package/dist/components/Skeleton/SkeletonPill.d.ts +8 -0
  269. package/dist/components/Skeleton/SkeletonRectangle.d.ts +8 -0
  270. package/dist/components/Skeleton/SkeletonText.d.ts +6 -1
  271. package/dist/components/Skeleton/index.d.ts +3 -0
  272. package/dist/components/Switch/Switch.d.ts +11 -1
  273. package/dist/components/Text/types.d.ts +9 -0
  274. package/dist/components/TextField/internal/TextField.d.ts +11 -0
  275. package/dist/components/Textarea/Textarea.d.ts +9 -2
  276. package/dist/components/Toast/internal/Toast.d.ts +5 -0
  277. package/dist/components/Toast/toast.d.ts +1 -1
  278. package/dist/components/Toolbar/Toolbar.d.ts +8 -4
  279. package/dist/components/Toolbar/ToolbarSelect.d.ts +5 -3
  280. package/dist/components/index.d.ts +1 -0
  281. package/dist/{floating-ui.react-dom-imrk9N49.js → floating-ui.react-dom-CHrYz13o.js} +17 -2
  282. package/dist/floating-ui.react-dom-CHrYz13o.js.map +1 -0
  283. package/dist/hooks/index.d.ts +1 -0
  284. package/dist/hooks/usePrefersReducedMotion/index.d.ts +1 -0
  285. package/dist/hooks/usePrefersReducedMotion/usePrefersReducedMotion.d.ts +15 -0
  286. package/dist/index.js +135 -133
  287. package/dist/index.js.map +1 -1
  288. package/dist/internal/components/InlineMarkdown/InlineMarkdown.d.ts +23 -0
  289. package/dist/internal/components/InlineMarkdown/index.d.ts +1 -0
  290. package/dist/internal/components/Label/Label.d.ts +1 -1
  291. package/dist/internal/components/Popover/Popover.d.ts +3 -1
  292. package/dist/internal/components/index.d.ts +2 -1
  293. package/dist/internal/functions/index.d.ts +2 -0
  294. package/dist/internal/functions/inlineMarkdown.d.ts +20 -0
  295. package/dist/internal/functions/stripInlineMarkdown.d.ts +8 -0
  296. package/dist/internal/types/props.d.ts +2 -1
  297. package/dist/internal/types/selectFieldInternalTypes.d.ts +2 -2
  298. package/dist/internal/utils/index.d.ts +1 -0
  299. package/dist/internal/utils/inlineMarkdownRegex.d.ts +5 -0
  300. package/dist/{proxy-BbFHSE6L.js → proxy-DEehATlA.js} +8 -2
  301. package/dist/{proxy-BbFHSE6L.js.map → proxy-DEehATlA.js.map} +1 -1
  302. package/dist/stripInlineMarkdown-DyqLAQnf.js +25 -0
  303. package/dist/stripInlineMarkdown-DyqLAQnf.js.map +1 -0
  304. package/dist/{syncFilterUtils-vt8ldsES.js → syncFilterUtils-CsbCnI1-.js} +194 -194
  305. package/dist/{syncFilterUtils-vt8ldsES.js.map → syncFilterUtils-CsbCnI1-.js.map} +1 -1
  306. package/dist/types/ai-marks.d.ts +72 -0
  307. package/dist/types/index.d.ts +1 -0
  308. package/dist/{use-reduced-motion-DSpxmqyT.js → use-reduced-motion-CqjZZ5QB.js} +2 -2
  309. package/dist/{use-reduced-motion-DSpxmqyT.js.map → use-reduced-motion-CqjZZ5QB.js.map} +1 -1
  310. package/dist/{useDrilldown-wwXRpNgb.js → useDrilldown-C7eMBl68.js} +43 -41
  311. package/dist/{useDrilldown-wwXRpNgb.js.map → useDrilldown-C7eMBl68.js.map} +1 -1
  312. package/dist/{useInitialFocus-CdoVwSbr.js → useInitialFocus-DbaB-x5T.js} +2 -3
  313. package/dist/{useInitialFocus-CdoVwSbr.js.map → useInitialFocus-DbaB-x5T.js.map} +1 -1
  314. package/dist/{useMenuInteraction-zR_78KQC.js → useMenuInteraction-BwZ2ORo9.js} +8 -3
  315. package/dist/useMenuInteraction-BwZ2ORo9.js.map +1 -0
  316. package/dist/{index.esm-BZV0wNKZ.js → usePopoverTransitionStates-B1opfxxn.js} +88 -2
  317. package/dist/usePopoverTransitionStates-B1opfxxn.js.map +1 -0
  318. package/dist/usePrefersReducedMotion-DR9B_D6w.js +37 -0
  319. package/dist/usePrefersReducedMotion-DR9B_D6w.js.map +1 -0
  320. package/dist/usePrefersReducedMotion.d.ts +2 -0
  321. package/dist/usePrefersReducedMotion.js +2 -0
  322. package/dist/usePrefersReducedMotion.js.map +1 -0
  323. package/dist/{useToggleSelection-BdXW3Zg3.js → useToggleSelection-BM8asdFj.js} +2 -2
  324. package/dist/{useToggleSelection-BdXW3Zg3.js.map → useToggleSelection-BM8asdFj.js.map} +1 -1
  325. package/package.json +4 -2
  326. package/dist/Alert-C_o2f78C.js.map +0 -1
  327. package/dist/Avatar--CnTAnfD.js +0 -35
  328. package/dist/Avatar--CnTAnfD.js.map +0 -1
  329. package/dist/Breadcrumbs-3Y7jnj-F.js +0 -105
  330. package/dist/Breadcrumbs-3Y7jnj-F.js.map +0 -1
  331. package/dist/Button-CVsGhVJz.js +0 -113
  332. package/dist/Button-CVsGhVJz.js.map +0 -1
  333. package/dist/Calendar-SGlTt-bs.js.map +0 -1
  334. package/dist/Checkbox-CjEKa5Iv.js +0 -50
  335. package/dist/Checkbox-CjEKa5Iv.js.map +0 -1
  336. package/dist/Checkbox-CtKUNeyu.js.map +0 -1
  337. package/dist/Chip-DjTAR0va.js.map +0 -1
  338. package/dist/DataTable-BYOS6icI.js.map +0 -1
  339. package/dist/DateFieldRange-C8Uzrboc.js.map +0 -1
  340. package/dist/DateFieldYearless-DbivK4Hm.js.map +0 -1
  341. package/dist/DateFieldYearlessRange-BEqJe4Uf.js.map +0 -1
  342. package/dist/Details-Dxq_v3Qg.js.map +0 -1
  343. package/dist/Dialog-CGhwkwvq.js.map +0 -1
  344. package/dist/Drawer-DA4iAgt-.js.map +0 -1
  345. package/dist/FieldLabel-DbMosKtd.js +0 -125
  346. package/dist/FieldLabel-DbMosKtd.js.map +0 -1
  347. package/dist/Grid-ONcUpb__.js +0 -147
  348. package/dist/Grid-ONcUpb__.js.map +0 -1
  349. package/dist/Layout-VfhlilMG.js.map +0 -1
  350. package/dist/List-CJZjElAQ.js +0 -101
  351. package/dist/List-CJZjElAQ.js.map +0 -1
  352. package/dist/ListView-mujFK6mQ.js.map +0 -1
  353. package/dist/Listbox-BtAgBDRS.js.map +0 -1
  354. package/dist/Menu-BXsmCP20.js.map +0 -1
  355. package/dist/MultiSelectFieldSync-DGpGgu8q.js.map +0 -1
  356. package/dist/MultiSelectMenuSync-DiLddJDw.js.map +0 -1
  357. package/dist/NumberField-svhZp1kB.js.map +0 -1
  358. package/dist/Page-Be029Dij.js.map +0 -1
  359. package/dist/Pagination-BAwqfl_2.js.map +0 -1
  360. package/dist/Popover-D0qSKZ1J.js.map +0 -1
  361. package/dist/Popover-DxZF6lbJ.js +0 -535
  362. package/dist/Popover-DxZF6lbJ.js.map +0 -1
  363. package/dist/Popover2.css +0 -68
  364. package/dist/Radio-BOq9UkpC.js +0 -60
  365. package/dist/Radio-BOq9UkpC.js.map +0 -1
  366. package/dist/Radio-BQg7exDG.js.map +0 -1
  367. package/dist/SelectCard-cu4MBuh8.js +0 -320
  368. package/dist/SelectCard-cu4MBuh8.js.map +0 -1
  369. package/dist/SelectFieldLabel-Dr8HeW3N.js.map +0 -1
  370. package/dist/SelectFieldSync-CJ2Ie_v1.js.map +0 -1
  371. package/dist/SelectMenuSync-CJA_coqD.js.map +0 -1
  372. package/dist/SelectTrigger-ObsnAKNp.js.map +0 -1
  373. package/dist/Switch-DpPHr3G3.js.map +0 -1
  374. package/dist/Tab-DO7LaUbw.js.map +0 -1
  375. package/dist/Text-BJo4oMI2.js.map +0 -1
  376. package/dist/TextField-DeHpgPag.js.map +0 -1
  377. package/dist/Textarea-DyqdMTvQ.js.map +0 -1
  378. package/dist/Toaster-b0-Ub3yt.js.map +0 -1
  379. package/dist/Tooltip-Bupqao9B.js.map +0 -1
  380. package/dist/floating-ui.react-C_s3_nEb.js.map +0 -1
  381. package/dist/floating-ui.react-dom-imrk9N49.js.map +0 -1
  382. package/dist/index.esm-BZV0wNKZ.js.map +0 -1
  383. package/dist/safePopover-BDso-xSH.js +0 -17
  384. package/dist/safePopover-BDso-xSH.js.map +0 -1
  385. package/dist/useMenuInteraction-zR_78KQC.js.map +0 -1
  386. package/dist/useOpenCloseTransitionStates-CiTYrLGi.js +0 -68
  387. package/dist/useOpenCloseTransitionStates-CiTYrLGi.js.map +0 -1
  388. package/dist/usePopoverTransitionStates-CDIoNUuf.js +0 -24
  389. package/dist/usePopoverTransitionStates-CDIoNUuf.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { A as Avatar } from './Avatar--CnTAnfD.js';
2
+ import { A as Avatar } from './Avatar-ChybzixS.js';
3
3
  import { I as Icon } from './Icon-DuIlne4x.js';
4
- import { S as SelectTriggerBase, d as defaultItemToString, a as defaultItemToKey } from './SelectTriggerBase-DKfOL2RJ.js';
4
+ import { S as SelectTriggerBase, d as defaultItemToString, a as defaultItemToKey } from './SelectTriggerBase-Bxmv6oXk.js';
5
5
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DMDdfIah.js';
6
6
  import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
7
7
  import { useTrackingId } from './useTrackingId.js';
@@ -61,6 +61,7 @@ const SelectTrigger = function(props) {
61
61
  ...style,
62
62
  ...layoutStyles
63
63
  };
64
+ const { aiMark, ...labelPropsWithoutAiMark } = props.labelProps || {};
64
65
  const data = {
65
66
  label: childrenToString(props.label),
66
67
  size: props.size,
@@ -68,7 +69,7 @@ const SelectTrigger = function(props) {
68
69
  moreInfo: props.moreInfo,
69
70
  description: childrenToString(props.description),
70
71
  hint: props.hint,
71
- labelProps: props.labelProps
72
+ labelProps: labelPropsWithoutAiMark
72
73
  };
73
74
  const trackingId = useTrackingId({
74
75
  name: "ComboboxSearchField",
@@ -95,8 +96,9 @@ const SelectTrigger = function(props) {
95
96
  hint,
96
97
  description,
97
98
  labelProps: {
98
- required,
99
- moreInfo
99
+ aiMark,
100
+ moreInfo,
101
+ required
100
102
  },
101
103
  prefix,
102
104
  suffix,
@@ -119,4 +121,4 @@ const SelectTrigger = function(props) {
119
121
  };
120
122
 
121
123
  export { SelectTrigger as S };
122
- //# sourceMappingURL=SelectTrigger-ObsnAKNp.js.map
124
+ //# sourceMappingURL=SelectTrigger-KF8w6Ynk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectTrigger-KF8w6Ynk.js","sources":["../src/components/SelectTrigger/SelectTrigger.tsx"],"sourcesContent":["import { Dispatch, SetStateAction } from \"react\";\nimport {\n UseComboboxProps as UseDownshiftComboboxProps,\n UseMultipleSelectionProps as UseDownshiftMultipleSelectionProps,\n} from \"downshift\";\n\nimport { Avatar, AvatarProps } from \"../Avatar\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { DataTrackingId, DistributiveOmit } from \"../../types\";\nimport { FieldLabelProps } from \"../FieldLabel\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { useTrackingId } from \"../../hooks\";\n\nimport {\n SelectTriggerBase,\n SelectTriggerBaseProps,\n} from \"./internal/SelectTriggerBase\";\nimport {\n defaultItemToKey,\n defaultItemToString,\n} from \"../Combobox/internal/ComboboxUtils\";\n\nexport type SelectTriggerProps<Item> = DistributiveOmit<\n SelectTriggerBaseProps<Item>,\n \"prefix\" | \"selectedItem\" | \"selectedItems\" | \"onChange\"\n> &\n Pick<FieldLabelProps, \"required\" | \"moreInfo\"> &\n Pick<UseDownshiftComboboxProps<Item>, \"itemToString\" | \"itemToKey\"> &\n DataTrackingId & {\n prefix?:\n | string\n | { icon: DistributiveOmit<IconProps, \"size\"> }\n | { avatar: DistributiveOmit<AvatarProps, \"size\"> };\n } & (\n | {\n multiple?: never;\n onChange?:\n | Dispatch<SetStateAction<Item | null>>\n | ((arg: Item | null) => void);\n selectedItem: UseDownshiftComboboxProps<Item>[\"selectedItem\"];\n selectedItems?: never;\n }\n | {\n multiple: true;\n onChange?:\n | Dispatch<SetStateAction<Item[] | null>>\n | ((arg: Item[] | null) => void);\n selectedItem?: never;\n selectedItems: UseDownshiftMultipleSelectionProps<Item>[\"selectedItems\"];\n }\n );\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO: look into unknown\nexport const SelectTrigger = function <Item = any>(\n props: SelectTriggerProps<Item>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n className,\n style,\n label,\n size,\n error,\n hint,\n description,\n required,\n moreInfo,\n prefix: prefixProp,\n suffix,\n maxRows,\n selectedItemProps = () => ({}),\n id,\n placeholder,\n disabled: isDisabled,\n readOnly: isReadOnly,\n onClick,\n multiple,\n onChange,\n disableClearSelection,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n selectedItem = null,\n selectedItems = [],\n ...rest\n } = componentProps;\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n function removeSelectedItem(item: Item) {\n if (multiple) {\n onChange?.(\n selectedItems.filter(\n (selectedItem: Item) => itemToKey(selectedItem) !== itemToKey(item),\n ),\n );\n } else if (itemToKey(selectedItem) === itemToKey(item)) {\n onChange?.(null);\n }\n }\n\n function reset() {\n if (multiple) {\n onChange?.([]);\n } else {\n onChange?.(null);\n }\n }\n\n const noClearButton = isDisabled || isReadOnly || disableClearSelection;\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const { aiMark, ...labelPropsWithoutAiMark } = props.labelProps || {};\n\n const data = {\n label: childrenToString(props.label),\n size: props.size,\n required: props.required,\n moreInfo: props.moreInfo,\n description: childrenToString(props.description),\n hint: props.hint,\n labelProps: labelPropsWithoutAiMark,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxSearchField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const prefix =\n prefixProp == null || typeof prefixProp === \"string\" ? (\n prefixProp\n ) : \"icon\" in prefixProp ? (\n <Icon {...prefixProp.icon} />\n ) : \"avatar\" in prefixProp ? (\n <Avatar\n {...prefixProp.avatar}\n size={props.size === \"small\" ? \"small\" : \"medium\"}\n />\n ) : (\n prefixProp\n );\n\n return (\n <SelectTriggerBase\n data-anv=\"select-trigger\"\n data-tracking-id={trackingId}\n className={className}\n style={styleCombined}\n label={label}\n size={size}\n error={error}\n hint={hint}\n description={description}\n labelProps={{\n aiMark,\n moreInfo,\n required,\n }}\n prefix={prefix}\n suffix={suffix}\n maxRows={maxRows}\n selectedItemProps={selectedItemProps}\n id={id}\n placeholder={placeholder}\n disabled={isDisabled}\n readOnly={isReadOnly}\n itemToString={itemToString}\n removeSelectedItem={removeSelectedItem}\n disableClearSelection={noClearButton}\n selectedItem={selectedItem}\n selectedItems={selectedItems}\n onClearButtonClick={reset}\n inputWrapperProps={{ onClick }}\n inputProps={rest}\n />\n );\n};\n"],"names":["selectedItem"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { S as SelectTrigger, S as default } from './SelectTrigger-ObsnAKNp.js';
1
+ export { S as SelectTrigger, S as default } from './SelectTrigger-KF8w6Ynk.js';
2
2
  //# sourceMappingURL=SelectTrigger.js.map
@@ -3,10 +3,10 @@ import { useId, useRef, useState, useLayoutEffect, isValidElement } from 'react'
3
3
  import { c as cx } from './index-De1g9FRV.js';
4
4
  import { S as SvgClose } from './close-DZj38AEh.js';
5
5
  import { S as SvgChevronRight } from './chevron_right-BdpsxX7x.js';
6
- import { B as Button } from './Button-CVsGhVJz.js';
7
- import { C as Chip } from './Chip-DjTAR0va.js';
6
+ import { B as Button } from './Button-a_D7tUgM.js';
7
+ import { C as Chip } from './Chip-BnofwIUN.js';
8
8
  import { F as Flex } from './Flex-WyyZm1bf.js';
9
- import { F as FieldLabel } from './FieldLabel-DbMosKtd.js';
9
+ import { F as FieldLabel } from './FieldLabel-Dr41PRxH.js';
10
10
  import { w as warnDeprecatedErrorUsage } from './utils-CM48ODEJ.js';
11
11
  import { s as styles } from './SelectTriggerBase.module-B0NFRlQP.js';
12
12
  import { H as Helper } from './Helper-B_FIOlhy.js';
@@ -298,4 +298,4 @@ const SelectTriggerBase = function({
298
298
  };
299
299
 
300
300
  export { ADD_NEW as A, SelectTriggerBase as S, defaultItemToKey as a, SELECT_ALL as b, defaultItemToString as d, getScrollParent as g, isMultiple as i };
301
- //# sourceMappingURL=SelectTriggerBase-DKfOL2RJ.js.map
301
+ //# sourceMappingURL=SelectTriggerBase-Bxmv6oXk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTriggerBase-DKfOL2RJ.js","sources":["../src/components/Combobox/internal/ComboboxUtils.ts","../src/components/SelectTrigger/internal/SelectTriggerBase.tsx"],"sourcesContent":["import {\n ComboboxMultipleProps,\n ComboboxProps,\n ComboboxSelectProps,\n SelectMultipleProps,\n} from \"../ComboboxTypes\";\n\nexport const ADD_NEW = Symbol.for(\"add-new\");\nexport const SELECT_ALL = Symbol.for(\"select-all\");\n\n/**\n * Default function to convert an item to a string representation\n * @template Item - The type of the item\n * @param item - The item to convert to string\n * @returns String representation of the item or empty string if null/undefined\n */\nexport const defaultItemToString = function <Item>(item: Item | null) {\n return item != null ? String(item) : \"\";\n};\n\n/**\n * Default function to generate a unique key for an item\n * @template Item - The type of the item\n * @param item - The item to generate a key for\n * @returns The item itself as the key\n */\nexport const defaultItemToKey = function <Item>(item: Item | null) {\n return item;\n};\n\nexport function isMultiple<Item>(\n props: ComboboxProps<Item> | ComboboxSelectProps<Item>,\n): props is ComboboxMultipleProps<Item> | SelectMultipleProps<Item> {\n return Object.hasOwn(props, \"multiple\") && props.multiple === true;\n}\n\nexport function getScrollParent(node: HTMLElement | null) {\n if (node == null) {\n return null;\n }\n\n if (node.scrollHeight > node.clientHeight) {\n return node;\n } else {\n if (node.parentNode instanceof HTMLElement) {\n return getScrollParent(node.parentNode);\n }\n return null;\n }\n}\n","import {\n useState,\n useId,\n useRef,\n useLayoutEffect,\n isValidElement,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type MutableRefObject,\n type MouseEventHandler,\n ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport Chevron_Right from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\n\nimport { Button } from \"../../Button\";\nimport { Chip, ChipProps } from \"../../Chip\";\nimport { Flex } from \"../../Flex\";\nimport { FieldLabel, FieldLabelProps } from \"../../FieldLabel\";\nimport { Helper } from \"../../../internal/components\";\nimport { warnDeprecatedErrorUsage } from \"../../FieldMessage\";\nimport { TextFieldProps } from \"../../TextField\";\n\nimport styles from \"./SelectTriggerBase.module.scss\";\nimport { DistributiveOmit } from \"../../../types\";\nimport { defaultItemToString } from \"../../Combobox/internal/ComboboxUtils\";\n\ntype PartialChipProps = Partial<Omit<ChipProps, \"icon\" | \"avatar\">> &\n (\n | { icon?: ChipProps[\"icon\"]; avatar?: never }\n | { icon?: never; avatar?: ChipProps[\"avatar\"] }\n );\n\nfunction mergeChipProps(\n ...propSets: (PartialChipProps | Partial<ChipProps>)[]\n): ChipProps {\n const merged = propSets.reduce(\n (acc, props) => ({ ...acc, ...props }),\n {} as Record<string, unknown>,\n );\n\n return merged as ChipProps;\n}\n\nexport type SelectTriggerBaseProps<Item = unknown> = DistributiveOmit<\n TextFieldProps,\n \"showCounter\" | \"prefix\"\n> & {\n /**\n * Should be a positive integer.\n */\n maxRows?: number;\n\n /** Allows Combobox/Select to display custom-colored Chips */\n selectedItemProps?: (item: Item, index: number) => PartialChipProps;\n} & {\n itemToString?: (item: Item) => string;\n removeSelectedItem?: (item: Item) => void;\n disableClearSelection?: boolean;\n selectedItem: Item | null;\n selectedItems: Item[];\n\n inputValue?: string;\n referenceRef?: MutableRefObject<HTMLDivElement | null>;\n} & {\n variant?: \"select\" | \"combobox\";\n onClearButtonClick?: MouseEventHandler<HTMLButtonElement>;\n labelProps?: Partial<FieldLabelProps>;\n inputWrapperProps?: ComponentPropsWithoutRef<\"div\">;\n toggleButtonProps?: ComponentPropsWithoutRef<\"button\">;\n chipProps?: (item: Item, index: number) => PartialChipProps;\n inputProps?: ComponentPropsWithoutRef<\"input\" | \"div\">;\n} & {\n prefix?: string | ReactNode;\n};\n\nexport const SelectTriggerBase = function <Item>({\n className,\n label,\n size,\n error,\n hint,\n description,\n prefix,\n suffix,\n maxRows,\n selectedItemProps = (_item: Item, _index: number): PartialChipProps => ({}),\n disabled,\n readOnly,\n /** ======== */\n disableClearSelection,\n itemToString: itemToStringProp,\n selectedItem,\n selectedItems,\n removeSelectedItem,\n inputValue,\n referenceRef,\n /** ======== */\n variant = \"select\",\n onClearButtonClick,\n labelProps,\n inputWrapperProps = {},\n toggleButtonProps = {},\n inputProps = {},\n chipProps = (_item: Item, _index: number): PartialChipProps => ({}),\n warning,\n placeholder,\n ...rest\n}: SelectTriggerBaseProps<Item>) {\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n\n const ComboboxTriggerClassNames = cx(styles[\"search-field\"], {\n [styles[\"select\"]]: variant === \"select\",\n });\n\n const noClearButton = disabled || readOnly || disableClearSelection;\n\n const ComboboxInputWrapperClassNames = cx(\n styles[\"input-wrapper\"],\n className\n ? {\n [className]: variant === \"select\",\n }\n : {},\n {\n [styles[\"small\"]]: size === \"small\",\n [styles[\"large\"]]: size === \"large\",\n [styles[\"no-clear-button\"]]: noClearButton,\n },\n );\n\n const ComboboxInputClassNames = cx(\n styles[\"input\"],\n className\n ? {\n [className]: variant === \"combobox\",\n }\n : {},\n {\n [styles[\"error\"]]: error,\n },\n );\n\n const helperUid = \"helper\" + useId();\n const placeholderUid = \"placeholder\" + useId();\n const ariaDescribedBy = `${helperUid} ${placeholderUid}`;\n\n warnDeprecatedErrorUsage(\"SelectTrigger\", error);\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n\n const rowsRef = useRef<HTMLDivElement>(null);\n const [stillCalculating, setStillCalculating] = useState<boolean>(false);\n const [collapsedChips, setCollapsedChips] = useState<boolean>(false);\n const [visibleChipsCount, setVisibleChipsCount] = useState<number | null>(\n null,\n );\n const [forceRenderCount, setForceRenderCount] = useState<number>(0);\n\n useLayoutEffect(() => {\n // we only need to do this nonsense if maxRows is set\n if (maxRows === undefined) return;\n\n // 1) Render with no chips collapsed, if it's already just one row, we're done\n // 2) If there is a second row, then render again with best guess at how we should collapse\n // 3) If there is still a second row while collapsed, then render again with one less item\n // 4) Keep going until there is only one row, then /actually/ render\n\n // start calculation loop, set intiial values and force re-render\n if (stillCalculating === false) {\n setStillCalculating(true);\n setCollapsedChips(false);\n setVisibleChipsCount(null);\n setForceRenderCount((x) => x + 1);\n\n // otherwise, calculate the number of rows\n } else if (rowsRef?.current?.children) {\n const children = rowsRef?.current?.children;\n\n const rowData = Array.from(children).reduce(\n (acc, child) => {\n const top = child.getBoundingClientRect().top;\n\n if (!acc.length) {\n return [{ count: 1, top }];\n } else if (acc[acc.length - 1].top === top) {\n return [\n ...acc.slice(0, -1),\n { count: acc[acc.length - 1].count + 1, top },\n ];\n } else if (acc[acc.length - 1].top !== top) {\n return [...acc, { count: 1, top }];\n } else {\n return acc;\n }\n },\n [] as { count: number; top: number }[],\n );\n\n // Call it a day if:\n // We don't have a second row OR\n // We're already hiding everything OR\n // There's only one item selected\n if (\n !rowData[maxRows] ||\n visibleChipsCount === 0 ||\n selectedItems.length === 1\n ) {\n setStillCalculating(false);\n } else {\n setCollapsedChips(true);\n\n // otherwise, either guess how many visible chips we have\n if (visibleChipsCount == null) {\n if (rowData[maxRows]) {\n const quickGuess = Math.max(\n rowData\n .slice(0, maxRows)\n .reduce((sum, row) => sum + row.count, -1),\n 0,\n );\n\n setVisibleChipsCount(quickGuess);\n } else {\n const naiveGuess = Math.max(\n rowData.reduce((sum, row) => sum + row.count, -2),\n 0,\n );\n setVisibleChipsCount(naiveGuess);\n }\n\n // or decrease our last guess by 1 and try again\n } else {\n setVisibleChipsCount(visibleChipsCount - 1);\n }\n\n setForceRenderCount((x) => x + 1);\n }\n }\n }, [selectedItems.length, maxRows, forceRenderCount]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const selectedItemsDisplayCount =\n collapsedChips && maxRows != null && visibleChipsCount !== null\n ? visibleChipsCount\n : selectedItems.length;\n\n // TODO: Update this to use a TextField component once we can pass props\n // directly to both the label and the text input\n return (\n <div {...rest} className={ComboboxTriggerClassNames} ref={referenceRef}>\n {label ? (\n <FieldLabel\n {...labelProps}\n className={cx(styles[\"label\"], labelProps?.className)}\n >\n {label}\n </FieldLabel>\n ) : null}\n\n <div\n {...inputWrapperProps}\n className={ComboboxInputWrapperClassNames}\n {...(variant === \"select\"\n ? {\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": labelProps?.id,\n }\n : {})}\n >\n <div className={styles[\"buttons-wrapper\"]}>\n {(inputValue || selectedItem || selectedItems.length) &&\n !noClearButton ? (\n <div className={styles[\"close-button-wrapper\"]}>\n <Button\n aria-label=\"clear selection\"\n appearance=\"ghost\"\n size=\"small\"\n icon={Close}\n className={styles[\"close-button\"]}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onClearButtonClick?.(e);\n }}\n tabIndex={-1}\n />\n </div>\n ) : null}\n\n <div className={styles[\"toggle-button-wrapper\"]}>\n <Button\n {...toggleButtonProps}\n {...(variant === \"select\" ? { tabIndex: -1, inert: \"true\" } : {})}\n className={styles[\"toggle-button\"]}\n aria-label=\"toggle menu\"\n icon={Chevron_Right}\n appearance=\"ghost\"\n size=\"small\"\n disabled={disabled}\n />\n </div>\n </div>\n\n <div className={styles[\"prefix-wrapper\"]}>\n {prefix ? <div className={styles[\"prefix\"]}>{prefix}</div> : null}\n </div>\n\n <div className={styles[\"rows-wrapper\"]} ref={rowsRef}>\n {selectedItems.length && removeSelectedItem != null\n ? selectedItems\n .slice(0, selectedItemsDisplayCount)\n .map((item, index) => {\n return (\n <div\n key={`selected-item-${index}`}\n className={styles[\"chip-wrapper\"]}\n >\n <Chip\n {...mergeChipProps(\n chipProps(item, index),\n selectedItemProps(item, index),\n {\n label: itemToString(item),\n onClose:\n disabled || readOnly\n ? undefined\n : (_e) => {\n removeSelectedItem(item);\n },\n className: styles[\"chip\"],\n title: itemToString(item),\n },\n )}\n />\n </div>\n );\n })\n : null}\n\n {collapsedChips && maxRows != null ? (\n <div className={styles[\"chip-wrapper\"]}>\n <Chip\n label={`+${selectedItems.length - selectedItemsDisplayCount}`}\n className={styles[\"chip\"]}\n title={selectedItems\n .slice(selectedItemsDisplayCount)\n .map((item) => itemToString(item))\n .join(\", \")}\n />\n </div>\n ) : null}\n\n <Flex className={styles[\"input-flex\"]} alignItems=\"center\">\n {variant === \"select\" ? (\n <div\n {...inputProps}\n className={cx(ComboboxInputClassNames, inputProps.className)}\n >\n {selectedItems.length ? null : selectedItem ? (\n itemToString(selectedItem)\n ) : (\n <span\n className={styles[\"fake-placeholder\"]}\n id={placeholderUid}\n >\n {placeholder}\n </span>\n )}\n </div>\n ) : (\n <input\n {...inputProps}\n placeholder={placeholder}\n className={cx(ComboboxInputClassNames, inputProps.className)}\n {...(inputProps[\"aria-expanded\"] != null &&\n inputProps[\"aria-controls\"] != null\n ? {\n role: \"combobox\",\n }\n : {})}\n />\n )}\n\n {suffix ? <div className={styles[\"suffix\"]}>{suffix}</div> : null}\n </Flex>\n </div>\n </div>\n\n {hint || errorMessages || warning || description ? (\n <Helper\n id={helperUid}\n error={\n typeof errorMessages === \"string\" || Array.isArray(errorMessages)\n ? errorMessages\n : undefined\n }\n warning={warning}\n errorMessage={\n isValidElement(errorMessages) ? errorMessages : undefined\n }\n hint={hint}\n description={description}\n />\n ) : null}\n </div>\n );\n};\n"],"names":["Close","Chevron_Right"],"mappings":"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"}
1
+ {"version":3,"file":"SelectTriggerBase-Bxmv6oXk.js","sources":["../src/components/Combobox/internal/ComboboxUtils.ts","../src/components/SelectTrigger/internal/SelectTriggerBase.tsx"],"sourcesContent":["import {\n ComboboxMultipleProps,\n ComboboxProps,\n ComboboxSelectProps,\n SelectMultipleProps,\n} from \"../ComboboxTypes\";\n\nexport const ADD_NEW = Symbol.for(\"add-new\");\nexport const SELECT_ALL = Symbol.for(\"select-all\");\n\n/**\n * Default function to convert an item to a string representation\n * @template Item - The type of the item\n * @param item - The item to convert to string\n * @returns String representation of the item or empty string if null/undefined\n */\nexport const defaultItemToString = function <Item>(item: Item | null) {\n return item != null ? String(item) : \"\";\n};\n\n/**\n * Default function to generate a unique key for an item\n * @template Item - The type of the item\n * @param item - The item to generate a key for\n * @returns The item itself as the key\n */\nexport const defaultItemToKey = function <Item>(item: Item | null) {\n return item;\n};\n\nexport function isMultiple<Item>(\n props: ComboboxProps<Item> | ComboboxSelectProps<Item>,\n): props is ComboboxMultipleProps<Item> | SelectMultipleProps<Item> {\n return Object.hasOwn(props, \"multiple\") && props.multiple === true;\n}\n\nexport function getScrollParent(node: HTMLElement | null) {\n if (node == null) {\n return null;\n }\n\n if (node.scrollHeight > node.clientHeight) {\n return node;\n } else {\n if (node.parentNode instanceof HTMLElement) {\n return getScrollParent(node.parentNode);\n }\n return null;\n }\n}\n","import {\n useState,\n useId,\n useRef,\n useLayoutEffect,\n isValidElement,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type MutableRefObject,\n type MouseEventHandler,\n ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport Chevron_Right from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\n\nimport { Button } from \"../../Button\";\nimport { Chip, ChipProps } from \"../../Chip\";\nimport { Flex } from \"../../Flex\";\nimport { FieldLabel, FieldLabelProps } from \"../../FieldLabel\";\nimport { Helper } from \"../../../internal/components\";\nimport { warnDeprecatedErrorUsage } from \"../../FieldMessage\";\nimport { TextFieldProps } from \"../../TextField\";\n\nimport styles from \"./SelectTriggerBase.module.scss\";\nimport { DistributiveOmit } from \"../../../types\";\nimport { defaultItemToString } from \"../../Combobox/internal/ComboboxUtils\";\n\ntype PartialChipProps = Partial<Omit<ChipProps, \"icon\" | \"avatar\">> &\n (\n | { icon?: ChipProps[\"icon\"]; avatar?: never }\n | { icon?: never; avatar?: ChipProps[\"avatar\"] }\n );\n\nfunction mergeChipProps(\n ...propSets: (PartialChipProps | Partial<ChipProps>)[]\n): ChipProps {\n const merged = propSets.reduce(\n (acc, props) => ({ ...acc, ...props }),\n {} as Record<string, unknown>,\n );\n\n return merged as ChipProps;\n}\n\nexport type SelectTriggerBaseProps<Item = unknown> = DistributiveOmit<\n TextFieldProps,\n \"showCounter\" | \"prefix\"\n> & {\n /**\n * Should be a positive integer.\n */\n maxRows?: number;\n\n /** Allows Combobox/Select to display custom-colored Chips */\n selectedItemProps?: (item: Item, index: number) => PartialChipProps;\n} & {\n itemToString?: (item: Item) => string;\n removeSelectedItem?: (item: Item) => void;\n disableClearSelection?: boolean;\n selectedItem: Item | null;\n selectedItems: Item[];\n\n inputValue?: string;\n referenceRef?: MutableRefObject<HTMLDivElement | null>;\n} & {\n variant?: \"select\" | \"combobox\";\n onClearButtonClick?: MouseEventHandler<HTMLButtonElement>;\n labelProps?: Partial<FieldLabelProps>;\n inputWrapperProps?: ComponentPropsWithoutRef<\"div\">;\n toggleButtonProps?: ComponentPropsWithoutRef<\"button\">;\n chipProps?: (item: Item, index: number) => PartialChipProps;\n inputProps?: ComponentPropsWithoutRef<\"input\" | \"div\">;\n} & {\n prefix?: string | ReactNode;\n};\n\nexport const SelectTriggerBase = function <Item>({\n className,\n label,\n size,\n error,\n hint,\n description,\n prefix,\n suffix,\n maxRows,\n selectedItemProps = (_item: Item, _index: number): PartialChipProps => ({}),\n disabled,\n readOnly,\n /** ======== */\n disableClearSelection,\n itemToString: itemToStringProp,\n selectedItem,\n selectedItems,\n removeSelectedItem,\n inputValue,\n referenceRef,\n /** ======== */\n variant = \"select\",\n onClearButtonClick,\n labelProps,\n inputWrapperProps = {},\n toggleButtonProps = {},\n inputProps = {},\n chipProps = (_item: Item, _index: number): PartialChipProps => ({}),\n warning,\n placeholder,\n ...rest\n}: SelectTriggerBaseProps<Item>) {\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n\n const ComboboxTriggerClassNames = cx(styles[\"search-field\"], {\n [styles[\"select\"]]: variant === \"select\",\n });\n\n const noClearButton = disabled || readOnly || disableClearSelection;\n\n const ComboboxInputWrapperClassNames = cx(\n styles[\"input-wrapper\"],\n className\n ? {\n [className]: variant === \"select\",\n }\n : {},\n {\n [styles[\"small\"]]: size === \"small\",\n [styles[\"large\"]]: size === \"large\",\n [styles[\"no-clear-button\"]]: noClearButton,\n },\n );\n\n const ComboboxInputClassNames = cx(\n styles[\"input\"],\n className\n ? {\n [className]: variant === \"combobox\",\n }\n : {},\n {\n [styles[\"error\"]]: error,\n },\n );\n\n const helperUid = \"helper\" + useId();\n const placeholderUid = \"placeholder\" + useId();\n const ariaDescribedBy = `${helperUid} ${placeholderUid}`;\n\n warnDeprecatedErrorUsage(\"SelectTrigger\", error);\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n\n const rowsRef = useRef<HTMLDivElement>(null);\n const [stillCalculating, setStillCalculating] = useState<boolean>(false);\n const [collapsedChips, setCollapsedChips] = useState<boolean>(false);\n const [visibleChipsCount, setVisibleChipsCount] = useState<number | null>(\n null,\n );\n const [forceRenderCount, setForceRenderCount] = useState<number>(0);\n\n useLayoutEffect(() => {\n // we only need to do this nonsense if maxRows is set\n if (maxRows === undefined) return;\n\n // 1) Render with no chips collapsed, if it's already just one row, we're done\n // 2) If there is a second row, then render again with best guess at how we should collapse\n // 3) If there is still a second row while collapsed, then render again with one less item\n // 4) Keep going until there is only one row, then /actually/ render\n\n // start calculation loop, set intiial values and force re-render\n if (stillCalculating === false) {\n setStillCalculating(true);\n setCollapsedChips(false);\n setVisibleChipsCount(null);\n setForceRenderCount((x) => x + 1);\n\n // otherwise, calculate the number of rows\n } else if (rowsRef?.current?.children) {\n const children = rowsRef?.current?.children;\n\n const rowData = Array.from(children).reduce(\n (acc, child) => {\n const top = child.getBoundingClientRect().top;\n\n if (!acc.length) {\n return [{ count: 1, top }];\n } else if (acc[acc.length - 1].top === top) {\n return [\n ...acc.slice(0, -1),\n { count: acc[acc.length - 1].count + 1, top },\n ];\n } else if (acc[acc.length - 1].top !== top) {\n return [...acc, { count: 1, top }];\n } else {\n return acc;\n }\n },\n [] as { count: number; top: number }[],\n );\n\n // Call it a day if:\n // We don't have a second row OR\n // We're already hiding everything OR\n // There's only one item selected\n if (\n !rowData[maxRows] ||\n visibleChipsCount === 0 ||\n selectedItems.length === 1\n ) {\n setStillCalculating(false);\n } else {\n setCollapsedChips(true);\n\n // otherwise, either guess how many visible chips we have\n if (visibleChipsCount == null) {\n if (rowData[maxRows]) {\n const quickGuess = Math.max(\n rowData\n .slice(0, maxRows)\n .reduce((sum, row) => sum + row.count, -1),\n 0,\n );\n\n setVisibleChipsCount(quickGuess);\n } else {\n const naiveGuess = Math.max(\n rowData.reduce((sum, row) => sum + row.count, -2),\n 0,\n );\n setVisibleChipsCount(naiveGuess);\n }\n\n // or decrease our last guess by 1 and try again\n } else {\n setVisibleChipsCount(visibleChipsCount - 1);\n }\n\n setForceRenderCount((x) => x + 1);\n }\n }\n }, [selectedItems.length, maxRows, forceRenderCount]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const selectedItemsDisplayCount =\n collapsedChips && maxRows != null && visibleChipsCount !== null\n ? visibleChipsCount\n : selectedItems.length;\n\n // TODO: Update this to use a TextField component once we can pass props\n // directly to both the label and the text input\n return (\n <div {...rest} className={ComboboxTriggerClassNames} ref={referenceRef}>\n {label ? (\n <FieldLabel\n {...labelProps}\n className={cx(styles[\"label\"], labelProps?.className)}\n >\n {label}\n </FieldLabel>\n ) : null}\n\n <div\n {...inputWrapperProps}\n className={ComboboxInputWrapperClassNames}\n {...(variant === \"select\"\n ? {\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": labelProps?.id,\n }\n : {})}\n >\n <div className={styles[\"buttons-wrapper\"]}>\n {(inputValue || selectedItem || selectedItems.length) &&\n !noClearButton ? (\n <div className={styles[\"close-button-wrapper\"]}>\n <Button\n aria-label=\"clear selection\"\n appearance=\"ghost\"\n size=\"small\"\n icon={Close}\n className={styles[\"close-button\"]}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onClearButtonClick?.(e);\n }}\n tabIndex={-1}\n />\n </div>\n ) : null}\n\n <div className={styles[\"toggle-button-wrapper\"]}>\n <Button\n {...toggleButtonProps}\n {...(variant === \"select\" ? { tabIndex: -1, inert: \"true\" } : {})}\n className={styles[\"toggle-button\"]}\n aria-label=\"toggle menu\"\n icon={Chevron_Right}\n appearance=\"ghost\"\n size=\"small\"\n disabled={disabled}\n />\n </div>\n </div>\n\n <div className={styles[\"prefix-wrapper\"]}>\n {prefix ? <div className={styles[\"prefix\"]}>{prefix}</div> : null}\n </div>\n\n <div className={styles[\"rows-wrapper\"]} ref={rowsRef}>\n {selectedItems.length && removeSelectedItem != null\n ? selectedItems\n .slice(0, selectedItemsDisplayCount)\n .map((item, index) => {\n return (\n <div\n key={`selected-item-${index}`}\n className={styles[\"chip-wrapper\"]}\n >\n <Chip\n {...mergeChipProps(\n chipProps(item, index),\n selectedItemProps(item, index),\n {\n label: itemToString(item),\n onClose:\n disabled || readOnly\n ? undefined\n : (_e) => {\n removeSelectedItem(item);\n },\n className: styles[\"chip\"],\n title: itemToString(item),\n },\n )}\n />\n </div>\n );\n })\n : null}\n\n {collapsedChips && maxRows != null ? (\n <div className={styles[\"chip-wrapper\"]}>\n <Chip\n label={`+${selectedItems.length - selectedItemsDisplayCount}`}\n className={styles[\"chip\"]}\n title={selectedItems\n .slice(selectedItemsDisplayCount)\n .map((item) => itemToString(item))\n .join(\", \")}\n />\n </div>\n ) : null}\n\n <Flex className={styles[\"input-flex\"]} alignItems=\"center\">\n {variant === \"select\" ? (\n <div\n {...inputProps}\n className={cx(ComboboxInputClassNames, inputProps.className)}\n >\n {selectedItems.length ? null : selectedItem ? (\n itemToString(selectedItem)\n ) : (\n <span\n className={styles[\"fake-placeholder\"]}\n id={placeholderUid}\n >\n {placeholder}\n </span>\n )}\n </div>\n ) : (\n <input\n {...inputProps}\n placeholder={placeholder}\n className={cx(ComboboxInputClassNames, inputProps.className)}\n {...(inputProps[\"aria-expanded\"] != null &&\n inputProps[\"aria-controls\"] != null\n ? {\n role: \"combobox\",\n }\n : {})}\n />\n )}\n\n {suffix ? <div className={styles[\"suffix\"]}>{suffix}</div> : null}\n </Flex>\n </div>\n </div>\n\n {hint || errorMessages || warning || description ? (\n <Helper\n id={helperUid}\n error={\n typeof errorMessages === \"string\" || Array.isArray(errorMessages)\n ? errorMessages\n : undefined\n }\n warning={warning}\n errorMessage={\n isValidElement(errorMessages) ? errorMessages : undefined\n }\n hint={hint}\n description={description}\n />\n ) : null}\n </div>\n );\n};\n"],"names":["Close","Chevron_Right"],"mappings":"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"}
@@ -6,22 +6,22 @@ import { I as Icon } from './Icon-DuIlne4x.js';
6
6
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DMDdfIah.js';
7
7
  import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
8
8
 
9
- import './SideNav.css';const sidenav = "_sidenav_1n03v_128";
10
- const root = "_root_1n03v_129";
11
- const group = "_group_1n03v_133";
12
- const hidden = "_hidden_1n03v_195";
13
- const arrow = "_arrow_1n03v_202";
9
+ import './SideNav.css';const sidenav = "_sidenav_18ckf_145";
10
+ const root = "_root_18ckf_146";
11
+ const group = "_group_18ckf_150";
12
+ const hidden = "_hidden_18ckf_212";
13
+ const arrow = "_arrow_18ckf_219";
14
14
  const styles = {
15
15
  sidenav: sidenav,
16
16
  root: root,
17
- "sidenav-group": "_sidenav-group_1n03v_130",
18
- "sidenav-link": "_sidenav-link_1n03v_131",
19
- "sidenav-collapsible": "_sidenav-collapsible_1n03v_132",
17
+ "sidenav-group": "_sidenav-group_18ckf_147",
18
+ "sidenav-link": "_sidenav-link_18ckf_148",
19
+ "sidenav-collapsible": "_sidenav-collapsible_18ckf_149",
20
20
  group: group,
21
- "group-label": "_group-label_1n03v_146",
21
+ "group-label": "_group-label_18ckf_163",
22
22
  hidden: hidden,
23
23
  arrow: arrow,
24
- "has-indicator": "_has-indicator_1n03v_262"
24
+ "has-indicator": "_has-indicator_18ckf_279"
25
25
  };
26
26
 
27
27
  const sideNavKeyboardNavigation = (e, links, current) => {
@@ -325,130 +325,132 @@ const SideNavProvider = ({ children }) => {
325
325
  return /* @__PURE__ */ jsx(SideNavContext.Provider, { value: sideNavContext, children });
326
326
  };
327
327
 
328
- const SideNavElement = forwardRef((props, ref) => {
329
- const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
330
- const [activeIds, setActiveIds] = useState(/* @__PURE__ */ new Set());
331
- const { className, children, style, ...rest } = componentProps;
332
- const addActiveId = useCallback(
333
- (id) => {
334
- if (activeIds.has(id)) return;
335
- const newIds = new Set(activeIds);
336
- newIds.add(id);
337
- setActiveIds(newIds);
338
- },
339
- [activeIds]
340
- );
341
- const removeActiveId = useCallback(
342
- (id) => {
343
- if (!activeIds.has(id)) return;
344
- const newIds = new Set(activeIds);
345
- newIds.delete(id);
346
- setActiveIds(newIds);
347
- },
348
- [activeIds]
349
- );
350
- const sideNavRef = useRef(null);
351
- const [links, setLinks] = useState();
352
- const styleCombined = {
353
- ...style,
354
- ...layoutStyles
355
- };
356
- const reCalculateLinks = useCallback(() => {
357
- if (sideNavRef.current) {
358
- const items = sideNavRef.current.querySelectorAll(
359
- "li[data-anv='sidenav-link'] a:not([aria-disabled='true']), li[data-anv='sidenav-collapsible'] button[aria-expanded]:not([aria-disabled='true'])"
360
- );
361
- setLinks(items);
362
- }
363
- }, [sideNavRef]);
364
- useEffect(() => {
365
- reCalculateLinks();
366
- }, [reCalculateLinks]);
367
- const sidenavClassNames = cx([styles["sidenav"]], className);
368
- const value = useMemo(
369
- () => ({
370
- links,
371
- reCalculateLinks,
372
- activeIds,
373
- addActiveId,
374
- removeActiveId
375
- }),
376
- [links, activeIds, addActiveId, removeActiveId, reCalculateLinks]
377
- );
378
- return /* @__PURE__ */ jsx(SideNavProvider, { children: /* @__PURE__ */ jsx(SideNavContext$1.Provider, { value, children: /* @__PURE__ */ jsx(
379
- "nav",
380
- {
381
- ref: useMergeRefs([sideNavRef, ref]),
382
- className: sidenavClassNames,
383
- style: styleCombined,
384
- "data-anv": "sidenav",
385
- ...rest,
386
- children: /* @__PURE__ */ jsx("ul", { className: styles["root"], children })
387
- }
388
- ) }) });
389
- });
390
- SideNavElement.displayName = "SideNav";
391
- const SideNav = Object.assign(SideNavElement, {
392
- /**
393
- * SideNavLink component for individual navigation links.
394
- *
395
- * Features:
396
- * - Individual navigation links with active state support
397
- * - Keyboard navigation integration with arrow keys
398
- * - Focus management and tabindex handling
399
- * - Accessible with proper ARIA attributes
400
- * - Click and keyboard event handling
401
- * - Disabled state support
402
- *
403
- * @example
404
- * <SideNav.Link id="intro" href="/intro" active>
405
- * Introduction
406
- * </SideNav.Link>
407
- */
408
- Link: SideNavLink,
409
- /**
410
- * SideNavCollapsible component for expandable navigation sections.
411
- *
412
- * Features:
413
- * - Expandable/collapsible navigation sections
414
- * - Controlled and uncontrolled expansion states
415
- * - Keyboard navigation with arrow keys for expansion
416
- * - Automatic expansion when child links are active
417
- * - Accessible with proper ARIA expanded states
418
- * - Visual indicators for active children
419
- *
420
- * @example
421
- * <SideNav.Collapsible label="Components">
422
- * <SideNav.Link id="button" href="/components/button">
423
- * Button
424
- * </SideNav.Link>
425
- * <SideNav.Link id="input" href="/components/input">
426
- * Input
427
- * </SideNav.Link>
428
- * </SideNav.Collapsible>
429
- */
430
- Collapsible: SideNavCollapsible,
431
- /**
432
- * SideNavGroup component for grouping related navigation links.
433
- *
434
- * Features:
435
- * - Groups related navigation links with labels
436
- * - Accessible with proper ARIA labeling
437
- * - Semantic grouping for screen readers
438
- * - Consistent styling and spacing
439
- *
440
- * @example
441
- * <SideNav.Group label="Getting Started">
442
- * <SideNav.Link id="intro" href="/intro">
443
- * Introduction
444
- * </SideNav.Link>
445
- * <SideNav.Link id="installation" href="/installation">
446
- * Installation
447
- * </SideNav.Link>
448
- * </SideNav.Group>
449
- */
450
- Group: SideNavGroup
451
- });
328
+ const SideNav = Object.assign(
329
+ forwardRef(function SideNavInner(props, ref) {
330
+ const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
331
+ const [activeIds, setActiveIds] = useState(/* @__PURE__ */ new Set());
332
+ const { className, children, style, ...rest } = componentProps;
333
+ const addActiveId = useCallback(
334
+ (id) => {
335
+ if (activeIds.has(id)) return;
336
+ const newIds = new Set(activeIds);
337
+ newIds.add(id);
338
+ setActiveIds(newIds);
339
+ },
340
+ [activeIds]
341
+ );
342
+ const removeActiveId = useCallback(
343
+ (id) => {
344
+ if (!activeIds.has(id)) return;
345
+ const newIds = new Set(activeIds);
346
+ newIds.delete(id);
347
+ setActiveIds(newIds);
348
+ },
349
+ [activeIds]
350
+ );
351
+ const sideNavRef = useRef(null);
352
+ const [links, setLinks] = useState();
353
+ const styleCombined = {
354
+ ...style,
355
+ ...layoutStyles
356
+ };
357
+ const reCalculateLinks = useCallback(() => {
358
+ if (sideNavRef.current) {
359
+ const items = sideNavRef.current.querySelectorAll(
360
+ "li[data-anv='sidenav-link'] a:not([aria-disabled='true']), li[data-anv='sidenav-collapsible'] button[aria-expanded]:not([aria-disabled='true'])"
361
+ );
362
+ setLinks(items);
363
+ }
364
+ }, [sideNavRef]);
365
+ useEffect(() => {
366
+ reCalculateLinks();
367
+ }, [reCalculateLinks]);
368
+ const sidenavClassNames = cx([styles["sidenav"]], className);
369
+ const value = useMemo(
370
+ () => ({
371
+ links,
372
+ reCalculateLinks,
373
+ activeIds,
374
+ addActiveId,
375
+ removeActiveId
376
+ }),
377
+ [links, activeIds, addActiveId, removeActiveId, reCalculateLinks]
378
+ );
379
+ return /* @__PURE__ */ jsx(SideNavProvider, { children: /* @__PURE__ */ jsx(SideNavContext$1.Provider, { value, children: /* @__PURE__ */ jsx(
380
+ "nav",
381
+ {
382
+ ref: useMergeRefs([sideNavRef, ref]),
383
+ className: sidenavClassNames,
384
+ style: styleCombined,
385
+ "data-anv": "sidenav",
386
+ ...rest,
387
+ children: /* @__PURE__ */ jsx("ul", { className: styles["root"], children })
388
+ }
389
+ ) }) });
390
+ }),
391
+ {
392
+ /**
393
+ * SideNavLink component for individual navigation links.
394
+ *
395
+ * Features:
396
+ * - Individual navigation links with active state support
397
+ * - Keyboard navigation integration with arrow keys
398
+ * - Focus management and tabindex handling
399
+ * - Accessible with proper ARIA attributes
400
+ * - Click and keyboard event handling
401
+ * - Disabled state support
402
+ *
403
+ * @example
404
+ * <SideNav.Link id="intro" href="/intro" active>
405
+ * Introduction
406
+ * </SideNav.Link>
407
+ */
408
+ Link: SideNavLink,
409
+ /**
410
+ * SideNavCollapsible component for expandable navigation sections.
411
+ *
412
+ * Features:
413
+ * - Expandable/collapsible navigation sections
414
+ * - Controlled and uncontrolled expansion states
415
+ * - Keyboard navigation with arrow keys for expansion
416
+ * - Automatic expansion when child links are active
417
+ * - Accessible with proper ARIA expanded states
418
+ * - Visual indicators for active children
419
+ *
420
+ * @example
421
+ * <SideNav.Collapsible label="Components">
422
+ * <SideNav.Link id="button" href="/components/button">
423
+ * Button
424
+ * </SideNav.Link>
425
+ * <SideNav.Link id="input" href="/components/input">
426
+ * Input
427
+ * </SideNav.Link>
428
+ * </SideNav.Collapsible>
429
+ */
430
+ Collapsible: SideNavCollapsible,
431
+ /**
432
+ * SideNavGroup component for grouping related navigation links.
433
+ *
434
+ * Features:
435
+ * - Groups related navigation links with labels
436
+ * - Accessible with proper ARIA labeling
437
+ * - Semantic grouping for screen readers
438
+ * - Consistent styling and spacing
439
+ *
440
+ * @example
441
+ * <SideNav.Group label="Getting Started">
442
+ * <SideNav.Link id="intro" href="/intro">
443
+ * Introduction
444
+ * </SideNav.Link>
445
+ * <SideNav.Link id="installation" href="/installation">
446
+ * Installation
447
+ * </SideNav.Link>
448
+ * </SideNav.Group>
449
+ */
450
+ Group: SideNavGroup
451
+ }
452
+ );
453
+ SideNav.displayName = "SideNav";
452
454
 
453
455
  export { SideNav as S };
454
- //# sourceMappingURL=SideNav-KksbSQn7.js.map
456
+ //# sourceMappingURL=SideNav-CrxYExjh.js.map