@servicetitan/anvil2 3.0.9 → 3.1.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 (302) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/{AiMark-CS6MvraM.js → AiMark-m-sG_BrY.js} +6 -6
  3. package/dist/{AiMark-CS6MvraM.js.map → AiMark-m-sG_BrY.js.map} +1 -1
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-CNDLoh6b.js → Alert-DYmBt7Yo.js} +4 -4
  6. package/dist/{Alert-CNDLoh6b.js.map → Alert-DYmBt7Yo.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{Announcement-CgTqDU8A.js → Announcement-DXF8slQf.js} +4 -4
  9. package/dist/{Announcement-CgTqDU8A.js.map → Announcement-DXF8slQf.js.map} +1 -1
  10. package/dist/Announcement.js +1 -1
  11. package/dist/{AnvilProvider-BFK29dL5.js → AnvilProvider-Cw_zTBqJ.js} +5 -5
  12. package/dist/{AnvilProvider-BFK29dL5.js.map → AnvilProvider-Cw_zTBqJ.js.map} +1 -1
  13. package/dist/AnvilProvider.js +1 -1
  14. package/dist/{Avatar-Bl-Dxbhf.js → Avatar-CoQcOHWU.js} +2 -2
  15. package/dist/{Avatar-Bl-Dxbhf.js.map → Avatar-CoQcOHWU.js.map} +1 -1
  16. package/dist/{Avatar-CdAIJ5VK.js → Avatar-DX96Mxe7.js} +2 -2
  17. package/dist/{Avatar-CdAIJ5VK.js.map → Avatar-DX96Mxe7.js.map} +1 -1
  18. package/dist/Avatar.js +2 -2
  19. package/dist/{Badge-DtUI2AEk.js → Badge-BNrYBFiU.js} +2 -2
  20. package/dist/{Badge-DtUI2AEk.js.map → Badge-BNrYBFiU.js.map} +1 -1
  21. package/dist/Badge.js +1 -1
  22. package/dist/{Breadcrumbs--Xt6l_2L.js → Breadcrumbs-D1X1M_ej.js} +5 -5
  23. package/dist/{Breadcrumbs--Xt6l_2L.js.map → Breadcrumbs-D1X1M_ej.js.map} +1 -1
  24. package/dist/Breadcrumbs.js +1 -1
  25. package/dist/{Button-C_V2xQAs.js → Button-ChQARW0y.js} +3 -3
  26. package/dist/{Button-C_V2xQAs.js.map → Button-ChQARW0y.js.map} +1 -1
  27. package/dist/Button.js +1 -1
  28. package/dist/{ButtonCompound-BQb2gfAl.js → ButtonCompound-_0ddykI_.js} +2 -2
  29. package/dist/{ButtonCompound-BQb2gfAl.js.map → ButtonCompound-_0ddykI_.js.map} +1 -1
  30. package/dist/ButtonCompound.js +1 -1
  31. package/dist/{ButtonLink-UhLks0vM.js → ButtonLink-CWbYzTTz.js} +3 -3
  32. package/dist/{ButtonLink-UhLks0vM.js.map → ButtonLink-CWbYzTTz.js.map} +1 -1
  33. package/dist/ButtonLink.js +1 -1
  34. package/dist/{ButtonToggle-jnDMPSyK.js → ButtonToggle-BVv94C4U.js} +3 -3
  35. package/dist/{ButtonToggle-jnDMPSyK.js.map → ButtonToggle-BVv94C4U.js.map} +1 -1
  36. package/dist/ButtonToggle.js +1 -1
  37. package/dist/{Calendar-5mAxtdNh.js → Calendar-BTen4c8H.js} +2 -2
  38. package/dist/{Calendar-5mAxtdNh.js.map → Calendar-BTen4c8H.js.map} +1 -1
  39. package/dist/{Calendar-rITorBvD.js → Calendar-BvHvJOHb.js} +5 -5
  40. package/dist/{Calendar-rITorBvD.js.map → Calendar-BvHvJOHb.js.map} +1 -1
  41. package/dist/Calendar.js +2 -2
  42. package/dist/{Card-fBqg853U.js → Card-Bt0F6RTq.js} +2 -2
  43. package/dist/{Card-fBqg853U.js.map → Card-Bt0F6RTq.js.map} +1 -1
  44. package/dist/Card.js +1 -1
  45. package/dist/{Checkbox-DTzoDcJl.js → Checkbox-BcfY3iwE.js} +5 -5
  46. package/dist/{Checkbox-DTzoDcJl.js.map → Checkbox-BcfY3iwE.js.map} +1 -1
  47. package/dist/{Checkbox-BYWhkYoK.js → Checkbox-DqncM7th.js} +2 -2
  48. package/dist/{Checkbox-BYWhkYoK.js.map → Checkbox-DqncM7th.js.map} +1 -1
  49. package/dist/Checkbox.js +1 -1
  50. package/dist/{Chip-CyMNyEPR.js → Chip-B6LaPxtL.js} +5 -5
  51. package/dist/{Chip-CyMNyEPR.js.map → Chip-B6LaPxtL.js.map} +1 -1
  52. package/dist/Chip.js +1 -1
  53. package/dist/Combobox.js +1 -1
  54. package/dist/{DataTable-FG0Kjx0d.js → DataTable-B_GYRuR1.js} +186 -123
  55. package/dist/DataTable-B_GYRuR1.js.map +1 -0
  56. package/dist/DataTable.css +40 -19
  57. package/dist/{DateFieldRange-BUug1tUy.js → DateFieldRange-DGjw3kTB.js} +5 -5
  58. package/dist/{DateFieldRange-BUug1tUy.js.map → DateFieldRange-DGjw3kTB.js.map} +1 -1
  59. package/dist/DateFieldRange.js +1 -1
  60. package/dist/{DateFieldSingle-DR7faQGD.js → DateFieldSingle-dB13x4lS.js} +5 -5
  61. package/dist/{DateFieldSingle-DR7faQGD.js.map → DateFieldSingle-dB13x4lS.js.map} +1 -1
  62. package/dist/DateFieldSingle.js +1 -1
  63. package/dist/{DateFieldYearless-7MFcR7L6.js → DateFieldYearless-BJ_1HLfi.js} +5 -5
  64. package/dist/{DateFieldYearless-7MFcR7L6.js.map → DateFieldYearless-BJ_1HLfi.js.map} +1 -1
  65. package/dist/DateFieldYearless.js +1 -1
  66. package/dist/{DateFieldYearlessRange-DGtdyISH.js → DateFieldYearlessRange-BXnvkTXC.js} +5 -5
  67. package/dist/{DateFieldYearlessRange-DGtdyISH.js.map → DateFieldYearlessRange-BXnvkTXC.js.map} +1 -1
  68. package/dist/DateFieldYearlessRange.js +1 -1
  69. package/dist/{DaysOfTheWeek-C7oN9nIe.js → DaysOfTheWeek-C78qSYxI.js} +5 -5
  70. package/dist/{DaysOfTheWeek-C7oN9nIe.js.map → DaysOfTheWeek-C78qSYxI.js.map} +1 -1
  71. package/dist/DaysOfTheWeek.js +1 -1
  72. package/dist/{Details-s2pVu-YL.js → Details-DK6ceYhs.js} +3 -3
  73. package/dist/{Details-s2pVu-YL.js.map → Details-DK6ceYhs.js.map} +1 -1
  74. package/dist/Details.js +1 -1
  75. package/dist/{Dialog-dE9c90iR.js → Dialog-DuGX-ngX.js} +4 -4
  76. package/dist/{Dialog-dE9c90iR.js.map → Dialog-DuGX-ngX.js.map} +1 -1
  77. package/dist/Dialog.js +1 -1
  78. package/dist/{DialogCancelButton-DcidFC38.js → DialogCancelButton-lAq4bhHS.js} +2 -2
  79. package/dist/{DialogCancelButton-DcidFC38.js.map → DialogCancelButton-lAq4bhHS.js.map} +1 -1
  80. package/dist/{Divider-Dz27DFuE.js → Divider-C7fp5Xb6.js} +2 -2
  81. package/dist/{Divider-Dz27DFuE.js.map → Divider-C7fp5Xb6.js.map} +1 -1
  82. package/dist/Divider.js +1 -1
  83. package/dist/Dnd.js +2 -2
  84. package/dist/{DndHandleButton-BW9xLWQm.js → DndHandleButton-Cj7pIegT.js} +3 -3
  85. package/dist/{DndHandleButton-BW9xLWQm.js.map → DndHandleButton-Cj7pIegT.js.map} +1 -1
  86. package/dist/DndSort.js +6 -6
  87. package/dist/{Drawer-Dk0MsaOU.js → Drawer-9_HfTi3J.js} +4 -4
  88. package/dist/{Drawer-Dk0MsaOU.js.map → Drawer-9_HfTi3J.js.map} +1 -1
  89. package/dist/Drawer.js +1 -1
  90. package/dist/DrillDown.js +1 -1
  91. package/dist/{EditCard-DV2N7zWr.js → EditCard-DeB4rQVo.js} +6 -6
  92. package/dist/{EditCard-DV2N7zWr.js.map → EditCard-DeB4rQVo.js.map} +1 -1
  93. package/dist/EditCard.js +1 -1
  94. package/dist/{FieldLabel-VVn8GR64.js → FieldLabel-CtvpqdG9.js} +4 -4
  95. package/dist/{FieldLabel-VVn8GR64.js.map → FieldLabel-CtvpqdG9.js.map} +1 -1
  96. package/dist/FieldLabel.js +1 -1
  97. package/dist/{FilterBar-B3c_VGDk.js → FilterBar-D0iRUjOy.js} +10 -10
  98. package/dist/{FilterBar-B3c_VGDk.js.map → FilterBar-D0iRUjOy.js.map} +1 -1
  99. package/dist/FilterBar.js +1 -1
  100. package/dist/{Flex-_orhvoxS.js → Flex-Bb3iHExM.js} +2 -2
  101. package/dist/{Flex-_orhvoxS.js.map → Flex-Bb3iHExM.js.map} +1 -1
  102. package/dist/Flex.js +1 -1
  103. package/dist/{Grid-BAN8WD_V.js → Grid-ho1pGJ5L.js} +2 -2
  104. package/dist/{Grid-BAN8WD_V.js.map → Grid-ho1pGJ5L.js.map} +1 -1
  105. package/dist/Grid.js +1 -1
  106. package/dist/{Icon-feeG7gXA.js → Icon-BEwHECSM.js} +2 -2
  107. package/dist/{Icon-feeG7gXA.js.map → Icon-BEwHECSM.js.map} +1 -1
  108. package/dist/Icon.js +1 -1
  109. package/dist/{InputMask-VBHWGZGN.js → InputMask-CZ57VFJA.js} +3 -3
  110. package/dist/{InputMask-VBHWGZGN.js.map → InputMask-CZ57VFJA.js.map} +1 -1
  111. package/dist/InputMask.js +1 -1
  112. package/dist/{InteractiveCard-Pu0j2qJd.js → InteractiveCard-CyUR_VLW.js} +2 -2
  113. package/dist/{InteractiveCard-Pu0j2qJd.js.map → InteractiveCard-CyUR_VLW.js.map} +1 -1
  114. package/dist/InteractiveCard.js +1 -1
  115. package/dist/{Link-D8A_WT94.js → Link-DI4eVVdI.js} +3 -3
  116. package/dist/{Link-D8A_WT94.js.map → Link-DI4eVVdI.js.map} +1 -1
  117. package/dist/Link.js +1 -1
  118. package/dist/{LinkButton-DxYsWiXB.js → LinkButton-C0wps8r1.js} +2 -2
  119. package/dist/{LinkButton-DxYsWiXB.js.map → LinkButton-C0wps8r1.js.map} +1 -1
  120. package/dist/LinkButton.js +1 -1
  121. package/dist/{List-GPS-GqH7.js → List-BvzfZ9TW.js} +2 -2
  122. package/dist/{List-GPS-GqH7.js.map → List-BvzfZ9TW.js.map} +1 -1
  123. package/dist/List.js +1 -1
  124. package/dist/{ListView-BUrfz75g.js → ListView-Ngeqpgna.js} +3 -3
  125. package/dist/{ListView-BUrfz75g.js.map → ListView-Ngeqpgna.js.map} +1 -1
  126. package/dist/ListView.js +1 -1
  127. package/dist/{Listbox-CRY-0BkS.js → Listbox-3ChcLAyg.js} +5 -5
  128. package/dist/{Listbox-CRY-0BkS.js.map → Listbox-3ChcLAyg.js.map} +1 -1
  129. package/dist/Listbox.js +1 -1
  130. package/dist/{LocalizationProvider-CO8fQGqs.js → LocalizationProvider-BPcOU7YX.js} +2 -2
  131. package/dist/{LocalizationProvider-CO8fQGqs.js.map → LocalizationProvider-BPcOU7YX.js.map} +1 -1
  132. package/dist/LocalizationProvider.js +1 -1
  133. package/dist/{Menu-DNJ0YqjA.js → Menu-BUIAooVS.js} +3 -3
  134. package/dist/{Menu-DNJ0YqjA.js.map → Menu-BUIAooVS.js.map} +1 -1
  135. package/dist/Menu.js +1 -1
  136. package/dist/{MenuFooter-CrsZdXvN.js → MenuFooter-Dtckm9vY.js} +2 -2
  137. package/dist/{MenuFooter-CrsZdXvN.js.map → MenuFooter-Dtckm9vY.js.map} +1 -1
  138. package/dist/MultiSelectField.js +1 -1
  139. package/dist/{MultiSelectFieldSync-CzHj9Qvy.js → MultiSelectFieldSync-jb57hWBG.js} +9 -9
  140. package/dist/{MultiSelectFieldSync-CzHj9Qvy.js.map → MultiSelectFieldSync-jb57hWBG.js.map} +1 -1
  141. package/dist/MultiSelectMenu.js +1 -1
  142. package/dist/{MultiSelectMenuSync-BGcrYjby.js → MultiSelectMenuSync-D6NI4Z2h.js} +6 -6
  143. package/dist/{MultiSelectMenuSync-BGcrYjby.js.map → MultiSelectMenuSync-D6NI4Z2h.js.map} +1 -1
  144. package/dist/{NumberField-bgYX7JGs.js → NumberField-C_UAdOsK.js} +6 -6
  145. package/dist/{NumberField-bgYX7JGs.js.map → NumberField-C_UAdOsK.js.map} +1 -1
  146. package/dist/NumberField.js +1 -1
  147. package/dist/Overflow.js +2 -2
  148. package/dist/{Page-BSHydn4p.js → Page--5QCoYX4.js} +89 -89
  149. package/dist/Page--5QCoYX4.js.map +1 -0
  150. package/dist/Page.js +1 -1
  151. package/dist/{Pagination-CAeyJ7Pl.js → Pagination-Dtgyk0Xr.js} +7 -7
  152. package/dist/{Pagination-CAeyJ7Pl.js.map → Pagination-Dtgyk0Xr.js.map} +1 -1
  153. package/dist/Pagination.js +1 -1
  154. package/dist/{Popover-Cq5tirFz.js → Popover-B1_842BG.js} +3 -3
  155. package/dist/{Popover-Cq5tirFz.js.map → Popover-B1_842BG.js.map} +1 -1
  156. package/dist/Popover.js +1 -1
  157. package/dist/{ProgressBar-ByR50ln7.js → ProgressBar-B87CdCEB.js} +5 -5
  158. package/dist/{ProgressBar-ByR50ln7.js.map → ProgressBar-B87CdCEB.js.map} +1 -1
  159. package/dist/ProgressBar.js +1 -1
  160. package/dist/{Radio-WlsZFRzX.js → Radio-CrGhNc6t.js} +5 -5
  161. package/dist/{Radio-WlsZFRzX.js.map → Radio-CrGhNc6t.js.map} +1 -1
  162. package/dist/{Radio-CPuctRpl.js → Radio-K8VUbkMe.js} +2 -2
  163. package/dist/{Radio-CPuctRpl.js.map → Radio-K8VUbkMe.js.map} +1 -1
  164. package/dist/Radio.js +1 -1
  165. package/dist/{RichTextEditor-FSWAVmTe.js → RichTextEditor-DiOWlG-j.js} +14 -14
  166. package/dist/{RichTextEditor-FSWAVmTe.js.map → RichTextEditor-DiOWlG-j.js.map} +1 -1
  167. package/dist/RichTextEditor.js +1 -1
  168. package/dist/{SavedFiltersButton-Cr829guv.js → SavedFiltersButton-BpjGgsnS.js} +12 -12
  169. package/dist/{SavedFiltersButton-Cr829guv.js.map → SavedFiltersButton-BpjGgsnS.js.map} +1 -1
  170. package/dist/SavedFiltersButton.js +1 -1
  171. package/dist/{SearchField-fXc_vWEr.js → SearchField-CD64ELrq.js} +3 -3
  172. package/dist/{SearchField-fXc_vWEr.js.map → SearchField-CD64ELrq.js.map} +1 -1
  173. package/dist/{SearchField-BMHJCVFu.js → SearchField-CWucSMdv.js} +2 -2
  174. package/dist/{SearchField-BMHJCVFu.js.map → SearchField-CWucSMdv.js.map} +1 -1
  175. package/dist/SearchField.js +1 -1
  176. package/dist/{SegmentedControl-PwLdTdrd.js → SegmentedControl-fBjqazBR.js} +3 -3
  177. package/dist/{SegmentedControl-PwLdTdrd.js.map → SegmentedControl-fBjqazBR.js.map} +1 -1
  178. package/dist/SegmentedControl.js +1 -1
  179. package/dist/{SelectCard-DLWLHi_i.js → SelectCard-YwnN2K4B.js} +5 -5
  180. package/dist/{SelectCard-DLWLHi_i.js.map → SelectCard-YwnN2K4B.js.map} +1 -1
  181. package/dist/SelectCard.js +1 -1
  182. package/dist/SelectField.js +1 -1
  183. package/dist/{SelectFieldLabel-vemffdmu.js → SelectFieldLabel-BopPrWWy.js} +2 -2
  184. package/dist/{SelectFieldLabel-vemffdmu.js.map → SelectFieldLabel-BopPrWWy.js.map} +1 -1
  185. package/dist/{SelectFieldSync-C65VFWGm.js → SelectFieldSync-B30iR0EX.js} +7 -7
  186. package/dist/{SelectFieldSync-C65VFWGm.js.map → SelectFieldSync-B30iR0EX.js.map} +1 -1
  187. package/dist/SelectMenu.js +1 -1
  188. package/dist/{SelectMenuSync-CF49L12-.js → SelectMenuSync-BoxEMqcv.js} +6 -6
  189. package/dist/{SelectMenuSync-CF49L12-.js.map → SelectMenuSync-BoxEMqcv.js.map} +1 -1
  190. package/dist/{SelectOptions-C7skDFj2.js → SelectOptions-kx_udzjX.js} +2 -2
  191. package/dist/{SelectOptions-C7skDFj2.js.map → SelectOptions-kx_udzjX.js.map} +1 -1
  192. package/dist/{SelectTrigger-BbneVXMz.js → SelectTrigger-BjMduiax.js} +5 -5
  193. package/dist/{SelectTrigger-BbneVXMz.js.map → SelectTrigger-BjMduiax.js.map} +1 -1
  194. package/dist/SelectTrigger.js +1 -1
  195. package/dist/{SelectTriggerBase-BjIOERXr.js → SelectTriggerBase-CL9Zpbxn.js} +5 -5
  196. package/dist/{SelectTriggerBase-BjIOERXr.js.map → SelectTriggerBase-CL9Zpbxn.js.map} +1 -1
  197. package/dist/{SideNav-JzIIZSK_.js → SideNav-BFkruKa4.js} +3 -3
  198. package/dist/{SideNav-JzIIZSK_.js.map → SideNav-BFkruKa4.js.map} +1 -1
  199. package/dist/SideNav.js +1 -1
  200. package/dist/Skeleton.js +1 -1
  201. package/dist/{Stepper-lYywxPU5.js → Stepper-BXgMeUHu.js} +5 -5
  202. package/dist/{Stepper-lYywxPU5.js.map → Stepper-BXgMeUHu.js.map} +1 -1
  203. package/dist/Stepper.js +1 -1
  204. package/dist/{Switch-B6bKmpwN.js → Switch-Crcn7ffO.js} +5 -5
  205. package/dist/{Switch-B6bKmpwN.js.map → Switch-Crcn7ffO.js.map} +1 -1
  206. package/dist/Switch.js +1 -1
  207. package/dist/{Tab-CIY6BO2e.js → Tab-FOIali7o.js} +4 -4
  208. package/dist/{Tab-CIY6BO2e.js.map → Tab-FOIali7o.js.map} +1 -1
  209. package/dist/Tab.js +1 -1
  210. package/dist/Table.js +1 -1
  211. package/dist/{Text-w2gWn4K6.js → Text-CK1TI4Gz.js} +3 -3
  212. package/dist/{Text-w2gWn4K6.js.map → Text-CK1TI4Gz.js.map} +1 -1
  213. package/dist/Text.js +1 -1
  214. package/dist/{TextField-BQsCh5Nb.js → TextField-CFRhRDXu.js} +2 -2
  215. package/dist/{TextField-BQsCh5Nb.js.map → TextField-CFRhRDXu.js.map} +1 -1
  216. package/dist/{TextField-DJ3gEIP6.js → TextField-Dn2pwnKf.js} +4 -4
  217. package/dist/{TextField-DJ3gEIP6.js.map → TextField-Dn2pwnKf.js.map} +1 -1
  218. package/dist/TextField.js +1 -1
  219. package/dist/{Textarea-BK4Vf84K.js → Textarea-DPRvsIhS.js} +4 -4
  220. package/dist/{Textarea-BK4Vf84K.js.map → Textarea-DPRvsIhS.js.map} +1 -1
  221. package/dist/Textarea.js +1 -1
  222. package/dist/{ThemeProvider-BC6wbuLU.js → ThemeProvider-Sd8LK0A9.js} +3 -3
  223. package/dist/{ThemeProvider-BC6wbuLU.js.map → ThemeProvider-Sd8LK0A9.js.map} +1 -1
  224. package/dist/ThemeProvider.css +16 -4
  225. package/dist/ThemeProvider.js +1 -1
  226. package/dist/ThemeProvider.module-_7m6Tav-.js +8 -0
  227. package/dist/ThemeProvider.module-_7m6Tav-.js.map +1 -0
  228. package/dist/{TimeField-B4IW2B_o.js → TimeField-IK0j6q87.js} +6 -6
  229. package/dist/{TimeField-B4IW2B_o.js.map → TimeField-IK0j6q87.js.map} +1 -1
  230. package/dist/TimeField.js +1 -1
  231. package/dist/Toast.js +2 -2
  232. package/dist/{Toaster-DTF9qnTy.js → Toaster-C1Hjsfo4.js} +2 -2
  233. package/dist/{Toaster-DTF9qnTy.js.map → Toaster-C1Hjsfo4.js.map} +1 -1
  234. package/dist/{Toaster-BGY2IzF5.js → Toaster-CFU3OD-A.js} +5 -5
  235. package/dist/{Toaster-BGY2IzF5.js.map → Toaster-CFU3OD-A.js.map} +1 -1
  236. package/dist/{Toolbar-DObrJ_S5.js → Toolbar-CTF1WCrJ.js} +9 -9
  237. package/dist/{Toolbar-DObrJ_S5.js.map → Toolbar-CTF1WCrJ.js.map} +1 -1
  238. package/dist/{Toolbar-DRJGKk8D.js → Toolbar-Cv8AR7mj.js} +11 -11
  239. package/dist/{Toolbar-DRJGKk8D.js.map → Toolbar-Cv8AR7mj.js.map} +1 -1
  240. package/dist/Toolbar.js +2 -2
  241. package/dist/{ToolbarButtonToggle-BCKgA8FE.js → ToolbarButtonToggle-6agLSzkp.js} +3 -3
  242. package/dist/{ToolbarButtonToggle-BCKgA8FE.js.map → ToolbarButtonToggle-6agLSzkp.js.map} +1 -1
  243. package/dist/{Tooltip-DqS6xDUf.js → Tooltip-DYR7-Ova.js} +3 -3
  244. package/dist/{Tooltip-DqS6xDUf.js.map → Tooltip-DYR7-Ova.js.map} +1 -1
  245. package/dist/Tooltip.js +1 -1
  246. package/dist/TreeSelectField.js +1 -1
  247. package/dist/{TreeSelectFieldSync-Do5ffU0b.js → TreeSelectFieldSync-CqY6lbDJ.js} +8 -8
  248. package/dist/{TreeSelectFieldSync-Do5ffU0b.js.map → TreeSelectFieldSync-CqY6lbDJ.js.map} +1 -1
  249. package/dist/TreeSelectMenu.js +1 -1
  250. package/dist/{TreeSelectMenuSync-s05Ly6lj.js → TreeSelectMenuSync-DGUoVfN-.js} +5 -5
  251. package/dist/{TreeSelectMenuSync-s05Ly6lj.js.map → TreeSelectMenuSync-DGUoVfN-.js.map} +1 -1
  252. package/dist/{YearlessDateInputWithPicker-BHfFjCqE.js → YearlessDateInputWithPicker-CPhBofEJ.js} +5 -5
  253. package/dist/{YearlessDateInputWithPicker-BHfFjCqE.js.map → YearlessDateInputWithPicker-CPhBofEJ.js.map} +1 -1
  254. package/dist/beta.js +16 -16
  255. package/dist/{filter-state-CE8t3-Q7.js → filter-state-HDQUPdOL.js} +23 -23
  256. package/dist/{filter-state-CE8t3-Q7.js.map → filter-state-HDQUPdOL.js.map} +1 -1
  257. package/dist/{index-CKdC7x1S.js → index-iTige6rD.js} +2 -2
  258. package/dist/{index-CKdC7x1S.js.map → index-iTige6rD.js.map} +1 -1
  259. package/dist/{index-DN_iqxhF.js → index-vOZvfuE6.js} +2 -2
  260. package/dist/{index-DN_iqxhF.js.map → index-vOZvfuE6.js.map} +1 -1
  261. package/dist/index.js +65 -65
  262. package/dist/{portalScopeClassNames-jlZkdug_.js → portalScopeClassNames-BTyv0FY8.js} +2 -2
  263. package/dist/{portalScopeClassNames-jlZkdug_.js.map → portalScopeClassNames-BTyv0FY8.js.map} +1 -1
  264. package/dist/{primitive-DXlHdTFb.js → primitive-BXgYQTTw.js} +61 -1
  265. package/dist/{primitive-DXlHdTFb.js.map → primitive-BXgYQTTw.js.map} +1 -1
  266. package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +20 -0
  267. package/dist/src/beta/components/Table/DataTable/internal/context/rowClick/DataTableRowClickContext.d.ts +10 -0
  268. package/dist/src/beta/components/Table/DataTable/internal/context/rowClick/DataTableRowClickProvider.d.ts +19 -0
  269. package/dist/src/beta/components/Table/DataTable/internal/context/rowClick/useDataTableRowClick.d.ts +1 -0
  270. package/dist/src/beta/components/Table/internal/TruncateChips.d.ts +5 -15
  271. package/dist/src/components/Page/Page.d.ts +2 -2
  272. package/dist/src/components/Page/pageBreakpoint.d.ts +26 -0
  273. package/dist/src/integration-testing/page-resize-loop.spec.d.ts +1 -0
  274. package/dist/{stripInlineMarkdown-C0bVmYgG.js → stripInlineMarkdown-B-pONfu5.js} +2 -2
  275. package/dist/{stripInlineMarkdown-C0bVmYgG.js.map → stripInlineMarkdown-B-pONfu5.js.map} +1 -1
  276. package/dist/{syncFilterUtils-CgHB-l6A.js → syncFilterUtils-Cg2yX7al.js} +6 -6
  277. package/dist/{syncFilterUtils-CgHB-l6A.js.map → syncFilterUtils-Cg2yX7al.js.map} +1 -1
  278. package/dist/token/core/primitive-variables.scss +12 -0
  279. package/dist/token/core/primitive.d.ts +12 -0
  280. package/dist/token/core/primitive.js +48 -0
  281. package/dist/token/core/primitive.scss +12 -0
  282. package/dist/token.js +1 -1
  283. package/dist/{treeSync-Cz3H08cr.js → treeSync-CASYkjhr.js} +4 -4
  284. package/dist/{treeSync-Cz3H08cr.js.map → treeSync-CASYkjhr.js.map} +1 -1
  285. package/dist/{useAdaptiveView-CeYKH0Me.js → useAdaptiveView-BDqpk9G2.js} +9 -9
  286. package/dist/{useAdaptiveView-CeYKH0Me.js.map → useAdaptiveView-BDqpk9G2.js.map} +1 -1
  287. package/dist/{useBreakpoint-CeaUyHxh.js → useBreakpoint-BBNRlMGZ.js} +2 -2
  288. package/dist/{useBreakpoint-CeaUyHxh.js.map → useBreakpoint-BBNRlMGZ.js.map} +1 -1
  289. package/dist/useBreakpoint.js +1 -1
  290. package/dist/{useDrilldown-BJ2dHHKV.js → useDrilldown-DCXYrcGK.js} +4 -4
  291. package/dist/{useDrilldown-BJ2dHHKV.js.map → useDrilldown-DCXYrcGK.js.map} +1 -1
  292. package/dist/{useInfiniteCombobox-BqJm-CdN.js → useInfiniteCombobox-D_y_FHCj.js} +9 -9
  293. package/dist/{useInfiniteCombobox-BqJm-CdN.js.map → useInfiniteCombobox-D_y_FHCj.js.map} +1 -1
  294. package/dist/{useLayoutPropsUtil-CB_zHDbW.js → useLayoutPropsUtil-DjqeAJZ9.js} +3 -3
  295. package/dist/{useLayoutPropsUtil-CB_zHDbW.js.map → useLayoutPropsUtil-DjqeAJZ9.js.map} +1 -1
  296. package/dist/{useToggleSelection-BGc5OiZF.js → useToggleSelection-BSLh569m.js} +2 -2
  297. package/dist/{useToggleSelection-BGc5OiZF.js.map → useToggleSelection-BSLh569m.js.map} +1 -1
  298. package/package.json +3 -3
  299. package/dist/DataTable-FG0Kjx0d.js.map +0 -1
  300. package/dist/Page-BSHydn4p.js.map +0 -1
  301. package/dist/ThemeProvider.module-D9pNGYjP.js +0 -8
  302. package/dist/ThemeProvider.module-D9pNGYjP.js.map +0 -1
@@ -2,9 +2,9 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useMemo, forwardRef } from 'react';
3
3
  import { c as cx } from './index-De1g9FRV.js';
4
4
  import { S as SrOnly } from './SrOnly-pnf8ajnh.js';
5
- import { T as Tooltip } from './Tooltip-DqS6xDUf.js';
6
- import { F as FieldLabelButton, A as AiMark } from './AiMark-CS6MvraM.js';
7
- import { I as Icon } from './Icon-feeG7gXA.js';
5
+ import { T as Tooltip } from './Tooltip-DYR7-Ova.js';
6
+ import { F as FieldLabelButton, A as AiMark } from './AiMark-m-sG_BrY.js';
7
+ import { I as Icon } from './Icon-BEwHECSM.js';
8
8
  import { S as SvgInfo } from './info-CYpG6tcI.js';
9
9
 
10
10
  import './FieldLabel.css';const INLINE_MARKDOWN_REGEX = /\*\*\*(.+?)\*\*\*|\*\*(.+?)\*\*|\*(.+?)\*|==(.+?)==|`(.+?)`/g;
@@ -177,4 +177,4 @@ FieldLabelElement.displayName = "FieldLabel";
177
177
  const FieldLabel = FieldLabelElement;
178
178
 
179
179
  export { FieldLabel as F, INLINE_MARKDOWN_REGEX as I };
180
- //# sourceMappingURL=FieldLabel-VVn8GR64.js.map
180
+ //# sourceMappingURL=FieldLabel-CtvpqdG9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldLabel-VVn8GR64.js","sources":["../src/internal/utils/inlineMarkdownRegex.ts","../src/internal/functions/inlineMarkdown.tsx","../src/components/FieldLabel/internal/FieldLabelMoreInfoIcon.tsx","../src/internal/components/InlineMarkdown/InlineMarkdown.tsx","../src/components/FieldLabel/FieldLabel.tsx"],"sourcesContent":["/**\n * Shared regex for parsing inline markdown constructs.\n * Matches (in order): bold-italic `***`, bold `**`, italic `*`, highlight `==`, code `` ` ``\n */\nexport const INLINE_MARKDOWN_REGEX =\n /\\*\\*\\*(.+?)\\*\\*\\*|\\*\\*(.+?)\\*\\*|\\*(.+?)\\*|==(.+?)==|`(.+?)`/g;\n","import { ReactNode } from \"react\";\nimport styles from \"../components/InlineMarkdown/InlineMarkdown.module.scss\";\nimport { INLINE_MARKDOWN_REGEX } from \"../utils/inlineMarkdownRegex\";\n\n/**\n * Parses a limited set of inline markdown constructs in a string and returns React nodes.\n * `lastIndex` is reset at the start of each call and saved/restored around recursive calls\n * so a single shared regex instance is safe for nested parsing.\n *\n * Supported constructs (matched in order):\n * - `***text***` → `<strong><em>text</em></strong>`\n * - `**text**` → `<strong>text</strong>`\n * - `*text*` → `<em>text</em>`\n * - `==text==` → `<mark>`\n * - `` `text` `` → `<code>` (no nested markdown inside code)\n *\n * For plain-text stripping (e.g. aria-label), use `stripInlineMarkdown` from\n * `./stripInlineMarkdown` — it has no style dependencies.\n *\n * @param text - The string to parse\n * @returns Array of React nodes representing the parsed content\n */\nexport const parseInlineMarkdown = (text: string): ReactNode[] => {\n const parts: ReactNode[] = [];\n let lastIndex = 0;\n\n INLINE_MARKDOWN_REGEX.lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = INLINE_MARKDOWN_REGEX.exec(text)) !== null) {\n if (match.index > lastIndex) {\n parts.push(text.substring(lastIndex, match.index));\n }\n\n const key = match.index;\n const savedIndex = INLINE_MARKDOWN_REGEX.lastIndex;\n\n if (match[1]) {\n // ***bold italic***\n parts.push(\n <strong key={key}>\n <em>{parseInlineMarkdown(match[1])}</em>\n </strong>,\n );\n } else if (match[2]) {\n // **bold**\n parts.push(<strong key={key}>{parseInlineMarkdown(match[2])}</strong>);\n } else if (match[3]) {\n // *italic*\n parts.push(<em key={key}>{parseInlineMarkdown(match[3])}</em>);\n } else if (match[4]) {\n // ==highlight==\n parts.push(\n <mark key={key} className={styles.highlight}>\n {parseInlineMarkdown(match[4])}\n </mark>,\n );\n } else if (match[5]) {\n // `code` — no recursion inside code\n parts.push(\n <code key={key} className={styles.code}>\n {match[5]}\n </code>,\n );\n }\n\n INLINE_MARKDOWN_REGEX.lastIndex = savedIndex;\n lastIndex = savedIndex;\n }\n\n if (lastIndex < text.length) {\n parts.push(text.substring(lastIndex));\n }\n\n return parts;\n};\n","import { FieldLabelProps } from \"../FieldLabel\";\nimport { Tooltip } from \"../../Tooltip\";\nimport { FieldLabelButton } from \"./FieldLabelButton\";\nimport { Icon } from \"../../Icon\";\nimport Info from \"@servicetitan/hammer-icon/mdi/round/info.svg\";\nimport styles from \"../FieldLabel.module.scss\";\nimport { SrOnly } from \"../../SrOnly\";\n\n/**\n * Internal component for rendering the info icon button with tooltip.\n *\n * @param props - Component props\n * @param props.moreInfo - The content to display in the tooltip\n * @param props.moreInfoId - ID for the visually-hidden description span, used by aria-describedby on the associated input\n */\nexport const FieldLabelMoreInfoIcon = ({\n moreInfo,\n moreInfoId,\n}: {\n moreInfo: FieldLabelProps[\"moreInfo\"];\n moreInfoId?: string;\n}) => {\n return (\n <div className={styles[\"info-container\"]}>\n {moreInfoId && <SrOnly id={moreInfoId}>{moreInfo}</SrOnly>}\n <Tooltip\n placement=\"top\"\n offset={5}\n fallbackPlacements={[\"right\", \"bottom\", \"left\"]}\n >\n <Tooltip.Trigger className={styles[\"info-trigger\"]}>\n <FieldLabelButton aria-label=\"More information\">\n <Icon svg={Info} />\n </FieldLabelButton>\n </Tooltip.Trigger>\n <Tooltip.Content className={styles[\"info-content\"]}>\n {moreInfo}\n </Tooltip.Content>\n </Tooltip>\n </div>\n );\n};\n","import { useMemo } from \"react\";\nimport { parseInlineMarkdown } from \"../../functions/inlineMarkdown\";\n\n/**\n * Props for the InlineMarkdown component\n * @property {string} [value] - The markdown string to parse and render\n */\nexport interface InlineMarkdownProps {\n value?: string;\n}\n\n/**\n * Renders a string with limited inline markdown constructs as formatted React content.\n *\n * Features:\n * - Bold: `**text**`\n * - Italic: `*text*`\n * - Bold and italic: `***text***`\n * - Highlight: `==text==`\n * - Inline code: `` `text` ``\n * - Memoized rendering for performance\n * - Passes through plain strings with no overhead\n *\n * @example\n * <InlineMarkdown value=\"Save **now** or `discard`\" />\n */\nexport const InlineMarkdown = ({ value = \"\" }: InlineMarkdownProps) => {\n const content = useMemo(() => parseInlineMarkdown(value), [value]);\n return <>{content}</>;\n};\n","import {\n forwardRef,\n ComponentPropsWithoutRef,\n ReactNode,\n type Ref,\n type ElementType,\n type JSX,\n type JSXElementConstructor,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./FieldLabel.module.scss\";\nimport { TooltipProps } from \"../Tooltip\";\nimport { SrOnly } from \"../SrOnly\";\nimport { FieldLabelMoreInfoIcon } from \"./internal/FieldLabelMoreInfoIcon\";\nimport { AiMarkWithTooltipOrPopoverProps } from \"../../types\";\nimport { AiMark } from \"../../components/AiMark\";\nimport { InlineMarkdown } from \"../../internal/components/InlineMarkdown\";\n\ntype IntrinsicAttributes<\n E extends keyof JSX.IntrinsicElements | JSXElementConstructor<unknown>,\n> = JSX.LibraryManagedAttributes<E, ComponentPropsWithoutRef<E>>;\n\ntype FieldLabelOwnProps<E extends ElementType = ElementType> =\n AiMarkWithTooltipOrPopoverProps & {\n /** The HTML element to render */\n el?: E;\n /** Unique identifier for the label element */\n id?: string;\n /**\n * Whether the field is required. Shows a red asterisk (*) when true.\n * @default false\n */\n required?: boolean;\n /** Additional information to display in a tooltip */\n moreInfo?: ReactNode;\n /** ID for the sr-only description span, referenced via aria-describedby on the associated input. @internal */\n moreInfoId?: string;\n /**\n * Controls the open state of the more info tooltip.\n * @default false\n * @deprecated The more info tooltip is now triggered by a keyboard-accessible button. This prop has no effect.\n */\n moreInfoOpen?: TooltipProps[\"open\"];\n };\n\n/**\n * Props for the FieldLabel component.\n */\nexport type FieldLabelProps<E extends ElementType = ElementType> =\n FieldLabelOwnProps<E> &\n Omit<IntrinsicAttributes<E>, keyof FieldLabelOwnProps>;\n\n/**\n * FieldLabel component for form field labels with optional required indicator and help tooltip.\n *\n * Features:\n * - Accessible form label with proper semantic HTML\n * - Optional required field indicator with red asterisk\n * - Help tooltip with info icon for additional context\n * - Screen reader support for required field announcement\n * - Keyboard-accessible info icon button for additional field context\n * - Flexible content support for label text and help information\n * - Proper ARIA attributes and semantic structure\n * - Responsive design with consistent typography\n * - Polymorphic element support for different HTML elements\n *\n * @example\n * <FieldLabel htmlFor=\"email\" required>\n * Email Address\n * </FieldLabel>\n * <input id=\"email\" type=\"email\" />\n *\n * @example\n * <FieldLabel\n * el=\"label\"\n * htmlFor=\"password\"\n * required\n * moreInfo=\"Password must be at least 8 characters long\"\n * >\n * Password\n * </FieldLabel>\n * <input id=\"password\" type=\"password\" />\n *\n * @example\n * <FieldLabel el=\"legend\" required>\n * Form Section\n * </FieldLabel>\n */\nconst FieldLabelElement = forwardRef(\n (\n {\n aiMark,\n el: Element = \"label\",\n children,\n className,\n moreInfo,\n moreInfoId,\n required,\n moreInfoOpen: _moreInfoOpen, // deprecated, ignored\n ...props\n }: FieldLabelProps,\n ref,\n ) => {\n const FieldLabelClassNames = cx([styles[\"label\"]], className);\n\n const labelText = (\n <span className={styles[\"label-text\"]}>\n {/* TODO(v4.0.0): remove typeof check — children will always be string */}\n {typeof children === \"string\" ? (\n <InlineMarkdown value={children} />\n ) : (\n children\n )}\n {required ? (\n <>\n <span aria-hidden className={styles[\"required\"]}>\n *\n </span>\n <SrOnly>Required</SrOnly>\n </>\n ) : null}\n </span>\n );\n\n const hasMoreInfoOrAiMark = moreInfo || aiMark;\n\n // When el=\"label\" with moreInfo, a <button> cannot be a descendant of <label> per HTML spec.\n // Restructure: outer div wrapper + inner <label display:contents> + button as siblings.\n if (Element === \"label\" && hasMoreInfoOrAiMark) {\n const { htmlFor, id, ...labelProps } =\n props as ComponentPropsWithoutRef<\"label\">;\n return (\n <div className={FieldLabelClassNames} ref={ref as Ref<HTMLDivElement>}>\n <div className={styles[\"top-container\"]}>\n <label\n htmlFor={htmlFor}\n id={id}\n data-anv=\"label\"\n {...(labelProps as ComponentPropsWithoutRef<\"label\">)}\n >\n {labelText}\n </label>\n {moreInfo && (\n <FieldLabelMoreInfoIcon\n moreInfo={moreInfo}\n moreInfoId={moreInfoId}\n />\n )}\n {aiMark && (\n <AiMark\n className={styles[\"ai-mark-icon\"]}\n type=\"gradient\"\n popoverOrTooltipConfig={\n typeof aiMark === \"object\" ? aiMark : undefined\n }\n />\n )}\n </div>\n </div>\n );\n }\n\n return (\n <Element\n className={FieldLabelClassNames}\n data-anv=\"label\"\n ref={ref}\n {...props}\n >\n {hasMoreInfoOrAiMark ? (\n <div className={styles[\"top-container\"]}>\n {labelText}\n {moreInfo && (\n <FieldLabelMoreInfoIcon\n moreInfo={moreInfo}\n moreInfoId={moreInfoId}\n />\n )}\n {aiMark && (\n <AiMark\n className={styles[\"ai-mark-icon\"]}\n type=\"gradient\"\n popoverOrTooltipConfig={\n typeof aiMark === \"object\" ? aiMark : undefined\n }\n />\n )}\n </div>\n ) : (\n labelText\n )}\n </Element>\n );\n },\n);\n\nFieldLabelElement.displayName = \"FieldLabel\";\n\nexport const FieldLabel = FieldLabelElement as <\n E extends ElementType = \"label\",\n>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: FieldLabelProps<E> & { ref?: React.Ref<any> },\n) => JSX.Element;\n"],"names":["styles","Info"],"mappings":"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"}
1
+ {"version":3,"file":"FieldLabel-CtvpqdG9.js","sources":["../src/internal/utils/inlineMarkdownRegex.ts","../src/internal/functions/inlineMarkdown.tsx","../src/components/FieldLabel/internal/FieldLabelMoreInfoIcon.tsx","../src/internal/components/InlineMarkdown/InlineMarkdown.tsx","../src/components/FieldLabel/FieldLabel.tsx"],"sourcesContent":["/**\n * Shared regex for parsing inline markdown constructs.\n * Matches (in order): bold-italic `***`, bold `**`, italic `*`, highlight `==`, code `` ` ``\n */\nexport const INLINE_MARKDOWN_REGEX =\n /\\*\\*\\*(.+?)\\*\\*\\*|\\*\\*(.+?)\\*\\*|\\*(.+?)\\*|==(.+?)==|`(.+?)`/g;\n","import { ReactNode } from \"react\";\nimport styles from \"../components/InlineMarkdown/InlineMarkdown.module.scss\";\nimport { INLINE_MARKDOWN_REGEX } from \"../utils/inlineMarkdownRegex\";\n\n/**\n * Parses a limited set of inline markdown constructs in a string and returns React nodes.\n * `lastIndex` is reset at the start of each call and saved/restored around recursive calls\n * so a single shared regex instance is safe for nested parsing.\n *\n * Supported constructs (matched in order):\n * - `***text***` → `<strong><em>text</em></strong>`\n * - `**text**` → `<strong>text</strong>`\n * - `*text*` → `<em>text</em>`\n * - `==text==` → `<mark>`\n * - `` `text` `` → `<code>` (no nested markdown inside code)\n *\n * For plain-text stripping (e.g. aria-label), use `stripInlineMarkdown` from\n * `./stripInlineMarkdown` — it has no style dependencies.\n *\n * @param text - The string to parse\n * @returns Array of React nodes representing the parsed content\n */\nexport const parseInlineMarkdown = (text: string): ReactNode[] => {\n const parts: ReactNode[] = [];\n let lastIndex = 0;\n\n INLINE_MARKDOWN_REGEX.lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = INLINE_MARKDOWN_REGEX.exec(text)) !== null) {\n if (match.index > lastIndex) {\n parts.push(text.substring(lastIndex, match.index));\n }\n\n const key = match.index;\n const savedIndex = INLINE_MARKDOWN_REGEX.lastIndex;\n\n if (match[1]) {\n // ***bold italic***\n parts.push(\n <strong key={key}>\n <em>{parseInlineMarkdown(match[1])}</em>\n </strong>,\n );\n } else if (match[2]) {\n // **bold**\n parts.push(<strong key={key}>{parseInlineMarkdown(match[2])}</strong>);\n } else if (match[3]) {\n // *italic*\n parts.push(<em key={key}>{parseInlineMarkdown(match[3])}</em>);\n } else if (match[4]) {\n // ==highlight==\n parts.push(\n <mark key={key} className={styles.highlight}>\n {parseInlineMarkdown(match[4])}\n </mark>,\n );\n } else if (match[5]) {\n // `code` — no recursion inside code\n parts.push(\n <code key={key} className={styles.code}>\n {match[5]}\n </code>,\n );\n }\n\n INLINE_MARKDOWN_REGEX.lastIndex = savedIndex;\n lastIndex = savedIndex;\n }\n\n if (lastIndex < text.length) {\n parts.push(text.substring(lastIndex));\n }\n\n return parts;\n};\n","import { FieldLabelProps } from \"../FieldLabel\";\nimport { Tooltip } from \"../../Tooltip\";\nimport { FieldLabelButton } from \"./FieldLabelButton\";\nimport { Icon } from \"../../Icon\";\nimport Info from \"@servicetitan/hammer-icon/mdi/round/info.svg\";\nimport styles from \"../FieldLabel.module.scss\";\nimport { SrOnly } from \"../../SrOnly\";\n\n/**\n * Internal component for rendering the info icon button with tooltip.\n *\n * @param props - Component props\n * @param props.moreInfo - The content to display in the tooltip\n * @param props.moreInfoId - ID for the visually-hidden description span, used by aria-describedby on the associated input\n */\nexport const FieldLabelMoreInfoIcon = ({\n moreInfo,\n moreInfoId,\n}: {\n moreInfo: FieldLabelProps[\"moreInfo\"];\n moreInfoId?: string;\n}) => {\n return (\n <div className={styles[\"info-container\"]}>\n {moreInfoId && <SrOnly id={moreInfoId}>{moreInfo}</SrOnly>}\n <Tooltip\n placement=\"top\"\n offset={5}\n fallbackPlacements={[\"right\", \"bottom\", \"left\"]}\n >\n <Tooltip.Trigger className={styles[\"info-trigger\"]}>\n <FieldLabelButton aria-label=\"More information\">\n <Icon svg={Info} />\n </FieldLabelButton>\n </Tooltip.Trigger>\n <Tooltip.Content className={styles[\"info-content\"]}>\n {moreInfo}\n </Tooltip.Content>\n </Tooltip>\n </div>\n );\n};\n","import { useMemo } from \"react\";\nimport { parseInlineMarkdown } from \"../../functions/inlineMarkdown\";\n\n/**\n * Props for the InlineMarkdown component\n * @property {string} [value] - The markdown string to parse and render\n */\nexport interface InlineMarkdownProps {\n value?: string;\n}\n\n/**\n * Renders a string with limited inline markdown constructs as formatted React content.\n *\n * Features:\n * - Bold: `**text**`\n * - Italic: `*text*`\n * - Bold and italic: `***text***`\n * - Highlight: `==text==`\n * - Inline code: `` `text` ``\n * - Memoized rendering for performance\n * - Passes through plain strings with no overhead\n *\n * @example\n * <InlineMarkdown value=\"Save **now** or `discard`\" />\n */\nexport const InlineMarkdown = ({ value = \"\" }: InlineMarkdownProps) => {\n const content = useMemo(() => parseInlineMarkdown(value), [value]);\n return <>{content}</>;\n};\n","import {\n forwardRef,\n ComponentPropsWithoutRef,\n ReactNode,\n type Ref,\n type ElementType,\n type JSX,\n type JSXElementConstructor,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./FieldLabel.module.scss\";\nimport { TooltipProps } from \"../Tooltip\";\nimport { SrOnly } from \"../SrOnly\";\nimport { FieldLabelMoreInfoIcon } from \"./internal/FieldLabelMoreInfoIcon\";\nimport { AiMarkWithTooltipOrPopoverProps } from \"../../types\";\nimport { AiMark } from \"../../components/AiMark\";\nimport { InlineMarkdown } from \"../../internal/components/InlineMarkdown\";\n\ntype IntrinsicAttributes<\n E extends keyof JSX.IntrinsicElements | JSXElementConstructor<unknown>,\n> = JSX.LibraryManagedAttributes<E, ComponentPropsWithoutRef<E>>;\n\ntype FieldLabelOwnProps<E extends ElementType = ElementType> =\n AiMarkWithTooltipOrPopoverProps & {\n /** The HTML element to render */\n el?: E;\n /** Unique identifier for the label element */\n id?: string;\n /**\n * Whether the field is required. Shows a red asterisk (*) when true.\n * @default false\n */\n required?: boolean;\n /** Additional information to display in a tooltip */\n moreInfo?: ReactNode;\n /** ID for the sr-only description span, referenced via aria-describedby on the associated input. @internal */\n moreInfoId?: string;\n /**\n * Controls the open state of the more info tooltip.\n * @default false\n * @deprecated The more info tooltip is now triggered by a keyboard-accessible button. This prop has no effect.\n */\n moreInfoOpen?: TooltipProps[\"open\"];\n };\n\n/**\n * Props for the FieldLabel component.\n */\nexport type FieldLabelProps<E extends ElementType = ElementType> =\n FieldLabelOwnProps<E> &\n Omit<IntrinsicAttributes<E>, keyof FieldLabelOwnProps>;\n\n/**\n * FieldLabel component for form field labels with optional required indicator and help tooltip.\n *\n * Features:\n * - Accessible form label with proper semantic HTML\n * - Optional required field indicator with red asterisk\n * - Help tooltip with info icon for additional context\n * - Screen reader support for required field announcement\n * - Keyboard-accessible info icon button for additional field context\n * - Flexible content support for label text and help information\n * - Proper ARIA attributes and semantic structure\n * - Responsive design with consistent typography\n * - Polymorphic element support for different HTML elements\n *\n * @example\n * <FieldLabel htmlFor=\"email\" required>\n * Email Address\n * </FieldLabel>\n * <input id=\"email\" type=\"email\" />\n *\n * @example\n * <FieldLabel\n * el=\"label\"\n * htmlFor=\"password\"\n * required\n * moreInfo=\"Password must be at least 8 characters long\"\n * >\n * Password\n * </FieldLabel>\n * <input id=\"password\" type=\"password\" />\n *\n * @example\n * <FieldLabel el=\"legend\" required>\n * Form Section\n * </FieldLabel>\n */\nconst FieldLabelElement = forwardRef(\n (\n {\n aiMark,\n el: Element = \"label\",\n children,\n className,\n moreInfo,\n moreInfoId,\n required,\n moreInfoOpen: _moreInfoOpen, // deprecated, ignored\n ...props\n }: FieldLabelProps,\n ref,\n ) => {\n const FieldLabelClassNames = cx([styles[\"label\"]], className);\n\n const labelText = (\n <span className={styles[\"label-text\"]}>\n {/* TODO(v4.0.0): remove typeof check — children will always be string */}\n {typeof children === \"string\" ? (\n <InlineMarkdown value={children} />\n ) : (\n children\n )}\n {required ? (\n <>\n <span aria-hidden className={styles[\"required\"]}>\n *\n </span>\n <SrOnly>Required</SrOnly>\n </>\n ) : null}\n </span>\n );\n\n const hasMoreInfoOrAiMark = moreInfo || aiMark;\n\n // When el=\"label\" with moreInfo, a <button> cannot be a descendant of <label> per HTML spec.\n // Restructure: outer div wrapper + inner <label display:contents> + button as siblings.\n if (Element === \"label\" && hasMoreInfoOrAiMark) {\n const { htmlFor, id, ...labelProps } =\n props as ComponentPropsWithoutRef<\"label\">;\n return (\n <div className={FieldLabelClassNames} ref={ref as Ref<HTMLDivElement>}>\n <div className={styles[\"top-container\"]}>\n <label\n htmlFor={htmlFor}\n id={id}\n data-anv=\"label\"\n {...(labelProps as ComponentPropsWithoutRef<\"label\">)}\n >\n {labelText}\n </label>\n {moreInfo && (\n <FieldLabelMoreInfoIcon\n moreInfo={moreInfo}\n moreInfoId={moreInfoId}\n />\n )}\n {aiMark && (\n <AiMark\n className={styles[\"ai-mark-icon\"]}\n type=\"gradient\"\n popoverOrTooltipConfig={\n typeof aiMark === \"object\" ? aiMark : undefined\n }\n />\n )}\n </div>\n </div>\n );\n }\n\n return (\n <Element\n className={FieldLabelClassNames}\n data-anv=\"label\"\n ref={ref}\n {...props}\n >\n {hasMoreInfoOrAiMark ? (\n <div className={styles[\"top-container\"]}>\n {labelText}\n {moreInfo && (\n <FieldLabelMoreInfoIcon\n moreInfo={moreInfo}\n moreInfoId={moreInfoId}\n />\n )}\n {aiMark && (\n <AiMark\n className={styles[\"ai-mark-icon\"]}\n type=\"gradient\"\n popoverOrTooltipConfig={\n typeof aiMark === \"object\" ? aiMark : undefined\n }\n />\n )}\n </div>\n ) : (\n labelText\n )}\n </Element>\n );\n },\n);\n\nFieldLabelElement.displayName = \"FieldLabel\";\n\nexport const FieldLabel = FieldLabelElement as <\n E extends ElementType = \"label\",\n>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: FieldLabelProps<E> & { ref?: React.Ref<any> },\n) => JSX.Element;\n"],"names":["styles","Info"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { F as FieldLabel, F as default } from './FieldLabel-VVn8GR64.js';
1
+ export { F as FieldLabel, F as default } from './FieldLabel-CtvpqdG9.js';
2
2
  //# sourceMappingURL=FieldLabel.js.map
@@ -2,16 +2,16 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { useState, useEffect, useContext, useRef, useCallback, useMemo, forwardRef } from 'react';
4
4
  import { S as SvgClose } from './close-DZj38AEh.js';
5
- import { F as FilterGroupContext, g as getActiveFilters, h as hasFilterSelectionChanged, c as cloneFiltersWithItemRefs, u as updateSingleFilter, a as checkActiveFilters, b as getAdapter, s as styles, D as DateListDialog, r as resetFilters, p as preserveFilterState, d as FilterItemWrapper } from './filter-state-CE8t3-Q7.js';
6
- import { B as Button } from './Button-C_V2xQAs.js';
7
- import { F as Flex } from './Flex-_orhvoxS.js';
8
- import { B as ButtonToggle } from './ButtonToggle-jnDMPSyK.js';
9
- import { C as Chip } from './Chip-CyMNyEPR.js';
10
- import { D as Drawer } from './Drawer-Dk0MsaOU.js';
11
- import { u as useToolbarSize, a as updateToolbarItemsTabIndex, h as handleToolbarKeyDown, b as ToolbarContext } from './ToolbarButtonToggle-BCKgA8FE.js';
5
+ import { F as FilterGroupContext, g as getActiveFilters, h as hasFilterSelectionChanged, c as cloneFiltersWithItemRefs, u as updateSingleFilter, a as checkActiveFilters, b as getAdapter, s as styles, D as DateListDialog, r as resetFilters, p as preserveFilterState, d as FilterItemWrapper } from './filter-state-HDQUPdOL.js';
6
+ import { B as Button } from './Button-ChQARW0y.js';
7
+ import { F as Flex } from './Flex-Bb3iHExM.js';
8
+ import { B as ButtonToggle } from './ButtonToggle-BVv94C4U.js';
9
+ import { C as Chip } from './Chip-B6LaPxtL.js';
10
+ import { D as Drawer } from './Drawer-9_HfTi3J.js';
11
+ import { u as useToolbarSize, a as updateToolbarItemsTabIndex, h as handleToolbarKeyDown, b as ToolbarContext } from './ToolbarButtonToggle-6agLSzkp.js';
12
12
  import { c as cx } from './index-De1g9FRV.js';
13
- import { d as BreakpointSm, c as BreakpointMd, b as BreakpointLg, a as BreakpointXl, B as BreakpointXxl } from './primitive-DXlHdTFb.js';
14
- import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-CB_zHDbW.js';
13
+ import { d as BreakpointSm, c as BreakpointMd, b as BreakpointLg, a as BreakpointXl, B as BreakpointXxl } from './primitive-BXgYQTTw.js';
14
+ import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
15
15
  import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
16
16
 
17
17
  function containerBreakpoint(containerWidth, name, min, max) {
@@ -410,4 +410,4 @@ const FilterBar = forwardRef(
410
410
  FilterBar.displayName = "FilterBar";
411
411
 
412
412
  export { FilterBar as F };
413
- //# sourceMappingURL=FilterBar-B3c_VGDk.js.map
413
+ //# sourceMappingURL=FilterBar-D0iRUjOy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBar-B3c_VGDk.js","sources":["../src/internal/hooks/useContainerQuery/useContainerQuery.ts","../../hammer-icon/mdi/round/tune.svg","../src/beta/components/FilterBar/FilterDrawer.tsx","../src/beta/components/FilterBar/FilterBar.tsx"],"sourcesContent":["import { useEffect, useState, RefObject } from \"react\";\nimport { core } from \"@servicetitan/hammer-token\";\n\n/**\n * Return type for the useContainerQuery hook\n */\nexport type ContainerQueryReturnProps = {\n /**\n * The breakpoint name\n */\n name: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\";\n /**\n * Minimum width for this breakpoint\n */\n min: number | undefined;\n /**\n * Maximum width for this breakpoint\n */\n max: number | undefined;\n /**\n * Current container width\n */\n containerWidth: number;\n /**\n * Current container height\n */\n containerHeight: number;\n};\n\n/**\n * Determines if the current container width matches a specific breakpoint\n * @param containerWidth - The container width\n * @param name - The breakpoint name\n * @param min - Minimum width for this breakpoint\n * @param max - Maximum width for this breakpoint\n * @returns Breakpoint information if matched, undefined otherwise\n */\nfunction containerBreakpoint(\n containerWidth: number,\n name: ContainerQueryReturnProps[\"name\"],\n min?: number,\n max?: number,\n): ContainerQueryReturnProps | undefined {\n if (\n (min == null || containerWidth >= min) &&\n (max == null || containerWidth < max)\n ) {\n return {\n name,\n min,\n max,\n containerWidth,\n containerHeight: 0, // Will be updated with actual height\n } as const;\n }\n return undefined;\n}\n\n/**\n * Determines the current breakpoint based on container width and hammer-token breakpoint values.\n *\n * Features:\n * - Validates that all required hammer-token breakpoint values are available\n * - Uses cascade logic to determine the appropriate breakpoint\n * - Returns the first matching breakpoint in order of preference\n * - Handles edge cases where breakpoint values are missing\n * - Uses container dimensions for accurate measurements\n * - Supports all standard breakpoints (xs, sm, md, lg, xl, xxl)\n *\n * @param containerWidth - The width of the container element\n * @param containerHeight - The height of the container element\n * @returns Current breakpoint information or undefined if breakpoint values are unavailable\n */\nconst getContainerBreakpoint = (\n containerWidth: number,\n containerHeight: number,\n) => {\n if (!core.primitive?.BreakpointSm) return;\n if (!core.primitive?.BreakpointMd) return;\n if (!core.primitive?.BreakpointLg) return;\n if (!core.primitive?.BreakpointXl) return;\n if (!core.primitive?.BreakpointXxl) return;\n\n const sm = parseInt(core.primitive?.BreakpointSm.value);\n const md = parseInt(core.primitive?.BreakpointMd.value);\n const lg = parseInt(core.primitive?.BreakpointLg.value);\n const xl = parseInt(core.primitive?.BreakpointXl.value);\n const xxl = parseInt(core.primitive?.BreakpointXxl.value);\n\n const result =\n containerBreakpoint(containerWidth, \"xs\", undefined, sm) ??\n containerBreakpoint(containerWidth, \"sm\", sm, md) ??\n containerBreakpoint(containerWidth, \"md\", md, lg) ??\n containerBreakpoint(containerWidth, \"lg\", lg, xl) ??\n containerBreakpoint(containerWidth, \"xl\", xl, xxl) ??\n containerBreakpoint(containerWidth, \"xxl\", xxl, undefined);\n\n return result ? { ...result, containerHeight } : undefined;\n};\n\n/**\n * Custom hook for detecting current breakpoint based on container dimensions.\n *\n * Features:\n * - Detects current breakpoint based on container width instead of viewport width\n * - Supports all standard breakpoints (xs, sm, md, lg, xl, xxl)\n * - Provides container dimensions information\n * - Uses hammer-token breakpoint values for consistency\n * - Listens for container resize events using ResizeObserver\n * - Supports optional disable functionality\n * - Uses container element dimensions for accurate measurements\n *\n * @param containerRef - React ref to the container element to observe\n * @param props - Optional configuration object\n * @param props.disable - Whether to disable the hook\n * @returns Current breakpoint information or undefined if disabled\n */\nexport const useContainerQuery = (\n containerRef: RefObject<HTMLElement>,\n props?: { disable?: boolean },\n) => {\n const [size, setSize] = useState<ContainerQueryReturnProps | undefined>(\n undefined,\n );\n\n useEffect(() => {\n if (props?.disable || !containerRef.current) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n const breakpoint = getContainerBreakpoint(width, height);\n setSize(breakpoint);\n }\n });\n\n resizeObserver.observe(containerRef.current);\n\n // Set initial size\n const rect = containerRef.current.getBoundingClientRect();\n setSize(getContainerBreakpoint(rect.width, rect.height));\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [containerRef, props?.disable]);\n\n if (props?.disable) return undefined;\n return size;\n};\n","import * as React from \"react\";\nconst SvgTune = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3 18c0 .55.45 1 1 1h5v-2H4c-.55 0-1 .45-1 1zM3 6c0 .55.45 1 1 1h9V5H4c-.55 0-1 .45-1 1zm10 14v-1h7c.55 0 1-.45 1-1s-.45-1-1-1h-7v-1c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1zM7 10v1H4c-.55 0-1 .45-1 1s.45 1 1 1h3v1c0 .55.45 1 1 1s1-.45 1-1v-4c0-.55-.45-1-1-1s-1 .45-1 1zm14 2c0-.55-.45-1-1-1h-9v2h9c.55 0 1-.45 1-1zm-5-3c.55 0 1-.45 1-1V7h3c.55 0 1-.45 1-1s-.45-1-1-1h-3V4c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1z\" }));\nexport default SvgTune;\n","import {\n useContext,\n useEffect,\n useState,\n useMemo,\n useCallback,\n useRef,\n} from \"react\";\nimport IconTune from \"@servicetitan/hammer-icon/mdi/round/tune.svg\";\nimport IconClose from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport {\n DateListFilter,\n DateListLibraryOptionId,\n Filter,\n} from \"./internal/types\";\nimport { FilterGroupContext } from \"./internal/FilterGroupContext\";\nimport { Flex } from \"../../../components/Flex\";\nimport {\n checkActiveFilters,\n getActiveFilters,\n resetFilters,\n updateSingleFilter,\n cloneFiltersWithItemRefs,\n hasFilterSelectionChanged,\n} from \"./internal/utils/filter-state\";\nimport { getAdapter } from \"./internal/adapters\";\nimport { DateListDialog } from \"./FilterDateList\";\nimport ButtonToggle from \"../../../components/ButtonToggle\";\nimport Chip from \"../../../components/Chip\";\nimport Drawer from \"../../../components/Drawer\";\nimport Button from \"../../../components/Button\";\n\nimport { useToolbarSize } from \"../Toolbar/internal/ToolbarContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./FilterBar.module.scss\";\n\n/**\n * FilterDrawer component provides a drawer interface for filter selection.\n * Always operates in controlled mode with batch updates.\n * Built into FilterGroup for batch editing of drawer-only and below-breakpoint filters.\n *\n * Features:\n * - Shows all available filters in a side panel\n * - Maintains separate draft state for all filters\n * - Updates filters only when Apply is clicked\n * - Provides Clear All functionality\n * - Supports boolean, custom, single-select, multi-select, date, and date range filter types\n * - Integrates with FilterGroup context for state management\n * - Handles date and date range filters with appropriate input components\n */\nexport const FilterDrawer = () => {\n const [open, setOpen] = useState(false);\n\n // Get filter context from parent\n const {\n filters,\n updateFilter,\n onFilterChange,\n drawerOnlyFilters,\n showInlineFilters,\n } = useContext(FilterGroupContext);\n const toolbarSize = useToolbarSize();\n\n // Local draft state for filters within the drawer\n const [draftFilters, setDraftFilters] = useState<Filter[]>(filters);\n\n // Open dialog for a dateList library option (On…/Before…/After…/Custom Range…).\n const [dateListDialogState, setDateListDialogState] = useState<{\n filterId: string;\n libraryId: DateListLibraryOptionId;\n } | null>(null);\n\n // Filters not reachable from the toolbar: when inline filters are shown,\n // only drawer-only filters qualify; otherwise every filter qualifies.\n const filtersNotInToolbar = showInlineFilters ? drawerOnlyFilters : filters;\n\n const activeFiltersCount = getActiveFilters(filtersNotInToolbar).length;\n\n // Track previous state to detect when to sync draft\n const prevOpenRef = useRef(open);\n const prevFiltersRef = useRef<Filter[]>(filters);\n\n /**\n * Reset draft filters when drawer opens and sync when filter selections change while open\n * Ensures drawer always shows current filter state\n */\n useEffect(() => {\n const justOpened = open && !prevOpenRef.current;\n prevOpenRef.current = open;\n\n if (open) {\n // Sync draft state if:\n // 1. Drawer just opened, OR\n // 2. Any filter selection value changed while already open (race condition fix)\n // Don't sync when only items arrays change (preserves selections during search)\n const anySelectionChanged = prevFiltersRef.current.some(\n (prevFilter, index) => {\n const newFilter = filters[index];\n return newFilter && hasFilterSelectionChanged(prevFilter, newFilter);\n },\n );\n\n const shouldSync = justOpened || anySelectionChanged;\n\n if (shouldSync) {\n setDraftFilters(cloneFiltersWithItemRefs(filters));\n }\n\n prevFiltersRef.current = filters;\n }\n }, [open, filters]);\n\n /**\n * Handles changing a draft filter value\n * Updates only the draft state, not the actual filters\n *\n * @param filterId - ID of the filter to update\n * @param value - New value for the filter\n */\n const handleDraftChange = useCallback((filterId: string, value: unknown) => {\n setDraftFilters((draft) => updateSingleFilter(draft, filterId, value));\n }, []);\n\n /**\n * Clears all draft filters in the drawer\n * Does not affect the actual filters until Apply is clicked\n */\n const clearDraftFilters = () => {\n setDraftFilters(resetFilters(draftFilters));\n };\n\n const hasActiveDraftFilters = checkActiveFilters(draftFilters);\n\n const requestDateListDialog = useCallback(\n (filterId: string, libraryId: DateListLibraryOptionId) => {\n setDateListDialogState({ filterId, libraryId });\n },\n [],\n );\n\n const filterForm = useMemo(\n () =>\n draftFilters.map((draftFilter) => {\n const originalFilter = filters.find((f) => f.id === draftFilter.id);\n if (!originalFilter) return null;\n\n return getAdapter(draftFilter).renderDrawer({\n originalFilter,\n draftFilter,\n onDraftChange: handleDraftChange,\n requestDateListDialog,\n });\n }),\n [draftFilters, filters, handleDraftChange, requestDateListDialog],\n );\n\n const applyFiltering = () => {\n draftFilters.forEach((draftFilter) => {\n const value = getAdapter(draftFilter).getValue(draftFilter);\n updateFilter(draftFilter.id, value, false);\n });\n\n onFilterChange?.(draftFilters);\n setOpen(false);\n };\n\n const handleCancel = () => {\n setOpen(false);\n };\n\n const hasHiddenActiveFilters = activeFiltersCount > 0;\n\n const triggerClasses = cx(\n styles[\"filter-button-trigger\"],\n styles[\"filter-drawer-trigger\"],\n {\n [styles[\"filter-drawer-trigger--chipped\"]]: hasHiddenActiveFilters,\n },\n );\n\n const dateListDialogTarget = dateListDialogState\n ? draftFilters.find(\n (f): f is DateListFilter =>\n f.id === dateListDialogState.filterId && f.type === \"dateList\",\n )\n : undefined;\n const dateListDialogSelected = dateListDialogTarget?.selectedOption;\n const dateListDialogInitialValue =\n dateListDialogSelected &&\n dateListDialogSelected.id === dateListDialogState?.libraryId &&\n dateListDialogSelected.value !== null\n ? dateListDialogSelected.value\n : undefined;\n\n return (\n <>\n <ButtonToggle\n data-anv=\"filter-group-drawer-trigger\"\n icon={{ before: IconTune }}\n onClick={() => setOpen(true)}\n className={triggerClasses}\n checked={open}\n size={toolbarSize}\n >\n Filters\n {hasHiddenActiveFilters && (\n <Chip\n size=\"small\"\n color=\"#0265DC\"\n label={activeFiltersCount.toString()}\n />\n )}\n </ButtonToggle>\n\n <Drawer\n data-anv=\"filter-group-drawer\"\n data-testid=\"filter-group-drawer\"\n open={open}\n onClose={() => setOpen(false)}\n >\n <Drawer.Content>\n <Flex direction=\"column\" gap={6} grow={1}>\n {filterForm}\n </Flex>\n </Drawer.Content>\n\n <Drawer.Footer>\n <Flex\n justifyContent={\n hasActiveDraftFilters ? \"space-between\" : \"flex-end\"\n }\n grow={1}\n >\n {hasActiveDraftFilters && (\n <Button\n appearance=\"ghost\"\n icon={{ before: IconClose }}\n onClick={clearDraftFilters}\n >\n Clear All Filters\n </Button>\n )}\n\n <Flex gap=\"3\">\n <Button onClick={handleCancel}>Cancel</Button>\n <Button appearance=\"primary\" onClick={applyFiltering}>\n Apply\n </Button>\n </Flex>\n </Flex>\n </Drawer.Footer>\n </Drawer>\n <DateListDialog\n libraryId={dateListDialogState?.libraryId ?? null}\n parentFilterId={dateListDialogState?.filterId ?? \"\"}\n initialValue={dateListDialogInitialValue}\n mode={dateListDialogTarget?.mode}\n dialogCtaLabel=\"Save\"\n onCommit={(option) => {\n if (dateListDialogState) {\n handleDraftChange(dateListDialogState.filterId, option);\n }\n setDateListDialogState(null);\n }}\n onCancel={() => setDateListDialogState(null)}\n />\n </>\n );\n};\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n useCallback,\n} from \"react\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport CloseIcon from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport { Filter } from \"./internal/types\";\nimport { FilterItemWrapper } from \"./FilterItemWrapper\";\nimport Button from \"../../../components/Button\";\nimport { LayoutUtilProps } from \"../../../types\";\nimport { useContainerQuery, useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport {\n checkActiveFilters,\n resetFilters,\n updateSingleFilter,\n hasFilterSelectionChanged,\n preserveFilterState,\n} from \"./internal/utils/filter-state\";\nimport { getAdapter } from \"./internal/adapters\";\nimport { FilterGroupContext } from \"./internal/FilterGroupContext\";\nimport { FilterDrawer } from \"./FilterDrawer\";\nimport { ToolbarContext } from \"../Toolbar/internal/ToolbarContext\";\nimport { ToolbarSize } from \"../Toolbar/types\";\nimport {\n handleToolbarKeyDown,\n updateToolbarItemsTabIndex,\n} from \"../Toolbar/internal/utils/accessibility\";\nimport { Flex } from \"../../../components/Flex\";\n\nimport styles from \"./FilterBar.module.scss\";\n\n/**\n * Props for the FilterBar component\n *\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type FilterBarProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps & {\n /** Array of filter objects */\n filters: Filter[];\n /** Description of the content this filter bar is associated with, used for accessibility */\n associatedContent: string;\n /** Callback function when filters change */\n onFilterChange: (filters: Filter[]) => void;\n /** Whether the filters submission is controlled via an apply button */\n controlledFiltering?: boolean;\n /**\n * Size of filter controls\n * @default xsmall\n */\n size?: ToolbarSize;\n /**\n * When true, filters stay inline at every container width instead of\n * collapsing to drawer-only mode at narrow widths.\n * @default false\n */\n disableCollapse?: boolean;\n };\n\n/**\n * FilterBar component for displaying a standalone group of filters with toggles and a clear button.\n *\n * Features:\n * - Standalone component with `role=\"toolbar\"` and keyboard navigation\n * - Renders filter toggles and popovers for all filter types\n * - Supports controlled and uncontrolled filtering\n * - Integrates with FilterDrawer for batch filter editing of drawer-only filters\n * - Provides a clear all filters button\n * - Shares filter state via context for child components\n * - Supports boolean, custom, single-select, multi-select, date, and date range filter types\n * - Preserves filter state when filter configuration changes\n * - Responsive: collapses to drawer-only mode below 640px; opt out via `disableCollapse`\n * - Always wraps; never collapses items into an overflow menu\n * - Can be composed alongside Toolbar as a sibling using Flex layout\n *\n * @example\n * <FilterBar\n * associatedContent=\"invoices\"\n * filters={filters}\n * onFilterChange={handleFilter}\n * controlledFiltering={true}\n * />\n *\n * @example\n * // With Toolbar as sibling\n * <Flex alignItems=\"center\" justifyContent=\"space-between\">\n * <Toolbar associatedContent=\"invoice actions\">\n * <Toolbar.Button icon={SaveIcon} aria-label=\"Save\" />\n * </Toolbar>\n * <FilterBar\n * associatedContent=\"invoices\"\n * filters={filters}\n * onFilterChange={handleFilter}\n * />\n * </Flex>\n */\nexport const FilterBar = forwardRef<HTMLDivElement, FilterBarProps>(\n function FilterBarInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n filters: initialFilters,\n onFilterChange,\n controlledFiltering = false,\n associatedContent,\n size = \"xsmall\",\n disableCollapse = false,\n className,\n style,\n onKeyDown,\n ...rest\n } = componentProps;\n\n const [filters, setFilters] = useState<Filter[]>(initialFilters);\n const filterBarRef = useRef<HTMLDivElement>(null);\n const containerQuery = useContainerQuery(filterBarRef);\n\n const showInlineFilters =\n disableCollapse || !!(containerQuery && containerQuery.name !== \"xs\");\n\n // Update filters when props change\n useEffect(() => {\n setFilters((prevFilters) => {\n const existingFiltersMap = new Map(prevFilters.map((f) => [f.id, f]));\n\n return initialFilters.map((newFilter: Filter) => {\n const existingFilter = existingFiltersMap.get(newFilter.id);\n\n if (!existingFilter) {\n return newFilter;\n }\n\n if (!hasFilterSelectionChanged(existingFilter, newFilter)) {\n return preserveFilterState(newFilter, existingFilter);\n }\n\n return newFilter;\n });\n });\n }, [initialFilters]);\n\n /**\n * Updates filter state when a filter is changed\n *\n * @param filterId - ID of the filter to update\n * @param value - New value for the filter\n * @param submit - Whether to submit the filter change\n */\n const updateFilter = useCallback(\n (filterId: string, value: unknown, submit: boolean) => {\n setFilters((prevFilters) => {\n const updatedFilters = updateSingleFilter(\n prevFilters,\n filterId,\n value,\n );\n\n if (submit) {\n onFilterChange?.(updatedFilters);\n }\n\n return updatedFilters;\n });\n },\n [onFilterChange],\n );\n\n /**\n * Clears all active filters\n */\n const clearAllFilters = () => {\n const resetAllFilters = resetFilters(filters);\n setFilters(resetAllFilters);\n onFilterChange?.(resetAllFilters);\n\n requestAnimationFrame(() => {\n if (filterBarRef.current) {\n const firstFocusable = filterBarRef.current.querySelector(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ) as HTMLElement;\n\n if (firstFocusable) {\n firstFocusable.focus();\n }\n }\n });\n };\n\n const hasActiveFilters = checkActiveFilters(filters);\n\n const { inlineFilters, drawerOnlyFilters } = useMemo(() => {\n const inline: Filter[] = [];\n const drawer: Filter[] = [];\n for (const f of filters) {\n (f.drawerOnly ? drawer : inline).push(f);\n }\n return { inlineFilters: inline, drawerOnlyFilters: drawer };\n }, [filters]);\n\n // The drawer (and its trigger) only exists when at least one filter is\n // unreachable from the toolbar — either because the container is too\n // narrow to show inline filters or the filter is configured as drawer-only.\n const shouldShowDrawer = !showInlineFilters || drawerOnlyFilters.length > 0;\n\n const filterGroupControls = inlineFilters.map((filter) =>\n getAdapter(filter).renderBarControl({\n filter,\n updateFilter,\n controlledFiltering,\n }),\n );\n\n // Provide ToolbarContext so filter sub-components read size from FilterBar.\n // overflow is omitted — it's optional and defaults to wrap behavior.\n const toolbarContextValue = useMemo(\n () => ({\n overflowItems: [],\n addItem: () => {},\n removeItem: () => {},\n toolbarRef: filterBarRef,\n size,\n }),\n [size],\n );\n\n const filterGroupContextValue = useMemo(\n () => ({\n filterGroupRef: filterBarRef,\n filters,\n updateFilter,\n onFilterChange,\n controlledFiltering,\n associatedContent,\n showInlineFilters,\n drawerOnlyFilters,\n }),\n [\n filterBarRef,\n filters,\n updateFilter,\n onFilterChange,\n controlledFiltering,\n associatedContent,\n showInlineFilters,\n drawerOnlyFilters,\n ],\n );\n\n // Initialize tabindex values for keyboard navigation\n useEffect(() => {\n if (filterBarRef.current) {\n updateToolbarItemsTabIndex(filterBarRef.current);\n }\n }, [filters]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (filterBarRef.current) {\n handleToolbarKeyDown(event, filterBarRef.current);\n }\n onKeyDown?.(event);\n },\n [onKeyDown],\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <ToolbarContext.Provider value={toolbarContextValue}>\n <FilterGroupContext.Provider value={filterGroupContextValue}>\n <Flex\n ref={useMergeRefs([filterBarRef, ref])}\n role=\"toolbar\"\n aria-label={`Filters for ${associatedContent}. Use arrow keys to navigate through filter controls.`}\n aria-orientation=\"horizontal\"\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n alignItems=\"center\"\n gap={1}\n wrap=\"wrap\"\n className={className}\n style={styleCombined}\n data-anv=\"filter-bar\"\n {...rest}\n >\n <Flex\n alignItems=\"center\"\n gap={1}\n wrap=\"wrap\"\n grow={1}\n data-anv=\"toolbar-content\"\n >\n {showInlineFilters && filterGroupControls}\n {shouldShowDrawer && <FilterDrawer />}\n\n {showInlineFilters && hasActiveFilters && (\n <FilterItemWrapper>\n <Button\n appearance=\"ghost\"\n size={size}\n className={styles[\"filter-button-trigger\"]}\n icon={{\n before: CloseIcon,\n }}\n onClick={clearAllFilters}\n >\n Clear Filters\n </Button>\n </FilterItemWrapper>\n )}\n </Flex>\n </Flex>\n </FilterGroupContext.Provider>\n </ToolbarContext.Provider>\n );\n },\n);\n\nFilterBar.displayName = \"FilterBar\";\n"],"names":["core.primitive?.BreakpointSm","core.primitive?.BreakpointMd","core.primitive?.BreakpointLg","core.primitive?.BreakpointXl","core.primitive?.BreakpointXxl","IconTune","IconClose","CloseIcon"],"mappings":"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"}
1
+ {"version":3,"file":"FilterBar-D0iRUjOy.js","sources":["../src/internal/hooks/useContainerQuery/useContainerQuery.ts","../../hammer-icon/mdi/round/tune.svg","../src/beta/components/FilterBar/FilterDrawer.tsx","../src/beta/components/FilterBar/FilterBar.tsx"],"sourcesContent":["import { useEffect, useState, RefObject } from \"react\";\nimport { core } from \"@servicetitan/hammer-token\";\n\n/**\n * Return type for the useContainerQuery hook\n */\nexport type ContainerQueryReturnProps = {\n /**\n * The breakpoint name\n */\n name: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\";\n /**\n * Minimum width for this breakpoint\n */\n min: number | undefined;\n /**\n * Maximum width for this breakpoint\n */\n max: number | undefined;\n /**\n * Current container width\n */\n containerWidth: number;\n /**\n * Current container height\n */\n containerHeight: number;\n};\n\n/**\n * Determines if the current container width matches a specific breakpoint\n * @param containerWidth - The container width\n * @param name - The breakpoint name\n * @param min - Minimum width for this breakpoint\n * @param max - Maximum width for this breakpoint\n * @returns Breakpoint information if matched, undefined otherwise\n */\nfunction containerBreakpoint(\n containerWidth: number,\n name: ContainerQueryReturnProps[\"name\"],\n min?: number,\n max?: number,\n): ContainerQueryReturnProps | undefined {\n if (\n (min == null || containerWidth >= min) &&\n (max == null || containerWidth < max)\n ) {\n return {\n name,\n min,\n max,\n containerWidth,\n containerHeight: 0, // Will be updated with actual height\n } as const;\n }\n return undefined;\n}\n\n/**\n * Determines the current breakpoint based on container width and hammer-token breakpoint values.\n *\n * Features:\n * - Validates that all required hammer-token breakpoint values are available\n * - Uses cascade logic to determine the appropriate breakpoint\n * - Returns the first matching breakpoint in order of preference\n * - Handles edge cases where breakpoint values are missing\n * - Uses container dimensions for accurate measurements\n * - Supports all standard breakpoints (xs, sm, md, lg, xl, xxl)\n *\n * @param containerWidth - The width of the container element\n * @param containerHeight - The height of the container element\n * @returns Current breakpoint information or undefined if breakpoint values are unavailable\n */\nconst getContainerBreakpoint = (\n containerWidth: number,\n containerHeight: number,\n) => {\n if (!core.primitive?.BreakpointSm) return;\n if (!core.primitive?.BreakpointMd) return;\n if (!core.primitive?.BreakpointLg) return;\n if (!core.primitive?.BreakpointXl) return;\n if (!core.primitive?.BreakpointXxl) return;\n\n const sm = parseInt(core.primitive?.BreakpointSm.value);\n const md = parseInt(core.primitive?.BreakpointMd.value);\n const lg = parseInt(core.primitive?.BreakpointLg.value);\n const xl = parseInt(core.primitive?.BreakpointXl.value);\n const xxl = parseInt(core.primitive?.BreakpointXxl.value);\n\n const result =\n containerBreakpoint(containerWidth, \"xs\", undefined, sm) ??\n containerBreakpoint(containerWidth, \"sm\", sm, md) ??\n containerBreakpoint(containerWidth, \"md\", md, lg) ??\n containerBreakpoint(containerWidth, \"lg\", lg, xl) ??\n containerBreakpoint(containerWidth, \"xl\", xl, xxl) ??\n containerBreakpoint(containerWidth, \"xxl\", xxl, undefined);\n\n return result ? { ...result, containerHeight } : undefined;\n};\n\n/**\n * Custom hook for detecting current breakpoint based on container dimensions.\n *\n * Features:\n * - Detects current breakpoint based on container width instead of viewport width\n * - Supports all standard breakpoints (xs, sm, md, lg, xl, xxl)\n * - Provides container dimensions information\n * - Uses hammer-token breakpoint values for consistency\n * - Listens for container resize events using ResizeObserver\n * - Supports optional disable functionality\n * - Uses container element dimensions for accurate measurements\n *\n * @param containerRef - React ref to the container element to observe\n * @param props - Optional configuration object\n * @param props.disable - Whether to disable the hook\n * @returns Current breakpoint information or undefined if disabled\n */\nexport const useContainerQuery = (\n containerRef: RefObject<HTMLElement>,\n props?: { disable?: boolean },\n) => {\n const [size, setSize] = useState<ContainerQueryReturnProps | undefined>(\n undefined,\n );\n\n useEffect(() => {\n if (props?.disable || !containerRef.current) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n const breakpoint = getContainerBreakpoint(width, height);\n setSize(breakpoint);\n }\n });\n\n resizeObserver.observe(containerRef.current);\n\n // Set initial size\n const rect = containerRef.current.getBoundingClientRect();\n setSize(getContainerBreakpoint(rect.width, rect.height));\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [containerRef, props?.disable]);\n\n if (props?.disable) return undefined;\n return size;\n};\n","import * as React from \"react\";\nconst SvgTune = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3 18c0 .55.45 1 1 1h5v-2H4c-.55 0-1 .45-1 1zM3 6c0 .55.45 1 1 1h9V5H4c-.55 0-1 .45-1 1zm10 14v-1h7c.55 0 1-.45 1-1s-.45-1-1-1h-7v-1c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1zM7 10v1H4c-.55 0-1 .45-1 1s.45 1 1 1h3v1c0 .55.45 1 1 1s1-.45 1-1v-4c0-.55-.45-1-1-1s-1 .45-1 1zm14 2c0-.55-.45-1-1-1h-9v2h9c.55 0 1-.45 1-1zm-5-3c.55 0 1-.45 1-1V7h3c.55 0 1-.45 1-1s-.45-1-1-1h-3V4c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1z\" }));\nexport default SvgTune;\n","import {\n useContext,\n useEffect,\n useState,\n useMemo,\n useCallback,\n useRef,\n} from \"react\";\nimport IconTune from \"@servicetitan/hammer-icon/mdi/round/tune.svg\";\nimport IconClose from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport {\n DateListFilter,\n DateListLibraryOptionId,\n Filter,\n} from \"./internal/types\";\nimport { FilterGroupContext } from \"./internal/FilterGroupContext\";\nimport { Flex } from \"../../../components/Flex\";\nimport {\n checkActiveFilters,\n getActiveFilters,\n resetFilters,\n updateSingleFilter,\n cloneFiltersWithItemRefs,\n hasFilterSelectionChanged,\n} from \"./internal/utils/filter-state\";\nimport { getAdapter } from \"./internal/adapters\";\nimport { DateListDialog } from \"./FilterDateList\";\nimport ButtonToggle from \"../../../components/ButtonToggle\";\nimport Chip from \"../../../components/Chip\";\nimport Drawer from \"../../../components/Drawer\";\nimport Button from \"../../../components/Button\";\n\nimport { useToolbarSize } from \"../Toolbar/internal/ToolbarContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./FilterBar.module.scss\";\n\n/**\n * FilterDrawer component provides a drawer interface for filter selection.\n * Always operates in controlled mode with batch updates.\n * Built into FilterGroup for batch editing of drawer-only and below-breakpoint filters.\n *\n * Features:\n * - Shows all available filters in a side panel\n * - Maintains separate draft state for all filters\n * - Updates filters only when Apply is clicked\n * - Provides Clear All functionality\n * - Supports boolean, custom, single-select, multi-select, date, and date range filter types\n * - Integrates with FilterGroup context for state management\n * - Handles date and date range filters with appropriate input components\n */\nexport const FilterDrawer = () => {\n const [open, setOpen] = useState(false);\n\n // Get filter context from parent\n const {\n filters,\n updateFilter,\n onFilterChange,\n drawerOnlyFilters,\n showInlineFilters,\n } = useContext(FilterGroupContext);\n const toolbarSize = useToolbarSize();\n\n // Local draft state for filters within the drawer\n const [draftFilters, setDraftFilters] = useState<Filter[]>(filters);\n\n // Open dialog for a dateList library option (On…/Before…/After…/Custom Range…).\n const [dateListDialogState, setDateListDialogState] = useState<{\n filterId: string;\n libraryId: DateListLibraryOptionId;\n } | null>(null);\n\n // Filters not reachable from the toolbar: when inline filters are shown,\n // only drawer-only filters qualify; otherwise every filter qualifies.\n const filtersNotInToolbar = showInlineFilters ? drawerOnlyFilters : filters;\n\n const activeFiltersCount = getActiveFilters(filtersNotInToolbar).length;\n\n // Track previous state to detect when to sync draft\n const prevOpenRef = useRef(open);\n const prevFiltersRef = useRef<Filter[]>(filters);\n\n /**\n * Reset draft filters when drawer opens and sync when filter selections change while open\n * Ensures drawer always shows current filter state\n */\n useEffect(() => {\n const justOpened = open && !prevOpenRef.current;\n prevOpenRef.current = open;\n\n if (open) {\n // Sync draft state if:\n // 1. Drawer just opened, OR\n // 2. Any filter selection value changed while already open (race condition fix)\n // Don't sync when only items arrays change (preserves selections during search)\n const anySelectionChanged = prevFiltersRef.current.some(\n (prevFilter, index) => {\n const newFilter = filters[index];\n return newFilter && hasFilterSelectionChanged(prevFilter, newFilter);\n },\n );\n\n const shouldSync = justOpened || anySelectionChanged;\n\n if (shouldSync) {\n setDraftFilters(cloneFiltersWithItemRefs(filters));\n }\n\n prevFiltersRef.current = filters;\n }\n }, [open, filters]);\n\n /**\n * Handles changing a draft filter value\n * Updates only the draft state, not the actual filters\n *\n * @param filterId - ID of the filter to update\n * @param value - New value for the filter\n */\n const handleDraftChange = useCallback((filterId: string, value: unknown) => {\n setDraftFilters((draft) => updateSingleFilter(draft, filterId, value));\n }, []);\n\n /**\n * Clears all draft filters in the drawer\n * Does not affect the actual filters until Apply is clicked\n */\n const clearDraftFilters = () => {\n setDraftFilters(resetFilters(draftFilters));\n };\n\n const hasActiveDraftFilters = checkActiveFilters(draftFilters);\n\n const requestDateListDialog = useCallback(\n (filterId: string, libraryId: DateListLibraryOptionId) => {\n setDateListDialogState({ filterId, libraryId });\n },\n [],\n );\n\n const filterForm = useMemo(\n () =>\n draftFilters.map((draftFilter) => {\n const originalFilter = filters.find((f) => f.id === draftFilter.id);\n if (!originalFilter) return null;\n\n return getAdapter(draftFilter).renderDrawer({\n originalFilter,\n draftFilter,\n onDraftChange: handleDraftChange,\n requestDateListDialog,\n });\n }),\n [draftFilters, filters, handleDraftChange, requestDateListDialog],\n );\n\n const applyFiltering = () => {\n draftFilters.forEach((draftFilter) => {\n const value = getAdapter(draftFilter).getValue(draftFilter);\n updateFilter(draftFilter.id, value, false);\n });\n\n onFilterChange?.(draftFilters);\n setOpen(false);\n };\n\n const handleCancel = () => {\n setOpen(false);\n };\n\n const hasHiddenActiveFilters = activeFiltersCount > 0;\n\n const triggerClasses = cx(\n styles[\"filter-button-trigger\"],\n styles[\"filter-drawer-trigger\"],\n {\n [styles[\"filter-drawer-trigger--chipped\"]]: hasHiddenActiveFilters,\n },\n );\n\n const dateListDialogTarget = dateListDialogState\n ? draftFilters.find(\n (f): f is DateListFilter =>\n f.id === dateListDialogState.filterId && f.type === \"dateList\",\n )\n : undefined;\n const dateListDialogSelected = dateListDialogTarget?.selectedOption;\n const dateListDialogInitialValue =\n dateListDialogSelected &&\n dateListDialogSelected.id === dateListDialogState?.libraryId &&\n dateListDialogSelected.value !== null\n ? dateListDialogSelected.value\n : undefined;\n\n return (\n <>\n <ButtonToggle\n data-anv=\"filter-group-drawer-trigger\"\n icon={{ before: IconTune }}\n onClick={() => setOpen(true)}\n className={triggerClasses}\n checked={open}\n size={toolbarSize}\n >\n Filters\n {hasHiddenActiveFilters && (\n <Chip\n size=\"small\"\n color=\"#0265DC\"\n label={activeFiltersCount.toString()}\n />\n )}\n </ButtonToggle>\n\n <Drawer\n data-anv=\"filter-group-drawer\"\n data-testid=\"filter-group-drawer\"\n open={open}\n onClose={() => setOpen(false)}\n >\n <Drawer.Content>\n <Flex direction=\"column\" gap={6} grow={1}>\n {filterForm}\n </Flex>\n </Drawer.Content>\n\n <Drawer.Footer>\n <Flex\n justifyContent={\n hasActiveDraftFilters ? \"space-between\" : \"flex-end\"\n }\n grow={1}\n >\n {hasActiveDraftFilters && (\n <Button\n appearance=\"ghost\"\n icon={{ before: IconClose }}\n onClick={clearDraftFilters}\n >\n Clear All Filters\n </Button>\n )}\n\n <Flex gap=\"3\">\n <Button onClick={handleCancel}>Cancel</Button>\n <Button appearance=\"primary\" onClick={applyFiltering}>\n Apply\n </Button>\n </Flex>\n </Flex>\n </Drawer.Footer>\n </Drawer>\n <DateListDialog\n libraryId={dateListDialogState?.libraryId ?? null}\n parentFilterId={dateListDialogState?.filterId ?? \"\"}\n initialValue={dateListDialogInitialValue}\n mode={dateListDialogTarget?.mode}\n dialogCtaLabel=\"Save\"\n onCommit={(option) => {\n if (dateListDialogState) {\n handleDraftChange(dateListDialogState.filterId, option);\n }\n setDateListDialogState(null);\n }}\n onCancel={() => setDateListDialogState(null)}\n />\n </>\n );\n};\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n useCallback,\n} from \"react\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport CloseIcon from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport { Filter } from \"./internal/types\";\nimport { FilterItemWrapper } from \"./FilterItemWrapper\";\nimport Button from \"../../../components/Button\";\nimport { LayoutUtilProps } from \"../../../types\";\nimport { useContainerQuery, useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport {\n checkActiveFilters,\n resetFilters,\n updateSingleFilter,\n hasFilterSelectionChanged,\n preserveFilterState,\n} from \"./internal/utils/filter-state\";\nimport { getAdapter } from \"./internal/adapters\";\nimport { FilterGroupContext } from \"./internal/FilterGroupContext\";\nimport { FilterDrawer } from \"./FilterDrawer\";\nimport { ToolbarContext } from \"../Toolbar/internal/ToolbarContext\";\nimport { ToolbarSize } from \"../Toolbar/types\";\nimport {\n handleToolbarKeyDown,\n updateToolbarItemsTabIndex,\n} from \"../Toolbar/internal/utils/accessibility\";\nimport { Flex } from \"../../../components/Flex\";\n\nimport styles from \"./FilterBar.module.scss\";\n\n/**\n * Props for the FilterBar component\n *\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type FilterBarProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps & {\n /** Array of filter objects */\n filters: Filter[];\n /** Description of the content this filter bar is associated with, used for accessibility */\n associatedContent: string;\n /** Callback function when filters change */\n onFilterChange: (filters: Filter[]) => void;\n /** Whether the filters submission is controlled via an apply button */\n controlledFiltering?: boolean;\n /**\n * Size of filter controls\n * @default xsmall\n */\n size?: ToolbarSize;\n /**\n * When true, filters stay inline at every container width instead of\n * collapsing to drawer-only mode at narrow widths.\n * @default false\n */\n disableCollapse?: boolean;\n };\n\n/**\n * FilterBar component for displaying a standalone group of filters with toggles and a clear button.\n *\n * Features:\n * - Standalone component with `role=\"toolbar\"` and keyboard navigation\n * - Renders filter toggles and popovers for all filter types\n * - Supports controlled and uncontrolled filtering\n * - Integrates with FilterDrawer for batch filter editing of drawer-only filters\n * - Provides a clear all filters button\n * - Shares filter state via context for child components\n * - Supports boolean, custom, single-select, multi-select, date, and date range filter types\n * - Preserves filter state when filter configuration changes\n * - Responsive: collapses to drawer-only mode below 640px; opt out via `disableCollapse`\n * - Always wraps; never collapses items into an overflow menu\n * - Can be composed alongside Toolbar as a sibling using Flex layout\n *\n * @example\n * <FilterBar\n * associatedContent=\"invoices\"\n * filters={filters}\n * onFilterChange={handleFilter}\n * controlledFiltering={true}\n * />\n *\n * @example\n * // With Toolbar as sibling\n * <Flex alignItems=\"center\" justifyContent=\"space-between\">\n * <Toolbar associatedContent=\"invoice actions\">\n * <Toolbar.Button icon={SaveIcon} aria-label=\"Save\" />\n * </Toolbar>\n * <FilterBar\n * associatedContent=\"invoices\"\n * filters={filters}\n * onFilterChange={handleFilter}\n * />\n * </Flex>\n */\nexport const FilterBar = forwardRef<HTMLDivElement, FilterBarProps>(\n function FilterBarInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n filters: initialFilters,\n onFilterChange,\n controlledFiltering = false,\n associatedContent,\n size = \"xsmall\",\n disableCollapse = false,\n className,\n style,\n onKeyDown,\n ...rest\n } = componentProps;\n\n const [filters, setFilters] = useState<Filter[]>(initialFilters);\n const filterBarRef = useRef<HTMLDivElement>(null);\n const containerQuery = useContainerQuery(filterBarRef);\n\n const showInlineFilters =\n disableCollapse || !!(containerQuery && containerQuery.name !== \"xs\");\n\n // Update filters when props change\n useEffect(() => {\n setFilters((prevFilters) => {\n const existingFiltersMap = new Map(prevFilters.map((f) => [f.id, f]));\n\n return initialFilters.map((newFilter: Filter) => {\n const existingFilter = existingFiltersMap.get(newFilter.id);\n\n if (!existingFilter) {\n return newFilter;\n }\n\n if (!hasFilterSelectionChanged(existingFilter, newFilter)) {\n return preserveFilterState(newFilter, existingFilter);\n }\n\n return newFilter;\n });\n });\n }, [initialFilters]);\n\n /**\n * Updates filter state when a filter is changed\n *\n * @param filterId - ID of the filter to update\n * @param value - New value for the filter\n * @param submit - Whether to submit the filter change\n */\n const updateFilter = useCallback(\n (filterId: string, value: unknown, submit: boolean) => {\n setFilters((prevFilters) => {\n const updatedFilters = updateSingleFilter(\n prevFilters,\n filterId,\n value,\n );\n\n if (submit) {\n onFilterChange?.(updatedFilters);\n }\n\n return updatedFilters;\n });\n },\n [onFilterChange],\n );\n\n /**\n * Clears all active filters\n */\n const clearAllFilters = () => {\n const resetAllFilters = resetFilters(filters);\n setFilters(resetAllFilters);\n onFilterChange?.(resetAllFilters);\n\n requestAnimationFrame(() => {\n if (filterBarRef.current) {\n const firstFocusable = filterBarRef.current.querySelector(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ) as HTMLElement;\n\n if (firstFocusable) {\n firstFocusable.focus();\n }\n }\n });\n };\n\n const hasActiveFilters = checkActiveFilters(filters);\n\n const { inlineFilters, drawerOnlyFilters } = useMemo(() => {\n const inline: Filter[] = [];\n const drawer: Filter[] = [];\n for (const f of filters) {\n (f.drawerOnly ? drawer : inline).push(f);\n }\n return { inlineFilters: inline, drawerOnlyFilters: drawer };\n }, [filters]);\n\n // The drawer (and its trigger) only exists when at least one filter is\n // unreachable from the toolbar — either because the container is too\n // narrow to show inline filters or the filter is configured as drawer-only.\n const shouldShowDrawer = !showInlineFilters || drawerOnlyFilters.length > 0;\n\n const filterGroupControls = inlineFilters.map((filter) =>\n getAdapter(filter).renderBarControl({\n filter,\n updateFilter,\n controlledFiltering,\n }),\n );\n\n // Provide ToolbarContext so filter sub-components read size from FilterBar.\n // overflow is omitted — it's optional and defaults to wrap behavior.\n const toolbarContextValue = useMemo(\n () => ({\n overflowItems: [],\n addItem: () => {},\n removeItem: () => {},\n toolbarRef: filterBarRef,\n size,\n }),\n [size],\n );\n\n const filterGroupContextValue = useMemo(\n () => ({\n filterGroupRef: filterBarRef,\n filters,\n updateFilter,\n onFilterChange,\n controlledFiltering,\n associatedContent,\n showInlineFilters,\n drawerOnlyFilters,\n }),\n [\n filterBarRef,\n filters,\n updateFilter,\n onFilterChange,\n controlledFiltering,\n associatedContent,\n showInlineFilters,\n drawerOnlyFilters,\n ],\n );\n\n // Initialize tabindex values for keyboard navigation\n useEffect(() => {\n if (filterBarRef.current) {\n updateToolbarItemsTabIndex(filterBarRef.current);\n }\n }, [filters]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (filterBarRef.current) {\n handleToolbarKeyDown(event, filterBarRef.current);\n }\n onKeyDown?.(event);\n },\n [onKeyDown],\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <ToolbarContext.Provider value={toolbarContextValue}>\n <FilterGroupContext.Provider value={filterGroupContextValue}>\n <Flex\n ref={useMergeRefs([filterBarRef, ref])}\n role=\"toolbar\"\n aria-label={`Filters for ${associatedContent}. Use arrow keys to navigate through filter controls.`}\n aria-orientation=\"horizontal\"\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n alignItems=\"center\"\n gap={1}\n wrap=\"wrap\"\n className={className}\n style={styleCombined}\n data-anv=\"filter-bar\"\n {...rest}\n >\n <Flex\n alignItems=\"center\"\n gap={1}\n wrap=\"wrap\"\n grow={1}\n data-anv=\"toolbar-content\"\n >\n {showInlineFilters && filterGroupControls}\n {shouldShowDrawer && <FilterDrawer />}\n\n {showInlineFilters && hasActiveFilters && (\n <FilterItemWrapper>\n <Button\n appearance=\"ghost\"\n size={size}\n className={styles[\"filter-button-trigger\"]}\n icon={{\n before: CloseIcon,\n }}\n onClick={clearAllFilters}\n >\n Clear Filters\n </Button>\n </FilterItemWrapper>\n )}\n </Flex>\n </Flex>\n </FilterGroupContext.Provider>\n </ToolbarContext.Provider>\n );\n },\n);\n\nFilterBar.displayName = \"FilterBar\";\n"],"names":["core.primitive?.BreakpointSm","core.primitive?.BreakpointMd","core.primitive?.BreakpointLg","core.primitive?.BreakpointXl","core.primitive?.BreakpointXxl","IconTune","IconClose","CloseIcon"],"mappings":";;;;;;;;;;;;;;;;AAqCA,SAAS,mBAAA,CACP,cAAA,EACA,IAAA,EACA,GAAA,EACA,GAAA,EACuC;AACvC,EAAA,IAAA,CACG,OAAO,IAAA,IAAQ,cAAA,IAAkB,SACjC,GAAA,IAAO,IAAA,IAAQ,iBAAiB,GAAA,CAAA,EACjC;AACA,IAAA,OAAO;AAAA,MACL,IAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA,EAAiB;AAAA;AAAA,KACnB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAiBA,MAAM,sBAAA,GAAyB,CAC7B,cAAA,EACA,eAAA,KACG;AACH,EAAA,IAAI,CAACA,YAAgB,EAAc;AACnC,EAAA,IAAI,CAACC,YAAgB,EAAc;AACnC,EAAA,IAAI,CAACC,YAAgB,EAAc;AACnC,EAAA,IAAI,CAACC,YAAgB,EAAc;AACnC,EAAA,IAAI,CAACC,aAAgB,EAAe;AAEpC,EAAA,MAAM,EAAA,GAAK,QAAA,CAASJ,aAA6B,KAAK,CAAA;AACtD,EAAA,MAAM,EAAA,GAAK,QAAA,CAASC,aAA6B,KAAK,CAAA;AACtD,EAAA,MAAM,EAAA,GAAK,QAAA,CAASC,aAA6B,KAAK,CAAA;AACtD,EAAA,MAAM,EAAA,GAAK,QAAA,CAASC,aAA6B,KAAK,CAAA;AACtD,EAAA,MAAM,GAAA,GAAM,QAAA,CAASC,cAA8B,KAAK,CAAA;AAExD,EAAA,MAAM,MAAA,GACJ,mBAAA,CAAoB,cAAA,EAAgB,IAAA,EAAM,QAAW,EAAE,CAAA,IACvD,mBAAA,CAAoB,cAAA,EAAgB,MAAM,EAAA,EAAI,EAAE,CAAA,IAChD,mBAAA,CAAoB,gBAAgB,IAAA,EAAM,EAAA,EAAI,EAAE,CAAA,IAChD,oBAAoB,cAAA,EAAgB,IAAA,EAAM,EAAA,EAAI,EAAE,KAChD,mBAAA,CAAoB,cAAA,EAAgB,IAAA,EAAM,EAAA,EAAI,GAAG,CAAA,IACjD,mBAAA,CAAoB,cAAA,EAAgB,KAAA,EAAO,KAAK,MAAS,CAAA;AAE3D,EAAA,OAAO,MAAA,GAAS,EAAE,GAAG,MAAA,EAAQ,iBAAgB,GAAI,MAAA;AACnD,CAAA;AAmBO,MAAM,iBAAA,GAAoB,CAC/B,YAAA,EACA,KAAA,KACG;AACH,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA;AAAA,IACtB;AAAA,GACF;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAsB,CAAC,YAAA,CAAa,OAAA,EAAS;AAE7C,IAAA,MAAM,cAAA,GAAiB,IAAI,cAAA,CAAe,CAAC,OAAA,KAAY;AACrD,MAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,QAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAO,GAAI,KAAA,CAAM,WAAA;AAChC,QAAA,MAAM,UAAA,GAAa,sBAAA,CAAuB,KAAA,EAAO,MAAM,CAAA;AACvD,QAAA,OAAA,CAAQ,UAAU,CAAA;AAAA,MACpB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,cAAA,CAAe,OAAA,CAAQ,aAAa,OAAO,CAAA;AAG3C,IAAA,MAAM,IAAA,GAAO,YAAA,CAAa,OAAA,CAAQ,qBAAA,EAAsB;AACxD,IAAA,OAAA,CAAQ,sBAAA,CAAuB,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,MAAM,CAAC,CAAA;AAEvD,IAAA,OAAO,MAAM;AACX,MAAA,cAAA,CAAe,UAAA,EAAW;AAAA,IAC5B,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,EAAc,KAAA,EAAO,OAAO,CAAC,CAAA;AAGjC,EAAA,OAAO,IAAA;AACT,CAAA;;ACpJA,MAAM,OAAO,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,gbAAgb,EAAE,CAAC,CAAC;;ACkD1oB,MAAM,eAAe,MAAM;AAChC,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,KAAK,CAAA;AAGtC,EAAA,MAAM;AAAA,IACJ,OAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACF,GAAI,WAAW,kBAAkB,CAAA;AACjC,EAAA,MAAM,cAAc,cAAA,EAAe;AAGnC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAmB,OAAO,CAAA;AAGlE,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAI,SAG5C,IAAI,CAAA;AAId,EAAA,MAAM,mBAAA,GAAsB,oBAAoB,iBAAA,GAAoB,OAAA;AAEpE,EAAA,MAAM,kBAAA,GAAqB,gBAAA,CAAiB,mBAAmB,CAAA,CAAE,MAAA;AAGjE,EAAA,MAAM,WAAA,GAAc,OAAO,IAAI,CAAA;AAC/B,EAAA,MAAM,cAAA,GAAiB,OAAiB,OAAO,CAAA;AAM/C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAA,GAAa,IAAA,IAAQ,CAAC,WAAA,CAAY,OAAA;AACxC,IAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAEtB,IAAA,IAAI,IAAA,EAAM;AAKR,MAAA,MAAM,mBAAA,GAAsB,eAAe,OAAA,CAAQ,IAAA;AAAA,QACjD,CAAC,YAAY,KAAA,KAAU;AACrB,UAAA,MAAM,SAAA,GAAY,QAAQ,KAAK,CAAA;AAC/B,UAAA,OAAO,SAAA,IAAa,yBAAA,CAA0B,UAAA,EAAY,SAAS,CAAA;AAAA,QACrE;AAAA,OACF;AAEA,MAAA,MAAM,aAAa,UAAA,IAAc,mBAAA;AAEjC,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,eAAA,CAAgB,wBAAA,CAAyB,OAAO,CAAC,CAAA;AAAA,MACnD;AAEA,MAAA,cAAA,CAAe,OAAA,GAAU,OAAA;AAAA,IAC3B;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,OAAO,CAAC,CAAA;AASlB,EAAA,MAAM,iBAAA,GAAoB,WAAA,CAAY,CAAC,QAAA,EAAkB,KAAA,KAAmB;AAC1E,IAAA,eAAA,CAAgB,CAAC,KAAA,KAAU,kBAAA,CAAmB,KAAA,EAAO,QAAA,EAAU,KAAK,CAAC,CAAA;AAAA,EACvE,CAAA,EAAG,EAAE,CAAA;AAML,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,eAAA,CAAgB,YAAA,CAAa,YAAY,CAAC,CAAA;AAAA,EAC5C,CAAA;AAEA,EAAA,MAAM,qBAAA,GAAwB,mBAAmB,YAAY,CAAA;AAE7D,EAAA,MAAM,qBAAA,GAAwB,WAAA;AAAA,IAC5B,CAAC,UAAkB,SAAA,KAAuC;AACxD,MAAA,sBAAA,CAAuB,EAAE,QAAA,EAAU,SAAA,EAAW,CAAA;AAAA,IAChD,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,UAAA,GAAa,OAAA;AAAA,IACjB,MACE,YAAA,CAAa,GAAA,CAAI,CAAC,WAAA,KAAgB;AAChC,MAAA,MAAM,cAAA,GAAiB,QAAQ,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,EAAA,KAAO,YAAY,EAAE,CAAA;AAClE,MAAA,IAAI,CAAC,gBAAgB,OAAO,IAAA;AAE5B,MAAA,OAAO,UAAA,CAAW,WAAW,CAAA,CAAE,YAAA,CAAa;AAAA,QAC1C,cAAA;AAAA,QACA,WAAA;AAAA,QACA,aAAA,EAAe,iBAAA;AAAA,QACf;AAAA,OACD,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,IACH,CAAC,YAAA,EAAc,OAAA,EAAS,iBAAA,EAAmB,qBAAqB;AAAA,GAClE;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,WAAA,KAAgB;AACpC,MAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,WAAW,CAAA,CAAE,SAAS,WAAW,CAAA;AAC1D,MAAA,YAAA,CAAa,WAAA,CAAY,EAAA,EAAI,KAAA,EAAO,KAAK,CAAA;AAAA,IAC3C,CAAC,CAAA;AAED,IAAA,cAAA,GAAiB,YAAY,CAAA;AAC7B,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,yBAAyB,kBAAA,GAAqB,CAAA;AAEpD,EAAA,MAAM,cAAA,GAAiB,EAAA;AAAA,IACrB,OAAO,uBAAuB,CAAA;AAAA,IAC9B,OAAO,uBAAuB,CAAA;AAAA,IAC9B;AAAA,MACE,CAAC,MAAA,CAAO,gCAAgC,CAAC,GAAG;AAAA;AAC9C,GACF;AAEA,EAAA,MAAM,oBAAA,GAAuB,sBACzB,YAAA,CAAa,IAAA;AAAA,IACX,CAAC,CAAA,KACC,CAAA,CAAE,OAAO,mBAAA,CAAoB,QAAA,IAAY,EAAE,IAAA,KAAS;AAAA,GACxD,GACA,MAAA;AACJ,EAAA,MAAM,yBAAyB,oBAAA,EAAsB,cAAA;AACrD,EAAA,MAAM,0BAAA,GACJ,sBAAA,IACA,sBAAA,CAAuB,EAAA,KAAO,mBAAA,EAAqB,aACnD,sBAAA,CAAuB,KAAA,KAAU,IAAA,GAC7B,sBAAA,CAAuB,KAAA,GACvB,MAAA;AAEN,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAS,6BAAA;AAAA,QACT,IAAA,EAAM,EAAE,MAAA,EAAQC,OAAA,EAAS;AAAA,QACzB,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,QAC3B,SAAA,EAAW,cAAA;AAAA,QACX,OAAA,EAAS,IAAA;AAAA,QACT,IAAA,EAAM,WAAA;AAAA,QACP,QAAA,EAAA;AAAA,UAAA,SAAA;AAAA,UAEE,sBAAA,oBACC,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,OAAA;AAAA,cACL,KAAA,EAAM,SAAA;AAAA,cACN,KAAA,EAAO,mBAAmB,QAAA;AAAS;AAAA;AACrC;AAAA;AAAA,KAEJ;AAAA,oBAEA,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAS,qBAAA;AAAA,QACT,aAAA,EAAY,qBAAA;AAAA,QACZ,IAAA;AAAA,QACA,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,QAE5B,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,MAAA,CAAO,OAAA,EAAP,EACC,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,EACpC,QAAA,EAAA,UAAA,EACH,CAAA,EACF,CAAA;AAAA,0BAEA,GAAA,CAAC,MAAA,CAAO,MAAA,EAAP,EACC,QAAA,kBAAA,IAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,cAAA,EACE,wBAAwB,eAAA,GAAkB,UAAA;AAAA,cAE5C,IAAA,EAAM,CAAA;AAAA,cAEL,QAAA,EAAA;AAAA,gBAAA,qBAAA,oBACC,GAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,UAAA,EAAW,OAAA;AAAA,oBACX,IAAA,EAAM,EAAE,MAAA,EAAQC,QAAA,EAAU;AAAA,oBAC1B,OAAA,EAAS,iBAAA;AAAA,oBACV,QAAA,EAAA;AAAA;AAAA,iBAED;AAAA,gCAGF,IAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAI,GAAA,EACR,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAS,YAAA,EAAc,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,sCACpC,MAAA,EAAA,EAAO,UAAA,EAAW,SAAA,EAAU,OAAA,EAAS,gBAAgB,QAAA,EAAA,OAAA,EAEtD;AAAA,iBAAA,EACF;AAAA;AAAA;AAAA,WACF,EACF;AAAA;AAAA;AAAA,KACF;AAAA,oBACA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,qBAAqB,SAAA,IAAa,IAAA;AAAA,QAC7C,cAAA,EAAgB,qBAAqB,QAAA,IAAY,EAAA;AAAA,QACjD,YAAA,EAAc,0BAAA;AAAA,QACd,MAAM,oBAAA,EAAsB,IAAA;AAAA,QAC5B,cAAA,EAAe,MAAA;AAAA,QACf,QAAA,EAAU,CAAC,MAAA,KAAW;AACpB,UAAA,IAAI,mBAAA,EAAqB;AACvB,YAAA,iBAAA,CAAkB,mBAAA,CAAoB,UAAU,MAAM,CAAA;AAAA,UACxD;AACA,UAAA,sBAAA,CAAuB,IAAI,CAAA;AAAA,QAC7B,CAAA;AAAA,QACA,QAAA,EAAU,MAAM,sBAAA,CAAuB,IAAI;AAAA;AAAA;AAC7C,GAAA,EACF,CAAA;AAEJ,CAAA;;ACvKO,MAAM,SAAA,GAAY,UAAA;AAAA,EACvB,SAAS,cAAA,CAAe,KAAA,EAAO,GAAA,EAAK;AAClC,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,OAAA,EAAS,cAAA;AAAA,MACT,cAAA;AAAA,MACA,mBAAA,GAAsB,KAAA;AAAA,MACtB,iBAAA;AAAA,MACA,IAAA,GAAO,QAAA;AAAA,MACP,eAAA,GAAkB,KAAA;AAAA,MAClB,SAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAmB,cAAc,CAAA;AAC/D,IAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,IAAA,MAAM,cAAA,GAAiB,kBAAkB,YAAY,CAAA;AAErD,IAAA,MAAM,oBACJ,eAAA,IAAmB,CAAC,EAAE,cAAA,IAAkB,eAAe,IAAA,KAAS,IAAA,CAAA;AAGlE,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,UAAA,CAAW,CAAC,WAAA,KAAgB;AAC1B,QAAA,MAAM,kBAAA,GAAqB,IAAI,GAAA,CAAI,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,EAAA,EAAI,CAAC,CAAC,CAAC,CAAA;AAEpE,QAAA,OAAO,cAAA,CAAe,GAAA,CAAI,CAAC,SAAA,KAAsB;AAC/C,UAAA,MAAM,cAAA,GAAiB,kBAAA,CAAmB,GAAA,CAAI,SAAA,CAAU,EAAE,CAAA;AAE1D,UAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,YAAA,OAAO,SAAA;AAAA,UACT;AAEA,UAAA,IAAI,CAAC,yBAAA,CAA0B,cAAA,EAAgB,SAAS,CAAA,EAAG;AACzD,YAAA,OAAO,mBAAA,CAAoB,WAAW,cAAc,CAAA;AAAA,UACtD;AAEA,UAAA,OAAO,SAAA;AAAA,QACT,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,IACH,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AASnB,IAAA,MAAM,YAAA,GAAe,WAAA;AAAA,MACnB,CAAC,QAAA,EAAkB,KAAA,EAAgB,MAAA,KAAoB;AACrD,QAAA,UAAA,CAAW,CAAC,WAAA,KAAgB;AAC1B,UAAA,MAAM,cAAA,GAAiB,kBAAA;AAAA,YACrB,WAAA;AAAA,YACA,QAAA;AAAA,YACA;AAAA,WACF;AAEA,UAAA,IAAI,MAAA,EAAQ;AACV,YAAA,cAAA,GAAiB,cAAc,CAAA;AAAA,UACjC;AAEA,UAAA,OAAO,cAAA;AAAA,QACT,CAAC,CAAA;AAAA,MACH,CAAA;AAAA,MACA,CAAC,cAAc;AAAA,KACjB;AAKA,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,MAAM,eAAA,GAAkB,aAAa,OAAO,CAAA;AAC5C,MAAA,UAAA,CAAW,eAAe,CAAA;AAC1B,MAAA,cAAA,GAAiB,eAAe,CAAA;AAEhC,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,IAAI,aAAa,OAAA,EAAS;AACxB,UAAA,MAAM,cAAA,GAAiB,aAAa,OAAA,CAAQ,aAAA;AAAA,YAC1C;AAAA,WACF;AAEA,UAAA,IAAI,cAAA,EAAgB;AAClB,YAAA,cAAA,CAAe,KAAA,EAAM;AAAA,UACvB;AAAA,QACF;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,mBAAmB,OAAO,CAAA;AAEnD,IAAA,MAAM,EAAE,aAAA,EAAe,iBAAA,EAAkB,GAAI,QAAQ,MAAM;AACzD,MAAA,MAAM,SAAmB,EAAC;AAC1B,MAAA,MAAM,SAAmB,EAAC;AAC1B,MAAA,KAAA,MAAW,KAAK,OAAA,EAAS;AACvB,QAAA,CAAC,CAAA,CAAE,UAAA,GAAa,MAAA,GAAS,MAAA,EAAQ,KAAK,CAAC,CAAA;AAAA,MACzC;AACA,MAAA,OAAO,EAAE,aAAA,EAAe,MAAA,EAAQ,iBAAA,EAAmB,MAAA,EAAO;AAAA,IAC5D,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAKZ,IAAA,MAAM,gBAAA,GAAmB,CAAC,iBAAA,IAAqB,iBAAA,CAAkB,MAAA,GAAS,CAAA;AAE1E,IAAA,MAAM,sBAAsB,aAAA,CAAc,GAAA;AAAA,MAAI,CAAC,MAAA,KAC7C,UAAA,CAAW,MAAM,EAAE,gBAAA,CAAiB;AAAA,QAClC,MAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA,OACD;AAAA,KACH;AAIA,IAAA,MAAM,mBAAA,GAAsB,OAAA;AAAA,MAC1B,OAAO;AAAA,QACL,eAAe,EAAC;AAAA,QAChB,SAAS,MAAM;AAAA,QAAC,CAAA;AAAA,QAChB,YAAY,MAAM;AAAA,QAAC,CAAA;AAAA,QACnB,UAAA,EAAY,YAAA;AAAA,QACZ;AAAA,OACF,CAAA;AAAA,MACA,CAAC,IAAI;AAAA,KACP;AAEA,IAAA,MAAM,uBAAA,GAA0B,OAAA;AAAA,MAC9B,OAAO;AAAA,QACL,cAAA,EAAgB,YAAA;AAAA,QAChB,OAAA;AAAA,QACA,YAAA;AAAA,QACA,cAAA;AAAA,QACA,mBAAA;AAAA,QACA,iBAAA;AAAA,QACA,iBAAA;AAAA,QACA;AAAA,OACF,CAAA;AAAA,MACA;AAAA,QACE,YAAA;AAAA,QACA,OAAA;AAAA,QACA,YAAA;AAAA,QACA,cAAA;AAAA,QACA,mBAAA;AAAA,QACA,iBAAA;AAAA,QACA,iBAAA;AAAA,QACA;AAAA;AACF,KACF;AAGA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,aAAa,OAAA,EAAS;AACxB,QAAA,0BAAA,CAA2B,aAAa,OAAO,CAAA;AAAA,MACjD;AAAA,IACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,IAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,MACpB,CAAC,KAAA,KAA+C;AAC9C,QAAA,IAAI,aAAa,OAAA,EAAS;AACxB,UAAA,oBAAA,CAAqB,KAAA,EAAO,aAAa,OAAO,CAAA;AAAA,QAClD;AACA,QAAA,SAAA,GAAY,KAAK,CAAA;AAAA,MACnB,CAAA;AAAA,MACA,CAAC,SAAS;AAAA,KACZ;AAEA,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,GAAA,CAAC,cAAA,CAAe,QAAA,EAAf,EAAwB,KAAA,EAAO,mBAAA,EAC9B,QAAA,kBAAA,GAAA,CAAC,kBAAA,CAAmB,QAAA,EAAnB,EAA4B,KAAA,EAAO,uBAAA,EAClC,QAAA,kBAAA,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,YAAA,CAAa,CAAC,YAAA,EAAc,GAAG,CAAC,CAAA;AAAA,QACrC,IAAA,EAAK,SAAA;AAAA,QACL,YAAA,EAAY,eAAe,iBAAiB,CAAA,qDAAA,CAAA;AAAA,QAC5C,kBAAA,EAAiB,YAAA;AAAA,QACjB,QAAA,EAAU,EAAA;AAAA,QACV,SAAA,EAAW,aAAA;AAAA,QACX,UAAA,EAAW,QAAA;AAAA,QACX,GAAA,EAAK,CAAA;AAAA,QACL,IAAA,EAAK,MAAA;AAAA,QACL,SAAA;AAAA,QACA,KAAA,EAAO,aAAA;AAAA,QACP,UAAA,EAAS,YAAA;AAAA,QACR,GAAG,IAAA;AAAA,QAEJ,QAAA,kBAAA,IAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAW,QAAA;AAAA,YACX,GAAA,EAAK,CAAA;AAAA,YACL,IAAA,EAAK,MAAA;AAAA,YACL,IAAA,EAAM,CAAA;AAAA,YACN,UAAA,EAAS,iBAAA;AAAA,YAER,QAAA,EAAA;AAAA,cAAA,iBAAA,IAAqB,mBAAA;AAAA,cACrB,gBAAA,wBAAqB,YAAA,EAAA,EAAa,CAAA;AAAA,cAElC,iBAAA,IAAqB,gBAAA,oBACpB,GAAA,CAAC,iBAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,UAAA,EAAW,OAAA;AAAA,kBACX,IAAA;AAAA,kBACA,SAAA,EAAW,OAAO,uBAAuB,CAAA;AAAA,kBACzC,IAAA,EAAM;AAAA,oBACJ,MAAA,EAAQC;AAAA,mBACV;AAAA,kBACA,OAAA,EAAS,eAAA;AAAA,kBACV,QAAA,EAAA;AAAA;AAAA,eAED,EACF;AAAA;AAAA;AAAA;AAEJ;AAAA,OAEJ,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;;;;"}
package/dist/FilterBar.js CHANGED
@@ -1,2 +1,2 @@
1
- export { F as FilterBar, F as default } from './FilterBar-B3c_VGDk.js';
1
+ export { F as FilterBar, F as default } from './FilterBar-D0iRUjOy.js';
2
2
  //# sourceMappingURL=FilterBar.js.map
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { c as cx } from './index-De1g9FRV.js';
4
- import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-CB_zHDbW.js';
4
+ import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
5
5
 
6
6
  import './Flex.css';const flex = "_flex_1yrhm_1";
7
7
  const styles = {
@@ -97,4 +97,4 @@ const Flex = forwardRef((props, ref) => {
97
97
  Flex.displayName = "Flex";
98
98
 
99
99
  export { Flex as F };
100
- //# sourceMappingURL=Flex-_orhvoxS.js.map
100
+ //# sourceMappingURL=Flex-Bb3iHExM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Flex-_orhvoxS.js","sources":["../src/components/Flex/Flex.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Flex.module.scss\";\nimport { FlexSpecificProps } from \"./internal/FlexSpecificProps\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the Flex component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends FlexSpecificProps\n */\nexport type FlexProps = ComponentPropsWithoutRef<\"div\"> &\n FlexSpecificProps & {\n /**\n * Responsive props for small screens (sm breakpoint).\n */\n sm?: FlexSpecificProps;\n /**\n * Responsive props for medium screens (md breakpoint).\n */\n md?: FlexSpecificProps;\n /**\n * Responsive props for large screens (lg breakpoint).\n */\n lg?: FlexSpecificProps;\n /**\n * Responsive props for extra large screens (xl breakpoint).\n */\n xl?: FlexSpecificProps;\n /**\n * Responsive props for extra extra large screens (xxl breakpoint).\n */\n xxl?: FlexSpecificProps;\n };\n\n/**\n * Flex component for creating flexible layouts using CSS Flexbox.\n *\n * Features:\n * - CSS Flexbox layout with full control over flex properties\n * - Support for both flex and inline-flex display modes\n * - Responsive design with breakpoint-specific props (sm, md, lg, xl, xxl)\n * - Comprehensive layout utilities for spacing, alignment, and positioning\n * - Automatic style generation and class management\n * - Support for all standard div element props\n * - Flexible direction, grow, shrink, basis, and wrap controls\n *\n * @example\n * <Flex direction=\"row\" gap=\"4\" alignItems=\"center\">\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * </Flex>\n *\n * @example\n * <Flex\n * direction=\"column\"\n * gap=\"2\"\n * md={{ direction: \"row\", gap: \"4\" }}\n * >\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * </Flex>\n */\nexport const Flex = forwardRef<HTMLDivElement, FlexProps>((props, ref) => {\n const {\n inline,\n direction,\n grow,\n shrink,\n basis,\n wrap,\n sm,\n md,\n lg,\n xl,\n xxl,\n ...nonLayoutProps\n } = props;\n const combineLayoutProps = {\n ...nonLayoutProps,\n flexDirection: direction,\n flexGrow: grow,\n flexShrink: shrink,\n flexBasis: basis,\n flexWrap: wrap,\n sm: {\n ...sm,\n flexDirection: sm?.direction,\n flexGrow: sm?.grow,\n flexShrink: sm?.shrink,\n flexBasis: sm?.basis,\n flexWrap: sm?.wrap,\n },\n md: {\n ...md,\n flexDirection: md?.direction,\n flexGrow: md?.grow,\n flexShrink: md?.shrink,\n flexBasis: md?.basis,\n flexWrap: md?.wrap,\n },\n lg: {\n ...lg,\n flexDirection: lg?.direction,\n flexGrow: lg?.grow,\n flexShrink: lg?.shrink,\n flexBasis: lg?.basis,\n flexWrap: lg?.wrap,\n },\n xl: {\n ...xl,\n flexDirection: xl?.direction,\n flexGrow: xl?.grow,\n flexShrink: xl?.shrink,\n flexBasis: xl?.basis,\n flexWrap: xl?.wrap,\n },\n xxl: {\n ...xxl,\n flexDirection: xxl?.direction,\n flexGrow: xxl?.grow,\n flexShrink: xxl?.shrink,\n flexBasis: xxl?.basis,\n flexWrap: xxl?.wrap,\n },\n };\n const { layoutStyles, componentProps } =\n useLayoutPropsUtil(combineLayoutProps);\n\n const { children, className, style, ...rest } = componentProps;\n\n const flexClassNames = cx(className, {\n [styles[\"flex\"]]: !inline,\n [styles[\"inline-flex\"]]: inline,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n className={flexClassNames}\n data-anv=\"flex\"\n style={styleCombined}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nFlex.displayName = \"Flex\";\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Flex-Bb3iHExM.js","sources":["../src/components/Flex/Flex.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Flex.module.scss\";\nimport { FlexSpecificProps } from \"./internal/FlexSpecificProps\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the Flex component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends FlexSpecificProps\n */\nexport type FlexProps = ComponentPropsWithoutRef<\"div\"> &\n FlexSpecificProps & {\n /**\n * Responsive props for small screens (sm breakpoint).\n */\n sm?: FlexSpecificProps;\n /**\n * Responsive props for medium screens (md breakpoint).\n */\n md?: FlexSpecificProps;\n /**\n * Responsive props for large screens (lg breakpoint).\n */\n lg?: FlexSpecificProps;\n /**\n * Responsive props for extra large screens (xl breakpoint).\n */\n xl?: FlexSpecificProps;\n /**\n * Responsive props for extra extra large screens (xxl breakpoint).\n */\n xxl?: FlexSpecificProps;\n };\n\n/**\n * Flex component for creating flexible layouts using CSS Flexbox.\n *\n * Features:\n * - CSS Flexbox layout with full control over flex properties\n * - Support for both flex and inline-flex display modes\n * - Responsive design with breakpoint-specific props (sm, md, lg, xl, xxl)\n * - Comprehensive layout utilities for spacing, alignment, and positioning\n * - Automatic style generation and class management\n * - Support for all standard div element props\n * - Flexible direction, grow, shrink, basis, and wrap controls\n *\n * @example\n * <Flex direction=\"row\" gap=\"4\" alignItems=\"center\">\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * </Flex>\n *\n * @example\n * <Flex\n * direction=\"column\"\n * gap=\"2\"\n * md={{ direction: \"row\", gap: \"4\" }}\n * >\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * </Flex>\n */\nexport const Flex = forwardRef<HTMLDivElement, FlexProps>((props, ref) => {\n const {\n inline,\n direction,\n grow,\n shrink,\n basis,\n wrap,\n sm,\n md,\n lg,\n xl,\n xxl,\n ...nonLayoutProps\n } = props;\n const combineLayoutProps = {\n ...nonLayoutProps,\n flexDirection: direction,\n flexGrow: grow,\n flexShrink: shrink,\n flexBasis: basis,\n flexWrap: wrap,\n sm: {\n ...sm,\n flexDirection: sm?.direction,\n flexGrow: sm?.grow,\n flexShrink: sm?.shrink,\n flexBasis: sm?.basis,\n flexWrap: sm?.wrap,\n },\n md: {\n ...md,\n flexDirection: md?.direction,\n flexGrow: md?.grow,\n flexShrink: md?.shrink,\n flexBasis: md?.basis,\n flexWrap: md?.wrap,\n },\n lg: {\n ...lg,\n flexDirection: lg?.direction,\n flexGrow: lg?.grow,\n flexShrink: lg?.shrink,\n flexBasis: lg?.basis,\n flexWrap: lg?.wrap,\n },\n xl: {\n ...xl,\n flexDirection: xl?.direction,\n flexGrow: xl?.grow,\n flexShrink: xl?.shrink,\n flexBasis: xl?.basis,\n flexWrap: xl?.wrap,\n },\n xxl: {\n ...xxl,\n flexDirection: xxl?.direction,\n flexGrow: xxl?.grow,\n flexShrink: xxl?.shrink,\n flexBasis: xxl?.basis,\n flexWrap: xxl?.wrap,\n },\n };\n const { layoutStyles, componentProps } =\n useLayoutPropsUtil(combineLayoutProps);\n\n const { children, className, style, ...rest } = componentProps;\n\n const flexClassNames = cx(className, {\n [styles[\"flex\"]]: !inline,\n [styles[\"inline-flex\"]]: inline,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n className={flexClassNames}\n data-anv=\"flex\"\n style={styleCombined}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nFlex.displayName = \"Flex\";\n"],"names":[],"mappings":";;;;;;;;;;;AAiEO,MAAM,IAAA,GAAO,UAAA,CAAsC,CAAC,KAAA,EAAO,GAAA,KAAQ;AACxE,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,EAAA;AAAA,IACA,EAAA;AAAA,IACA,EAAA;AAAA,IACA,EAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AACJ,EAAA,MAAM,kBAAA,GAAqB;AAAA,IACzB,GAAG,cAAA;AAAA,IACH,aAAA,EAAe,SAAA;AAAA,IACf,QAAA,EAAU,IAAA;AAAA,IACV,UAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAW,KAAA;AAAA,IACX,QAAA,EAAU,IAAA;AAAA,IACV,EAAA,EAAI;AAAA,MACF,GAAG,EAAA;AAAA,MACH,eAAe,EAAA,EAAI,SAAA;AAAA,MACnB,UAAU,EAAA,EAAI,IAAA;AAAA,MACd,YAAY,EAAA,EAAI,MAAA;AAAA,MAChB,WAAW,EAAA,EAAI,KAAA;AAAA,MACf,UAAU,EAAA,EAAI;AAAA,KAChB;AAAA,IACA,EAAA,EAAI;AAAA,MACF,GAAG,EAAA;AAAA,MACH,eAAe,EAAA,EAAI,SAAA;AAAA,MACnB,UAAU,EAAA,EAAI,IAAA;AAAA,MACd,YAAY,EAAA,EAAI,MAAA;AAAA,MAChB,WAAW,EAAA,EAAI,KAAA;AAAA,MACf,UAAU,EAAA,EAAI;AAAA,KAChB;AAAA,IACA,EAAA,EAAI;AAAA,MACF,GAAG,EAAA;AAAA,MACH,eAAe,EAAA,EAAI,SAAA;AAAA,MACnB,UAAU,EAAA,EAAI,IAAA;AAAA,MACd,YAAY,EAAA,EAAI,MAAA;AAAA,MAChB,WAAW,EAAA,EAAI,KAAA;AAAA,MACf,UAAU,EAAA,EAAI;AAAA,KAChB;AAAA,IACA,EAAA,EAAI;AAAA,MACF,GAAG,EAAA;AAAA,MACH,eAAe,EAAA,EAAI,SAAA;AAAA,MACnB,UAAU,EAAA,EAAI,IAAA;AAAA,MACd,YAAY,EAAA,EAAI,MAAA;AAAA,MAChB,WAAW,EAAA,EAAI,KAAA;AAAA,MACf,UAAU,EAAA,EAAI;AAAA,KAChB;AAAA,IACA,GAAA,EAAK;AAAA,MACH,GAAG,GAAA;AAAA,MACH,eAAe,GAAA,EAAK,SAAA;AAAA,MACpB,UAAU,GAAA,EAAK,IAAA;AAAA,MACf,YAAY,GAAA,EAAK,MAAA;AAAA,MACjB,WAAW,GAAA,EAAK,KAAA;AAAA,MAChB,UAAU,GAAA,EAAK;AAAA;AACjB,GACF;AACA,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GACnC,mBAAmB,kBAAkB,CAAA;AAEvC,EAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,KAAA,EAAO,GAAG,MAAK,GAAI,cAAA;AAEhD,EAAA,MAAM,cAAA,GAAiB,GAAG,SAAA,EAAW;AAAA,IACnC,CAAC,MAAA,CAAO,MAAM,CAAC,GAAG,CAAC,MAAA;AAAA,IACnB,CAAC,MAAA,CAAO,aAAa,CAAC,GAAG;AAAA,GAC1B,CAAA;AAED,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,GAAG,KAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,cAAA;AAAA,MACX,UAAA,EAAS,MAAA;AAAA,MACT,KAAA,EAAO,aAAA;AAAA,MACP,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,IAAA,CAAK,WAAA,GAAc,MAAA;;;;"}
package/dist/Flex.js CHANGED
@@ -1,2 +1,2 @@
1
- export { F as Flex, F as default } from './Flex-_orhvoxS.js';
1
+ export { F as Flex, F as default } from './Flex-Bb3iHExM.js';
2
2
  //# sourceMappingURL=Flex.js.map
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { c as cx } from './index-De1g9FRV.js';
4
- import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-CB_zHDbW.js';
4
+ import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
5
5
 
6
6
  import './Grid.css';const grid = "_grid_fgegg_1";
7
7
  const styles = {
@@ -146,4 +146,4 @@ const Grid = Object.assign(
146
146
  Grid.displayName = "Grid";
147
147
 
148
148
  export { Grid as G };
149
- //# sourceMappingURL=Grid-BAN8WD_V.js.map
149
+ //# sourceMappingURL=Grid-ho1pGJ5L.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Grid-BAN8WD_V.js","sources":["../src/components/Grid/internal/GridItem.tsx","../src/components/Grid/Grid.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"../Grid.module.scss\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport { LayoutUtilProps } from \"../../../types\";\n\n/**\n * Props for the GridItem component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type GridItemProps = ComponentPropsWithoutRef<\"div\"> & LayoutUtilProps;\n\n/**\n * GridItem component for individual items within a CSS Grid layout.\n *\n * Features:\n * - Individual grid item with full layout utility support\n * - Automatic grid item styling and class management\n * - Comprehensive layout utilities for positioning and sizing\n * - Support for all standard div element props\n * - Flexible grid positioning and sizing controls\n * - Automatic style generation and class management\n * - Works seamlessly with Grid component\n *\n * @example\n * <Grid templateColumns=\"repeat(2, 1fr)\" gap=\"4\">\n * <Grid.Item>Grid Item 1</Grid.Item>\n * <Grid.Item>Grid Item 2</Grid.Item>\n * </Grid>\n */\nexport const GridItem = forwardRef<HTMLDivElement, GridItemProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { className, children, style, ...rest } = componentProps;\n\n const gridItemClassNames = cx([styles[\"grid-item\"]], className, {});\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n className={gridItemClassNames}\n data-anv=\"grid-item\"\n ref={ref}\n style={styleCombined}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nGridItem.displayName = \"GridItem\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport styles from \"./Grid.module.scss\";\nimport { GridSpecificProps } from \"./internal/GridSpecificProps\";\nimport { GridItem } from \"./internal/GridItem\";\n\n/**\n * Props for the Grid component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends GridSpecificProps\n */\nexport type GridProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Applies `display: inline-grid` instead of `grid`\n */\n inline?: boolean;\n} & GridSpecificProps & {\n /**\n * Responsive props for small screens (sm breakpoint).\n */\n sm?: GridSpecificProps;\n /**\n * Responsive props for medium screens (md breakpoint).\n */\n md?: GridSpecificProps;\n /**\n * Responsive props for large screens (lg breakpoint).\n */\n lg?: GridSpecificProps;\n /**\n * Responsive props for extra large screens (xl breakpoint).\n */\n xl?: GridSpecificProps;\n /**\n * Responsive props for extra extra large screens (xxl breakpoint).\n */\n xxl?: GridSpecificProps;\n };\n\n/**\n * Grid component for creating CSS Grid layouts with responsive design.\n *\n * Features:\n * - CSS Grid layout with full control over grid properties\n * - Support for both grid and inline-grid display modes\n * - Responsive design with breakpoint-specific props (sm, md, lg, xl, xxl)\n * - Comprehensive layout utilities for spacing, alignment, and positioning\n * - Template columns, rows, and areas configuration\n * - Auto columns and rows sizing\n * - Automatic style generation and class management\n * - Support for all standard div element props\n * - Flexible grid template and auto-sizing controls\n * - Automatic tracking ID generation for analytics\n * - Compound component structure with Item sub-component\n *\n * @example\n * <Grid templateColumns=\"repeat(3, 1fr)\" gap=\"4\">\n * <Grid.Item>Grid Item 1</Grid.Item>\n * <Grid.Item>Grid Item 2</Grid.Item>\n * <Grid.Item>Grid Item 3</Grid.Item>\n * </Grid>\n *\n * @example\n * <Grid\n * templateColumns=\"repeat(1, 1fr)\"\n * gap=\"2\"\n * md={{ templateColumns: \"repeat(3, 1fr)\", gap: \"4\" }}\n * >\n * <Grid.Item>Grid Item 1</Grid.Item>\n * <Grid.Item>Grid Item 2</Grid.Item>\n * <Grid.Item>Grid Item 3</Grid.Item>\n * </Grid>\n */\nexport const Grid = Object.assign(\n forwardRef<HTMLDivElement, GridProps>(function GridInner(props, ref) {\n const {\n inline,\n templateColumns,\n templateRows,\n templateAreas,\n autoColumns,\n autoRows,\n sm,\n md,\n lg,\n xl,\n xxl,\n ...nonLayoutProps\n } = props;\n const combineLayoutProps = {\n ...nonLayoutProps,\n gridTemplateColumns: props.templateColumns,\n gridTemplateRows: props.templateRows,\n gridTemplateAreas: props.templateAreas,\n gridAutoColumns: props.autoColumns,\n gridAutoRows: props.autoRows,\n sm: {\n ...sm,\n gridTemplateColumns: sm?.templateColumns,\n gridTemplateRows: sm?.templateRows,\n gridTemplateAreas: sm?.templateAreas,\n gridAutoColumns: sm?.autoColumns,\n gridAutoRows: sm?.autoRows,\n },\n md: {\n ...md,\n gridTemplateColumns: md?.templateColumns,\n gridTemplateRows: md?.templateRows,\n gridTemplateAreas: md?.templateAreas,\n gridAutoColumns: md?.autoColumns,\n gridAutoRows: md?.autoRows,\n },\n lg: {\n ...lg,\n gridTemplateColumns: lg?.templateColumns,\n gridTemplateRows: lg?.templateRows,\n gridTemplateAreas: lg?.templateAreas,\n gridAutoColumns: lg?.autoColumns,\n gridAutoRows: lg?.autoRows,\n },\n xl: {\n ...xl,\n gridTemplateColumns: xl?.templateColumns,\n gridTemplateRows: xl?.templateRows,\n gridTemplateAreas: xl?.templateAreas,\n gridAutoColumns: xl?.autoColumns,\n gridAutoRows: xl?.autoRows,\n },\n xxl: {\n ...xxl,\n gridTemplateColumns: xxl?.templateColumns,\n gridTemplateRows: xxl?.templateRows,\n gridTemplateAreas: xxl?.templateAreas,\n gridAutoColumns: xxl?.autoColumns,\n gridAutoRows: xxl?.autoRows,\n },\n };\n const { layoutStyles, componentProps } =\n useLayoutPropsUtil(combineLayoutProps);\n const { children, className, style, ...rest } = componentProps;\n\n const gridClassNames = cx(className, {\n [styles[\"grid\"]]: !inline,\n [styles[\"inline-grid\"]]: inline,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n className={gridClassNames}\n data-anv=\"grid\"\n style={styleCombined}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n }),\n {\n /**\n * GridItem component for individual items within a CSS Grid layout.\n *\n * Features:\n * - Individual grid item with full layout utility support\n * - Automatic grid item styling and class management\n * - Comprehensive layout utilities for positioning and sizing\n * - Support for all standard div element props\n * - Flexible grid positioning and sizing controls\n * - Automatic style generation and class management\n * - Works seamlessly with Grid component\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Grid templateColumns=\"repeat(2, 1fr)\" gap=\"4\">\n * <Grid.Item>Grid Item 1</Grid.Item>\n * <Grid.Item>Grid Item 2</Grid.Item>\n * </Grid>\n */\n Item: GridItem,\n },\n);\nGrid.displayName = \"Grid\";\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Grid-ho1pGJ5L.js","sources":["../src/components/Grid/internal/GridItem.tsx","../src/components/Grid/Grid.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"../Grid.module.scss\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport { LayoutUtilProps } from \"../../../types\";\n\n/**\n * Props for the GridItem component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type GridItemProps = ComponentPropsWithoutRef<\"div\"> & LayoutUtilProps;\n\n/**\n * GridItem component for individual items within a CSS Grid layout.\n *\n * Features:\n * - Individual grid item with full layout utility support\n * - Automatic grid item styling and class management\n * - Comprehensive layout utilities for positioning and sizing\n * - Support for all standard div element props\n * - Flexible grid positioning and sizing controls\n * - Automatic style generation and class management\n * - Works seamlessly with Grid component\n *\n * @example\n * <Grid templateColumns=\"repeat(2, 1fr)\" gap=\"4\">\n * <Grid.Item>Grid Item 1</Grid.Item>\n * <Grid.Item>Grid Item 2</Grid.Item>\n * </Grid>\n */\nexport const GridItem = forwardRef<HTMLDivElement, GridItemProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { className, children, style, ...rest } = componentProps;\n\n const gridItemClassNames = cx([styles[\"grid-item\"]], className, {});\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n className={gridItemClassNames}\n data-anv=\"grid-item\"\n ref={ref}\n style={styleCombined}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nGridItem.displayName = \"GridItem\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport styles from \"./Grid.module.scss\";\nimport { GridSpecificProps } from \"./internal/GridSpecificProps\";\nimport { GridItem } from \"./internal/GridItem\";\n\n/**\n * Props for the Grid component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends GridSpecificProps\n */\nexport type GridProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Applies `display: inline-grid` instead of `grid`\n */\n inline?: boolean;\n} & GridSpecificProps & {\n /**\n * Responsive props for small screens (sm breakpoint).\n */\n sm?: GridSpecificProps;\n /**\n * Responsive props for medium screens (md breakpoint).\n */\n md?: GridSpecificProps;\n /**\n * Responsive props for large screens (lg breakpoint).\n */\n lg?: GridSpecificProps;\n /**\n * Responsive props for extra large screens (xl breakpoint).\n */\n xl?: GridSpecificProps;\n /**\n * Responsive props for extra extra large screens (xxl breakpoint).\n */\n xxl?: GridSpecificProps;\n };\n\n/**\n * Grid component for creating CSS Grid layouts with responsive design.\n *\n * Features:\n * - CSS Grid layout with full control over grid properties\n * - Support for both grid and inline-grid display modes\n * - Responsive design with breakpoint-specific props (sm, md, lg, xl, xxl)\n * - Comprehensive layout utilities for spacing, alignment, and positioning\n * - Template columns, rows, and areas configuration\n * - Auto columns and rows sizing\n * - Automatic style generation and class management\n * - Support for all standard div element props\n * - Flexible grid template and auto-sizing controls\n * - Automatic tracking ID generation for analytics\n * - Compound component structure with Item sub-component\n *\n * @example\n * <Grid templateColumns=\"repeat(3, 1fr)\" gap=\"4\">\n * <Grid.Item>Grid Item 1</Grid.Item>\n * <Grid.Item>Grid Item 2</Grid.Item>\n * <Grid.Item>Grid Item 3</Grid.Item>\n * </Grid>\n *\n * @example\n * <Grid\n * templateColumns=\"repeat(1, 1fr)\"\n * gap=\"2\"\n * md={{ templateColumns: \"repeat(3, 1fr)\", gap: \"4\" }}\n * >\n * <Grid.Item>Grid Item 1</Grid.Item>\n * <Grid.Item>Grid Item 2</Grid.Item>\n * <Grid.Item>Grid Item 3</Grid.Item>\n * </Grid>\n */\nexport const Grid = Object.assign(\n forwardRef<HTMLDivElement, GridProps>(function GridInner(props, ref) {\n const {\n inline,\n templateColumns,\n templateRows,\n templateAreas,\n autoColumns,\n autoRows,\n sm,\n md,\n lg,\n xl,\n xxl,\n ...nonLayoutProps\n } = props;\n const combineLayoutProps = {\n ...nonLayoutProps,\n gridTemplateColumns: props.templateColumns,\n gridTemplateRows: props.templateRows,\n gridTemplateAreas: props.templateAreas,\n gridAutoColumns: props.autoColumns,\n gridAutoRows: props.autoRows,\n sm: {\n ...sm,\n gridTemplateColumns: sm?.templateColumns,\n gridTemplateRows: sm?.templateRows,\n gridTemplateAreas: sm?.templateAreas,\n gridAutoColumns: sm?.autoColumns,\n gridAutoRows: sm?.autoRows,\n },\n md: {\n ...md,\n gridTemplateColumns: md?.templateColumns,\n gridTemplateRows: md?.templateRows,\n gridTemplateAreas: md?.templateAreas,\n gridAutoColumns: md?.autoColumns,\n gridAutoRows: md?.autoRows,\n },\n lg: {\n ...lg,\n gridTemplateColumns: lg?.templateColumns,\n gridTemplateRows: lg?.templateRows,\n gridTemplateAreas: lg?.templateAreas,\n gridAutoColumns: lg?.autoColumns,\n gridAutoRows: lg?.autoRows,\n },\n xl: {\n ...xl,\n gridTemplateColumns: xl?.templateColumns,\n gridTemplateRows: xl?.templateRows,\n gridTemplateAreas: xl?.templateAreas,\n gridAutoColumns: xl?.autoColumns,\n gridAutoRows: xl?.autoRows,\n },\n xxl: {\n ...xxl,\n gridTemplateColumns: xxl?.templateColumns,\n gridTemplateRows: xxl?.templateRows,\n gridTemplateAreas: xxl?.templateAreas,\n gridAutoColumns: xxl?.autoColumns,\n gridAutoRows: xxl?.autoRows,\n },\n };\n const { layoutStyles, componentProps } =\n useLayoutPropsUtil(combineLayoutProps);\n const { children, className, style, ...rest } = componentProps;\n\n const gridClassNames = cx(className, {\n [styles[\"grid\"]]: !inline,\n [styles[\"inline-grid\"]]: inline,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n className={gridClassNames}\n data-anv=\"grid\"\n style={styleCombined}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n }),\n {\n /**\n * GridItem component for individual items within a CSS Grid layout.\n *\n * Features:\n * - Individual grid item with full layout utility support\n * - Automatic grid item styling and class management\n * - Comprehensive layout utilities for positioning and sizing\n * - Support for all standard div element props\n * - Flexible grid positioning and sizing controls\n * - Automatic style generation and class management\n * - Works seamlessly with Grid component\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Grid templateColumns=\"repeat(2, 1fr)\" gap=\"4\">\n * <Grid.Item>Grid Item 1</Grid.Item>\n * <Grid.Item>Grid Item 2</Grid.Item>\n * </Grid>\n */\n Item: GridItem,\n },\n);\nGrid.displayName = \"Grid\";\n"],"names":[],"mappings":";;;;;;;;;;;;AAgCO,MAAM,QAAA,GAAW,UAAA;AAAA,EACtB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM,EAAE,SAAA,EAAW,QAAA,EAAU,KAAA,EAAO,GAAG,MAAK,GAAI,cAAA;AAEhD,IAAA,MAAM,kBAAA,GAAqB,GAAG,CAAC,MAAA,CAAO,WAAW,CAAC,CAAA,EAAG,SAAA,EAAW,EAAE,CAAA;AAElE,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,kBAAA;AAAA,QACX,UAAA,EAAS,WAAA;AAAA,QACT,GAAA;AAAA,QACA,KAAA,EAAO,aAAA;AAAA,QACN,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;;ACiBhB,MAAM,OAAO,MAAA,CAAO,MAAA;AAAA,EACzB,UAAA,CAAsC,SAAS,SAAA,CAAU,KAAA,EAAO,GAAA,EAAK;AACnE,IAAA,MAAM;AAAA,MACJ,MAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AACJ,IAAA,MAAM,kBAAA,GAAqB;AAAA,MACzB,GAAG,cAAA;AAAA,MACH,qBAAqB,KAAA,CAAM,eAAA;AAAA,MAC3B,kBAAkB,KAAA,CAAM,YAAA;AAAA,MACxB,mBAAmB,KAAA,CAAM,aAAA;AAAA,MACzB,iBAAiB,KAAA,CAAM,WAAA;AAAA,MACvB,cAAc,KAAA,CAAM,QAAA;AAAA,MACpB,EAAA,EAAI;AAAA,QACF,GAAG,EAAA;AAAA,QACH,qBAAqB,EAAA,EAAI,eAAA;AAAA,QACzB,kBAAkB,EAAA,EAAI,YAAA;AAAA,QACtB,mBAAmB,EAAA,EAAI,aAAA;AAAA,QACvB,iBAAiB,EAAA,EAAI,WAAA;AAAA,QACrB,cAAc,EAAA,EAAI;AAAA,OACpB;AAAA,MACA,EAAA,EAAI;AAAA,QACF,GAAG,EAAA;AAAA,QACH,qBAAqB,EAAA,EAAI,eAAA;AAAA,QACzB,kBAAkB,EAAA,EAAI,YAAA;AAAA,QACtB,mBAAmB,EAAA,EAAI,aAAA;AAAA,QACvB,iBAAiB,EAAA,EAAI,WAAA;AAAA,QACrB,cAAc,EAAA,EAAI;AAAA,OACpB;AAAA,MACA,EAAA,EAAI;AAAA,QACF,GAAG,EAAA;AAAA,QACH,qBAAqB,EAAA,EAAI,eAAA;AAAA,QACzB,kBAAkB,EAAA,EAAI,YAAA;AAAA,QACtB,mBAAmB,EAAA,EAAI,aAAA;AAAA,QACvB,iBAAiB,EAAA,EAAI,WAAA;AAAA,QACrB,cAAc,EAAA,EAAI;AAAA,OACpB;AAAA,MACA,EAAA,EAAI;AAAA,QACF,GAAG,EAAA;AAAA,QACH,qBAAqB,EAAA,EAAI,eAAA;AAAA,QACzB,kBAAkB,EAAA,EAAI,YAAA;AAAA,QACtB,mBAAmB,EAAA,EAAI,aAAA;AAAA,QACvB,iBAAiB,EAAA,EAAI,WAAA;AAAA,QACrB,cAAc,EAAA,EAAI;AAAA,OACpB;AAAA,MACA,GAAA,EAAK;AAAA,QACH,GAAG,GAAA;AAAA,QACH,qBAAqB,GAAA,EAAK,eAAA;AAAA,QAC1B,kBAAkB,GAAA,EAAK,YAAA;AAAA,QACvB,mBAAmB,GAAA,EAAK,aAAA;AAAA,QACxB,iBAAiB,GAAA,EAAK,WAAA;AAAA,QACtB,cAAc,GAAA,EAAK;AAAA;AACrB,KACF;AACA,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GACnC,mBAAmB,kBAAkB,CAAA;AACvC,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,KAAA,EAAO,GAAG,MAAK,GAAI,cAAA;AAEhD,IAAA,MAAM,cAAA,GAAiB,GAAG,SAAA,EAAW;AAAA,MACnC,CAAC,MAAA,CAAO,MAAM,CAAC,GAAG,CAAC,MAAA;AAAA,MACnB,CAAC,MAAA,CAAO,aAAa,CAAC,GAAG;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,cAAA;AAAA,QACX,UAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ,CAAC,CAAA;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAoBE,IAAA,EAAM;AAAA;AAEV;AACA,IAAA,CAAK,WAAA,GAAc,MAAA;;;;"}
package/dist/Grid.js CHANGED
@@ -1,2 +1,2 @@
1
- export { G as Grid, G as default } from './Grid-BAN8WD_V.js';
1
+ export { G as Grid, G as default } from './Grid-ho1pGJ5L.js';
2
2
  //# sourceMappingURL=Grid.js.map
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { c as cx } from './index-De1g9FRV.js';
4
- import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-CB_zHDbW.js';
4
+ import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
5
5
 
6
6
  import './Icon.css';const icon = "_icon_1901s_1";
7
7
  const small = "_small_1901s_37";
@@ -53,4 +53,4 @@ const Icon = forwardRef((props, ref) => {
53
53
  Icon.displayName = "Icon";
54
54
 
55
55
  export { Icon as I };
56
- //# sourceMappingURL=Icon-feeG7gXA.js.map
56
+ //# sourceMappingURL=Icon-BEwHECSM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Icon-feeG7gXA.js","sources":["../src/components/Icon/Icon.tsx"],"sourcesContent":["import { LayoutUtilProps, Size, Svg } from \"../../types\";\nimport { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport styles from \"./Icon.module.scss\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport cx from \"classnames\";\n\n/**\n * Props for the Icon component\n * @extends Omit<ComponentPropsWithoutRef<\"span\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type IconProps = Omit<ComponentPropsWithoutRef<\"span\">, \"children\"> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * Apply a specific color to the icon.\n */\n color?: string;\n\n /**\n * The size of the icon.\n * @default medium\n */\n size?: Extract<Size, \"small\" | \"medium\" | \"large\" | \"xlarge\">;\n\n /**\n * Assets passed in using svgr.\n */\n svg: Svg;\n\n /**\n * Whether the icon should inherit the color from its parent element.\n * @default false\n */\n inherit?: boolean;\n };\n\n/**\n * Icon component for displaying SVG icons with consistent styling and sizing.\n *\n * Features:\n * - SVG icon rendering with consistent styling\n * - Four predefined sizes: small, medium, large, xlarge\n * - Custom color support with optional inheritance\n * - Layout utilities for positioning and spacing\n * - Support for all standard span element props\n * - Flexible color inheritance and custom color options\n * - Consistent sizing across different icon sets\n *\n * @example\n * import Close from \"@servicetitan/anvil2/assets/icons/material/round/close.svg\";\n *\n * <Icon svg={Close} size=\"medium\" />\n *\n * @example\n * import Info from \"@servicetitan/anvil2/assets/icons/material/round/info.svg\";\n *\n * <Icon\n * svg={Info}\n * size=\"large\"\n * color=\"#007bff\"\n * inherit={false}\n * />\n */\nexport const Icon = forwardRef<HTMLSpanElement, IconProps>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n size = \"medium\",\n className,\n svg: Svg,\n inherit,\n style,\n color,\n ...rest\n } = componentProps;\n\n const iconClassNames = cx([styles[\"icon\"]], className, {\n [styles[\"small\"]]: size === \"small\",\n [styles[\"medium\"]]: size === \"medium\",\n [styles[\"large\"]]: size === \"large\",\n [styles[\"xlarge\"]]: size === \"xlarge\",\n });\n\n const styleCombined = {\n color: color ? color : inherit ? \"inherit\" : undefined,\n ...style,\n ...layoutStyles,\n };\n\n return (\n <span\n className={iconClassNames}\n data-anv=\"icon\"\n style={styleCombined}\n ref={ref}\n {...rest}\n >\n <Svg />\n </span>\n );\n});\n\nIcon.displayName = \"Icon\";\n"],"names":["Svg"],"mappings":";;;;;;;;;;;;;;;;;;AA+DO,MAAM,IAAA,GAAO,UAAA,CAAuC,CAAC,KAAA,EAAO,GAAA,KAAQ;AACzE,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,EAAA,MAAM;AAAA,IACJ,IAAA,GAAO,QAAA;AAAA,IACP,SAAA;AAAA,IACA,GAAA,EAAKA,IAAAA;AAAA,IACL,OAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,cAAA;AAEJ,EAAA,MAAM,iBAAiB,EAAA,CAAG,CAAC,OAAO,MAAM,CAAC,GAAG,SAAA,EAAW;AAAA,IACrD,CAAC,MAAA,CAAO,OAAO,CAAC,GAAG,IAAA,KAAS,OAAA;AAAA,IAC5B,CAAC,MAAA,CAAO,QAAQ,CAAC,GAAG,IAAA,KAAS,QAAA;AAAA,IAC7B,CAAC,MAAA,CAAO,OAAO,CAAC,GAAG,IAAA,KAAS,OAAA;AAAA,IAC5B,CAAC,MAAA,CAAO,QAAQ,CAAC,GAAG,IAAA,KAAS;AAAA,GAC9B,CAAA;AAED,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,KAAA,EAAO,KAAA,GAAQ,KAAA,GAAQ,OAAA,GAAU,SAAA,GAAY,MAAA;AAAA,IAC7C,GAAG,KAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,cAAA;AAAA,MACX,UAAA,EAAS,MAAA;AAAA,MACT,KAAA,EAAO,aAAA;AAAA,MACP,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA,CAACA,MAAA,EAAI;AAAA;AAAA,GACP;AAEJ,CAAC;AAED,IAAA,CAAK,WAAA,GAAc,MAAA;;;;"}
1
+ {"version":3,"file":"Icon-BEwHECSM.js","sources":["../src/components/Icon/Icon.tsx"],"sourcesContent":["import { LayoutUtilProps, Size, Svg } from \"../../types\";\nimport { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport styles from \"./Icon.module.scss\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport cx from \"classnames\";\n\n/**\n * Props for the Icon component\n * @extends Omit<ComponentPropsWithoutRef<\"span\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type IconProps = Omit<ComponentPropsWithoutRef<\"span\">, \"children\"> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * Apply a specific color to the icon.\n */\n color?: string;\n\n /**\n * The size of the icon.\n * @default medium\n */\n size?: Extract<Size, \"small\" | \"medium\" | \"large\" | \"xlarge\">;\n\n /**\n * Assets passed in using svgr.\n */\n svg: Svg;\n\n /**\n * Whether the icon should inherit the color from its parent element.\n * @default false\n */\n inherit?: boolean;\n };\n\n/**\n * Icon component for displaying SVG icons with consistent styling and sizing.\n *\n * Features:\n * - SVG icon rendering with consistent styling\n * - Four predefined sizes: small, medium, large, xlarge\n * - Custom color support with optional inheritance\n * - Layout utilities for positioning and spacing\n * - Support for all standard span element props\n * - Flexible color inheritance and custom color options\n * - Consistent sizing across different icon sets\n *\n * @example\n * import Close from \"@servicetitan/anvil2/assets/icons/material/round/close.svg\";\n *\n * <Icon svg={Close} size=\"medium\" />\n *\n * @example\n * import Info from \"@servicetitan/anvil2/assets/icons/material/round/info.svg\";\n *\n * <Icon\n * svg={Info}\n * size=\"large\"\n * color=\"#007bff\"\n * inherit={false}\n * />\n */\nexport const Icon = forwardRef<HTMLSpanElement, IconProps>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n size = \"medium\",\n className,\n svg: Svg,\n inherit,\n style,\n color,\n ...rest\n } = componentProps;\n\n const iconClassNames = cx([styles[\"icon\"]], className, {\n [styles[\"small\"]]: size === \"small\",\n [styles[\"medium\"]]: size === \"medium\",\n [styles[\"large\"]]: size === \"large\",\n [styles[\"xlarge\"]]: size === \"xlarge\",\n });\n\n const styleCombined = {\n color: color ? color : inherit ? \"inherit\" : undefined,\n ...style,\n ...layoutStyles,\n };\n\n return (\n <span\n className={iconClassNames}\n data-anv=\"icon\"\n style={styleCombined}\n ref={ref}\n {...rest}\n >\n <Svg />\n </span>\n );\n});\n\nIcon.displayName = \"Icon\";\n"],"names":["Svg"],"mappings":";;;;;;;;;;;;;;;;;;AA+DO,MAAM,IAAA,GAAO,UAAA,CAAuC,CAAC,KAAA,EAAO,GAAA,KAAQ;AACzE,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,EAAA,MAAM;AAAA,IACJ,IAAA,GAAO,QAAA;AAAA,IACP,SAAA;AAAA,IACA,GAAA,EAAKA,IAAAA;AAAA,IACL,OAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,cAAA;AAEJ,EAAA,MAAM,iBAAiB,EAAA,CAAG,CAAC,OAAO,MAAM,CAAC,GAAG,SAAA,EAAW;AAAA,IACrD,CAAC,MAAA,CAAO,OAAO,CAAC,GAAG,IAAA,KAAS,OAAA;AAAA,IAC5B,CAAC,MAAA,CAAO,QAAQ,CAAC,GAAG,IAAA,KAAS,QAAA;AAAA,IAC7B,CAAC,MAAA,CAAO,OAAO,CAAC,GAAG,IAAA,KAAS,OAAA;AAAA,IAC5B,CAAC,MAAA,CAAO,QAAQ,CAAC,GAAG,IAAA,KAAS;AAAA,GAC9B,CAAA;AAED,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,KAAA,EAAO,KAAA,GAAQ,KAAA,GAAQ,OAAA,GAAU,SAAA,GAAY,MAAA;AAAA,IAC7C,GAAG,KAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,cAAA;AAAA,MACX,UAAA,EAAS,MAAA;AAAA,MACT,KAAA,EAAO,aAAA;AAAA,MACP,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA,CAACA,MAAA,EAAI;AAAA;AAAA,GACP;AAEJ,CAAC;AAED,IAAA,CAAK,WAAA,GAAc,MAAA;;;;"}
package/dist/Icon.js CHANGED
@@ -1,2 +1,2 @@
1
- export { I as Icon, I as default } from './Icon-feeG7gXA.js';
1
+ export { I as Icon, I as default } from './Icon-BEwHECSM.js';
2
2
  //# sourceMappingURL=Icon.js.map
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef, useRef, useMemo, isValidElement, cloneElement } from 'react';
3
- import { u as useMergeRefs } from './AiMark-CS6MvraM.js';
4
- import { T as TextField } from './TextField-DJ3gEIP6.js';
3
+ import { u as useMergeRefs } from './AiMark-m-sG_BrY.js';
4
+ import { T as TextField } from './TextField-Dn2pwnKf.js';
5
5
  import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
6
6
  import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
7
7
  import { useTrackingId } from './useTrackingId.js';
@@ -261,4 +261,4 @@ const InputMask = forwardRef(
261
261
  InputMask.displayName = "InputMask";
262
262
 
263
263
  export { InputMask as I };
264
- //# sourceMappingURL=InputMask-VBHWGZGN.js.map
264
+ //# sourceMappingURL=InputMask-CZ57VFJA.js.map