@servicetitan/anvil2 2.2.0 → 2.4.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 (243) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/{Alert-DXoEusod.js → Alert-D9mBPs6z.js} +2 -2
  3. package/dist/{Alert-DXoEusod.js.map → Alert-D9mBPs6z.js.map} +1 -1
  4. package/dist/Alert.js +1 -1
  5. package/dist/{Announcement-SAypScAu.js → Announcement-B34cD6BC.js} +2 -2
  6. package/dist/{Announcement-SAypScAu.js.map → Announcement-B34cD6BC.js.map} +1 -1
  7. package/dist/Announcement.js +1 -1
  8. package/dist/{Button-l7pTJdPc.js → Button-DrNDkO2f.js} +2 -2
  9. package/dist/{Button-l7pTJdPc.js.map → Button-DrNDkO2f.js.map} +1 -1
  10. package/dist/Button.css +50 -50
  11. package/dist/Button.js +1 -1
  12. package/dist/Button.module-DwCq9XU0.js +26 -0
  13. package/dist/Button.module-DwCq9XU0.js.map +1 -0
  14. package/dist/{ButtonCompound-CX2kHgWe.js → ButtonCompound-D9VTKcL4.js} +2 -2
  15. package/dist/{ButtonCompound-CX2kHgWe.js.map → ButtonCompound-D9VTKcL4.js.map} +1 -1
  16. package/dist/ButtonCompound.js +1 -1
  17. package/dist/{ButtonLink-CRlyK750.js → ButtonLink-DDtrmbVM.js} +3 -2
  18. package/dist/ButtonLink-DDtrmbVM.js.map +1 -0
  19. package/dist/ButtonLink.js +1 -1
  20. package/dist/{ButtonToggle-BOVP_jEN.js → ButtonToggle-DrFewgOG.js} +3 -3
  21. package/dist/{ButtonToggle-BOVP_jEN.js.map → ButtonToggle-DrFewgOG.js.map} +1 -1
  22. package/dist/ButtonToggle.js +1 -1
  23. package/dist/{Calendar-oNlBgZKB.js → Calendar-CkgpKD7Q.js} +2 -2
  24. package/dist/{Calendar-oNlBgZKB.js.map → Calendar-CkgpKD7Q.js.map} +1 -1
  25. package/dist/{Calendar-D0CczOpQ.js → Calendar-CtkL4zYU.js} +3 -3
  26. package/dist/{Calendar-D0CczOpQ.js.map → Calendar-CtkL4zYU.js.map} +1 -1
  27. package/dist/Calendar.js +2 -2
  28. package/dist/{Checkbox-DuzAqrE7.js → Checkbox-CFgjreAl.js} +2 -2
  29. package/dist/{Checkbox-DuzAqrE7.js.map → Checkbox-CFgjreAl.js.map} +1 -1
  30. package/dist/{Checkbox-DIY-6agd.js → Checkbox-CxjZpzPp.js} +3 -3
  31. package/dist/{Checkbox-DIY-6agd.js.map → Checkbox-CxjZpzPp.js.map} +1 -1
  32. package/dist/Checkbox.js +1 -1
  33. package/dist/{Combobox-CSGn20KQ.js → Combobox-Drqb3GVU.js} +4 -4
  34. package/dist/{Combobox-CSGn20KQ.js.map → Combobox-Drqb3GVU.js.map} +1 -1
  35. package/dist/Combobox.js +1 -1
  36. package/dist/{DataTable-D30sE1Xt.js → DataTable-BLuJ4FtH.js} +311 -51
  37. package/dist/DataTable-BLuJ4FtH.js.map +1 -0
  38. package/dist/DataTable.css +9 -5
  39. package/dist/{DateFieldRange-DBOiqaML.js → DateFieldRange-CvlOeE4v.js} +4 -4
  40. package/dist/{DateFieldRange-DBOiqaML.js.map → DateFieldRange-CvlOeE4v.js.map} +1 -1
  41. package/dist/DateFieldRange.js +1 -1
  42. package/dist/{DateFieldSingle-C4hU55MP.js → DateFieldSingle-9UHxIxIA.js} +4 -4
  43. package/dist/{DateFieldSingle-C4hU55MP.js.map → DateFieldSingle-9UHxIxIA.js.map} +1 -1
  44. package/dist/DateFieldSingle.js +1 -1
  45. package/dist/{DateFieldYearless-BXkUiHIR.js → DateFieldYearless-HNydELvO.js} +4 -4
  46. package/dist/{DateFieldYearless-BXkUiHIR.js.map → DateFieldYearless-HNydELvO.js.map} +1 -1
  47. package/dist/DateFieldYearless.js +1 -1
  48. package/dist/{DateFieldYearlessRange-CGffFnVT.js → DateFieldYearlessRange-COb8v2CG.js} +4 -4
  49. package/dist/{DateFieldYearlessRange-CGffFnVT.js.map → DateFieldYearlessRange-COb8v2CG.js.map} +1 -1
  50. package/dist/DateFieldYearlessRange.js +1 -1
  51. package/dist/{DaysOfTheWeek-DJEDopC9.js → DaysOfTheWeek-D-WPj18i.js} +3 -3
  52. package/dist/{DaysOfTheWeek-DJEDopC9.js.map → DaysOfTheWeek-D-WPj18i.js.map} +1 -1
  53. package/dist/DaysOfTheWeek.js +1 -1
  54. package/dist/{Dialog-BbsZMnCA.js → Dialog-DEAR058v.js} +3 -3
  55. package/dist/{Dialog-BbsZMnCA.js.map → Dialog-DEAR058v.js.map} +1 -1
  56. package/dist/Dialog.js +1 -1
  57. package/dist/{DialogCancelButton-GuN5lgR-.js → DialogCancelButton-BfI9K4a4.js} +2 -2
  58. package/dist/{DialogCancelButton-GuN5lgR-.js.map → DialogCancelButton-BfI9K4a4.js.map} +1 -1
  59. package/dist/Dnd.js +1 -1
  60. package/dist/DndSort.js +2 -2
  61. package/dist/{Drawer-Dhq76ot3.js → Drawer-CnMskBQl.js} +3 -3
  62. package/dist/{Drawer-Dhq76ot3.js.map → Drawer-CnMskBQl.js.map} +1 -1
  63. package/dist/Drawer.js +1 -1
  64. package/dist/DrillDown.js +1 -1
  65. package/dist/{EditCard-DAiE-Hsc.js → EditCard-CH-JE4ba.js} +2 -2
  66. package/dist/{EditCard-DAiE-Hsc.js.map → EditCard-CH-JE4ba.js.map} +1 -1
  67. package/dist/EditCard.js +1 -1
  68. package/dist/{FieldDialog-CAuhkCZY.js → FieldDialog-C5mwMjrr.js} +120 -35
  69. package/dist/FieldDialog-C5mwMjrr.js.map +1 -0
  70. package/dist/FieldMessage-OeP_xSUE.js +132 -0
  71. package/dist/FieldMessage-OeP_xSUE.js.map +1 -0
  72. package/dist/FieldMessage.js +1 -1
  73. package/dist/{Helper-PNGm_U2X.js → Helper-B2UrgJvr.js} +2 -2
  74. package/dist/{Helper-PNGm_U2X.js.map → Helper-B2UrgJvr.js.map} +1 -1
  75. package/dist/{InputMask-Ds0W2fKy.js → InputMask-B7ZnJoR5.js} +2 -2
  76. package/dist/{InputMask-Ds0W2fKy.js.map → InputMask-B7ZnJoR5.js.map} +1 -1
  77. package/dist/InputMask.js +1 -1
  78. package/dist/{ListView-MMmJDM--.js → ListView-CN8zu-cq.js} +2 -2
  79. package/dist/{ListView-MMmJDM--.js.map → ListView-CN8zu-cq.js.map} +1 -1
  80. package/dist/ListView.js +1 -1
  81. package/dist/{Menu-3LIfRdTk.js → Menu-CpRnsr0v.js} +2 -2
  82. package/dist/{Menu-3LIfRdTk.js.map → Menu-CpRnsr0v.js.map} +1 -1
  83. package/dist/Menu.js +1 -1
  84. package/dist/MultiSelectField.js +1 -1
  85. package/dist/{MultiSelectFieldSync-Bey99LzJ.js → MultiSelectFieldSync-BnPzYM72.js} +876 -255
  86. package/dist/MultiSelectFieldSync-BnPzYM72.js.map +1 -0
  87. package/dist/{NumberField-CDkEUfXW.js → NumberField-ecubQsaf.js} +4 -4
  88. package/dist/{NumberField-CDkEUfXW.js.map → NumberField-ecubQsaf.js.map} +1 -1
  89. package/dist/NumberField.js +1 -1
  90. package/dist/{Page-BVxybI-j.js → Page-qOkG6psI.js} +7 -7
  91. package/dist/{Page-BVxybI-j.js.map → Page-qOkG6psI.js.map} +1 -1
  92. package/dist/Page.js +1 -1
  93. package/dist/{Pagination-DIatYUXX.js → Pagination-BuiyhZlJ.js} +14 -7
  94. package/dist/Pagination-BuiyhZlJ.js.map +1 -0
  95. package/dist/Pagination.js +1 -1
  96. package/dist/{Popover-4C5IVk8T.js → Popover-CYWYCj7l.js} +2 -2
  97. package/dist/{Popover-4C5IVk8T.js.map → Popover-CYWYCj7l.js.map} +1 -1
  98. package/dist/Popover.js +1 -1
  99. package/dist/{ProgressBar-BGwp-qnf.js → ProgressBar-CBhVZIzK.js} +2 -2
  100. package/dist/{ProgressBar-BGwp-qnf.js.map → ProgressBar-CBhVZIzK.js.map} +1 -1
  101. package/dist/ProgressBar.js +1 -1
  102. package/dist/{Radio-D7hNws2b.js → Radio-BMFwnzyz.js} +2 -2
  103. package/dist/{Radio-D7hNws2b.js.map → Radio-BMFwnzyz.js.map} +1 -1
  104. package/dist/{Radio-BRcpSu-d.js → Radio-DtYoRq3m.js} +3 -3
  105. package/dist/{Radio-BRcpSu-d.js.map → Radio-DtYoRq3m.js.map} +1 -1
  106. package/dist/Radio.js +1 -1
  107. package/dist/{SearchField-CoeaOip5.js → SearchField-CtdtcrVV.js} +12 -4
  108. package/dist/SearchField-CtdtcrVV.js.map +1 -0
  109. package/dist/SearchField.js +1 -1
  110. package/dist/{SelectCard-Bag44PmE.js → SelectCard-yWBNnm7t.js} +32 -8
  111. package/dist/SelectCard-yWBNnm7t.js.map +1 -0
  112. package/dist/SelectCard.js +1 -1
  113. package/dist/SelectField.js +1 -1
  114. package/dist/SelectFieldSync-DCrafdbx.js +1248 -0
  115. package/dist/SelectFieldSync-DCrafdbx.js.map +1 -0
  116. package/dist/{SelectTrigger-DgsvUfyl.js → SelectTrigger-Cs5CGc4D.js} +2 -2
  117. package/dist/{SelectTrigger-DgsvUfyl.js.map → SelectTrigger-Cs5CGc4D.js.map} +1 -1
  118. package/dist/SelectTrigger.js +1 -1
  119. package/dist/{SelectTriggerBase-OxfNqdIq.js → SelectTriggerBase-Cs827tDp.js} +3 -3
  120. package/dist/{SelectTriggerBase-OxfNqdIq.js.map → SelectTriggerBase-Cs827tDp.js.map} +1 -1
  121. package/dist/{Stepper-D8lkCP8Y.js → Stepper-CzVKDg-N.js} +2 -2
  122. package/dist/{Stepper-D8lkCP8Y.js.map → Stepper-CzVKDg-N.js.map} +1 -1
  123. package/dist/Stepper.js +1 -1
  124. package/dist/{Switch-D0zwZCg4.js → Switch-CEmjmSiL.js} +2 -2
  125. package/dist/{Switch-D0zwZCg4.js.map → Switch-CEmjmSiL.js.map} +1 -1
  126. package/dist/Switch.js +1 -1
  127. package/dist/{Tab-CeXt6A_D.js → Tab-DXivEqur.js} +47 -6
  128. package/dist/Tab-DXivEqur.js.map +1 -0
  129. package/dist/Tab.js +1 -1
  130. package/dist/Table.js +1 -1
  131. package/dist/{TextField-Dfzn2HeL.js → TextField-D9VWORek.js} +2 -2
  132. package/dist/{TextField-Dfzn2HeL.js.map → TextField-D9VWORek.js.map} +1 -1
  133. package/dist/{TextField-BycenT6H.js → TextField-atI4M79b.js} +3 -3
  134. package/dist/{TextField-BycenT6H.js.map → TextField-atI4M79b.js.map} +1 -1
  135. package/dist/TextField.css +29 -25
  136. package/dist/TextField.js +1 -1
  137. package/dist/TextField.module-BP-hDP5m.js +22 -0
  138. package/dist/TextField.module-BP-hDP5m.js.map +1 -0
  139. package/dist/{Textarea-BwbwJP6z.js → Textarea-D-kPIsIN.js} +2 -2
  140. package/dist/{Textarea-BwbwJP6z.js.map → Textarea-D-kPIsIN.js.map} +1 -1
  141. package/dist/Textarea.js +1 -1
  142. package/dist/{TimeField-B0WSzSfJ.js → TimeField-DREFzFkw.js} +3 -3
  143. package/dist/{TimeField-B0WSzSfJ.js.map → TimeField-DREFzFkw.js.map} +1 -1
  144. package/dist/TimeField.js +1 -1
  145. package/dist/Toast.js +2 -2
  146. package/dist/{Toaster-9Q_yaKGu.js → Toaster-B652KIzq.js} +4 -4
  147. package/dist/{Toaster-9Q_yaKGu.js.map → Toaster-B652KIzq.js.map} +1 -1
  148. package/dist/{Toaster-DHo8dnWH.js → Toaster-Bisc1mlh.js} +2 -2
  149. package/dist/{Toaster-DHo8dnWH.js.map → Toaster-Bisc1mlh.js.map} +1 -1
  150. package/dist/{Toolbar-CVOenuCF.js → Toolbar-jfZ-CupZ.js} +77 -63
  151. package/dist/Toolbar-jfZ-CupZ.js.map +1 -0
  152. package/dist/Toolbar.css +37 -55
  153. package/dist/Toolbar.js +1 -1
  154. package/dist/{YearlessDateInputWithPicker-ztozRk-X.js → YearlessDateInputWithPicker-mW5KykHZ.js} +3 -3
  155. package/dist/{YearlessDateInputWithPicker-ztozRk-X.js.map → YearlessDateInputWithPicker-mW5KykHZ.js.map} +1 -1
  156. package/dist/beta/components/MultiSelectField/MultiSelectField.d.ts +1 -10
  157. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +5 -0
  158. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldInput.d.ts +0 -2
  159. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldList.d.ts +3 -7
  160. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +6 -0
  161. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldTrigger.d.ts +30 -0
  162. package/dist/beta/components/MultiSelectField/internal/types.d.ts +67 -0
  163. package/dist/beta/components/MultiSelectField/internal/useChipLayout.d.ts +19 -0
  164. package/dist/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +1 -2
  165. package/dist/beta/components/MultiSelectField/internal/useSelectModeMultiple.d.ts +40 -0
  166. package/dist/beta/components/MultiSelectField/internal/useToggleSelection.d.ts +21 -0
  167. package/dist/beta/components/MultiSelectField/types.d.ts +7 -0
  168. package/dist/beta/components/SelectField/internal/FieldDialog/FieldDialog.d.ts +1 -1
  169. package/dist/beta/components/SelectField/internal/FieldListBase.d.ts +3 -4
  170. package/dist/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +6 -0
  171. package/dist/beta/components/SelectField/internal/SelectFieldInput.d.ts +0 -2
  172. package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +4 -3
  173. package/dist/beta/components/SelectField/internal/SelectFieldList.d.ts +3 -7
  174. package/dist/beta/components/SelectField/internal/SelectFieldListItem.d.ts +2 -4
  175. package/dist/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +6 -0
  176. package/dist/beta/components/SelectField/internal/SelectFieldTrigger.d.ts +27 -0
  177. package/dist/beta/components/SelectField/internal/buildDownshiftItems.d.ts +22 -0
  178. package/dist/beta/components/SelectField/internal/types.d.ts +57 -0
  179. package/dist/beta/components/SelectField/internal/useCombo.d.ts +1 -5
  180. package/dist/beta/components/SelectField/internal/useProcessedOptions.d.ts +19 -0
  181. package/dist/beta/components/SelectField/internal/useSelectMode.d.ts +34 -0
  182. package/dist/beta/components/SelectField/types.d.ts +7 -0
  183. package/dist/beta/components/Table/DataTable/DataTable.d.ts +21 -2
  184. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableBooleanCell.d.ts +7 -0
  185. package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +4 -0
  186. package/dist/beta/components/Table/DataTable/types.d.ts +20 -0
  187. package/dist/beta/components/Table/createColumnHelper.d.ts +18 -7
  188. package/dist/beta/components/Table/types.d.ts +44 -3
  189. package/dist/beta/components/Toolbar/Toolbar.d.ts +17 -7
  190. package/dist/beta/components/Toolbar/ToolbarButton.d.ts +0 -1
  191. package/dist/beta/components/Toolbar/ToolbarButtonLink.d.ts +0 -1
  192. package/dist/beta/components/Toolbar/ToolbarButtonToggle.d.ts +0 -1
  193. package/dist/beta/components/Toolbar/ToolbarSearchField.d.ts +2 -3
  194. package/dist/beta/components/Toolbar/ToolbarSelect.d.ts +0 -1
  195. package/dist/beta/components/Toolbar/internal/{ToolbarOverflowContext.d.ts → ToolbarContext.d.ts} +14 -5
  196. package/dist/beta/components/Toolbar/internal/utils/test.d.ts +5 -3
  197. package/dist/beta/components/Toolbar/types.d.ts +5 -1
  198. package/dist/beta.js +7 -7
  199. package/dist/components/ButtonLink/ButtonLink.d.ts +3 -3
  200. package/dist/components/Pagination/Pagination.d.ts +3 -0
  201. package/dist/components/Pagination/internal/PaginationItemsPerPageMenu.d.ts +5 -0
  202. package/dist/components/SearchField/SearchField.d.ts +8 -26
  203. package/dist/components/SearchField/internal/SearchField.d.ts +73 -0
  204. package/dist/components/Tab/Tab.d.ts +41 -2
  205. package/dist/components/Tab/internal/TabContext.d.ts +1 -1
  206. package/dist/components/Toolbar/Toolbar.d.ts +11 -5
  207. package/dist/components/Toolbar/ToolbarButton.d.ts +0 -1
  208. package/dist/components/Toolbar/ToolbarButtonLink.d.ts +0 -1
  209. package/dist/components/Toolbar/ToolbarButtonToggle.d.ts +0 -1
  210. package/dist/components/Toolbar/ToolbarSelect.d.ts +0 -1
  211. package/dist/components/Toolbar/internal/{ToolbarOverflowContext.d.ts → ToolbarContext.d.ts} +14 -5
  212. package/dist/components/Toolbar/internal/utils/test.d.ts +5 -3
  213. package/dist/components/Toolbar/types.d.ts +5 -1
  214. package/dist/{index-DFvIVS57.js → index-ClUtwV8V.js} +2 -2
  215. package/dist/{index-DFvIVS57.js.map → index-ClUtwV8V.js.map} +1 -1
  216. package/dist/index.js +81 -70
  217. package/dist/index.js.map +1 -1
  218. package/dist/index2.css +17 -23
  219. package/dist/internal/components/ManualTestLayout/ManualTestLayout.d.ts +16 -0
  220. package/dist/internal/components/ManualTestLayout/index.d.ts +1 -0
  221. package/dist/internal/components/index.d.ts +1 -0
  222. package/dist/{match-sorter.esm-B3vwg1-X.js → match-sorter.esm-adzV1NDp.js} +2 -2
  223. package/dist/{match-sorter.esm-B3vwg1-X.js.map → match-sorter.esm-adzV1NDp.js.map} +1 -1
  224. package/dist/{useDrilldown-jbU4Cs5l.js → useDrilldown-hUxMOdnz.js} +2 -2
  225. package/dist/{useDrilldown-jbU4Cs5l.js.map → useDrilldown-hUxMOdnz.js.map} +1 -1
  226. package/package.json +5 -4
  227. package/dist/Button.module-Ck7VrMqw.js +0 -26
  228. package/dist/Button.module-Ck7VrMqw.js.map +0 -1
  229. package/dist/ButtonLink-CRlyK750.js.map +0 -1
  230. package/dist/DataTable-D30sE1Xt.js.map +0 -1
  231. package/dist/FieldDialog-CAuhkCZY.js.map +0 -1
  232. package/dist/FieldMessage-DS0COrjp.js +0 -132
  233. package/dist/FieldMessage-DS0COrjp.js.map +0 -1
  234. package/dist/MultiSelectFieldSync-Bey99LzJ.js.map +0 -1
  235. package/dist/Pagination-DIatYUXX.js.map +0 -1
  236. package/dist/SearchField-CoeaOip5.js.map +0 -1
  237. package/dist/SelectCard-Bag44PmE.js.map +0 -1
  238. package/dist/SelectFieldSync-CigqXq3T.js +0 -763
  239. package/dist/SelectFieldSync-CigqXq3T.js.map +0 -1
  240. package/dist/Tab-CeXt6A_D.js.map +0 -1
  241. package/dist/TextField.module-pD1felN8.js +0 -20
  242. package/dist/TextField.module-pD1felN8.js.map +0 -1
  243. package/dist/Toolbar-CVOenuCF.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # @servicetitan/anvil2
2
2
 
3
+ ## 2.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#2082](https://github.com/servicetitan/hammer/pull/2082) [`9736150`](https://github.com/servicetitan/hammer/commit/9736150539b2ed46a08808b19f9974b7f6bbf667) Thanks [@ericag1985](https://github.com/ericag1985)! - [Tab] Add `index` and `onIndexChange` props for controlled state
8
+
9
+ - [#2080](https://github.com/servicetitan/hammer/pull/2080) [`0a7d8c7`](https://github.com/servicetitan/hammer/commit/0a7d8c75028384f1ced3cc1051b68b4badc30163) Thanks [@stadevosyan](https://github.com/stadevosyan)! - [Pagination] Add `itemsPerPageLabel` prop to customize the label displayed before the items-per-page selector (defaults to "Rows per page")
10
+
11
+ ### Patch Changes
12
+
13
+ - [#2076](https://github.com/servicetitan/hammer/pull/2076) [`623398f`](https://github.com/servicetitan/hammer/commit/623398f22d6c390a049c0968c4340dc82729331e) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** [DataTable] Add `boolean` edit mode for inline editing of boolean cell values
14
+
15
+ - [#2084](https://github.com/servicetitan/hammer/pull/2084) [`edae603`](https://github.com/servicetitan/hammer/commit/edae60309b49c18e87ea2b3d3c02c915124a21d5) Thanks [@rgdelato](https://github.com/rgdelato)! - [DataTable] Add `disableExpandAll` and `disableSelectAll` props
16
+
17
+ - [#2082](https://github.com/servicetitan/hammer/pull/2082) [`9736150`](https://github.com/servicetitan/hammer/commit/9736150539b2ed46a08808b19f9974b7f6bbf667) Thanks [@ericag1985](https://github.com/ericag1985)! - [Tab] Fix `aria-label` and `aria-labelledby` on `Tab.List` not reaching the `role="tablist"` element
18
+
19
+ - [#2076](https://github.com/servicetitan/hammer/pull/2076) [`623398f`](https://github.com/servicetitan/hammer/commit/623398f22d6c390a049c0968c4340dc82729331e) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** [DataTable] Remove boolean value support from `"text"` edit mode in favor of the new `"boolean"` edit mode
20
+
21
+ ## 2.3.0
22
+
23
+ ### Minor Changes
24
+
25
+ - [#2011](https://github.com/servicetitan/hammer/pull/2011) [`4d21c97`](https://github.com/servicetitan/hammer/commit/4d21c97eb25b648cd14909ee3980944515739150) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - **BETA** [Toolbar] Add size prop and make "xsmall" the default size.
26
+
27
+ - [#2011](https://github.com/servicetitan/hammer/pull/2011) [`4d21c97`](https://github.com/servicetitan/hammer/commit/4d21c97eb25b648cd14909ee3980944515739150) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - [Toolbar] Add size prop and make "xsmall" the default size.
28
+
29
+ ### Patch Changes
30
+
31
+ - [#2060](https://github.com/servicetitan/hammer/pull/2060) [`8e4cea6`](https://github.com/servicetitan/hammer/commit/8e4cea6a5fdc178edae27518450f1204464831eb) Thanks [@rgdelato](https://github.com/rgdelato)! - [DataTable] Add `emptyState` prop
32
+
33
+ - [#2012](https://github.com/servicetitan/hammer/pull/2012) [`656c287`](https://github.com/servicetitan/hammer/commit/656c2870857bb4d88939308e5b567cb24ca8496b) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** [SelectField, MultiSelectField] Add `disableSearch` prop which will remove text entry, allowing the components to function as select only.
34
+
35
+ - [#2060](https://github.com/servicetitan/hammer/pull/2060) [`8e4cea6`](https://github.com/servicetitan/hammer/commit/8e4cea6a5fdc178edae27518450f1204464831eb) Thanks [@rgdelato](https://github.com/rgdelato)! - [Illustrations] Add new `@servicetitan/anvil2-illustrations` package
36
+
37
+ - [#1872](https://github.com/servicetitan/hammer/pull/1872) [`f64e906`](https://github.com/servicetitan/hammer/commit/f64e906c441cb35cd37848712970e189674559b3) Thanks [@claude](https://github.com/apps/claude)! - [SelectCard] Fix `checked` and `defaultChecked` state when used in `SelectCard.Group`
38
+
3
39
  ## 2.2.0
4
40
 
5
41
  ### Minor Changes
@@ -6,7 +6,7 @@ import { S as SvgWarning } from './warning-c4Wj1rI4.js';
6
6
  import { S as SvgError } from './error-DR_wWdYY.js';
7
7
  import { S as SvgCheckCircle } from './check_circle-CM0ukqXv.js';
8
8
  import { I as Icon } from './Icon-Bcil6aBo.js';
9
- import { B as Button } from './Button-l7pTJdPc.js';
9
+ import { B as Button } from './Button-DrNDkO2f.js';
10
10
  import { c as cx } from './index-SvGbrGuT.js';
11
11
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-loxbyklF.js';
12
12
  import { useTrackingId } from './useTrackingId.js';
@@ -110,4 +110,4 @@ const Alert = forwardRef(
110
110
  Alert.displayName = "Alert";
111
111
 
112
112
  export { Alert as A };
113
- //# sourceMappingURL=Alert-DXoEusod.js.map
113
+ //# sourceMappingURL=Alert-D9mBPs6z.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Alert-DXoEusod.js","sources":["../src/components/Alert/Alert.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, MouseEvent, Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport {\n DataTrackingId,\n LayoutUtilProps,\n OnCloseProps,\n Status,\n Svg,\n} from \"../../types\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport Info from \"@servicetitan/hammer-icon/mdi/round/info.svg\";\nimport Warning from \"@servicetitan/hammer-icon/mdi/round/warning.svg\";\nimport Danger from \"@servicetitan/hammer-icon/mdi/round/error.svg\";\nimport Success from \"@servicetitan/hammer-icon/mdi/round/check_circle.svg\";\nimport Icon from \"../Icon\";\nimport Button from \"../Button\";\n\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./Alert.module.scss\";\n\n/**\n * Props for the Alert component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n * @extends OnCloseProps\n */\nexport type AlertProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps &\n OnCloseProps & {\n /**\n * The visual style of an alert.\n * @default info\n */\n status?: Status;\n /**\n * The title text displayed in the alert.\n */\n title: string;\n } &\n /**\n * Data tracking id\n */\n DataTrackingId;\n\nconst statusIconMap: Record<NonNullable<AlertProps[\"status\"]>, Svg> = {\n info: Info,\n success: Success,\n warning: Warning,\n danger: Danger,\n};\n\n/**\n * Alert component for displaying important messages to users.\n *\n * Features:\n * - Supports different visual styles (info, success, warning, danger)\n * - Optional close button for dismissible alerts\n * - Customizable title and content\n * - Accessible with proper ARIA roles\n * - Includes status-specific icons\n * - Supports layout utilities for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Alert\n * title=\"System Update\"\n * onClose={() => console.log('Alert closed')}\n * >\n * The system will be updated tonight.\n * </Alert>\n *\n * @example\n * <Alert\n * status=\"success\"\n * title=\"Operation Complete\"\n * >\n * Your changes have been saved successfully.\n * </Alert>\n */\nexport const Alert = forwardRef(\n (props: AlertProps, ref: Ref<HTMLDivElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n children,\n className,\n title,\n status = \"info\",\n style,\n onClose,\n ...rest\n } = componentProps;\n\n const data = {\n title,\n status,\n };\n\n const trackingId = useTrackingId({\n name: \"Alert\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const alertCx = cx(styles[\"alert\"], className, {\n [styles[\"success\"]]: status === \"success\",\n [styles[\"warning\"]]: status === \"warning\",\n [styles[\"danger\"]]: status === \"danger\",\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n data-tracking-id={trackingId}\n data-anv=\"alert\"\n role=\"status\"\n className={alertCx}\n style={styleCombined}\n {...rest}\n ref={ref}\n >\n <div className={styles[\"top\"]}>\n <span className={styles[\"title-container\"]}>\n {\n <Icon\n size=\"large\"\n className={styles[\"status-icon\"]}\n svg={statusIconMap[status ?? \"info\"]}\n />\n }\n {title}\n </span>\n {!!onClose && (\n <span className={styles[\"close-container\"]}>\n <Button\n icon={Close}\n size=\"small\"\n appearance=\"ghost\"\n className={styles[\"close-button\"]}\n onClick={(e: MouseEvent<HTMLButtonElement>) => onClose(e)}\n aria-label={`Dismiss ${status} alert`}\n />\n </span>\n )}\n </div>\n {children && <div className={styles[\"content\"]}>{children}</div>}\n </div>\n );\n },\n);\n\nAlert.displayName = \"Alert\";\n"],"names":["Info","Success","Warning","Danger","Close"],"mappings":"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"}
1
+ {"version":3,"file":"Alert-D9mBPs6z.js","sources":["../src/components/Alert/Alert.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, MouseEvent, Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport {\n DataTrackingId,\n LayoutUtilProps,\n OnCloseProps,\n Status,\n Svg,\n} from \"../../types\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport Info from \"@servicetitan/hammer-icon/mdi/round/info.svg\";\nimport Warning from \"@servicetitan/hammer-icon/mdi/round/warning.svg\";\nimport Danger from \"@servicetitan/hammer-icon/mdi/round/error.svg\";\nimport Success from \"@servicetitan/hammer-icon/mdi/round/check_circle.svg\";\nimport Icon from \"../Icon\";\nimport Button from \"../Button\";\n\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./Alert.module.scss\";\n\n/**\n * Props for the Alert component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n * @extends OnCloseProps\n */\nexport type AlertProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps &\n OnCloseProps & {\n /**\n * The visual style of an alert.\n * @default info\n */\n status?: Status;\n /**\n * The title text displayed in the alert.\n */\n title: string;\n } &\n /**\n * Data tracking id\n */\n DataTrackingId;\n\nconst statusIconMap: Record<NonNullable<AlertProps[\"status\"]>, Svg> = {\n info: Info,\n success: Success,\n warning: Warning,\n danger: Danger,\n};\n\n/**\n * Alert component for displaying important messages to users.\n *\n * Features:\n * - Supports different visual styles (info, success, warning, danger)\n * - Optional close button for dismissible alerts\n * - Customizable title and content\n * - Accessible with proper ARIA roles\n * - Includes status-specific icons\n * - Supports layout utilities for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Alert\n * title=\"System Update\"\n * onClose={() => console.log('Alert closed')}\n * >\n * The system will be updated tonight.\n * </Alert>\n *\n * @example\n * <Alert\n * status=\"success\"\n * title=\"Operation Complete\"\n * >\n * Your changes have been saved successfully.\n * </Alert>\n */\nexport const Alert = forwardRef(\n (props: AlertProps, ref: Ref<HTMLDivElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n children,\n className,\n title,\n status = \"info\",\n style,\n onClose,\n ...rest\n } = componentProps;\n\n const data = {\n title,\n status,\n };\n\n const trackingId = useTrackingId({\n name: \"Alert\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const alertCx = cx(styles[\"alert\"], className, {\n [styles[\"success\"]]: status === \"success\",\n [styles[\"warning\"]]: status === \"warning\",\n [styles[\"danger\"]]: status === \"danger\",\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n data-tracking-id={trackingId}\n data-anv=\"alert\"\n role=\"status\"\n className={alertCx}\n style={styleCombined}\n {...rest}\n ref={ref}\n >\n <div className={styles[\"top\"]}>\n <span className={styles[\"title-container\"]}>\n {\n <Icon\n size=\"large\"\n className={styles[\"status-icon\"]}\n svg={statusIconMap[status ?? \"info\"]}\n />\n }\n {title}\n </span>\n {!!onClose && (\n <span className={styles[\"close-container\"]}>\n <Button\n icon={Close}\n size=\"small\"\n appearance=\"ghost\"\n className={styles[\"close-button\"]}\n onClick={(e: MouseEvent<HTMLButtonElement>) => onClose(e)}\n aria-label={`Dismiss ${status} alert`}\n />\n </span>\n )}\n </div>\n {children && <div className={styles[\"content\"]}>{children}</div>}\n </div>\n );\n },\n);\n\nAlert.displayName = \"Alert\";\n"],"names":["Info","Success","Warning","Danger","Close"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,MAAM,aAAA,GAAgE;AAAA,EACpE,IAAA,EAAMA,OAAA;AAAA,EACN,OAAA,EAASC,cAAA;AAAA,EACT,OAAA,EAASC,UAAA;AAAA,EACT,MAAA,EAAQC;AACV,CAAA;AA8BO,MAAM,KAAA,GAAQ,UAAA;AAAA,EACnB,CAAC,OAAmB,GAAA,KAA6B;AAC/C,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA,GAAS,MAAA;AAAA,MACT,KAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,KAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,OAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,OAAA,GAAU,EAAA,CAAG,MAAA,CAAO,OAAO,GAAG,SAAA,EAAW;AAAA,MAC7C,CAAC,MAAA,CAAO,SAAS,CAAC,GAAG,MAAA,KAAW,SAAA;AAAA,MAChC,CAAC,MAAA,CAAO,SAAS,CAAC,GAAG,MAAA,KAAW,SAAA;AAAA,MAChC,CAAC,MAAA,CAAO,QAAQ,CAAC,GAAG,MAAA,KAAW;AAAA,KAChC,CAAA;AAED,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAkB,UAAA;AAAA,QAClB,UAAA,EAAS,OAAA;AAAA,QACT,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,OAAA;AAAA,QACX,KAAA,EAAO,aAAA;AAAA,QACN,GAAG,IAAA;AAAA,QACJ,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,KAAK,CAAA,EAC1B,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,iBAAiB,CAAA,EAErC,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,IAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,OAAA;AAAA,kBACL,SAAA,EAAW,OAAO,aAAa,CAAA;AAAA,kBAC/B,GAAA,EAAK,aAAA,CAAc,MAAA,IAAU,MAAM;AAAA;AAAA,eACrC;AAAA,cAED;AAAA,aAAA,EACH,CAAA;AAAA,YACC,CAAC,CAAC,OAAA,oBACD,GAAA,CAAC,UAAK,SAAA,EAAW,MAAA,CAAO,iBAAiB,CAAA,EACvC,QAAA,kBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAMC,QAAA;AAAA,gBACN,IAAA,EAAK,OAAA;AAAA,gBACL,UAAA,EAAW,OAAA;AAAA,gBACX,SAAA,EAAW,OAAO,cAAc,CAAA;AAAA,gBAChC,OAAA,EAAS,CAAC,CAAA,KAAqC,OAAA,CAAQ,CAAC,CAAA;AAAA,gBACxD,YAAA,EAAY,WAAW,MAAM,CAAA,MAAA;AAAA;AAAA,aAC/B,EACF;AAAA,WAAA,EAEJ,CAAA;AAAA,UACC,4BAAY,GAAA,CAAC,KAAA,EAAA,EAAI,WAAW,MAAA,CAAO,SAAS,GAAI,QAAA,EAAS;AAAA;AAAA;AAAA,KAC5D;AAAA,EAEJ;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;;;;"}
package/dist/Alert.js CHANGED
@@ -1,2 +1,2 @@
1
- export { A as Alert, A as default } from './Alert-DXoEusod.js';
1
+ export { A as Alert, A as default } from './Alert-D9mBPs6z.js';
2
2
  //# sourceMappingURL=Alert.js.map
@@ -5,7 +5,7 @@ import { S as SvgInfo } from './info-CYpG6tcI.js';
5
5
  import { S as SvgWarning } from './warning-c4Wj1rI4.js';
6
6
  import { S as SvgError } from './error-DR_wWdYY.js';
7
7
  import { S as SvgCheckCircle } from './check_circle-CM0ukqXv.js';
8
- import { B as Button } from './Button-l7pTJdPc.js';
8
+ import { B as Button } from './Button-DrNDkO2f.js';
9
9
  import { I as Icon } from './Icon-Bcil6aBo.js';
10
10
  import { c as cx } from './index-SvGbrGuT.js';
11
11
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-loxbyklF.js';
@@ -106,4 +106,4 @@ const Announcement = forwardRef(
106
106
  Announcement.displayName = "Announcement";
107
107
 
108
108
  export { Announcement as A };
109
- //# sourceMappingURL=Announcement-SAypScAu.js.map
109
+ //# sourceMappingURL=Announcement-B34cD6BC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Announcement-SAypScAu.js","sources":["../src/components/Announcement/Announcement.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, MouseEvent, Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport {\n DataTrackingId,\n LayoutUtilProps,\n OnCloseProps,\n Status,\n Svg,\n} from \"../../types\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport Info from \"@servicetitan/hammer-icon/mdi/round/info.svg\";\nimport Warning from \"@servicetitan/hammer-icon/mdi/round/warning.svg\";\nimport Danger from \"@servicetitan/hammer-icon/mdi/round/error.svg\";\nimport Success from \"@servicetitan/hammer-icon/mdi/round/check_circle.svg\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport Button from \"../Button\";\nimport Icon from \"../Icon\";\n\nimport cx from \"classnames\";\nimport styles from \"./Announcement.module.scss\";\n\n/**\n * Props for the Announcement component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n * @extends OnCloseProps\n */\nexport type AnnouncementProps = ComponentPropsWithoutRef<\"div\"> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> &\n OnCloseProps & {\n /**\n * The visual style of the announcement.\n * @default info\n */\n status?: Status;\n /**\n * The title text displayed in the announcement.\n */\n title: string;\n } &\n /**\n * Data tracking id\n */\n DataTrackingId;\n\nconst statusIconMap: Record<NonNullable<AnnouncementProps[\"status\"]>, Svg> = {\n info: Info,\n success: Success,\n warning: Warning,\n danger: Danger,\n};\n\n/**\n * Announcement component for displaying important messages to users.\n *\n * Features:\n * - Supports different visual styles (info, success, warning, danger)\n * - Optional close button for dismissible announcements\n * - Customizable title and content\n * - Accessible with proper ARIA roles\n * - Includes status-specific icons\n * - Supports layout utilities for positioning and spacing\n * - Includes data tracking capabilities\n *\n * @example\n * <Announcement\n * title=\"New Feature\"\n * onClose={() => console.log('Announcement closed')}\n * >\n * Check out our latest feature!\n * </Announcement>\n *\n * @example\n * <Announcement\n * status=\"warning\"\n * title=\"Maintenance Notice\"\n * >\n * Scheduled maintenance will begin in 30 minutes.\n * </Announcement>\n */\nexport const Announcement = forwardRef(\n (props: AnnouncementProps, ref: Ref<HTMLDivElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n className,\n title,\n status = \"info\",\n children,\n style,\n onClose,\n ...rest\n } = componentProps;\n\n const data = {\n title,\n status,\n };\n\n const trackingId = useTrackingId({\n name: \"Announcement\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const AnnouncementCx = cx(styles[\"announcement\"], className, {\n [styles[\"success\"]]: status === \"success\",\n [styles[\"warning\"]]: status === \"warning\",\n [styles[\"danger\"]]: status === \"danger\",\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n data-tracking-id={trackingId}\n role=\"status\"\n className={AnnouncementCx}\n data-anv=\"announcement\"\n style={styleCombined}\n {...rest}\n ref={ref}\n >\n <span className={styles[\"title-container\"]}>\n <Icon\n size=\"large\"\n className={styles[\"status-icon\"]}\n svg={statusIconMap[status]}\n />\n\n <span className={styles[\"title\"]}>{title}</span>\n </span>\n\n {children}\n\n {onClose ? (\n <span className={styles[\"close-container\"]}>\n <Button\n icon={Close}\n size=\"small\"\n appearance=\"ghost\"\n className={styles[\"close-button\"]}\n onClick={(e: MouseEvent<HTMLButtonElement>) => onClose(e)}\n aria-label={`Dismiss ${status} announcement`}\n />\n </span>\n ) : null}\n </div>\n );\n },\n);\n\nAnnouncement.displayName = \"Announcement\";\n"],"names":["Info","Success","Warning","Danger","Close"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,MAAM,aAAA,GAAuE;AAAA,EAC3E,IAAA,EAAMA,OAAA;AAAA,EACN,OAAA,EAASC,cAAA;AAAA,EACT,OAAA,EAASC,UAAA;AAAA,EACT,MAAA,EAAQC;AACV,CAAA;AA8BO,MAAM,YAAA,GAAe,UAAA;AAAA,EAC1B,CAAC,OAA0B,GAAA,KAA6B;AACtD,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AAEjE,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA,GAAS,MAAA;AAAA,MACT,QAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,KAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,cAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,cAAA,GAAiB,EAAA,CAAG,MAAA,CAAO,cAAc,GAAG,SAAA,EAAW;AAAA,MAC3D,CAAC,MAAA,CAAO,SAAS,CAAC,GAAG,MAAA,KAAW,SAAA;AAAA,MAChC,CAAC,MAAA,CAAO,SAAS,CAAC,GAAG,MAAA,KAAW,SAAA;AAAA,MAChC,CAAC,MAAA,CAAO,QAAQ,CAAC,GAAG,MAAA,KAAW;AAAA,KAChC,CAAA;AAED,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAkB,UAAA;AAAA,QAClB,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,cAAA;AAAA,QACX,UAAA,EAAS,cAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACN,GAAG,IAAA;AAAA,QACJ,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,iBAAiB,CAAA,EACvC,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,IAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,OAAA;AAAA,gBACL,SAAA,EAAW,OAAO,aAAa,CAAA;AAAA,gBAC/B,GAAA,EAAK,cAAc,MAAM;AAAA;AAAA,aAC3B;AAAA,gCAEC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,OAAO,GAAI,QAAA,EAAA,KAAA,EAAM;AAAA,WAAA,EAC3C,CAAA;AAAA,UAEC,QAAA;AAAA,UAEA,0BACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,iBAAiB,CAAA,EACvC,QAAA,kBAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAMC,QAAA;AAAA,cACN,IAAA,EAAK,OAAA;AAAA,cACL,UAAA,EAAW,OAAA;AAAA,cACX,SAAA,EAAW,OAAO,cAAc,CAAA;AAAA,cAChC,OAAA,EAAS,CAAC,CAAA,KAAqC,OAAA,CAAQ,CAAC,CAAA;AAAA,cACxD,YAAA,EAAY,WAAW,MAAM,CAAA,aAAA;AAAA;AAAA,aAEjC,CAAA,GACE;AAAA;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;;;;"}
1
+ {"version":3,"file":"Announcement-B34cD6BC.js","sources":["../src/components/Announcement/Announcement.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, MouseEvent, Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport {\n DataTrackingId,\n LayoutUtilProps,\n OnCloseProps,\n Status,\n Svg,\n} from \"../../types\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport Info from \"@servicetitan/hammer-icon/mdi/round/info.svg\";\nimport Warning from \"@servicetitan/hammer-icon/mdi/round/warning.svg\";\nimport Danger from \"@servicetitan/hammer-icon/mdi/round/error.svg\";\nimport Success from \"@servicetitan/hammer-icon/mdi/round/check_circle.svg\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport Button from \"../Button\";\nimport Icon from \"../Icon\";\n\nimport cx from \"classnames\";\nimport styles from \"./Announcement.module.scss\";\n\n/**\n * Props for the Announcement component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n * @extends OnCloseProps\n */\nexport type AnnouncementProps = ComponentPropsWithoutRef<\"div\"> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> &\n OnCloseProps & {\n /**\n * The visual style of the announcement.\n * @default info\n */\n status?: Status;\n /**\n * The title text displayed in the announcement.\n */\n title: string;\n } &\n /**\n * Data tracking id\n */\n DataTrackingId;\n\nconst statusIconMap: Record<NonNullable<AnnouncementProps[\"status\"]>, Svg> = {\n info: Info,\n success: Success,\n warning: Warning,\n danger: Danger,\n};\n\n/**\n * Announcement component for displaying important messages to users.\n *\n * Features:\n * - Supports different visual styles (info, success, warning, danger)\n * - Optional close button for dismissible announcements\n * - Customizable title and content\n * - Accessible with proper ARIA roles\n * - Includes status-specific icons\n * - Supports layout utilities for positioning and spacing\n * - Includes data tracking capabilities\n *\n * @example\n * <Announcement\n * title=\"New Feature\"\n * onClose={() => console.log('Announcement closed')}\n * >\n * Check out our latest feature!\n * </Announcement>\n *\n * @example\n * <Announcement\n * status=\"warning\"\n * title=\"Maintenance Notice\"\n * >\n * Scheduled maintenance will begin in 30 minutes.\n * </Announcement>\n */\nexport const Announcement = forwardRef(\n (props: AnnouncementProps, ref: Ref<HTMLDivElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n className,\n title,\n status = \"info\",\n children,\n style,\n onClose,\n ...rest\n } = componentProps;\n\n const data = {\n title,\n status,\n };\n\n const trackingId = useTrackingId({\n name: \"Announcement\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const AnnouncementCx = cx(styles[\"announcement\"], className, {\n [styles[\"success\"]]: status === \"success\",\n [styles[\"warning\"]]: status === \"warning\",\n [styles[\"danger\"]]: status === \"danger\",\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n data-tracking-id={trackingId}\n role=\"status\"\n className={AnnouncementCx}\n data-anv=\"announcement\"\n style={styleCombined}\n {...rest}\n ref={ref}\n >\n <span className={styles[\"title-container\"]}>\n <Icon\n size=\"large\"\n className={styles[\"status-icon\"]}\n svg={statusIconMap[status]}\n />\n\n <span className={styles[\"title\"]}>{title}</span>\n </span>\n\n {children}\n\n {onClose ? (\n <span className={styles[\"close-container\"]}>\n <Button\n icon={Close}\n size=\"small\"\n appearance=\"ghost\"\n className={styles[\"close-button\"]}\n onClick={(e: MouseEvent<HTMLButtonElement>) => onClose(e)}\n aria-label={`Dismiss ${status} announcement`}\n />\n </span>\n ) : null}\n </div>\n );\n },\n);\n\nAnnouncement.displayName = \"Announcement\";\n"],"names":["Info","Success","Warning","Danger","Close"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,MAAM,aAAA,GAAuE;AAAA,EAC3E,IAAA,EAAMA,OAAA;AAAA,EACN,OAAA,EAASC,cAAA;AAAA,EACT,OAAA,EAASC,UAAA;AAAA,EACT,MAAA,EAAQC;AACV,CAAA;AA8BO,MAAM,YAAA,GAAe,UAAA;AAAA,EAC1B,CAAC,OAA0B,GAAA,KAA6B;AACtD,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AAEjE,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA,GAAS,MAAA;AAAA,MACT,QAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,KAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,cAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,cAAA,GAAiB,EAAA,CAAG,MAAA,CAAO,cAAc,GAAG,SAAA,EAAW;AAAA,MAC3D,CAAC,MAAA,CAAO,SAAS,CAAC,GAAG,MAAA,KAAW,SAAA;AAAA,MAChC,CAAC,MAAA,CAAO,SAAS,CAAC,GAAG,MAAA,KAAW,SAAA;AAAA,MAChC,CAAC,MAAA,CAAO,QAAQ,CAAC,GAAG,MAAA,KAAW;AAAA,KAChC,CAAA;AAED,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAkB,UAAA;AAAA,QAClB,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,cAAA;AAAA,QACX,UAAA,EAAS,cAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACN,GAAG,IAAA;AAAA,QACJ,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,iBAAiB,CAAA,EACvC,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,IAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,OAAA;AAAA,gBACL,SAAA,EAAW,OAAO,aAAa,CAAA;AAAA,gBAC/B,GAAA,EAAK,cAAc,MAAM;AAAA;AAAA,aAC3B;AAAA,gCAEC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,OAAO,GAAI,QAAA,EAAA,KAAA,EAAM;AAAA,WAAA,EAC3C,CAAA;AAAA,UAEC,QAAA;AAAA,UAEA,0BACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,iBAAiB,CAAA,EACvC,QAAA,kBAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAMC,QAAA;AAAA,cACN,IAAA,EAAK,OAAA;AAAA,cACL,UAAA,EAAW,OAAA;AAAA,cACX,SAAA,EAAW,OAAO,cAAc,CAAA;AAAA,cAChC,OAAA,EAAS,CAAC,CAAA,KAAqC,OAAA,CAAQ,CAAC,CAAA;AAAA,cACxD,YAAA,EAAY,WAAW,MAAM,CAAA,aAAA;AAAA;AAAA,aAEjC,CAAA,GACE;AAAA;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;;;;"}
@@ -1,2 +1,2 @@
1
- export { A as Announcement, A as default } from './Announcement-SAypScAu.js';
1
+ export { A as Announcement, A as default } from './Announcement-B34cD6BC.js';
2
2
  //# sourceMappingURL=Announcement.js.map
@@ -3,7 +3,7 @@ import { forwardRef } from 'react';
3
3
  import { I as Icon } from './Icon-Bcil6aBo.js';
4
4
  import { S as Spinner } from './Spinner-CpEm3Lud.js';
5
5
  import { c as cx } from './index-SvGbrGuT.js';
6
- import { s as styles } from './Button.module-Ck7VrMqw.js';
6
+ import { s as styles } from './Button.module-DwCq9XU0.js';
7
7
  import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
8
8
  import { useTrackingId } from './useTrackingId.js';
9
9
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-loxbyklF.js';
@@ -110,4 +110,4 @@ const Button = forwardRef(
110
110
  Button.displayName = "Button";
111
111
 
112
112
  export { Button as B };
113
- //# sourceMappingURL=Button-l7pTJdPc.js.map
113
+ //# sourceMappingURL=Button-DrNDkO2f.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button-l7pTJdPc.js","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import { ButtonAppearance, Size } from \"../../types\";\nimport { ComponentPropsWithoutRef, Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId, LayoutUtilProps } from \"../../types\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { childrenToString } from \"../../internal/functions\";\nimport Spinner from \"../Spinner\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./Button.module.scss\";\n\n/**\n * Props for the Button component\n * @extends Omit<ComponentPropsWithoutRef<\"button\">, \"children\">\n * @extends LayoutUtilProps\n */\nexport type ButtonProps = Omit<ComponentPropsWithoutRef<\"button\">, \"children\"> &\n LayoutUtilProps & {\n /**\n * The visual variant of the button.\n * @default secondary\n */\n appearance?: ButtonAppearance;\n\n /**\n * The size of the button.\n * @default medium\n */\n size?: Extract<Size, \"xsmall\" | \"small\" | \"medium\" | \"large\">;\n\n /**\n * The loading state of the button.\n * If true, it will show infinite state of the loading.\n * @default false\n */\n loading?: boolean;\n } & (\n | {\n children?: ComponentPropsWithoutRef<\"button\">[\"children\"];\n /**\n * The icons of the button.\n */\n icon?:\n | IconProps[\"svg\"]\n | {\n after: IconProps[\"svg\"];\n }\n | {\n before: IconProps[\"svg\"];\n };\n }\n | {\n children?: never;\n /**\n * The icon of the icon only button.\n */\n icon?: IconProps[\"svg\"];\n }\n ) &\n /**\n * Data tracking id\n */\n DataTrackingId;\n\n/**\n * Button component for triggering actions and user interactions.\n *\n * Features:\n * - Multiple visual appearances (primary, secondary, ghost, danger variants)\n * - Four size options (xsmall, small, medium, large)\n * - Loading state with spinner animation\n * - Icon support (before, after, or icon-only)\n * - Full accessibility support with ARIA attributes\n * - Supports layout utilities for positioning and spacing\n * - Automatic disabled state when loading\n * - Flexible content with text and/or icons\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Button appearance=\"primary\" size=\"medium\" onClick={() => console.log('clicked')}>\n * Click Me\n * </Button>\n */\nexport const Button = forwardRef(\n (props: ButtonProps, ref: Ref<HTMLButtonElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n children,\n className,\n appearance = \"secondary\",\n size = \"medium\",\n icon,\n loading = false,\n disabled,\n style,\n type = \"button\",\n ...rest\n } = componentProps;\n\n const data = {\n children: childrenToString(props.children),\n appearance,\n icon,\n size,\n type,\n };\n\n const trackingId = useTrackingId({\n name: \"Button\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const iconBefore = (icon: ButtonProps[\"icon\"]) => {\n if (typeof icon === \"object\" && \"before\" in icon) {\n return (\n <Icon\n className={styles[\"icon\"]}\n inherit\n aria-hidden\n svg={icon.before}\n />\n );\n }\n if (icon && typeof icon !== \"object\") {\n return (\n <Icon\n className={styles[\"icon\"]}\n inherit\n aria-hidden\n svg={icon}\n size={!children && !size.includes(\"small\") ? \"large\" : \"medium\"}\n />\n );\n }\n return;\n };\n\n const buttonClassNames = cx(className, styles[\"button\"], {\n [styles[\"appearance-primary\"]]: appearance === \"primary\",\n [styles[\"appearance-secondary\"]]: appearance === \"secondary\",\n [styles[\"appearance-ghost\"]]: appearance === \"ghost\",\n [styles[\"danger-secondary\"]]: appearance === \"danger-secondary\",\n [styles[\"danger-primary\"]]: appearance === \"danger\",\n [styles[\"size-xsmall\"]]: size === \"xsmall\",\n [styles[\"size-small\"]]: size === \"small\",\n [styles[\"size-medium\"]]: size === \"medium\",\n [styles[\"size-large\"]]: size === \"large\",\n [styles[\"type-icon\"]]: !children,\n [styles[\"loading\"]]: loading,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <button\n data-tracking-id={trackingId}\n className={buttonClassNames}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading ? true : undefined}\n data-anv=\"button\"\n style={styleCombined}\n ref={ref}\n {...rest}\n >\n {loading ? (\n <Spinner inherit size=\"small\" className={styles[\"loading-spinner\"]} />\n ) : icon ? (\n iconBefore(icon)\n ) : null}\n {children}\n {typeof icon === \"object\" && \"after\" in icon ? (\n <Icon\n className={styles[\"icon\"]}\n inherit\n aria-hidden\n svg={icon.after}\n />\n ) : null}\n </button>\n );\n },\n);\n\nButton.displayName = \"Button\";\n"],"names":["icon"],"mappings":"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"}
1
+ {"version":3,"file":"Button-DrNDkO2f.js","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import { ButtonAppearance, Size } from \"../../types\";\nimport { ComponentPropsWithoutRef, Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId, LayoutUtilProps } from \"../../types\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { childrenToString } from \"../../internal/functions\";\nimport Spinner from \"../Spinner\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./Button.module.scss\";\n\n/**\n * Props for the Button component\n * @extends Omit<ComponentPropsWithoutRef<\"button\">, \"children\">\n * @extends LayoutUtilProps\n */\nexport type ButtonProps = Omit<ComponentPropsWithoutRef<\"button\">, \"children\"> &\n LayoutUtilProps & {\n /**\n * The visual variant of the button.\n * @default secondary\n */\n appearance?: ButtonAppearance;\n\n /**\n * The size of the button.\n * @default medium\n */\n size?: Extract<Size, \"xsmall\" | \"small\" | \"medium\" | \"large\">;\n\n /**\n * The loading state of the button.\n * If true, it will show infinite state of the loading.\n * @default false\n */\n loading?: boolean;\n } & (\n | {\n children?: ComponentPropsWithoutRef<\"button\">[\"children\"];\n /**\n * The icons of the button.\n */\n icon?:\n | IconProps[\"svg\"]\n | {\n after: IconProps[\"svg\"];\n }\n | {\n before: IconProps[\"svg\"];\n };\n }\n | {\n children?: never;\n /**\n * The icon of the icon only button.\n */\n icon?: IconProps[\"svg\"];\n }\n ) &\n /**\n * Data tracking id\n */\n DataTrackingId;\n\n/**\n * Button component for triggering actions and user interactions.\n *\n * Features:\n * - Multiple visual appearances (primary, secondary, ghost, danger variants)\n * - Four size options (xsmall, small, medium, large)\n * - Loading state with spinner animation\n * - Icon support (before, after, or icon-only)\n * - Full accessibility support with ARIA attributes\n * - Supports layout utilities for positioning and spacing\n * - Automatic disabled state when loading\n * - Flexible content with text and/or icons\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Button appearance=\"primary\" size=\"medium\" onClick={() => console.log('clicked')}>\n * Click Me\n * </Button>\n */\nexport const Button = forwardRef(\n (props: ButtonProps, ref: Ref<HTMLButtonElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n children,\n className,\n appearance = \"secondary\",\n size = \"medium\",\n icon,\n loading = false,\n disabled,\n style,\n type = \"button\",\n ...rest\n } = componentProps;\n\n const data = {\n children: childrenToString(props.children),\n appearance,\n icon,\n size,\n type,\n };\n\n const trackingId = useTrackingId({\n name: \"Button\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const iconBefore = (icon: ButtonProps[\"icon\"]) => {\n if (typeof icon === \"object\" && \"before\" in icon) {\n return (\n <Icon\n className={styles[\"icon\"]}\n inherit\n aria-hidden\n svg={icon.before}\n />\n );\n }\n if (icon && typeof icon !== \"object\") {\n return (\n <Icon\n className={styles[\"icon\"]}\n inherit\n aria-hidden\n svg={icon}\n size={!children && !size.includes(\"small\") ? \"large\" : \"medium\"}\n />\n );\n }\n return;\n };\n\n const buttonClassNames = cx(className, styles[\"button\"], {\n [styles[\"appearance-primary\"]]: appearance === \"primary\",\n [styles[\"appearance-secondary\"]]: appearance === \"secondary\",\n [styles[\"appearance-ghost\"]]: appearance === \"ghost\",\n [styles[\"danger-secondary\"]]: appearance === \"danger-secondary\",\n [styles[\"danger-primary\"]]: appearance === \"danger\",\n [styles[\"size-xsmall\"]]: size === \"xsmall\",\n [styles[\"size-small\"]]: size === \"small\",\n [styles[\"size-medium\"]]: size === \"medium\",\n [styles[\"size-large\"]]: size === \"large\",\n [styles[\"type-icon\"]]: !children,\n [styles[\"loading\"]]: loading,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <button\n data-tracking-id={trackingId}\n className={buttonClassNames}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading ? true : undefined}\n data-anv=\"button\"\n style={styleCombined}\n ref={ref}\n {...rest}\n >\n {loading ? (\n <Spinner inherit size=\"small\" className={styles[\"loading-spinner\"]} />\n ) : icon ? (\n iconBefore(icon)\n ) : null}\n {children}\n {typeof icon === \"object\" && \"after\" in icon ? (\n <Icon\n className={styles[\"icon\"]}\n inherit\n aria-hidden\n svg={icon.after}\n />\n ) : null}\n </button>\n );\n },\n);\n\nButton.displayName = \"Button\";\n"],"names":["icon"],"mappings":"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"}
package/dist/Button.css CHANGED
@@ -1,7 +1,7 @@
1
1
  @layer starter, reset, base, state, application;
2
2
  /* REVERT LAYER BUGFIX START */
3
- a._button_q7lq8_2:hover,
4
- a._button_q7lq8_2:active {
3
+ a._button_158ym_2:hover,
4
+ a._button_158ym_2:active {
5
5
  color: revert-layer;
6
6
  }
7
7
 
@@ -14,7 +14,7 @@ a[data-anv=button-link]:focus {
14
14
 
15
15
  /* REVERT LAYER BUGFIX END */
16
16
  @layer reset {
17
- ._button_q7lq8_2, ._button_q7lq8_2._type-icon_q7lq8_16 {
17
+ ._button_158ym_2, ._button_158ym_2._type-icon_158ym_16 {
18
18
  all: unset;
19
19
  font-family: var(--font-family-base, "Nunito Sans", sans-serif);
20
20
  font-size: 100%;
@@ -29,7 +29,7 @@ a[data-anv=button-link]:focus {
29
29
  }
30
30
  }
31
31
  @layer base {
32
- ._button_q7lq8_2, ._button_q7lq8_2._type-icon_q7lq8_16 {
32
+ ._button_158ym_2, ._button_158ym_2._type-icon_158ym_16 {
33
33
  width: -moz-fit-content;
34
34
  width: fit-content;
35
35
  min-width: 2.5rem;
@@ -62,30 +62,30 @@ a[data-anv=button-link]:focus {
62
62
  background-color: var(--button-background-color);
63
63
  outline-color: var(--button-focus-ring-color);
64
64
  }
65
- ._button_q7lq8_2 ._icon_q7lq8_62 {
65
+ ._button_158ym_2 ._icon_158ym_62 {
66
66
  display: inline-flex;
67
67
  }
68
68
  }
69
69
  @layer state {
70
- ._button_q7lq8_2:not(:disabled, ._disabled_q7lq8_67, [aria-disabled=true])[data-interactive=focus-visible], ._button_q7lq8_2:not(:disabled, ._disabled_q7lq8_67, [aria-disabled=true]):focus-visible {
70
+ ._button_158ym_2:not(:disabled, ._disabled_158ym_67, [aria-disabled=true])[data-interactive=focus-visible], ._button_158ym_2:not(:disabled, ._disabled_158ym_67, [aria-disabled=true]):focus-visible {
71
71
  outline-width: 0.125rem;
72
72
  }
73
- ._button_q7lq8_2._loading_q7lq8_70 {
73
+ ._button_158ym_2._loading_158ym_70 {
74
74
  cursor: progress;
75
75
  }
76
- ._button_q7lq8_2 ._loading-spinner_q7lq8_73 {
76
+ ._button_158ym_2 ._loading-spinner_158ym_73 {
77
77
  height: 1rem;
78
78
  }
79
- ._button_q7lq8_2._size-xsmall_q7lq8_76 {
79
+ ._button_158ym_2._size-xsmall_158ym_76 {
80
80
  --button-font-size: 0.75rem;
81
81
  --button-border-radius: 0.375rem;
82
82
  --button-padding-block-start: 0.3125rem;
83
83
  --button-padding-block-end: 0.3125rem;
84
84
  --button-padding-inline-end: 0.5rem;
85
85
  --button-padding-inline-start: 0.5rem;
86
- --button-line-height: 0.75rem;
86
+ --button-line-height: 1rem;
87
87
  }
88
- ._button_q7lq8_2._size-small_q7lq8_85 {
88
+ ._button_158ym_2._size-small_158ym_85 {
89
89
  --button-font-size: 0.875rem;
90
90
  --button-border-radius: 0.375rem;
91
91
  --button-padding-block-start: 0.4375rem;
@@ -94,7 +94,7 @@ a[data-anv=button-link]:focus {
94
94
  --button-padding-inline-start: 0.75rem;
95
95
  --button-line-height: 1rem;
96
96
  }
97
- ._button_q7lq8_2._size-medium_q7lq8_94 {
97
+ ._button_158ym_2._size-medium_158ym_94 {
98
98
  --button-font-size: 1rem;
99
99
  --button-border-radius: 0.375rem;
100
100
  --button-padding-block-start: 0.6875rem;
@@ -102,7 +102,7 @@ a[data-anv=button-link]:focus {
102
102
  --button-padding-inline-end: 1rem;
103
103
  --button-padding-inline-start: 1rem;
104
104
  }
105
- ._button_q7lq8_2._size-large_q7lq8_102 {
105
+ ._button_158ym_2._size-large_158ym_102 {
106
106
  --button-font-size: 1rem;
107
107
  --button-border-radius: 0.375rem;
108
108
  --button-padding-block-start: 0.9375rem;
@@ -110,82 +110,82 @@ a[data-anv=button-link]:focus {
110
110
  --button-padding-inline-end: 1.5rem;
111
111
  --button-padding-inline-start: 1.5rem;
112
112
  }
113
- ._button_q7lq8_2._appearance-primary_q7lq8_110 {
113
+ ._button_158ym_2._appearance-primary_158ym_110 {
114
114
  --button-foreground-color: var(--button-primary-foreground-color, #ffffff);
115
115
  --button-border-color: var(--button-primary-border-color, transparent);
116
116
  --button-border-radius: 0.375rem;
117
117
  --button-background-color: var(--button-primary-background-color, #0265DC);
118
118
  --button-focus-ring-color: var(--button-primary-focus-ring-color, #0265DC);
119
119
  }
120
- ._button_q7lq8_2._appearance-primary_q7lq8_110[data-interactive=hover], ._button_q7lq8_2._appearance-primary_q7lq8_110:hover {
120
+ ._button_158ym_2._appearance-primary_158ym_110[data-interactive=hover], ._button_158ym_2._appearance-primary_158ym_110:hover {
121
121
  --button-foreground-color: var(--button-primary-foreground-color-hover, #ffffff);
122
122
  --button-background-color: var(--button-primary-background-color-hover, #0655b4);
123
123
  }
124
- ._button_q7lq8_2._appearance-primary_q7lq8_110[data-interactive=active], ._button_q7lq8_2._appearance-primary_q7lq8_110:active {
124
+ ._button_158ym_2._appearance-primary_158ym_110[data-interactive=active], ._button_158ym_2._appearance-primary_158ym_110:active {
125
125
  --button-foreground-color: var(--button-primary-foreground-color-active, #ffffff);
126
126
  --button-background-color: var(--button-primary-background-color-active, #09458c);
127
127
  }
128
- ._button_q7lq8_2._appearance-secondary_q7lq8_125 {
128
+ ._button_158ym_2._appearance-secondary_158ym_125 {
129
129
  --button-foreground-color: var(--button-secondary-foreground-color, #141414);
130
130
  --button-border-color: var(--button-secondary-border-color, transparent);
131
131
  --button-border-radius: 0.375rem;
132
132
  --button-background-color: var(--button-secondary-background-color, rgba(4, 4, 4, 0.0588235294));
133
133
  --button-focus-ring-color: var(--button-secondary-focus-ring-color, #0265DC);
134
134
  }
135
- ._button_q7lq8_2._appearance-secondary_q7lq8_125[data-interactive=hover], ._button_q7lq8_2._appearance-secondary_q7lq8_125:hover {
135
+ ._button_158ym_2._appearance-secondary_158ym_125[data-interactive=hover], ._button_158ym_2._appearance-secondary_158ym_125:hover {
136
136
  --button-foreground-color: var(--button-secondary-foreground-color-hover, #141414);
137
137
  --button-background-color: var(--button-secondary-background-color-hover, rgba(5, 5, 5, 0.1333333333));
138
138
  }
139
- ._button_q7lq8_2._appearance-secondary_q7lq8_125[data-interactive=active], ._button_q7lq8_2._appearance-secondary_q7lq8_125:active {
139
+ ._button_158ym_2._appearance-secondary_158ym_125[data-interactive=active], ._button_158ym_2._appearance-secondary_158ym_125:active {
140
140
  --button-foreground-color: var(--button-secondary-foreground-color-active, #141414);
141
141
  --button-background-color: var(--button-secondary-background-color-active, rgba(7, 7, 7, 0.2078431373));
142
142
  }
143
- ._button_q7lq8_2._appearance-ghost_q7lq8_140 {
143
+ ._button_158ym_2._appearance-ghost_158ym_140 {
144
144
  --button-foreground-color: var(--button-ghost-foreground-color, #141414);
145
145
  --button-border-color: var(--button-ghost-border-color, transparent);
146
146
  --button-border-radius: 0.375rem;
147
147
  --button-background-color: var(--button-ghost-background-color, transparent);
148
148
  --button-focus-ring-color: var(--button-ghost-focus-ring-color, #0265DC);
149
149
  }
150
- ._button_q7lq8_2._appearance-ghost_q7lq8_140[data-interactive=hover], ._button_q7lq8_2._appearance-ghost_q7lq8_140:hover {
150
+ ._button_158ym_2._appearance-ghost_158ym_140[data-interactive=hover], ._button_158ym_2._appearance-ghost_158ym_140:hover {
151
151
  --button-foreground-color: var(--button-ghost-foreground-color-hover, #141414);
152
152
  --button-background-color: var(--button-ghost-background-color-hover, rgba(20, 20, 20, 0.0784313725));
153
153
  }
154
- ._button_q7lq8_2._appearance-ghost_q7lq8_140[data-interactive=active], ._button_q7lq8_2._appearance-ghost_q7lq8_140:active {
154
+ ._button_158ym_2._appearance-ghost_158ym_140[data-interactive=active], ._button_158ym_2._appearance-ghost_158ym_140:active {
155
155
  --button-foreground-color: var(--button-ghost-foreground-color-active, #141414);
156
156
  --button-background-color: var(--button-ghost-background-color-active, rgba(20, 20, 20, 0.1607843137));
157
157
  }
158
- ._button_q7lq8_2._danger-primary_q7lq8_155 {
158
+ ._button_158ym_2._danger-primary_158ym_155 {
159
159
  --button-foreground-color: var(--button-danger-primary-foreground-color, #ffffff);
160
160
  --button-border-color: var(--button-danger-primary-border-color, transparent);
161
161
  --button-border-radius: 0.375rem;
162
162
  --button-background-color: var(--button-danger-primary-background-color, #e13212);
163
163
  --button-focus-ring-color: var(--button-danger-primary-focus-ring-color, #e13212);
164
164
  }
165
- ._button_q7lq8_2._danger-primary_q7lq8_155[data-interactive=hover], ._button_q7lq8_2._danger-primary_q7lq8_155:hover {
165
+ ._button_158ym_2._danger-primary_158ym_155[data-interactive=hover], ._button_158ym_2._danger-primary_158ym_155:hover {
166
166
  --button-foreground-color: var(--button-danger-primary-foreground-color-hover, #ffffff);
167
167
  --button-background-color: var(--button-danger-primary-background-color-hover, #b82c12);
168
168
  }
169
- ._button_q7lq8_2._danger-primary_q7lq8_155[data-interactive=active], ._button_q7lq8_2._danger-primary_q7lq8_155:active {
169
+ ._button_158ym_2._danger-primary_158ym_155[data-interactive=active], ._button_158ym_2._danger-primary_158ym_155:active {
170
170
  --button-foreground-color: var(--button-danger-primary-foreground-color-active, #ffffff);
171
171
  --button-background-color: var(--button-danger-primary-background-color-active, #8f2613);
172
172
  }
173
- ._button_q7lq8_2._danger-secondary_q7lq8_170 {
173
+ ._button_158ym_2._danger-secondary_158ym_170 {
174
174
  --button-foreground-color: var(--button-danger-secondary-foreground-color, #bf2a00);
175
175
  --button-border-color: var(--button-danger-secondary-border-color, transparent);
176
176
  --button-border-radius: 0.375rem;
177
177
  --button-background-color: var(--button-danger-secondary-background-color, #ffece9);
178
178
  --button-focus-ring-color: var(--button-danger-secondary-focus-ring-color, #e13212);
179
179
  }
180
- ._button_q7lq8_2._danger-secondary_q7lq8_170[data-interactive=hover], ._button_q7lq8_2._danger-secondary_q7lq8_170:hover {
180
+ ._button_158ym_2._danger-secondary_158ym_170[data-interactive=hover], ._button_158ym_2._danger-secondary_158ym_170:hover {
181
181
  --button-foreground-color: var(--button-danger-secondary-foreground-color-hover, #bf2a00);
182
182
  --button-background-color: var(--button-danger-secondary-background-color-hover, #fcd9d4);
183
183
  }
184
- ._button_q7lq8_2._danger-secondary_q7lq8_170[data-interactive=active], ._button_q7lq8_2._danger-secondary_q7lq8_170:active {
184
+ ._button_158ym_2._danger-secondary_158ym_170[data-interactive=active], ._button_158ym_2._danger-secondary_158ym_170:active {
185
185
  --button-foreground-color: var(--button-danger-secondary-foreground-color-active, #bf2a00);
186
186
  --button-background-color: var(--button-danger-secondary-background-color-active, #f6b4a9);
187
187
  }
188
- ._button_q7lq8_2._type-icon_q7lq8_16 {
188
+ ._button_158ym_2._type-icon_158ym_16 {
189
189
  display: inline-flex;
190
190
  min-width: auto;
191
191
  --button-padding-block-start: 0.4375rem;
@@ -193,32 +193,32 @@ a[data-anv=button-link]:focus {
193
193
  --button-padding-inline-end: 0.4375rem;
194
194
  --button-padding-inline-start: 0.4375rem;
195
195
  }
196
- ._button_q7lq8_2._type-icon_q7lq8_16._size-xsmall_q7lq8_76 {
196
+ ._button_158ym_2._type-icon_158ym_16._size-xsmall_158ym_76 {
197
197
  --button-padding-block-start: 0.3125rem;
198
198
  --button-padding-block-end: 0.3125rem;
199
199
  --button-padding-inline-end: 0.3125rem;
200
200
  --button-padding-inline-start: 0.3125rem;
201
201
  }
202
- ._button_q7lq8_2._type-icon_q7lq8_16._size-small_q7lq8_85 {
202
+ ._button_158ym_2._type-icon_158ym_16._size-small_158ym_85 {
203
203
  --button-padding-block-start: 0.4375rem;
204
204
  --button-padding-block-end: 0.4375rem;
205
205
  --button-padding-inline-end: 0.4375rem;
206
206
  --button-padding-inline-start: 0.4375rem;
207
207
  }
208
- ._button_q7lq8_2._type-icon_q7lq8_16._size-medium_q7lq8_94 {
208
+ ._button_158ym_2._type-icon_158ym_16._size-medium_158ym_94 {
209
209
  --button-padding-block-start: 0.4375rem;
210
210
  --button-padding-block-end: 0.4375rem;
211
211
  --button-padding-inline-end: 0.4375rem;
212
212
  --button-padding-inline-start: 0.4375rem;
213
213
  }
214
- ._button_q7lq8_2._type-icon_q7lq8_16._size-large_q7lq8_102 {
214
+ ._button_158ym_2._type-icon_158ym_16._size-large_158ym_102 {
215
215
  --button-padding-block-start: 0.6875rem;
216
216
  --button-padding-block-end: 0.6875rem;
217
217
  --button-padding-inline-end: 0.6875rem;
218
218
  --button-padding-inline-start: 0.6875rem;
219
219
  }
220
220
  }
221
- @keyframes _indeterminate-before_q7lq8_1 {
221
+ @keyframes _indeterminate-before_158ym_1 {
222
222
  0% {
223
223
  inset-inline-start: -35%;
224
224
  inset-inline-end: 100%;
@@ -241,7 +241,7 @@ a[data-anv=button-link]:focus {
241
241
  }
242
242
  }
243
243
  @layer base {
244
- ._button-compound_q7lq8_241 {
244
+ ._button-compound_158ym_241 {
245
245
  background-color: transparent;
246
246
  padding-block: 0;
247
247
  padding-inline: 0;
@@ -254,60 +254,60 @@ a[data-anv=button-link]:focus {
254
254
  }
255
255
  }
256
256
  @layer state {
257
- ._button-compound_q7lq8_241[data-interactive=hover], ._button-compound_q7lq8_241:hover {
257
+ ._button-compound_158ym_241[data-interactive=hover], ._button-compound_158ym_241:hover {
258
258
  --button-background-color: var(--button-secondary-background-color-hover, rgba(5, 5, 5, 0.1333333333));
259
259
  z-index: 1;
260
260
  }
261
- ._button-compound_q7lq8_241[data-interactive=active], ._button-compound_q7lq8_241:active {
261
+ ._button-compound_158ym_241[data-interactive=active], ._button-compound_158ym_241:active {
262
262
  --button-background-color: var(--button-secondary-background-color-active, rgba(7, 7, 7, 0.2078431373));
263
263
  z-index: 1;
264
264
  }
265
- ._button-compound_q7lq8_241._shape-rounded_q7lq8_262 {
265
+ ._button-compound_158ym_241._shape-rounded_158ym_262 {
266
266
  --button-border-radius: 0.75rem;
267
267
  }
268
- ._button-compound_q7lq8_241._shape-pill_q7lq8_265 {
268
+ ._button-compound_158ym_241._shape-pill_158ym_265 {
269
269
  --button-border-radius: 1.5rem;
270
270
  }
271
- ._button-compound_q7lq8_241._shape-circular_q7lq8_268 {
271
+ ._button-compound_158ym_241._shape-circular_158ym_268 {
272
272
  --button-border-radius: 100%;
273
273
  }
274
274
  }
275
275
  @layer state {
276
- ._button-toggle_q7lq8_273 {
276
+ ._button-toggle_158ym_273 {
277
277
  border-color: var(--border-color, #949596);
278
278
  }
279
- ._button-toggle_q7lq8_273[aria-pressed=false]:not([data-interactive=hover],
279
+ ._button-toggle_158ym_273[aria-pressed=false]:not([data-interactive=hover],
280
280
  :hover,
281
281
  [data-interactive=active],
282
282
  :active) {
283
283
  background-color: var(--button-primary-foreground-color, #ffffff);
284
284
  }
285
- ._button-toggle_q7lq8_273[aria-pressed=true]:not(:disabled, ._disabled_q7lq8_67, [aria-disabled=true]) {
285
+ ._button-toggle_158ym_273[aria-pressed=true]:not(:disabled, ._disabled_158ym_67, [aria-disabled=true]) {
286
286
  color: var(--foreground-color-primary, #0265DC);
287
287
  border-color: currentColor;
288
288
  }
289
- ._button-toggle_q7lq8_273[aria-pressed=true]:not(:disabled, ._disabled_q7lq8_67, [aria-disabled=true])[data-interactive=hover], ._button-toggle_q7lq8_273[aria-pressed=true]:not(:disabled, ._disabled_q7lq8_67, [aria-disabled=true]):hover {
289
+ ._button-toggle_158ym_273[aria-pressed=true]:not(:disabled, ._disabled_158ym_67, [aria-disabled=true])[data-interactive=hover], ._button-toggle_158ym_273[aria-pressed=true]:not(:disabled, ._disabled_158ym_67, [aria-disabled=true]):hover {
290
290
  color: var(--foreground-color-hover-primary, #004491);
291
291
  }
292
- ._button-toggle_q7lq8_273[aria-pressed=true]:not(:disabled, ._disabled_q7lq8_67, [aria-disabled=true])[data-interactive=hover]::before, ._button-toggle_q7lq8_273[aria-pressed=true]:not(:disabled, ._disabled_q7lq8_67, [aria-disabled=true]):hover::before {
292
+ ._button-toggle_158ym_273[aria-pressed=true]:not(:disabled, ._disabled_158ym_67, [aria-disabled=true])[data-interactive=hover]::before, ._button-toggle_158ym_273[aria-pressed=true]:not(:disabled, ._disabled_158ym_67, [aria-disabled=true]):hover::before {
293
293
  content: "";
294
294
  background-color: var(--overlay-color-hover-primary, rgba(2, 101, 220, 0.1019607843));
295
295
  position: absolute;
296
296
  inset: 0;
297
297
  z-index: 1;
298
298
  }
299
- ._button-toggle_q7lq8_273[aria-pressed=true]:not(:disabled, ._disabled_q7lq8_67, [aria-disabled=true])[data-interactive=active], ._button-toggle_q7lq8_273[aria-pressed=true]:not(:disabled, ._disabled_q7lq8_67, [aria-disabled=true]):active {
299
+ ._button-toggle_158ym_273[aria-pressed=true]:not(:disabled, ._disabled_158ym_67, [aria-disabled=true])[data-interactive=active], ._button-toggle_158ym_273[aria-pressed=true]:not(:disabled, ._disabled_158ym_67, [aria-disabled=true]):active {
300
300
  color: var(--foreground-color-active-primary, #004491);
301
301
  border-color: currentColor;
302
302
  }
303
- ._button-toggle_q7lq8_273[aria-pressed=true]:not(:disabled, ._disabled_q7lq8_67, [aria-disabled=true])[data-interactive=active]::before, ._button-toggle_q7lq8_273[aria-pressed=true]:not(:disabled, ._disabled_q7lq8_67, [aria-disabled=true]):active::before {
303
+ ._button-toggle_158ym_273[aria-pressed=true]:not(:disabled, ._disabled_158ym_67, [aria-disabled=true])[data-interactive=active]::before, ._button-toggle_158ym_273[aria-pressed=true]:not(:disabled, ._disabled_158ym_67, [aria-disabled=true]):active::before {
304
304
  content: "";
305
305
  background-color: var(--overlay-color-active-primary, rgba(2, 101, 220, 0.3019607843));
306
306
  position: absolute;
307
307
  inset: 0;
308
308
  z-index: 1;
309
309
  }
310
- ._button-toggle_q7lq8_273[aria-pressed=true]:not(:disabled, ._disabled_q7lq8_67, [aria-disabled=true])::after {
310
+ ._button-toggle_158ym_273[aria-pressed=true]:not(:disabled, ._disabled_158ym_67, [aria-disabled=true])::after {
311
311
  content: "";
312
312
  position: absolute;
313
313
  width: 100%;
@@ -323,11 +323,11 @@ a[data-anv=button-link]:focus {
323
323
  }
324
324
  }
325
325
  @layer application {
326
- ._button-toggle_q7lq8_273:disabled, ._button-toggle_q7lq8_273._disabled_q7lq8_67, ._button-toggle_q7lq8_273[aria-disabled=true] {
326
+ ._button-toggle_158ym_273:disabled, ._button-toggle_158ym_273._disabled_158ym_67, ._button-toggle_158ym_273[aria-disabled=true] {
327
327
  color: var(--foreground-color-subdued, #737475);
328
328
  border-color: transparent;
329
329
  }
330
- ._button_q7lq8_2:disabled, ._button_q7lq8_2._disabled_q7lq8_67, ._button_q7lq8_2[aria-disabled=true] {
330
+ ._button_158ym_2:disabled, ._button_158ym_2._disabled_158ym_67, ._button_158ym_2[aria-disabled=true] {
331
331
  cursor: not-allowed;
332
332
  opacity: 0.6;
333
333
  --button-foreground-color: var(--foreground-color-subdued, #737475);
package/dist/Button.js CHANGED
@@ -1,2 +1,2 @@
1
- export { B as Button, B as default } from './Button-l7pTJdPc.js';
1
+ export { B as Button, B as default } from './Button-DrNDkO2f.js';
2
2
  //# sourceMappingURL=Button.js.map
@@ -0,0 +1,26 @@
1
+ import './Button.css';const button = "_button_158ym_2";
2
+ const icon = "_icon_158ym_62";
3
+ const loading = "_loading_158ym_70";
4
+ const styles = {
5
+ button: button,
6
+ "type-icon": "_type-icon_158ym_16",
7
+ icon: icon,
8
+ loading: loading,
9
+ "loading-spinner": "_loading-spinner_158ym_73",
10
+ "size-xsmall": "_size-xsmall_158ym_76",
11
+ "size-small": "_size-small_158ym_85",
12
+ "size-medium": "_size-medium_158ym_94",
13
+ "size-large": "_size-large_158ym_102",
14
+ "appearance-primary": "_appearance-primary_158ym_110",
15
+ "appearance-secondary": "_appearance-secondary_158ym_125",
16
+ "appearance-ghost": "_appearance-ghost_158ym_140",
17
+ "danger-primary": "_danger-primary_158ym_155",
18
+ "danger-secondary": "_danger-secondary_158ym_170",
19
+ "button-compound": "_button-compound_158ym_241",
20
+ "shape-rounded": "_shape-rounded_158ym_262",
21
+ "shape-pill": "_shape-pill_158ym_265",
22
+ "shape-circular": "_shape-circular_158ym_268",
23
+ "button-toggle": "_button-toggle_158ym_273"};
24
+
25
+ export { styles as s };
26
+ //# sourceMappingURL=Button.module-DwCq9XU0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.module-DwCq9XU0.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -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-SvGbrGuT.js';
4
- import { s as styles } from './Button.module-Ck7VrMqw.js';
4
+ import { s as styles } from './Button.module-DwCq9XU0.js';
5
5
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-loxbyklF.js';
6
6
  import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
7
7
  import { useTrackingId } from './useTrackingId.js';
@@ -61,4 +61,4 @@ const ButtonCompound = forwardRef(
61
61
  ButtonCompound.displayName = "ButtonCompound";
62
62
 
63
63
  export { ButtonCompound as B };
64
- //# sourceMappingURL=ButtonCompound-CX2kHgWe.js.map
64
+ //# sourceMappingURL=ButtonCompound-D9VTKcL4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonCompound-CX2kHgWe.js","sources":["../src/components/ButtonCompound/ButtonCompound.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId, LayoutUtilProps } from \"../../types\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"../Button/Button.module.scss\";\n\n/**\n * Props for the ButtonCompound component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type ButtonCompoundProps = LayoutUtilProps &\n ComponentPropsWithoutRef<\"button\"> & {\n /**\n * The shape of the compound button.\n * @default rounded\n */\n shape?: \"pill\" | \"circular\" | \"rounded\";\n } &\n /**\n * Data tracking id\n */\n DataTrackingId;\n\n/**\n * ButtonCompound component for creating compound button layouts.\n *\n * Features:\n * - Three shape options (pill, circular, rounded)\n * - Transparent background for compound layouts\n * - Supports layout utilities for positioning and spacing\n * - Full accessibility support with proper ARIA attributes\n * - Flexible content support\n * - Consistent styling with other button components\n * - Hover and active state management\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ButtonCompound shape=\"circular\">\n * <Avatar name=\"John Doe\" />\n * </ButtonCompound>\n */\nexport const ButtonCompound = forwardRef(\n (props: ButtonCompoundProps, ref: Ref<HTMLButtonElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n shape = \"rounded\",\n type,\n disabled,\n children,\n style,\n ...rest\n } = componentProps;\n\n const data = {\n children: childrenToString(props.children),\n shape,\n type,\n };\n\n const trackingId = useTrackingId({\n name: \"ButtonCompound\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const buttonClassNames = cx(\n className,\n styles[\"button\"],\n styles[\"button-compound\"],\n {\n [styles[\"shape-pill\"]]: shape === \"pill\",\n [styles[\"shape-circular\"]]: shape === \"circular\",\n [styles[\"shape-rounded\"]]: shape === \"rounded\",\n },\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <button\n data-tracking-id={trackingId}\n className={buttonClassNames}\n type={type}\n disabled={disabled}\n data-anv=\"button-compound\"\n ref={ref}\n style={styleCombined}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nButtonCompound.displayName = \"ButtonCompound\";\n"],"names":[],"mappings":";;;;;;;;AA6CO,MAAM,cAAA,GAAiB,UAAA;AAAA,EAC5B,CAAC,OAA4B,GAAA,KAAgC;AAC3D,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,KAAA,GAAQ,SAAA;AAAA,MACR,IAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,QAAA,EAAU,gBAAA,CAAiB,KAAA,CAAM,QAAQ,CAAA;AAAA,MACzC,KAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,gBAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,gBAAA,GAAmB,EAAA;AAAA,MACvB,SAAA;AAAA,MACA,OAAO,QAAQ,CAAA;AAAA,MACf,OAAO,iBAAiB,CAAA;AAAA,MACxB;AAAA,QACE,CAAC,MAAA,CAAO,YAAY,CAAC,GAAG,KAAA,KAAU,MAAA;AAAA,QAClC,CAAC,MAAA,CAAO,gBAAgB,CAAC,GAAG,KAAA,KAAU,UAAA;AAAA,QACtC,CAAC,MAAA,CAAO,eAAe,CAAC,GAAG,KAAA,KAAU;AAAA;AACvC,KACF;AAEA,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAkB,UAAA;AAAA,QAClB,SAAA,EAAW,gBAAA;AAAA,QACX,IAAA;AAAA,QACA,QAAA;AAAA,QACA,UAAA,EAAS,iBAAA;AAAA,QACT,GAAA;AAAA,QACA,KAAA,EAAO,aAAA;AAAA,QACN,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;;;;"}
1
+ {"version":3,"file":"ButtonCompound-D9VTKcL4.js","sources":["../src/components/ButtonCompound/ButtonCompound.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId, LayoutUtilProps } from \"../../types\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"../Button/Button.module.scss\";\n\n/**\n * Props for the ButtonCompound component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type ButtonCompoundProps = LayoutUtilProps &\n ComponentPropsWithoutRef<\"button\"> & {\n /**\n * The shape of the compound button.\n * @default rounded\n */\n shape?: \"pill\" | \"circular\" | \"rounded\";\n } &\n /**\n * Data tracking id\n */\n DataTrackingId;\n\n/**\n * ButtonCompound component for creating compound button layouts.\n *\n * Features:\n * - Three shape options (pill, circular, rounded)\n * - Transparent background for compound layouts\n * - Supports layout utilities for positioning and spacing\n * - Full accessibility support with proper ARIA attributes\n * - Flexible content support\n * - Consistent styling with other button components\n * - Hover and active state management\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ButtonCompound shape=\"circular\">\n * <Avatar name=\"John Doe\" />\n * </ButtonCompound>\n */\nexport const ButtonCompound = forwardRef(\n (props: ButtonCompoundProps, ref: Ref<HTMLButtonElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n shape = \"rounded\",\n type,\n disabled,\n children,\n style,\n ...rest\n } = componentProps;\n\n const data = {\n children: childrenToString(props.children),\n shape,\n type,\n };\n\n const trackingId = useTrackingId({\n name: \"ButtonCompound\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const buttonClassNames = cx(\n className,\n styles[\"button\"],\n styles[\"button-compound\"],\n {\n [styles[\"shape-pill\"]]: shape === \"pill\",\n [styles[\"shape-circular\"]]: shape === \"circular\",\n [styles[\"shape-rounded\"]]: shape === \"rounded\",\n },\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <button\n data-tracking-id={trackingId}\n className={buttonClassNames}\n type={type}\n disabled={disabled}\n data-anv=\"button-compound\"\n ref={ref}\n style={styleCombined}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nButtonCompound.displayName = \"ButtonCompound\";\n"],"names":[],"mappings":";;;;;;;;AA6CO,MAAM,cAAA,GAAiB,UAAA;AAAA,EAC5B,CAAC,OAA4B,GAAA,KAAgC;AAC3D,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,KAAA,GAAQ,SAAA;AAAA,MACR,IAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,QAAA,EAAU,gBAAA,CAAiB,KAAA,CAAM,QAAQ,CAAA;AAAA,MACzC,KAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,gBAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,gBAAA,GAAmB,EAAA;AAAA,MACvB,SAAA;AAAA,MACA,OAAO,QAAQ,CAAA;AAAA,MACf,OAAO,iBAAiB,CAAA;AAAA,MACxB;AAAA,QACE,CAAC,MAAA,CAAO,YAAY,CAAC,GAAG,KAAA,KAAU,MAAA;AAAA,QAClC,CAAC,MAAA,CAAO,gBAAgB,CAAC,GAAG,KAAA,KAAU,UAAA;AAAA,QACtC,CAAC,MAAA,CAAO,eAAe,CAAC,GAAG,KAAA,KAAU;AAAA;AACvC,KACF;AAEA,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAkB,UAAA;AAAA,QAClB,SAAA,EAAW,gBAAA;AAAA,QACX,IAAA;AAAA,QACA,QAAA;AAAA,QACA,UAAA,EAAS,iBAAA;AAAA,QACT,GAAA;AAAA,QACA,KAAA,EAAO,aAAA;AAAA,QACN,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;;;;"}