@servicetitan/anvil2 1.46.2 → 1.46.4

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 (180) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/{Avatar-CyGjhToG.js → Avatar-3d5Kv2CF.js} +2 -2
  3. package/dist/{Avatar-CyGjhToG.js.map → Avatar-3d5Kv2CF.js.map} +1 -1
  4. package/dist/{Avatar-D07f9NH_.js → Avatar-DJ3oJNsv.js} +2 -2
  5. package/dist/{Avatar-D07f9NH_.js.map → Avatar-DJ3oJNsv.js.map} +1 -1
  6. package/dist/Avatar.js +2 -2
  7. package/dist/{Calendar-X9qUi6Vx.js → Calendar-BqOvsaby.js} +246 -195
  8. package/dist/Calendar-BqOvsaby.js.map +1 -0
  9. package/dist/Calendar.js +1 -1
  10. package/dist/{Checkbox-CcYtto5f.js → Checkbox-C5PX8wur.js} +2 -2
  11. package/dist/{Checkbox-CcYtto5f.js.map → Checkbox-C5PX8wur.js.map} +1 -1
  12. package/dist/{Checkbox-BDohwHXQ.js → Checkbox-DAODkzN3.js} +2 -2
  13. package/dist/{Checkbox-BDohwHXQ.js.map → Checkbox-DAODkzN3.js.map} +1 -1
  14. package/dist/Checkbox.js +2 -2
  15. package/dist/{Chip-Bz-vlQ4D.js → Chip-DLU13qe-.js} +2 -2
  16. package/dist/{Chip-Bz-vlQ4D.js.map → Chip-DLU13qe-.js.map} +1 -1
  17. package/dist/Chip.js +1 -1
  18. package/dist/{Combobox-DQmW8Tyl.js → Combobox-DO8cIvRQ.js} +6 -6
  19. package/dist/{Combobox-DQmW8Tyl.js.map → Combobox-DO8cIvRQ.js.map} +1 -1
  20. package/dist/Combobox.js +1 -1
  21. package/dist/{DateField-C43nfkbx.js → DateField-DLqKbCcm.js} +35 -101
  22. package/dist/DateField-DLqKbCcm.js.map +1 -0
  23. package/dist/DateField.js +1 -1
  24. package/dist/{DateFieldRange-g7n5QYww.js → DateFieldRange-DI-iF-sd.js} +54 -55
  25. package/dist/DateFieldRange-DI-iF-sd.js.map +1 -0
  26. package/dist/DateFieldRange.js +1 -1
  27. package/dist/{DateFieldSingle-D3tneqeG.js → DateFieldSingle-BXakaSIE.js} +50 -52
  28. package/dist/DateFieldSingle-BXakaSIE.js.map +1 -0
  29. package/dist/DateFieldSingle.js +1 -1
  30. package/dist/{DateFieldYearless-3JBVj3wn.js → DateFieldYearless-BmeKGaDc.js} +2 -2
  31. package/dist/{DateFieldYearless-3JBVj3wn.js.map → DateFieldYearless-BmeKGaDc.js.map} +1 -1
  32. package/dist/DateFieldYearless.js +1 -1
  33. package/dist/{DaysOfTheWeek-RcPgDoM3.js → DaysOfTheWeek-DPH13VCK.js} +3 -3
  34. package/dist/{DaysOfTheWeek-RcPgDoM3.js.map → DaysOfTheWeek-DPH13VCK.js.map} +1 -1
  35. package/dist/DaysOfTheWeek.js +1 -1
  36. package/dist/{Dialog-FNJ16gY6.js → Dialog-xsgqM6e1.js} +13 -20
  37. package/dist/Dialog-xsgqM6e1.js.map +1 -0
  38. package/dist/Dialog.js +1 -1
  39. package/dist/DndSort.js +46 -6
  40. package/dist/DndSort.js.map +1 -1
  41. package/dist/{Drawer-DT31CMRd.js → Drawer-DpN7wUNy.js} +14 -21
  42. package/dist/Drawer-DpN7wUNy.js.map +1 -0
  43. package/dist/Drawer.js +1 -1
  44. package/dist/{FieldLabel-BP8QK5UR.js → FieldLabel-Bgl3iu13.js} +2 -2
  45. package/dist/{FieldLabel-BP8QK5UR.js.map → FieldLabel-Bgl3iu13.js.map} +1 -1
  46. package/dist/FieldLabel.js +1 -1
  47. package/dist/{InputMask-CPuYMcw9.js → InputMask-B13KumrK.js} +2 -2
  48. package/dist/{InputMask-CPuYMcw9.js.map → InputMask-B13KumrK.js.map} +1 -1
  49. package/dist/InputMask.js +1 -1
  50. package/dist/{ListView-BJI8BQJ-.js → ListView-C-cVQZHp.js} +3 -3
  51. package/dist/{ListView-BJI8BQJ-.js.map → ListView-C-cVQZHp.js.map} +1 -1
  52. package/dist/ListView.js +1 -1
  53. package/dist/{Listbox-CUhMbFm2.js → Listbox-DxGx630W.js} +2 -2
  54. package/dist/{Listbox-CUhMbFm2.js.map → Listbox-DxGx630W.js.map} +1 -1
  55. package/dist/Listbox.js +1 -1
  56. package/dist/{Menu-t_11BIhU.js → Menu-DUZqzpwg.js} +6 -8
  57. package/dist/Menu-DUZqzpwg.js.map +1 -0
  58. package/dist/Menu.js +1 -1
  59. package/dist/{NumberField-Bjf9Tyvf.js → NumberField-DWPAy1eG.js} +7 -7
  60. package/dist/{NumberField-Bjf9Tyvf.js.map → NumberField-DWPAy1eG.js.map} +1 -1
  61. package/dist/NumberField.css +9 -6
  62. package/dist/NumberField.js +1 -1
  63. package/dist/{Page-BAyXnhz2.js → Page-CRuqAlNu.js} +7 -7
  64. package/dist/{Page-BAyXnhz2.js.map → Page-CRuqAlNu.js.map} +1 -1
  65. package/dist/Page.js +1 -1
  66. package/dist/{Pagination-DCBic619.js → Pagination-B_G9QcHf.js} +3 -3
  67. package/dist/{Pagination-DCBic619.js.map → Pagination-B_G9QcHf.js.map} +1 -1
  68. package/dist/Pagination.js +1 -1
  69. package/dist/{Popover-CrksxqKk.js → Popover-v8R920kj.js} +135 -200
  70. package/dist/Popover-v8R920kj.js.map +1 -0
  71. package/dist/Popover.js +1 -1
  72. package/dist/{ProgressBar-CgsAW2d8.js → ProgressBar-BWN2yv1s.js} +2 -2
  73. package/dist/{ProgressBar-CgsAW2d8.js.map → ProgressBar-BWN2yv1s.js.map} +1 -1
  74. package/dist/ProgressBar.js +1 -1
  75. package/dist/{Radio-C_rvxw74.js → Radio-C5riI-do.js} +2 -2
  76. package/dist/{Radio-C_rvxw74.js.map → Radio-C5riI-do.js.map} +1 -1
  77. package/dist/Radio.js +2 -2
  78. package/dist/{RadioGroup-DxBblSrx.js → RadioGroup-B7O06pVu.js} +2 -2
  79. package/dist/{RadioGroup-DxBblSrx.js.map → RadioGroup-B7O06pVu.js.map} +1 -1
  80. package/dist/{SearchField-Bb0uObwG.js → SearchField-CbwGErC4.js} +2 -2
  81. package/dist/{SearchField-Bb0uObwG.js.map → SearchField-CbwGErC4.js.map} +1 -1
  82. package/dist/SearchField.js +1 -1
  83. package/dist/{SegmentedControl-DC4BpdH5.js → SegmentedControl-CLDdes8W.js} +2 -2
  84. package/dist/{SegmentedControl-DC4BpdH5.js.map → SegmentedControl-CLDdes8W.js.map} +1 -1
  85. package/dist/SegmentedControl.js +1 -1
  86. package/dist/{SelectCard-DunNE9R3.js → SelectCard-Ca07K1FW.js} +3 -3
  87. package/dist/{SelectCard-DunNE9R3.js.map → SelectCard-Ca07K1FW.js.map} +1 -1
  88. package/dist/SelectCard.js +1 -1
  89. package/dist/{SelectTrigger-BYysLREL.js → SelectTrigger-CaXX1SHG.js} +3 -3
  90. package/dist/{SelectTrigger-BYysLREL.js.map → SelectTrigger-CaXX1SHG.js.map} +1 -1
  91. package/dist/SelectTrigger.js +1 -1
  92. package/dist/{SelectTriggerBase-DqUpJgzk.js → SelectTriggerBase-C7TLCna1.js} +3 -3
  93. package/dist/{SelectTriggerBase-DqUpJgzk.js.map → SelectTriggerBase-C7TLCna1.js.map} +1 -1
  94. package/dist/{SideNav-B9AWmF_H.js → SideNav-nqq5sAwz.js} +2 -2
  95. package/dist/{SideNav-B9AWmF_H.js.map → SideNav-nqq5sAwz.js.map} +1 -1
  96. package/dist/SideNav.js +1 -1
  97. package/dist/{Stepper-DHTrvfXw.js → Stepper-DQ_Hm-AI.js} +2 -2
  98. package/dist/{Stepper-DHTrvfXw.js.map → Stepper-DQ_Hm-AI.js.map} +1 -1
  99. package/dist/Stepper.js +1 -1
  100. package/dist/{Tab-0zx9hsw8.js → Tab-CzNx3IdF.js} +2 -2
  101. package/dist/{Tab-0zx9hsw8.js.map → Tab-CzNx3IdF.js.map} +1 -1
  102. package/dist/Tab.js +1 -1
  103. package/dist/{TextField-CFWs3lm9.js → TextField-D9gD-34Q.js} +3 -3
  104. package/dist/{TextField-CFWs3lm9.js.map → TextField-D9gD-34Q.js.map} +1 -1
  105. package/dist/{TextField-Cge6IRo5.js → TextField-uCHgwO5F.js} +2 -2
  106. package/dist/{TextField-Cge6IRo5.js.map → TextField-uCHgwO5F.js.map} +1 -1
  107. package/dist/TextField.js +1 -1
  108. package/dist/{Textarea-CXd3NKkW.js → Textarea-B2-6m291.js} +3 -3
  109. package/dist/{Textarea-CXd3NKkW.js.map → Textarea-B2-6m291.js.map} +1 -1
  110. package/dist/Textarea.js +1 -1
  111. package/dist/{TimeField-4v5aCwiG.js → TimeField-B5Jgy-Zg.js} +21 -8
  112. package/dist/TimeField-B5Jgy-Zg.js.map +1 -0
  113. package/dist/TimeField.js +1 -1
  114. package/dist/Toast.js +2 -2
  115. package/dist/{Toaster-bON5Xc1P.js → Toaster-CHyB-Mxs.js} +3 -3
  116. package/dist/{Toaster-bON5Xc1P.js.map → Toaster-CHyB-Mxs.js.map} +1 -1
  117. package/dist/{Toaster-D-rNSLTq.js → Toaster-CyiGDKMh.js} +3 -3
  118. package/dist/{Toaster-D-rNSLTq.js.map → Toaster-CyiGDKMh.js.map} +1 -1
  119. package/dist/{Toolbar-B2Jsuptz.js → Toolbar-DNErV9v8.js} +16 -15
  120. package/dist/Toolbar-DNErV9v8.js.map +1 -0
  121. package/dist/Toolbar.js +1 -1
  122. package/dist/{Tooltip-CtCLw_vx.js → Tooltip-DhtVlhah.js} +2 -2
  123. package/dist/{Tooltip-CtCLw_vx.js.map → Tooltip-DhtVlhah.js.map} +1 -1
  124. package/dist/Tooltip.js +1 -1
  125. package/dist/beta.js +1 -1
  126. package/dist/components/Calendar/Calendar.d.ts +5 -0
  127. package/dist/components/Calendar/CalendarNowButton.d.ts +3 -1
  128. package/dist/components/Checkbox/Checkbox.d.ts +1 -1
  129. package/dist/components/Dialog/internal/useInitialFocus.d.ts +15 -0
  130. package/dist/components/DndSort/internal/DndSortOverlay.d.ts +1 -1
  131. package/dist/components/NumberField/NumberField.d.ts +2 -2
  132. package/dist/components/Popover/Popover.d.ts +136 -1
  133. package/dist/components/Popover/PopoverTrigger.d.ts +0 -1
  134. package/dist/components/Popover/internal/PopoverContext.d.ts +5 -3
  135. package/dist/components/Popover/internal/usePopoverContext.d.ts +6 -4
  136. package/dist/components/Radio/Radio.d.ts +1 -1
  137. package/dist/hooks/useMergeRefs/useMergeRefs.d.ts +11 -0
  138. package/dist/index.js +43 -43
  139. package/dist/internal/components/index.d.ts +1 -0
  140. package/dist/internal/hooks/index.d.ts +2 -2
  141. package/dist/internal/hooks/useFocusWithin/useFocusWithin.d.ts +2 -1
  142. package/dist/internal/hooks/useKeyboardFocusables/useKeyboardFocusables.d.ts +0 -1
  143. package/dist/internal/hooks/useOnClickOutside/useOnClickOutside.d.ts +5 -1
  144. package/dist/internal/hooks/usePlatform/index.d.ts +1 -1
  145. package/dist/internal/index.d.ts +5 -0
  146. package/dist/internal/types/argTypes.d.ts +154 -0
  147. package/dist/internal/types/index.d.ts +1 -0
  148. package/dist/{useFocusWithin-BhhgRXdZ.js → useFocusWithin-hi77jsrB.js} +6 -3
  149. package/dist/useFocusWithin-hi77jsrB.js.map +1 -0
  150. package/dist/useInitialFocus-CAFMgbJG.js +130 -0
  151. package/dist/useInitialFocus-CAFMgbJG.js.map +1 -0
  152. package/dist/useMergeRefs-Dfmtq9cI.js +22 -0
  153. package/dist/useMergeRefs-Dfmtq9cI.js.map +1 -0
  154. package/dist/useMergeRefs.js +1 -1
  155. package/dist/{useOnClickOutside-B1ddwORK.js → useOnClickOutside-C5AZE_I6.js} +6 -65
  156. package/dist/useOnClickOutside-C5AZE_I6.js.map +1 -0
  157. package/dist/utils-Dh3aegV3.js +50 -0
  158. package/dist/utils-Dh3aegV3.js.map +1 -0
  159. package/package.json +1 -1
  160. package/dist/Calendar-X9qUi6Vx.js.map +0 -1
  161. package/dist/DateField-C43nfkbx.js.map +0 -1
  162. package/dist/DateFieldRange-g7n5QYww.js.map +0 -1
  163. package/dist/DateFieldSingle-D3tneqeG.js.map +0 -1
  164. package/dist/Dialog-FNJ16gY6.js.map +0 -1
  165. package/dist/Drawer-DT31CMRd.js.map +0 -1
  166. package/dist/Menu-t_11BIhU.js.map +0 -1
  167. package/dist/Popover-CrksxqKk.js.map +0 -1
  168. package/dist/TimeField-4v5aCwiG.js.map +0 -1
  169. package/dist/Toolbar-B2Jsuptz.js.map +0 -1
  170. package/dist/components/DateFieldSingle/internal/useDateFieldOrchestration.d.ts +0 -17
  171. package/dist/useDateFieldOrchestration-DyAc3gPJ.js +0 -138
  172. package/dist/useDateFieldOrchestration-DyAc3gPJ.js.map +0 -1
  173. package/dist/useDialogTransitionStates-C1TtiwA_.js +0 -64
  174. package/dist/useDialogTransitionStates-C1TtiwA_.js.map +0 -1
  175. package/dist/useFocusWithin-BhhgRXdZ.js.map +0 -1
  176. package/dist/useMergeRefs-Bde85AWI.js +0 -21
  177. package/dist/useMergeRefs-Bde85AWI.js.map +0 -1
  178. package/dist/useOnClickOutside-B1ddwORK.js.map +0 -1
  179. package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js +0 -18
  180. package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,78 +1,78 @@
1
1
  import './index2.css';export { DndSort, DndSortCard, DndSortZone } from './DndSort.js';
2
2
  export { A as Alert } from './Alert-CPOBY6O5.js';
3
3
  export { A as Announcement } from './Announcement-BvzAEdx8.js';
4
- export { A as Avatar } from './Avatar-CyGjhToG.js';
5
- export { A as AvatarGroup } from './Avatar-D07f9NH_.js';
4
+ export { A as Avatar } from './Avatar-3d5Kv2CF.js';
5
+ export { A as AvatarGroup } from './Avatar-DJ3oJNsv.js';
6
6
  export { B as Badge } from './Badge-DCA9mfc2.js';
7
7
  export { B as Breadcrumbs, a as BreadcrumbsElement, b as BreadcrumbsLink } from './Breadcrumbs-C4_PEolS.js';
8
8
  import { B as Button } from './Button-VNQQgZ45.js';
9
9
  export { B as ButtonCompound } from './ButtonCompound-BbPK-Xjj.js';
10
10
  import { B as ButtonLink } from './ButtonLink-CqR1F5Wn.js';
11
11
  import { B as ButtonToggle } from './ButtonToggle-PCeSG-5D.js';
12
- export { C as Calendar, f as CalendarMonth, e as CalendarMonthButton, d as CalendarNext, a as CalendarNow, c as CalendarPrev, b as CalendarYearButton } from './Calendar-X9qUi6Vx.js';
12
+ export { C as Calendar, f as CalendarMonth, e as CalendarMonthButton, d as CalendarNext, a as CalendarNow, c as CalendarPrev, b as CalendarYearButton } from './Calendar-BqOvsaby.js';
13
13
  export { C as Card } from './Card-vTYeSkxt.js';
14
- export { C as Checkbox } from './Checkbox-BDohwHXQ.js';
15
- export { C as CheckboxGroup } from './Checkbox-CcYtto5f.js';
16
- export { C as Chip } from './Chip-Bz-vlQ4D.js';
17
- export { C as Combobox, c as ComboboxContent, a as ComboboxElement, i as ComboboxEmpty, e as ComboboxItem, f as ComboboxItemAddNew, d as ComboboxList, g as ComboboxSearchField, b as ComboboxSelect, h as ComboboxSelectTrigger } from './Combobox-DQmW8Tyl.js';
14
+ export { C as Checkbox } from './Checkbox-DAODkzN3.js';
15
+ export { C as CheckboxGroup } from './Checkbox-C5PX8wur.js';
16
+ export { C as Chip } from './Chip-DLU13qe-.js';
17
+ export { C as Combobox, c as ComboboxContent, a as ComboboxElement, i as ComboboxEmpty, e as ComboboxItem, f as ComboboxItemAddNew, d as ComboboxList, g as ComboboxSearchField, b as ComboboxSelect, h as ComboboxSelectTrigger } from './Combobox-DO8cIvRQ.js';
18
18
  export { u as useInfiniteCombobox } from './useInfiniteCombobox-WcRgC9p6.js';
19
- export { D as DateField } from './DateField-C43nfkbx.js';
20
- export { D as DateFieldRange } from './DateFieldRange-g7n5QYww.js';
21
- export { D as DateFieldSingle } from './DateFieldSingle-D3tneqeG.js';
22
- export { D as DateFieldYearless } from './DateFieldYearless-3JBVj3wn.js';
23
- export { D as DaysOfTheWeek } from './DaysOfTheWeek-RcPgDoM3.js';
19
+ export { D as DateField } from './DateField-DLqKbCcm.js';
20
+ export { D as DateFieldRange } from './DateFieldRange-DI-iF-sd.js';
21
+ export { D as DateFieldSingle } from './DateFieldSingle-BXakaSIE.js';
22
+ export { D as DateFieldYearless } from './DateFieldYearless-BmeKGaDc.js';
23
+ export { D as DaysOfTheWeek } from './DaysOfTheWeek-DPH13VCK.js';
24
24
  export { D as Details, b as DetailsContent, a as DetailsSummary } from './Details-CF8DImjw.js';
25
- export { D as Dialog, a as DialogCancelButton, b as DialogContent, c as DialogFooter, d as DialogHeader } from './Dialog-FNJ16gY6.js';
25
+ export { D as Dialog, a as DialogCancelButton, b as DialogContent, c as DialogFooter, d as DialogHeader } from './Dialog-xsgqM6e1.js';
26
26
  export { D as Divider } from './Divider-DJe8kLf2.js';
27
27
  export { D as Dnd } from './index-DrM3iid4.js';
28
- export { D as Drawer, a as DrawerCancelButton, d as DrawerContent, b as DrawerFooter, c as DrawerHeader } from './Drawer-DT31CMRd.js';
28
+ export { D as Drawer, a as DrawerCancelButton, d as DrawerContent, b as DrawerFooter, c as DrawerHeader } from './Drawer-DpN7wUNy.js';
29
29
  export { E as EditCard } from './EditCard-CZzL0nx7.js';
30
- export { F as FieldLabel } from './FieldLabel-BP8QK5UR.js';
30
+ export { F as FieldLabel } from './FieldLabel-Bgl3iu13.js';
31
31
  export { F as FieldMessage } from './FieldMessage-B7uQ8vmr.js';
32
32
  import { F as Flex } from './Flex-BdQMekvA.js';
33
33
  export { G as Grid } from './Grid-MGUC698u.js';
34
34
  import { I as Icon } from './Icon-D8SPKeO4.js';
35
- export { I as InputMask } from './InputMask-CPuYMcw9.js';
35
+ export { I as InputMask } from './InputMask-B13KumrK.js';
36
36
  export { L as Layout, a as LayoutElement, b as LayoutItem } from './Layout-CUUb2PVr.js';
37
37
  export { L as Link, u as useLinkStyles } from './Link-eRsLWPaQ.js';
38
38
  export { L as LinkButton } from './LinkButton-2lXfrVoU.js';
39
- import { L as Listbox } from './Listbox-CUhMbFm2.js';
40
- export { a as ListboxOption, b as ListboxOptionGroup } from './Listbox-CUhMbFm2.js';
41
- export { L as ListView, a as ListViewOption, b as ListViewOptionCell } from './ListView-BJI8BQJ-.js';
42
- export { M as Menu, a as MenuItem } from './Menu-t_11BIhU.js';
43
- export { N as NumberField } from './NumberField-Bjf9Tyvf.js';
39
+ import { L as Listbox } from './Listbox-DxGx630W.js';
40
+ export { a as ListboxOption, b as ListboxOptionGroup } from './Listbox-DxGx630W.js';
41
+ export { L as ListView, a as ListViewOption, b as ListViewOptionCell } from './ListView-C-cVQZHp.js';
42
+ export { M as Menu, a as MenuItem } from './Menu-DUZqzpwg.js';
43
+ export { N as NumberField } from './NumberField-DWPAy1eG.js';
44
44
  export { Overflow, OverflowText } from './Overflow.js';
45
- export { P as Page } from './Page-BAyXnhz2.js';
46
- export { P as Pagination } from './Pagination-DCBic619.js';
47
- import { P as Popover } from './Popover-CrksxqKk.js';
48
- export { a as PopoverButton, b as PopoverClose, c as PopoverContent, d as PopoverTrigger } from './Popover-CrksxqKk.js';
49
- export { P as ProgressBar } from './ProgressBar-CgsAW2d8.js';
50
- export { R as Radio } from './Radio-C_rvxw74.js';
51
- export { R as RadioGroup } from './RadioGroup-DxBblSrx.js';
52
- export { S as SearchField } from './SearchField-Bb0uObwG.js';
53
- export { S as SegmentedControl, a as SegmentedControlSegment } from './SegmentedControl-DC4BpdH5.js';
54
- export { S as SelectCard, a as SelectCardElement, b as SelectCardGroup } from './SelectCard-DunNE9R3.js';
55
- export { S as SelectTrigger } from './SelectTrigger-BYysLREL.js';
56
- export { S as SideNav, b as SideNavCollapsible, c as SideNavGroup, a as SideNavLink } from './SideNav-B9AWmF_H.js';
45
+ export { P as Page } from './Page-CRuqAlNu.js';
46
+ export { P as Pagination } from './Pagination-B_G9QcHf.js';
47
+ import { P as Popover } from './Popover-v8R920kj.js';
48
+ export { a as PopoverButton, b as PopoverClose, c as PopoverContent, d as PopoverTrigger } from './Popover-v8R920kj.js';
49
+ export { P as ProgressBar } from './ProgressBar-BWN2yv1s.js';
50
+ export { R as Radio } from './Radio-C5riI-do.js';
51
+ export { R as RadioGroup } from './RadioGroup-B7O06pVu.js';
52
+ export { S as SearchField } from './SearchField-CbwGErC4.js';
53
+ export { S as SegmentedControl, a as SegmentedControlSegment } from './SegmentedControl-CLDdes8W.js';
54
+ export { S as SelectCard, a as SelectCardElement, b as SelectCardGroup } from './SelectCard-Ca07K1FW.js';
55
+ export { S as SelectTrigger } from './SelectTrigger-CaXX1SHG.js';
56
+ export { S as SideNav, b as SideNavCollapsible, c as SideNavGroup, a as SideNavLink } from './SideNav-nqq5sAwz.js';
57
57
  export { Skeleton, SkeletonCircle, SkeletonPill, SkeletonRectangle, SkeletonText } from './Skeleton.js';
58
58
  export { S as Spinner } from './Spinner-wmO8Epw0.js';
59
59
  export { S as SrOnly } from './SrOnly-CTsYSuby.js';
60
- export { S as Stepper, a as StepperFinalPanel, b as StepperList, c as StepperNextButton, d as StepperPanel, e as StepperPrevButton, f as StepperStep } from './Stepper-DHTrvfXw.js';
60
+ export { S as Stepper, a as StepperFinalPanel, b as StepperList, c as StepperNextButton, d as StepperPanel, e as StepperPrevButton, f as StepperStep } from './Stepper-DQ_Hm-AI.js';
61
61
  export { S as Switch } from './Switch-C2ddZcr9.js';
62
- export { T as Tab, a as TabButton, b as TabList, c as TabPanel } from './Tab-0zx9hsw8.js';
62
+ export { T as Tab, a as TabButton, b as TabList, c as TabPanel } from './Tab-CzNx3IdF.js';
63
63
  export { T as Text } from './Text-BqvcbXyp.js';
64
- export { T as Textarea } from './Textarea-CXd3NKkW.js';
65
- export { T as TextField } from './TextField-Cge6IRo5.js';
66
- export { T as TimeField } from './TimeField-4v5aCwiG.js';
67
- export { T as Toaster } from './Toaster-bON5Xc1P.js';
68
- export { t as toast } from './Toaster-D-rNSLTq.js';
64
+ export { T as Textarea } from './Textarea-B2-6m291.js';
65
+ export { T as TextField } from './TextField-uCHgwO5F.js';
66
+ export { T as TimeField } from './TimeField-B5Jgy-Zg.js';
67
+ export { T as Toaster } from './Toaster-CHyB-Mxs.js';
68
+ export { t as toast } from './Toaster-CyiGDKMh.js';
69
69
  import { jsx, jsxs } from 'react/jsx-runtime';
70
70
  import { useContext, createContext, useId, useRef, useCallback, useEffect, forwardRef, useState, useMemo } from 'react';
71
71
  import { c as cx } from './index-tZvMCc77.js';
72
72
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjD5IMh0.js';
73
- import { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';
74
- import { T as Tooltip } from './Tooltip-CtCLw_vx.js';
75
- export { a as TooltipContent, b as TooltipTrigger } from './Tooltip-CtCLw_vx.js';
73
+ import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
74
+ import { T as Tooltip } from './Tooltip-DhtVlhah.js';
75
+ export { a as TooltipContent, b as TooltipTrigger } from './Tooltip-DhtVlhah.js';
76
76
  export { u as useAccessibleColor } from './useAccessibleColor-BYKjkGRg.js';
77
77
  export { u as useBreakpoint } from './useBreakpoint-Cv5fnZxs.js';
78
78
  export { u as usePrefersColorScheme } from './usePrefersColorScheme-_hT7dK7_.js';
@@ -1,3 +1,4 @@
1
1
  export * from './Helper';
2
2
  export * from './Shadow';
3
3
  export * from './Label';
4
+ export * from './YearSelector';
@@ -8,8 +8,8 @@ export * from './useLayoutPropsUtil';
8
8
  export * from './useNumberField';
9
9
  export * from './useOnClickOutside';
10
10
  export * from './useOpenCloseTransitionStates';
11
- export * from './useOptionallyControlledState/useOptionallyControlledState';
12
- export * from './usePlatform/usePlatform';
11
+ export * from './useOptionallyControlledState';
12
+ export * from './usePlatform';
13
13
  export * from './usePopoverCloseDelayWorkaround';
14
14
  export * from './usePopoverSupport';
15
15
  export * from './usePopoverTransitionStates';
@@ -2,6 +2,7 @@ import { FocusEventHandler } from 'react';
2
2
  export interface UseFocusWithinOptions {
3
3
  onFocus?: (event: React.FocusEvent) => void;
4
4
  onBlur?: (event: React.FocusEvent) => void;
5
+ otherRelatedElements?: HTMLElement[];
5
6
  }
6
7
  export interface UseFocusWithinReturnValue<T extends HTMLElement = HTMLElement> {
7
8
  props: {
@@ -25,4 +26,4 @@ export interface UseFocusWithinReturnValue<T extends HTMLElement = HTMLElement>
25
26
  *
26
27
  * return <div {...props}>Content</div>;
27
28
  */
28
- export declare function useFocusWithin<T extends HTMLElement = any>({ onBlur, onFocus, }?: UseFocusWithinOptions): UseFocusWithinReturnValue<T>;
29
+ export declare function useFocusWithin<T extends HTMLElement = any>({ onBlur, onFocus, otherRelatedElements, }?: UseFocusWithinOptions): UseFocusWithinReturnValue<T>;
@@ -49,6 +49,5 @@ type OptionProps = {
49
49
  */
50
50
  export declare const useKeyboardFocusables: (element: RefObject<HTMLElement> | HTMLElement | undefined, options?: OptionProps) => {
51
51
  focusables: FocusableElement[] | null;
52
- updateFocusables: () => void;
53
52
  };
54
53
  export {};
@@ -14,6 +14,10 @@ type UseOnClickOutsideProps = {
14
14
  * Array of target elements to monitor
15
15
  */
16
16
  targets: (HTMLElement | undefined)[];
17
+ /**
18
+ * Whether to disable the useOnClickOutside hook
19
+ */
20
+ disable?: boolean;
17
21
  };
18
22
  /**
19
23
  * Custom hook for detecting clicks outside of specified target elements.
@@ -30,5 +34,5 @@ type UseOnClickOutsideProps = {
30
34
  * @param props - Configuration object containing targets and optional callbacks
31
35
  * @returns void
32
36
  */
33
- export declare const useOnClickOutside: ({ onOutsidePress, targets, onClose, }: UseOnClickOutsideProps) => void;
37
+ export declare const useOnClickOutside: ({ onOutsidePress, targets, onClose, disable, }: UseOnClickOutsideProps) => void;
34
38
  export {};
@@ -1 +1 @@
1
- export { usePlatform } from './usePlatform';
1
+ export * from './usePlatform';
@@ -0,0 +1,5 @@
1
+ export * from './components';
2
+ export * from './functions';
3
+ export * from './hooks';
4
+ export * from './types';
5
+ export * from './utils';
@@ -0,0 +1,154 @@
1
+ export declare const argTypesLayoutProps: {
2
+ alignContent: {
3
+ table: {
4
+ category: string;
5
+ };
6
+ };
7
+ alignItems: {
8
+ table: {
9
+ category: string;
10
+ };
11
+ };
12
+ alignSelf: {
13
+ table: {
14
+ category: string;
15
+ };
16
+ };
17
+ columnGap: {
18
+ table: {
19
+ category: string;
20
+ };
21
+ };
22
+ flex: {
23
+ table: {
24
+ category: string;
25
+ };
26
+ };
27
+ flexBasis: {
28
+ table: {
29
+ category: string;
30
+ };
31
+ };
32
+ flexDirection: {
33
+ table: {
34
+ category: string;
35
+ };
36
+ };
37
+ flexGrow: {
38
+ table: {
39
+ category: string;
40
+ };
41
+ };
42
+ flexShrink: {
43
+ table: {
44
+ category: string;
45
+ };
46
+ };
47
+ gap: {
48
+ table: {
49
+ category: string;
50
+ };
51
+ };
52
+ gridArea: {
53
+ table: {
54
+ category: string;
55
+ };
56
+ };
57
+ gridColumn: {
58
+ table: {
59
+ category: string;
60
+ };
61
+ };
62
+ gridColumnEnd: {
63
+ table: {
64
+ category: string;
65
+ };
66
+ };
67
+ gridColumnStart: {
68
+ table: {
69
+ category: string;
70
+ };
71
+ };
72
+ gridRow: {
73
+ table: {
74
+ category: string;
75
+ };
76
+ };
77
+ gridRowEnd: {
78
+ table: {
79
+ category: string;
80
+ };
81
+ };
82
+ gridRowStart: {
83
+ table: {
84
+ category: string;
85
+ };
86
+ };
87
+ justifyContent: {
88
+ table: {
89
+ category: string;
90
+ };
91
+ };
92
+ justifyItems: {
93
+ table: {
94
+ category: string;
95
+ };
96
+ };
97
+ justifySelf: {
98
+ table: {
99
+ category: string;
100
+ };
101
+ };
102
+ order: {
103
+ table: {
104
+ category: string;
105
+ };
106
+ };
107
+ placeContent: {
108
+ table: {
109
+ category: string;
110
+ };
111
+ };
112
+ placeItems: {
113
+ table: {
114
+ category: string;
115
+ };
116
+ };
117
+ placeSelf: {
118
+ table: {
119
+ category: string;
120
+ };
121
+ };
122
+ rowGap: {
123
+ table: {
124
+ category: string;
125
+ };
126
+ };
127
+ };
128
+ export declare const argTypesResponsiveSizes: {
129
+ sm: {
130
+ table: {
131
+ category: string;
132
+ };
133
+ };
134
+ md: {
135
+ table: {
136
+ category: string;
137
+ };
138
+ };
139
+ lg: {
140
+ table: {
141
+ category: string;
142
+ };
143
+ };
144
+ xl: {
145
+ table: {
146
+ category: string;
147
+ };
148
+ };
149
+ xxl: {
150
+ table: {
151
+ category: string;
152
+ };
153
+ };
154
+ };
@@ -1 +1,2 @@
1
+ export * from './argTypes.ts';
1
2
  export * from './props.ts';
@@ -2,7 +2,8 @@ import { useRef } from 'react';
2
2
 
3
3
  function useFocusWithin({
4
4
  onBlur,
5
- onFocus
5
+ onFocus,
6
+ otherRelatedElements
6
7
  } = {}) {
7
8
  const isFocusedRef = useRef(false);
8
9
  const handleFocus = (event) => {
@@ -12,7 +13,9 @@ function useFocusWithin({
12
13
  }
13
14
  };
14
15
  const handleBlur = (event) => {
15
- if (isFocusedRef.current && !containsRelatedTarget(event)) {
16
+ if (isFocusedRef.current && !containsRelatedTarget(event) && !otherRelatedElements?.some(
17
+ (element) => element.contains(event.relatedTarget)
18
+ )) {
16
19
  isFocusedRef.current = false;
17
20
  onBlur?.(event);
18
21
  }
@@ -29,4 +32,4 @@ function containsRelatedTarget(event) {
29
32
  }
30
33
 
31
34
  export { useFocusWithin as u };
32
- //# sourceMappingURL=useFocusWithin-BhhgRXdZ.js.map
35
+ //# sourceMappingURL=useFocusWithin-hi77jsrB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFocusWithin-hi77jsrB.js","sources":["../src/internal/hooks/useFocusWithin/useFocusWithin.ts"],"sourcesContent":["import { FocusEventHandler, useRef } from \"react\";\nexport interface UseFocusWithinOptions {\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n otherRelatedElements?: HTMLElement[];\n}\n\nexport interface UseFocusWithinReturnValue<\n T extends HTMLElement = HTMLElement,\n> {\n props: {\n onFocus: FocusEventHandler<T>;\n onBlur: FocusEventHandler<T>;\n };\n}\n\n/**\n * Custom hook for tracking focus state within a DOM element.\n *\n * @param options Configuration options for the hook\n * @param options.onFocus Optional callback when focus enters the element\n * @param options.onBlur Optional callback when focus leaves the element\n * @returns Object containing props for the element\n *\n * @example\n * const { props } = useFocusWithin({\n * onFocus: () => console.log('Focus entered'),\n * onBlur: () => console.log('Focus left')\n * });\n *\n * return <div {...props}>Content</div>;\n */\nexport function useFocusWithin<T extends HTMLElement = any>({\n onBlur,\n onFocus,\n otherRelatedElements,\n}: UseFocusWithinOptions = {}): UseFocusWithinReturnValue<T> {\n const isFocusedRef = useRef(false);\n\n const handleFocus: FocusEventHandler<T> = (event) => {\n if (!isFocusedRef.current) {\n isFocusedRef.current = true;\n onFocus?.(event);\n }\n };\n\n const handleBlur: FocusEventHandler<T> = (event) => {\n if (\n isFocusedRef.current &&\n !containsRelatedTarget(event) &&\n !otherRelatedElements?.some((element) =>\n element.contains(event.relatedTarget),\n )\n ) {\n isFocusedRef.current = false;\n onBlur?.(event);\n }\n };\n\n return {\n props: { onFocus: handleFocus, onBlur: handleBlur },\n };\n}\n\nfunction containsRelatedTarget(event: React.FocusEvent) {\n if (\n event.currentTarget instanceof HTMLElement &&\n event.relatedTarget instanceof HTMLElement\n ) {\n return event.currentTarget.contains(event.relatedTarget);\n }\n\n return false;\n}\n"],"names":[],"mappings":";;AAgCO,SAAS,cAAA,CAA4C;AAAA,EAC1D,MAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,GAA2B,EAAC,EAAiC;AAC3D,EAAA,MAAM,YAAA,GAAe,OAAO,KAAK,CAAA;AAEjC,EAAA,MAAM,WAAA,GAAoC,CAAC,KAAA,KAAU;AACnD,IAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AACzB,MAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AACvB,MAAA,OAAA,GAAU,KAAK,CAAA;AAAA,IACjB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,UAAA,GAAmC,CAAC,KAAA,KAAU;AAClD,IAAA,IACE,aAAa,OAAA,IACb,CAAC,sBAAsB,KAAK,CAAA,IAC5B,CAAC,oBAAA,EAAsB,IAAA;AAAA,MAAK,CAAC,OAAA,KAC3B,OAAA,CAAQ,QAAA,CAAS,MAAM,aAAa;AAAA,KACtC,EACA;AACA,MAAA,YAAA,CAAa,OAAA,GAAU,KAAA;AACvB,MAAA,MAAA,GAAS,KAAK,CAAA;AAAA,IAChB;AAAA,EACF,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,EAAE,OAAA,EAAS,WAAA,EAAa,QAAQ,UAAA;AAAW,GACpD;AACF;AAEA,SAAS,sBAAsB,KAAA,EAAyB;AACtD,EAAA,IACE,KAAA,CAAM,aAAA,YAAyB,WAAA,IAC/B,KAAA,CAAM,yBAAyB,WAAA,EAC/B;AACA,IAAA,OAAO,KAAA,CAAM,aAAA,CAAc,QAAA,CAAS,KAAA,CAAM,aAAa,CAAA;AAAA,EACzD;AAEA,EAAA,OAAO,KAAA;AACT;;;;"}
@@ -0,0 +1,130 @@
1
+ import { useEffect, useState, useRef } from 'react';
2
+ import { u as useOpenCloseTransitionStates } from './useOnClickOutside-C5AZE_I6.js';
3
+ import { t as tabbable } from './DrawerContext-D4tWTLVf.js';
4
+
5
+ const ATTRIBUTE_NAME_LIST = "data-anv-dialogs";
6
+ const ATTRIBUTE_NAME_BOOL = "data-anv-dialogs-open";
7
+ const useDialogScrollLock = ({
8
+ open,
9
+ id,
10
+ enableScrollChaining,
11
+ elementRef
12
+ }) => {
13
+ useEffect(() => {
14
+ if (enableScrollChaining) return () => {
15
+ };
16
+ const root = elementRef.current?.getRootNode();
17
+ if (!(root instanceof ShadowRoot)) return () => {
18
+ };
19
+ const updateDialogAttributes = (shouldAdd) => {
20
+ const currentDialogs = root.host.getAttribute(ATTRIBUTE_NAME_LIST)?.split(" ").filter(Boolean) ?? [];
21
+ const newDialogs = new Set(currentDialogs);
22
+ if (shouldAdd) {
23
+ newDialogs.add(id);
24
+ } else {
25
+ newDialogs.delete(id);
26
+ }
27
+ const dialogList = Array.from(newDialogs);
28
+ root.host.setAttribute(ATTRIBUTE_NAME_LIST, dialogList.join(" "));
29
+ if (dialogList.length > 0) {
30
+ root.host.setAttribute(ATTRIBUTE_NAME_BOOL, "true");
31
+ } else {
32
+ root.host.removeAttribute(ATTRIBUTE_NAME_BOOL);
33
+ }
34
+ };
35
+ updateDialogAttributes(open);
36
+ return () => {
37
+ updateDialogAttributes(false);
38
+ };
39
+ }, [open, id, enableScrollChaining, elementRef]);
40
+ };
41
+
42
+ const useDialogTransitionStates = (ref, openProp, options = {}) => {
43
+ const { onOpenAnimationStart, onCloseAnimationComplete } = options;
44
+ return useOpenCloseTransitionStates(openProp, {
45
+ ...options,
46
+ onOpenAnimationStart: () => {
47
+ if (!ref.current) return;
48
+ ref.current.showModal();
49
+ onOpenAnimationStart?.();
50
+ },
51
+ onCloseAnimationComplete: () => {
52
+ if (!ref.current) return;
53
+ ref.current.close();
54
+ onCloseAnimationComplete?.();
55
+ },
56
+ durationMs: () => {
57
+ if (!ref.current || !window) return 0;
58
+ const duration = window.getComputedStyle(ref.current).animationDuration;
59
+ return parseFloat(duration) * 1e3;
60
+ }
61
+ });
62
+ };
63
+
64
+ const useKeyboardFocusables = (element, options = {
65
+ observeChange: true,
66
+ attributes: true,
67
+ characterData: true,
68
+ childList: true,
69
+ subtree: true
70
+ }) => {
71
+ const [focusables, setFocusables] = useState(null);
72
+ const observerRef = useRef();
73
+ useEffect(() => {
74
+ const target = element instanceof HTMLElement ? element : element?.current;
75
+ if (!target) return;
76
+ if (!options.observeChange && !focusables) {
77
+ setFocusables(tabbable(target));
78
+ return;
79
+ }
80
+ const mutationCallback = () => {
81
+ const targetArr = tabbable(target);
82
+ if (targetArr.length === 0) return;
83
+ setFocusables(targetArr);
84
+ };
85
+ const observer = new MutationObserver(mutationCallback);
86
+ observerRef.current = observer;
87
+ observer.observe(target, {
88
+ childList: true,
89
+ // Observe changes to child elements
90
+ subtree: true,
91
+ // Observe changes to descendants of the target
92
+ attributes: true,
93
+ // Observe changes to attributes
94
+ characterData: true
95
+ // Observe changes to text content
96
+ });
97
+ return () => {
98
+ observer.disconnect();
99
+ };
100
+ }, [element, options, focusables]);
101
+ return { focusables };
102
+ };
103
+
104
+ const useInitialFocus = (dialogRef, { computeFocus }) => {
105
+ useEffect(() => {
106
+ if (!dialogRef.current) {
107
+ return () => {
108
+ };
109
+ }
110
+ const observer = new MutationObserver((mutations) => {
111
+ mutations.forEach((mutation) => {
112
+ if (mutation.attributeName === "open" && mutation.target === dialogRef.current && mutation.target instanceof HTMLDialogElement && mutation.target.open === true) {
113
+ const focusables = tabbable(dialogRef.current);
114
+ const target = computeFocus?.(focusables) || focusables[0];
115
+ target?.focus();
116
+ }
117
+ });
118
+ });
119
+ observer.observe(dialogRef.current, {
120
+ attributes: true,
121
+ attributeFilter: ["open"]
122
+ });
123
+ return () => {
124
+ observer.disconnect();
125
+ };
126
+ }, [dialogRef, computeFocus]);
127
+ };
128
+
129
+ export { useKeyboardFocusables as a, useDialogScrollLock as b, useInitialFocus as c, useDialogTransitionStates as u };
130
+ //# sourceMappingURL=useInitialFocus-CAFMgbJG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInitialFocus-CAFMgbJG.js","sources":["../src/internal/hooks/useDialogScrollLock/useDialogScrollLock.ts","../src/internal/hooks/useDialogTransitionStates/useDialogTransitionStates.ts","../src/internal/hooks/useKeyboardFocusables/useKeyboardFocusables.ts","../src/components/Dialog/internal/useInitialFocus.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nconst ATTRIBUTE_NAME_LIST = \"data-anv-dialogs\";\nconst ATTRIBUTE_NAME_BOOL = \"data-anv-dialogs-open\";\n\n/**\n * Props for the useDialogScrollLock hook\n * @property {boolean} open - Whether the dialog is open\n * @property {string} id - Unique identifier for the dialog\n * @property {boolean} [enableScrollChaining] - Whether to enable scroll chaining\n * @property {React.RefObject<HTMLElement>} elementRef - Reference to the dialog element\n */\nexport interface UseDialogScrollLockProps {\n /**\n * Whether the dialog is open\n */\n open: boolean;\n /**\n * Unique identifier for the dialog\n */\n id: string;\n /**\n * Whether to enable scroll chaining\n */\n enableScrollChaining?: boolean;\n /**\n * Reference to the dialog element\n */\n elementRef: React.RefObject<HTMLElement>;\n}\n\n/**\n * Custom hook for managing dialog scroll lock in shadow DOM environments.\n *\n * Features:\n * - Manages scroll lock state for dialogs in shadow DOM\n * - Tracks multiple open dialogs with unique IDs\n * - Prevents scroll chaining when dialogs are open\n * - Automatically cleans up scroll lock on unmount\n * - Supports enabling/disabling scroll chaining\n * - Uses data attributes to track dialog state\n *\n * @param props - Configuration object containing dialog state and element reference\n * @returns void\n */\nexport const useDialogScrollLock = ({\n open,\n id,\n enableScrollChaining,\n elementRef,\n}: UseDialogScrollLockProps) => {\n useEffect(() => {\n if (enableScrollChaining) return () => {};\n const root = elementRef.current?.getRootNode();\n if (!(root instanceof ShadowRoot)) return () => {};\n\n const updateDialogAttributes = (shouldAdd: boolean) => {\n const currentDialogs =\n root.host\n .getAttribute(ATTRIBUTE_NAME_LIST)\n ?.split(\" \")\n .filter(Boolean) ?? [];\n\n const newDialogs = new Set(currentDialogs);\n if (shouldAdd) {\n newDialogs.add(id);\n } else {\n newDialogs.delete(id);\n }\n\n const dialogList = Array.from(newDialogs);\n root.host.setAttribute(ATTRIBUTE_NAME_LIST, dialogList.join(\" \"));\n\n if (dialogList.length > 0) {\n root.host.setAttribute(ATTRIBUTE_NAME_BOOL, \"true\");\n } else {\n root.host.removeAttribute(ATTRIBUTE_NAME_BOOL);\n }\n };\n\n updateDialogAttributes(open);\n\n return () => {\n updateDialogAttributes(false);\n };\n }, [open, id, enableScrollChaining, elementRef]);\n};\n","import { RefObject } from \"react\";\nimport {\n useOpenCloseTransitionStates,\n type OpenCloseTransitionStateEffects,\n} from \"../useOpenCloseTransitionStates\";\n\n/**\n * Effects configuration for dialog transition states\n * @property {() => void} [onOpenAnimationStart] - Callback when opening animation starts\n * @property {() => void} [onCloseAnimationStart] - Callback when closing animation starts\n * @property {() => void} [onOpenAnimationComplete] - Callback when opening animation completes\n * @property {() => void} [onCloseAnimationComplete] - Callback when closing animation completes\n */\n\n/**\n * Custom hook for managing dialog transition states and animations.\n *\n * Features:\n * - Manages dialog open/close transition states\n * - Handles animation timing based on CSS animation duration\n * - Provides callbacks for animation lifecycle events\n * - Supports controlled dialog state management\n * - Automatically handles showModal() and close() calls\n * - Provides utility flags for open/closed states\n *\n * @param ref - The ref to the dialog element\n * @param openProp - The open prop controlling dialog visibility\n * @param options - Additional, optional options including callbacks for animation start, complete, and initialization\n * @returns Object containing dialog state, control functions, and utility flags\n */\n\n/**\n * Effects configuration for dialog transition states\n * @param openProp - The open prop controlling dialog visibility\n * @param options - The effects configuration\n * @returns The dialog transition state\n */\nexport const useDialogTransitionStates = (\n ref: RefObject<HTMLDialogElement>,\n openProp: boolean | undefined,\n options: OpenCloseTransitionStateEffects = {},\n) => {\n const { onOpenAnimationStart, onCloseAnimationComplete } = options;\n return useOpenCloseTransitionStates(openProp, {\n ...options,\n onOpenAnimationStart: () => {\n if (!ref.current) return;\n ref.current.showModal();\n onOpenAnimationStart?.();\n },\n onCloseAnimationComplete: () => {\n if (!ref.current) return;\n ref.current.close();\n onCloseAnimationComplete?.();\n },\n durationMs: () => {\n if (!ref.current || !window) return 0;\n const duration = window.getComputedStyle(ref.current).animationDuration;\n return parseFloat(duration) * 1000;\n },\n });\n};\n","import { RefObject, useEffect, useRef, useState } from \"react\";\nimport { FocusableElement, tabbable } from \"tabbable\";\n\n/**\n * Options for the useKeyboardFocusables hook\n */\ntype OptionProps =\n | {\n /**\n * Disable mutation observer\n */\n observeChange: false;\n }\n | {\n /**\n * Enable mutation observer with optional configuration\n */\n observeChange: true;\n /**\n * Observe attribute changes\n */\n attributes?: boolean;\n /**\n * Observe text content changes\n */\n characterData?: boolean;\n /**\n * Observe child element changes\n */\n childList?: boolean;\n /**\n * Observe descendant changes\n */\n subtree?: boolean;\n };\n\n/**\n * Custom hook for tracking keyboard focusable elements within a container.\n *\n * Features:\n * - Tracks all keyboard focusable elements within a target container\n * - Supports both ref objects and direct element references\n * - Optional mutation observer for real-time updates\n * - Debounced updates to prevent excessive re-renders\n * - Configurable mutation observer options\n * - Manual update function for immediate refresh\n * - Uses tabbable library for accurate focusable detection\n * - Automatically cleans up mutation observer\n *\n * @param element - Target element or ref to monitor for focusable elements\n * @param options - Configuration options for mutation observer behavior\n * @returns Object containing current focusable elements and update function\n */\nexport const useKeyboardFocusables = (\n element: RefObject<HTMLElement> | HTMLElement | undefined,\n options: OptionProps = {\n observeChange: true,\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n },\n) => {\n const [focusables, setFocusables] = useState<FocusableElement[] | null>(null);\n const observerRef = useRef<MutationObserver>();\n\n useEffect(() => {\n const target = element instanceof HTMLElement ? element : element?.current;\n if (!target) return;\n if (!options.observeChange && !focusables) {\n setFocusables(tabbable(target as Element));\n return;\n }\n\n const mutationCallback = () => {\n const targetArr = tabbable(target as Element);\n if (targetArr.length === 0) return;\n setFocusables(targetArr);\n };\n\n const observer = new MutationObserver(mutationCallback);\n observerRef.current = observer;\n observer.observe(target, {\n childList: true, // Observe changes to child elements\n subtree: true, // Observe changes to descendants of the target\n attributes: true, // Observe changes to attributes\n characterData: true, // Observe changes to text content\n });\n return () => {\n observer.disconnect();\n };\n }, [element, options, focusables]);\n\n return { focusables };\n};\n","import { RefObject, useEffect } from \"react\";\nimport { FocusableElement, tabbable } from \"tabbable\";\n\nexport type InitialFocusOptions = {\n /**\n * Function to pick the initial focus target, given an array of focusable elements\n */\n computeFocus?: (focusables: FocusableElement[]) => FocusableElement;\n};\n\n/**\n * Hook to set initial focus for a dialog (e.g. Dialog, Drawer) when it is opened.\n * @param dialogRef - Ref to the dialog element\n * @param options - Options for the hook\n * @param options.computeFocus - Function to pick the initial focus target, given an array of focusable elements\n */\nexport const useInitialFocus = (\n /**\n * Ref to the dialog element\n */\n dialogRef: RefObject<HTMLDialogElement>,\n { computeFocus }: InitialFocusOptions,\n) => {\n useEffect(() => {\n if (!dialogRef.current) {\n return () => {};\n }\n // Create a MutationObserver to check if dialogRef.current is open or closed\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n mutation.attributeName === \"open\" &&\n mutation.target === dialogRef.current &&\n mutation.target instanceof HTMLDialogElement &&\n mutation.target.open === true\n ) {\n const focusables = tabbable(dialogRef.current);\n const target = computeFocus?.(focusables) || focusables[0];\n target?.focus();\n }\n });\n });\n observer.observe(dialogRef.current, {\n attributes: true,\n attributeFilter: [\"open\"],\n });\n return () => {\n observer.disconnect();\n };\n }, [dialogRef, computeFocus]);\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { useMemo } from 'react';
2
+
3
+ function useMergeRefs(refs) {
4
+ return useMemo(() => mergeRefs(refs), refs);
5
+ }
6
+ function mergeRefs(refs) {
7
+ if (refs.every((ref) => ref == null)) {
8
+ return null;
9
+ }
10
+ return (value) => {
11
+ refs.forEach((ref) => {
12
+ if (typeof ref === "function") {
13
+ ref(value);
14
+ } else if (ref != null) {
15
+ ref.current = value;
16
+ }
17
+ });
18
+ };
19
+ }
20
+
21
+ export { mergeRefs as m, useMergeRefs as u };
22
+ //# sourceMappingURL=useMergeRefs-Dfmtq9cI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMergeRefs-Dfmtq9cI.js","sources":["../src/hooks/useMergeRefs/useMergeRefs.ts"],"sourcesContent":["import {\n useMemo,\n type Ref,\n type RefCallback,\n type MutableRefObject,\n} from \"react\";\n\n/**\n * Custom hook for merging multiple React refs into a single callback ref.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n *\n * Features:\n * - Merges an array of refs into a single callback ref\n * - Handles both function refs and object refs\n * - Optimized with useMemo for performance\n * - Returns null when all refs are null/undefined\n * - Supports generic types for type safety\n * - Automatically handles ref assignment and cleanup\n *\n * @param refs - Array of React refs to merge\n * @returns Single callback ref that handles all provided refs, or null if all refs are null\n */\nexport function useMergeRefs<Instance>(\n refs: Array<Ref<Instance> | undefined>,\n): RefCallback<Instance> | null {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => mergeRefs(refs), refs);\n}\n\n/**\n * Merges an array of refs into a single callback ref.\n *\n * Features:\n * - Merges an array of refs into a single callback ref\n * - Handles both function refs and object refs\n *\n * @param refs - Array of React refs to merge\n * @returns\n */\nexport function mergeRefs<Instance>(\n refs: Array<Ref<Instance> | undefined>,\n): RefCallback<Instance> | null {\n if (refs.every((ref) => ref == null)) {\n return null;\n }\n\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref != null) {\n (ref as MutableRefObject<Instance | null>).current = value;\n }\n });\n };\n}\n"],"names":[],"mappings":";;AAsBO,SAAS,aACd,IAAA,EAC8B;AAE9B,EAAA,OAAO,OAAA,CAAQ,MAAM,SAAA,CAAU,IAAI,GAAG,IAAI,CAAA;AAC5C;AAYO,SAAS,UACd,IAAA,EAC8B;AAC9B,EAAA,IAAI,KAAK,KAAA,CAAM,CAAC,GAAA,KAAQ,GAAA,IAAO,IAAI,CAAA,EAAG;AACpC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,CAAC,KAAA,KAAU;AAChB,IAAA,IAAA,CAAK,OAAA,CAAQ,CAAC,GAAA,KAAQ;AACpB,MAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,QAAA,GAAA,CAAI,KAAK,CAAA;AAAA,MACX,CAAA,MAAA,IAAW,OAAO,IAAA,EAAM;AACtB,QAAC,IAA0C,OAAA,GAAU,KAAA;AAAA,MACvD;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AACF;;;;"}
@@ -1,2 +1,2 @@
1
- export { u as default, u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';
1
+ export { u as default, u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
2
2
  //# sourceMappingURL=useMergeRefs.js.map