@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
@@ -0,0 +1,73 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ import { DataTrackingId, LayoutUtilProps, Size } from '../../../types';
3
+ /**
4
+ * Props for the SearchField component
5
+ * @extends Omit<ComponentPropsWithoutRef<"input">, "size" | "prefix" | "required" | "children">
6
+ * @extends LayoutUtilProps
7
+ */
8
+ export type SearchFieldProps = Omit<ComponentPropsWithoutRef<"input">, "size" | "prefix" | "required" | "children"> & LayoutUtilProps & {
9
+ /**
10
+ * Size of the search field
11
+ * @default "medium"
12
+ */
13
+ size?: Extract<Size, "xsmall" | "small" | "medium" | "large">;
14
+ /**
15
+ * Whether the search field is disabled
16
+ * @default false
17
+ */
18
+ disabled?: boolean;
19
+ /**
20
+ * Callback when the clear button is clicked or activated via keyboard (Enter/Space)
21
+ */
22
+ onClear?: () => void;
23
+ } & DataTrackingId;
24
+ /**
25
+ * SearchField component for text input with search functionality.
26
+ *
27
+ * Features:
28
+ * - Search icon prefix for visual clarity
29
+ * - Clear button that appears when input has value
30
+ * - Arrow key navigation between input and clear button (Right arrow to clear button, Left arrow back to input)
31
+ * - Clear button activated with Enter/Space keys
32
+ * - Focus returns to input after clearing
33
+ * - Multiple size variants (xsmall, small, medium, large)
34
+ * - Controlled and uncontrolled modes
35
+ * - Disabled and read-only states
36
+ * - Accessibility support with proper ARIA attributes
37
+ * - Layout utility props for positioning and spacing
38
+ * - Automatic value detection for clear button visibility
39
+ * - Search-specific input type and autocomplete settings
40
+ * - Screen reader support with placeholder announcements
41
+ * - Automatic tracking ID generation for analytics
42
+ *
43
+ * @example
44
+ * <SearchField
45
+ * placeholder="Search users..."
46
+ * onChange={(e) => setSearchTerm(e.target.value)}
47
+ * onClear={() => setSearchTerm("")}
48
+ * />
49
+ *
50
+ * @example
51
+ * <SearchField
52
+ * size="large"
53
+ * value={searchValue}
54
+ * onChange={(e) => setSearchValue(e.target.value)}
55
+ * disabled={isLoading}
56
+ * />
57
+ */
58
+ export declare const SearchField: import('react').ForwardRefExoticComponent<Omit<Omit<import('react').DetailedHTMLProps<import('react').InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref">, "size" | "children" | "prefix" | "required"> & LayoutUtilProps & {
59
+ /**
60
+ * Size of the search field
61
+ * @default "medium"
62
+ */
63
+ size?: Extract<Size, "xsmall" | "small" | "medium" | "large">;
64
+ /**
65
+ * Whether the search field is disabled
66
+ * @default false
67
+ */
68
+ disabled?: boolean;
69
+ /**
70
+ * Callback when the clear button is clicked or activated via keyboard (Enter/Space)
71
+ */
72
+ onClear?: () => void;
73
+ } & DataTrackingId & import('react').RefAttributes<HTMLInputElement>>;
@@ -8,8 +8,21 @@ import { LayoutUtilProps } from '../../types';
8
8
  export type TabProps = Omit<ComponentPropsWithoutRef<"div">, "onAnimationStart" | "onDragStart" | "onDragEnd" | "onDrag"> & LayoutUtilProps & {
9
9
  /**
10
10
  * The index of the tab that should be active by default.
11
+ * Use for uncontrolled usage. For controlled usage, use `index` instead.
12
+ * @default 0
11
13
  */
12
- defaultIndex: number;
14
+ defaultIndex?: number;
15
+ /**
16
+ * The index of the currently active tab.
17
+ * Use for controlled usage. For uncontrolled usage, use `defaultIndex` instead.
18
+ */
19
+ index?: number;
20
+ /**
21
+ * Callback fired when the active tab changes.
22
+ * Use with `index` for controlled usage.
23
+ * @param index The index of the newly active tab
24
+ */
25
+ onIndexChange?: (index: number) => void;
13
26
  /**
14
27
  * Whether the tabs should fill the available width.
15
28
  * @default false
@@ -27,9 +40,11 @@ export type TabProps = Omit<ComponentPropsWithoutRef<"div">, "onAnimationStart"
27
40
  * - Automatic focus management
28
41
  * - Scroll behavior for overflow tabs
29
42
  * - Compound component pattern with Tab.Button, Tab.List, and Tab.Panel
43
+ * - Supports controlled state via `index` and `onIndexChange` props
30
44
  * - Supports layout utilities for positioning and spacing
31
45
  *
32
46
  * @example
47
+ * // Uncontrolled
33
48
  * <Tab defaultIndex={0}>
34
49
  * <Tab.List>
35
50
  * <Tab.Button id="tab1" controls="panel1">First Tab</Tab.Button>
@@ -38,12 +53,36 @@ export type TabProps = Omit<ComponentPropsWithoutRef<"div">, "onAnimationStart"
38
53
  * <Tab.Panel id="panel1">Content for first tab</Tab.Panel>
39
54
  * <Tab.Panel id="panel2">Content for second tab</Tab.Panel>
40
55
  * </Tab>
56
+ *
57
+ * @example
58
+ * // Controlled
59
+ * <Tab index={activeIndex} onIndexChange={setActiveIndex}>
60
+ * <Tab.List>
61
+ * <Tab.Button id="tab1" controls="panel1">First Tab</Tab.Button>
62
+ * <Tab.Button id="tab2" controls="panel2">Second Tab</Tab.Button>
63
+ * </Tab.List>
64
+ * <Tab.Panel id="panel1">Content for first tab</Tab.Panel>
65
+ * <Tab.Panel id="panel2">Content for second tab</Tab.Panel>
66
+ * </Tab>
41
67
  */
42
68
  export declare const Tab: import('react').ForwardRefExoticComponent<Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "onDrag" | "onDragEnd" | "onDragStart" | "onAnimationStart"> & LayoutUtilProps & {
43
69
  /**
44
70
  * The index of the tab that should be active by default.
71
+ * Use for uncontrolled usage. For controlled usage, use `index` instead.
72
+ * @default 0
73
+ */
74
+ defaultIndex?: number;
75
+ /**
76
+ * The index of the currently active tab.
77
+ * Use for controlled usage. For uncontrolled usage, use `defaultIndex` instead.
78
+ */
79
+ index?: number;
80
+ /**
81
+ * Callback fired when the active tab changes.
82
+ * Use with `index` for controlled usage.
83
+ * @param index The index of the newly active tab
45
84
  */
46
- defaultIndex: number;
85
+ onIndexChange?: (index: number) => void;
47
86
  /**
48
87
  * Whether the tabs should fill the available width.
49
88
  * @default false
@@ -1,7 +1,7 @@
1
1
  import { Dispatch, KeyboardEvent, SetStateAction } from 'react';
2
2
  type TabContextProps = {
3
3
  current: number;
4
- setCurrent?: Dispatch<SetStateAction<number>>;
4
+ setCurrent?: Dispatch<SetStateAction<number | undefined>>;
5
5
  focus: number;
6
6
  setFocus?: Dispatch<SetStateAction<number>>;
7
7
  items?: NodeListOf<HTMLElement>;
@@ -1,4 +1,4 @@
1
- import { ToolbarOverflowTypes } from './types';
1
+ import { ToolbarOverflowTypes, ToolbarSize } from './types';
2
2
  import { ComponentPropsWithoutRef, ReactElement } from 'react';
3
3
  import { LayoutUtilProps } from '../../types';
4
4
  /**
@@ -25,6 +25,11 @@ export type ToolbarProps = ComponentPropsWithoutRef<"div"> & LayoutUtilProps & {
25
25
  * Additional items to display in the overflow menu
26
26
  */
27
27
  additionalItems?: ReactElement[];
28
+ /**
29
+ * Size of toolbar items
30
+ * @default xsmall
31
+ */
32
+ size?: ToolbarSize;
28
33
  };
29
34
  /**
30
35
  * Toolbar component for grouping related interactive elements.
@@ -69,6 +74,11 @@ export declare const Toolbar: import('react').ForwardRefExoticComponent<Omit<imp
69
74
  * Additional items to display in the overflow menu
70
75
  */
71
76
  additionalItems?: ReactElement[];
77
+ /**
78
+ * Size of toolbar items
79
+ * @default xsmall
80
+ */
81
+ size?: ToolbarSize;
72
82
  } & import('react').RefAttributes<HTMLDivElement>> & {
73
83
  /**
74
84
  * ToolbarButton component for standard clickable actions within a toolbar with anvil2 tracking.
@@ -79,7 +89,6 @@ export declare const Toolbar: import('react').ForwardRefExoticComponent<Omit<imp
79
89
  * - Automatic tooltip for icon-only buttons
80
90
  * - Overflow menu support
81
91
  * - Accessibility enforcement for aria-labels
82
- * - Small size optimized for toolbar layout
83
92
  * - Ghost and primary appearance options
84
93
  * - Automatic tracking ID generation for analytics
85
94
  *
@@ -101,7 +110,6 @@ export declare const Toolbar: import('react').ForwardRefExoticComponent<Omit<imp
101
110
  * - Consistent styling with other toolbar items
102
111
  * - Overflow menu support
103
112
  * - Accessibility enforcement for aria-labels
104
- * - Small size optimized for toolbar layout
105
113
  * - Ghost and primary appearance options
106
114
  * - Automatic tracking ID generation for analytics
107
115
  *
@@ -118,7 +126,6 @@ export declare const Toolbar: import('react').ForwardRefExoticComponent<Omit<imp
118
126
  * - Consistent styling with other toolbar items
119
127
  * - Overflow menu support
120
128
  * - Accessibility enforcement for aria-labels
121
- * - Small size optimized for toolbar layout
122
129
  * - Ghost and primary appearance options
123
130
  * - Automatic tracking ID generation for analytics
124
131
  *
@@ -136,7 +143,6 @@ export declare const Toolbar: import('react').ForwardRefExoticComponent<Omit<imp
136
143
  * - Controlled and uncontrolled usage patterns
137
144
  * - Automatic overflow menu integration
138
145
  * - Accessibility support with proper ARIA labels
139
- * - Small size optimized for toolbar layout
140
146
  * - Ghost and primary appearance options
141
147
  * - Dropdown arrow icon indicator
142
148
  * - Listbox integration for keyboard navigation
@@ -30,7 +30,6 @@ export type ToolbarButtonProps = WithAriaLabelEnforcement<ToolbarButtonBaseProps
30
30
  * - Automatic tooltip for icon-only buttons
31
31
  * - Overflow menu support
32
32
  * - Accessibility enforcement for aria-labels
33
- * - Small size optimized for toolbar layout
34
33
  * - Ghost and primary appearance options
35
34
  *
36
35
  * @example
@@ -27,7 +27,6 @@ export type ToolbarButtonLinkProps = WithAriaLabelEnforcement<ToolbarButtonLinkB
27
27
  * - Automatic tooltip for icon-only links
28
28
  * - Overflow menu support
29
29
  * - Accessibility enforcement for aria-labels
30
- * - Small size optimized for toolbar layout
31
30
  * - Ghost and primary appearance options
32
31
  * - Proper anchor element semantics
33
32
  *
@@ -21,7 +21,6 @@ export type ToolbarButtonToggleProps = WithAriaLabelEnforcement<ToolbarButtonTog
21
21
  * - Automatic tooltip for icon-only toggles
22
22
  * - Overflow menu support
23
23
  * - Accessibility enforcement for aria-labels
24
- * - Small size optimized for toolbar layout
25
24
  * - Visual feedback for toggle state
26
25
  * - Proper ARIA attributes for toggle semantics
27
26
  *
@@ -44,7 +44,6 @@ export type ToolbarSelectProps<T = Record<string, unknown>> = Omit<React.Compone
44
44
  * - Controlled and uncontrolled usage patterns
45
45
  * - Automatic overflow menu integration
46
46
  * - Accessibility support with proper ARIA labels
47
- * - Small size optimized for toolbar layout
48
47
  * - Ghost and primary appearance options
49
48
  * - Dropdown arrow icon indicator
50
49
  * - Listbox integration for keyboard navigation
@@ -1,9 +1,9 @@
1
1
  import { RefObject } from 'react';
2
- import { ToolbarItemProps, ToolbarOverflowTypes } from '../types';
2
+ import { ToolbarItemProps, ToolbarOverflowTypes, ToolbarSize } from '../types';
3
3
  /**
4
- * Context for sharing toolbar state with child components for overflow handling
4
+ * Context for sharing toolbar state with child components
5
5
  */
6
- export type ToolbarOverFlowContextProps = {
6
+ export type ToolbarContextProps = {
7
7
  /**
8
8
  * Array of toolbar items that should appear in the overflow menu
9
9
  */
@@ -28,8 +28,17 @@ export type ToolbarOverFlowContextProps = {
28
28
  * Overflow behavior type (wrap or collapse)
29
29
  */
30
30
  overflow: ToolbarOverflowTypes;
31
+ /**
32
+ * Size of toolbar child components
33
+ */
34
+ size: ToolbarSize;
31
35
  };
32
36
  /**
33
- * Context for managing toolbar overflow state and operations
37
+ * Context for managing toolbar state including overflow and size
38
+ */
39
+ export declare const ToolbarContext: import('react').Context<ToolbarContextProps>;
40
+ /**
41
+ * Hook to access the toolbar size from context
42
+ * @returns The current toolbar size
34
43
  */
35
- export declare const ToolbarOverflowContext: import('react').Context<ToolbarOverFlowContextProps>;
44
+ export declare const useToolbarSize: () => ToolbarSize;
@@ -3,7 +3,7 @@ import { ToolbarOverflowTypes } from '../../types';
3
3
  export declare const withOverflowItemContext: (children: ReactNode, isInOverflowMenu?: boolean) => import('react').FunctionComponentElement<import('react').ProviderProps<{
4
4
  isInOverflowMenu: boolean;
5
5
  }>>;
6
- export declare const createMockOverflowContext: (overrides?: {}) => {
6
+ export declare const createMockToolbarContext: (overrides?: {}) => {
7
7
  overflowItems: never[];
8
8
  orderedIds: never[];
9
9
  addItem: import('vitest').Mock<(...args: any[]) => any>;
@@ -12,8 +12,9 @@ export declare const createMockOverflowContext: (overrides?: {}) => {
12
12
  current: HTMLDivElement;
13
13
  };
14
14
  overflow: ToolbarOverflowTypes;
15
+ size: "xsmall";
15
16
  };
16
- export declare const withToolbarOverflowContext: (children: ReactNode, contextValue?: {
17
+ export declare const withToolbarContext: (children: ReactNode, contextValue?: {
17
18
  overflowItems: never[];
18
19
  orderedIds: never[];
19
20
  addItem: import('vitest').Mock<(...args: any[]) => any>;
@@ -22,7 +23,8 @@ export declare const withToolbarOverflowContext: (children: ReactNode, contextVa
22
23
  current: HTMLDivElement;
23
24
  };
24
25
  overflow: ToolbarOverflowTypes;
25
- }) => import('react').FunctionComponentElement<import('react').ProviderProps<import('../ToolbarOverflowContext').ToolbarOverFlowContextProps>>;
26
+ size: "xsmall";
27
+ }) => import('react').FunctionComponentElement<import('react').ProviderProps<import('../ToolbarContext').ToolbarContextProps>>;
26
28
  export declare const mockIntersectionObserver: import('vitest').Mock<(...args: any[]) => any>;
27
29
  export declare const observerMap: Map<any, any>;
28
30
  export declare const createIntersectionEntry: (element: Element, isIntersecting: boolean) => IntersectionObserverEntry;
@@ -1,9 +1,13 @@
1
- import { ButtonAppearance } from '../../types';
1
+ import { ButtonAppearance, Size } from '../../types';
2
2
  import { IconProps } from '../Icon';
3
3
  import { ToolbarButtonProps } from './ToolbarButton';
4
4
  import { ToolbarButtonLinkProps } from './ToolbarButtonLink';
5
5
  import { ToolbarButtonToggleProps } from './ToolbarButtonToggle';
6
6
  import { ToolbarSelectProps } from './ToolbarSelect';
7
+ /**
8
+ * Toolbar size options
9
+ */
10
+ export type ToolbarSize = Extract<Size, "xsmall" | "small" | "medium" | "large">;
7
11
  /**
8
12
  * Toolbar overflow options
9
13
  */
@@ -3,7 +3,7 @@ import { I as Icon } from './Icon-Bcil6aBo.js';
3
3
  import * as React from 'react';
4
4
  import { forwardRef } from 'react';
5
5
  import { c as cx } from './index-SvGbrGuT.js';
6
- import { B as ButtonCompound } from './ButtonCompound-CX2kHgWe.js';
6
+ import { B as ButtonCompound } from './ButtonCompound-D9VTKcL4.js';
7
7
 
8
8
  import './index.css';const SvgDragIndicator = (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: "M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }));
9
9
 
@@ -104,4 +104,4 @@ const Dnd = {
104
104
  };
105
105
 
106
106
  export { Dnd as D, DndSortLine as a, DndHandleButton as b, DndHandle as c, styles as s };
107
- //# sourceMappingURL=index-DFvIVS57.js.map
107
+ //# sourceMappingURL=index-ClUtwV8V.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-DFvIVS57.js","sources":["../../hammer-icon/mdi/round/drag_indicator.svg","../src/components/Dnd/DndHandle.tsx","../src/components/Dnd/DndHandleButton.tsx","../src/components/Dnd/DndSortLine.tsx","../src/components/Dnd/DndZone.tsx","../src/components/Dnd/index.ts"],"sourcesContent":["import * as React from \"react\";\nconst SvgDragIndicator = (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: \"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" }));\nexport default SvgDragIndicator;\n","import { Icon } from \"../Icon\";\nimport DragIndicator from \"@servicetitan/hammer-icon/mdi/round/drag_indicator.svg\";\nimport styles from \"./DndHandle.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Props for the DndHandle component\n */\nexport type DndHandleProps = {\n /**\n * Additional CSS class names to apply to the drag handle.\n */\n className?: string;\n};\n\n/**\n * A reusable drag handle icon component for drag and drop interactions.\n *\n * Features:\n * - Standardized drag indicator icon\n * - Accessible with proper ARIA attributes\n * - Customizable styling through className prop\n * - Consistent visual appearance across applications\n * - Lightweight and performant\n * - Supports all standard HTML element props\n *\n * @example\n * <DndHandle className=\"custom-drag-handle\" />\n */\nexport function DndHandle({ className }: { className?: string }) {\n const handleClasses = cx(styles.handle, className);\n return (\n <Icon svg={DragIndicator} className={handleClasses} role=\"presentation\" />\n );\n}\n","import { ButtonCompound } from \"../ButtonCompound\";\nimport handleStyles from \"./DndHandle.module.scss\";\nimport cx from \"classnames\";\nimport { forwardRef } from \"react\";\nimport { DndHandle } from \"./DndHandle\";\n\n/**\n * Props for the DndHandleButton component\n * @extends React.ComponentPropsWithoutRef<typeof ButtonCompound>\n */\nexport interface DndHandleButtonProps\n extends React.ComponentPropsWithoutRef<typeof ButtonCompound> {\n /**\n * Indicates whether the handle is currently being dragged.\n * @default false\n */\n isActive?: boolean;\n}\n\n/**\n * A reusable drag handle button component for drag and drop functionality.\n *\n * Features:\n * - Interactive button with drag handle icon\n * - Visual feedback for active drag state\n * - Accessible with proper ARIA attributes (defaults to \"Drag handle\")\n * - Extends ButtonCompound functionality\n * - Customizable styling through className prop\n * - Supports all standard button props\n * - Consistent visual appearance across applications\n *\n * @example\n * <DndHandleButton\n * isActive={isDragging}\n * aria-label=\"Drag task item\"\n * className=\"custom-handle-button\"\n * onClick={handleClick}\n * />\n */\nexport const DndHandleButton = forwardRef<\n HTMLButtonElement,\n DndHandleButtonProps\n>(({ isActive = false, className, ...props }, ref) => {\n const handleButtonClasses = cx(className, handleStyles[\"handle-button\"], {\n [handleStyles[\"active\"]]: isActive,\n });\n\n return (\n <ButtonCompound\n ref={ref}\n className={handleButtonClasses}\n type=\"button\"\n shape=\"rounded\"\n aria-label=\"Drag handle\"\n {...props}\n >\n <DndHandle />\n </ButtonCompound>\n );\n});\n\nDndHandleButton.displayName = \"DndHandleButton\";\n","import cx from \"classnames\";\n\nimport styles from \"./Dnd.module.scss\";\nimport { CSSProperties } from \"react\";\n\n/**\n * Props for the DndSortLine component\n * @extends React.ComponentPropsWithoutRef<\"div\">\n */\nexport type SortLineProps = React.ComponentPropsWithoutRef<\"div\"> & {\n /**\n * The offset of the line from the item. This is a CSS value, typically negative.\n */\n offset: string;\n /**\n * The orientation of the sort - Note this may be counterintuitive, as the line is rendered perpendicular to the sort.\n */\n orientation: \"horizontal\" | \"vertical\";\n /**\n * The position of the line relative to a target item.\n */\n position: \"before\" | \"after\";\n};\n\n/**\n * A visual indicator line that shows where an item will be dropped during drag and drop operations.\n *\n * Features:\n * - Visual feedback for drop positioning\n * - Configurable orientation (horizontal/vertical)\n * - Adjustable positioning (before/after)\n * - Customizable offset for precise placement\n * - Accessible with proper ARIA attributes\n * - Automatic CSS class management\n * - Supports all standard HTML div props\n *\n * @example\n * <DndSortLine\n * offset=\"-10px\"\n * orientation=\"vertical\"\n * position=\"after\"\n * className=\"custom-drop-line\"\n * />\n */\nexport const DndSortLine = ({\n offset,\n orientation,\n position,\n ...rest\n}: SortLineProps) => {\n const classes = cx(\n styles[\"drop-line\"],\n styles[`orientation-${orientation}`],\n styles[`position-${position}`],\n );\n\n return (\n <div\n aria-hidden\n className={classes}\n style={{ \"--drop-line-offset\": offset } as CSSProperties}\n {...rest}\n />\n );\n};\n","import { ElementType, forwardRef, ReactNode } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Dnd.module.scss\";\n\n/**\n * Props for the DndZone component\n * @extends Omit<React.ComponentPropsWithoutRef<T>, \"el\" | \"ref\">\n */\nexport type DndZoneProps<T extends ElementType = \"div\"> = {\n /**\n * The HTML element type to render. Can be any valid HTML element or React component.\n * @default \"div\"\n */\n el?: T;\n /**\n * The content to be rendered inside the drop zone.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names to apply to the drop zone.\n */\n className?: string;\n /**\n * Indicates whether a draggable item is currently over this drop zone.\n */\n isOver: boolean;\n /**\n * Indicates whether the current drag operation is valid for this drop zone.\n */\n isValid: boolean;\n /**\n * Indicates whether any item is currently being dragged.\n */\n isDragging: boolean;\n} & Omit<React.ComponentPropsWithoutRef<T>, \"el\" | \"ref\">;\n\n/**\n * Base styling component for drop zones that handles visual states and styling.\n *\n * Features:\n * - Configurable HTML element rendering with the 'el' prop\n * - Visual feedback for drag states (over, valid, dragging)\n * - Automatic CSS class management based on drag state\n * - Supports all standard HTML element props\n * - Accessible with proper ARIA attributes\n * - Flexible styling through className prop\n * - Responsive design that adapts to container\n *\n * @example\n * <DndZone\n * isOver={isOver}\n * isValid={isValid}\n * isDragging={isDragging}\n * className=\"custom-drop-zone\"\n * >\n * Drop items here\n * </DndZone>\n */\nexport const DndZone = forwardRef<HTMLDivElement, DndZoneProps<ElementType>>(\n (\n {\n el: Component = \"div\" as ElementType,\n children,\n className,\n isDragging,\n isOver,\n isValid,\n ...rest\n },\n ref,\n ) => {\n const classes = cx(className, {\n [styles[\"drop-zone\"]]: true,\n [styles[\"over-valid\"]]: isDragging && isOver && isValid,\n [styles[\"over-invalid\"]]: isDragging && isOver && !isValid,\n [styles[\"active-not-over\"]]: isDragging && !isOver,\n });\n\n return (\n <Component ref={ref} className={classes} {...rest}>\n {children}\n </Component>\n );\n },\n);\n\nDndZone.displayName = \"DndZoneBase\";\n","import { DndHandle } from \"./DndHandle\";\nimport { DndHandleButton } from \"./DndHandleButton\";\nimport { DndSortLine } from \"./DndSortLine\";\nimport { DndZone } from \"./DndZone\";\n\nexport const Dnd = {\n Handle: DndHandle,\n HandleButton: DndHandleButton,\n SortLine: DndSortLine,\n Zone: DndZone,\n};\n"],"names":["styles","DragIndicator"],"mappings":"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"}
1
+ {"version":3,"file":"index-ClUtwV8V.js","sources":["../../hammer-icon/mdi/round/drag_indicator.svg","../src/components/Dnd/DndHandle.tsx","../src/components/Dnd/DndHandleButton.tsx","../src/components/Dnd/DndSortLine.tsx","../src/components/Dnd/DndZone.tsx","../src/components/Dnd/index.ts"],"sourcesContent":["import * as React from \"react\";\nconst SvgDragIndicator = (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: \"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" }));\nexport default SvgDragIndicator;\n","import { Icon } from \"../Icon\";\nimport DragIndicator from \"@servicetitan/hammer-icon/mdi/round/drag_indicator.svg\";\nimport styles from \"./DndHandle.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Props for the DndHandle component\n */\nexport type DndHandleProps = {\n /**\n * Additional CSS class names to apply to the drag handle.\n */\n className?: string;\n};\n\n/**\n * A reusable drag handle icon component for drag and drop interactions.\n *\n * Features:\n * - Standardized drag indicator icon\n * - Accessible with proper ARIA attributes\n * - Customizable styling through className prop\n * - Consistent visual appearance across applications\n * - Lightweight and performant\n * - Supports all standard HTML element props\n *\n * @example\n * <DndHandle className=\"custom-drag-handle\" />\n */\nexport function DndHandle({ className }: { className?: string }) {\n const handleClasses = cx(styles.handle, className);\n return (\n <Icon svg={DragIndicator} className={handleClasses} role=\"presentation\" />\n );\n}\n","import { ButtonCompound } from \"../ButtonCompound\";\nimport handleStyles from \"./DndHandle.module.scss\";\nimport cx from \"classnames\";\nimport { forwardRef } from \"react\";\nimport { DndHandle } from \"./DndHandle\";\n\n/**\n * Props for the DndHandleButton component\n * @extends React.ComponentPropsWithoutRef<typeof ButtonCompound>\n */\nexport interface DndHandleButtonProps\n extends React.ComponentPropsWithoutRef<typeof ButtonCompound> {\n /**\n * Indicates whether the handle is currently being dragged.\n * @default false\n */\n isActive?: boolean;\n}\n\n/**\n * A reusable drag handle button component for drag and drop functionality.\n *\n * Features:\n * - Interactive button with drag handle icon\n * - Visual feedback for active drag state\n * - Accessible with proper ARIA attributes (defaults to \"Drag handle\")\n * - Extends ButtonCompound functionality\n * - Customizable styling through className prop\n * - Supports all standard button props\n * - Consistent visual appearance across applications\n *\n * @example\n * <DndHandleButton\n * isActive={isDragging}\n * aria-label=\"Drag task item\"\n * className=\"custom-handle-button\"\n * onClick={handleClick}\n * />\n */\nexport const DndHandleButton = forwardRef<\n HTMLButtonElement,\n DndHandleButtonProps\n>(({ isActive = false, className, ...props }, ref) => {\n const handleButtonClasses = cx(className, handleStyles[\"handle-button\"], {\n [handleStyles[\"active\"]]: isActive,\n });\n\n return (\n <ButtonCompound\n ref={ref}\n className={handleButtonClasses}\n type=\"button\"\n shape=\"rounded\"\n aria-label=\"Drag handle\"\n {...props}\n >\n <DndHandle />\n </ButtonCompound>\n );\n});\n\nDndHandleButton.displayName = \"DndHandleButton\";\n","import cx from \"classnames\";\n\nimport styles from \"./Dnd.module.scss\";\nimport { CSSProperties } from \"react\";\n\n/**\n * Props for the DndSortLine component\n * @extends React.ComponentPropsWithoutRef<\"div\">\n */\nexport type SortLineProps = React.ComponentPropsWithoutRef<\"div\"> & {\n /**\n * The offset of the line from the item. This is a CSS value, typically negative.\n */\n offset: string;\n /**\n * The orientation of the sort - Note this may be counterintuitive, as the line is rendered perpendicular to the sort.\n */\n orientation: \"horizontal\" | \"vertical\";\n /**\n * The position of the line relative to a target item.\n */\n position: \"before\" | \"after\";\n};\n\n/**\n * A visual indicator line that shows where an item will be dropped during drag and drop operations.\n *\n * Features:\n * - Visual feedback for drop positioning\n * - Configurable orientation (horizontal/vertical)\n * - Adjustable positioning (before/after)\n * - Customizable offset for precise placement\n * - Accessible with proper ARIA attributes\n * - Automatic CSS class management\n * - Supports all standard HTML div props\n *\n * @example\n * <DndSortLine\n * offset=\"-10px\"\n * orientation=\"vertical\"\n * position=\"after\"\n * className=\"custom-drop-line\"\n * />\n */\nexport const DndSortLine = ({\n offset,\n orientation,\n position,\n ...rest\n}: SortLineProps) => {\n const classes = cx(\n styles[\"drop-line\"],\n styles[`orientation-${orientation}`],\n styles[`position-${position}`],\n );\n\n return (\n <div\n aria-hidden\n className={classes}\n style={{ \"--drop-line-offset\": offset } as CSSProperties}\n {...rest}\n />\n );\n};\n","import { ElementType, forwardRef, ReactNode } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Dnd.module.scss\";\n\n/**\n * Props for the DndZone component\n * @extends Omit<React.ComponentPropsWithoutRef<T>, \"el\" | \"ref\">\n */\nexport type DndZoneProps<T extends ElementType = \"div\"> = {\n /**\n * The HTML element type to render. Can be any valid HTML element or React component.\n * @default \"div\"\n */\n el?: T;\n /**\n * The content to be rendered inside the drop zone.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names to apply to the drop zone.\n */\n className?: string;\n /**\n * Indicates whether a draggable item is currently over this drop zone.\n */\n isOver: boolean;\n /**\n * Indicates whether the current drag operation is valid for this drop zone.\n */\n isValid: boolean;\n /**\n * Indicates whether any item is currently being dragged.\n */\n isDragging: boolean;\n} & Omit<React.ComponentPropsWithoutRef<T>, \"el\" | \"ref\">;\n\n/**\n * Base styling component for drop zones that handles visual states and styling.\n *\n * Features:\n * - Configurable HTML element rendering with the 'el' prop\n * - Visual feedback for drag states (over, valid, dragging)\n * - Automatic CSS class management based on drag state\n * - Supports all standard HTML element props\n * - Accessible with proper ARIA attributes\n * - Flexible styling through className prop\n * - Responsive design that adapts to container\n *\n * @example\n * <DndZone\n * isOver={isOver}\n * isValid={isValid}\n * isDragging={isDragging}\n * className=\"custom-drop-zone\"\n * >\n * Drop items here\n * </DndZone>\n */\nexport const DndZone = forwardRef<HTMLDivElement, DndZoneProps<ElementType>>(\n (\n {\n el: Component = \"div\" as ElementType,\n children,\n className,\n isDragging,\n isOver,\n isValid,\n ...rest\n },\n ref,\n ) => {\n const classes = cx(className, {\n [styles[\"drop-zone\"]]: true,\n [styles[\"over-valid\"]]: isDragging && isOver && isValid,\n [styles[\"over-invalid\"]]: isDragging && isOver && !isValid,\n [styles[\"active-not-over\"]]: isDragging && !isOver,\n });\n\n return (\n <Component ref={ref} className={classes} {...rest}>\n {children}\n </Component>\n );\n },\n);\n\nDndZone.displayName = \"DndZoneBase\";\n","import { DndHandle } from \"./DndHandle\";\nimport { DndHandleButton } from \"./DndHandleButton\";\nimport { DndSortLine } from \"./DndSortLine\";\nimport { DndZone } from \"./DndZone\";\n\nexport const Dnd = {\n Handle: DndHandle,\n HandleButton: DndHandleButton,\n SortLine: DndSortLine,\n Zone: DndZone,\n};\n"],"names":["styles","DragIndicator"],"mappings":"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"}