@servicetitan/anvil2 1.40.3 → 1.41.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 (131) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/{Calendar-KVYGk3wS-CEptqxjI.js → Calendar-CNrdcd3f-BAKv-Gz3.js} +6 -4
  3. package/dist/{Calendar-KVYGk3wS-CEptqxjI.js.map → Calendar-CNrdcd3f-BAKv-Gz3.js.map} +1 -1
  4. package/dist/{Calendar-2q8zRbMK.js → Calendar-MIwfKzm7.js} +2 -2
  5. package/dist/{Calendar-2q8zRbMK.js.map → Calendar-MIwfKzm7.js.map} +1 -1
  6. package/dist/Calendar.js +1 -1
  7. package/dist/{Checkbox-cfgZP7Z2.js → Checkbox-IPM-sdvR.js} +2 -2
  8. package/dist/{Checkbox-cfgZP7Z2.js.map → Checkbox-IPM-sdvR.js.map} +1 -1
  9. package/dist/{Checkbox-Qucv_PK8-Bovwdnlj.js → Checkbox-JWDraGFN--7ptfLKN.js} +2 -2
  10. package/dist/{Checkbox-Qucv_PK8-Bovwdnlj.js.map → Checkbox-JWDraGFN--7ptfLKN.js.map} +1 -1
  11. package/dist/Checkbox.js +1 -1
  12. package/dist/{Combobox-3l2SK47T.js → Combobox-CM8DmNMs.js} +4 -4
  13. package/dist/{Combobox-3l2SK47T.js.map → Combobox-CM8DmNMs.js.map} +1 -1
  14. package/dist/Combobox.js +1 -1
  15. package/dist/{DateField-BQFAvS78.js → DateField-BDJEsVc1.js} +8 -8
  16. package/dist/{DateField-BQFAvS78.js.map → DateField-BDJEsVc1.js.map} +1 -1
  17. package/dist/DateField.js +1 -1
  18. package/dist/{DateFieldRange-CGA5ZTRa.js → DateFieldRange-BTq6MrNu.js} +2 -2
  19. package/dist/DateFieldRange-BTq6MrNu.js.map +1 -0
  20. package/dist/DateFieldRange.js +1 -1
  21. package/dist/{DateFieldSingle-eP5l_TrQ.js → DateFieldSingle-CaeOLrI4.js} +2 -2
  22. package/dist/DateFieldSingle-CaeOLrI4.js.map +1 -0
  23. package/dist/DateFieldSingle.js +1 -1
  24. package/dist/{DateFieldRange-BRjBcR4r-CfuSiOfZ.js → DateFieldYearless-CJP3H_Dg-BV5wGJp1.js} +257 -17
  25. package/dist/DateFieldYearless-CJP3H_Dg-BV5wGJp1.js.map +1 -0
  26. package/dist/DateFieldYearless-CbFo3oyZ.js +22 -0
  27. package/dist/DateFieldYearless-CbFo3oyZ.js.map +1 -0
  28. package/dist/DateFieldYearless.d.ts +2 -0
  29. package/dist/DateFieldYearless.js +2 -0
  30. package/dist/DateFieldYearless.js.map +1 -0
  31. package/dist/{DaysOfTheWeek-Dl31wkmU.js → DaysOfTheWeek-8zaAuw55.js} +2 -2
  32. package/dist/{DaysOfTheWeek-Dl31wkmU.js.map → DaysOfTheWeek-8zaAuw55.js.map} +1 -1
  33. package/dist/DaysOfTheWeek.js +1 -1
  34. package/dist/{Dialog-CJZEBa5r.js → Dialog-DnZE02ob.js} +9 -5
  35. package/dist/Dialog-DnZE02ob.js.map +1 -0
  36. package/dist/Dialog.js +1 -1
  37. package/dist/{Drawer-Cj3nJc4k.js → Drawer-5kgL0gY9.js} +2 -2
  38. package/dist/{Drawer-Cj3nJc4k.js.map → Drawer-5kgL0gY9.js.map} +1 -1
  39. package/dist/Drawer.js +1 -1
  40. package/dist/FieldLabel-D5rNXy6h.js +13 -0
  41. package/dist/FieldLabel-D5rNXy6h.js.map +1 -0
  42. package/dist/FieldLabel.d.ts +6 -0
  43. package/dist/FieldLabel.js +2 -0
  44. package/dist/FieldLabel.js.map +1 -0
  45. package/dist/{InputMask-BdLGTTAk.js → InputMask-B6kMdXCB.js} +2 -2
  46. package/dist/{InputMask-BdLGTTAk.js.map → InputMask-B6kMdXCB.js.map} +1 -1
  47. package/dist/{InputMask-Hn-xudp1-BKhtZ7Zk.js → InputMask-BLZh7hka-CTcRCY2k.js} +2 -2
  48. package/dist/{InputMask-Hn-xudp1-BKhtZ7Zk.js.map → InputMask-BLZh7hka-CTcRCY2k.js.map} +1 -1
  49. package/dist/InputMask.js +1 -1
  50. package/dist/{ListView-_YFTewqc.js → ListView-cMMBtp1O.js} +3 -3
  51. package/dist/{ListView-_YFTewqc.js.map → ListView-cMMBtp1O.js.map} +1 -1
  52. package/dist/ListView.js +1 -1
  53. package/dist/{Menu-CffX1bPZ-BeEOvryY.js → Menu-CAiyc2zk-rxU7H28t.js} +3 -3
  54. package/dist/{Menu-CffX1bPZ-BeEOvryY.js.map → Menu-CAiyc2zk-rxU7H28t.js.map} +1 -1
  55. package/dist/{Menu-1EwVMNIw.js → Menu-Dk3ESnzI.js} +2 -2
  56. package/dist/{Menu-1EwVMNIw.js.map → Menu-Dk3ESnzI.js.map} +1 -1
  57. package/dist/Menu.js +1 -1
  58. package/dist/{Page-BikjTlTM.js → Page-DWeD3rrr.js} +5 -5
  59. package/dist/{Page-BikjTlTM.js.map → Page-DWeD3rrr.js.map} +1 -1
  60. package/dist/Page.js +1 -1
  61. package/dist/Pagination.js +1 -1
  62. package/dist/Pagination.js.map +1 -1
  63. package/dist/{Popover-rB4BVx-A.js → Popover-2O1Q-34V.js} +2 -2
  64. package/dist/{Popover-rB4BVx-A.js.map → Popover-2O1Q-34V.js.map} +1 -1
  65. package/dist/{Popover-jcmNuir0-DjlCqU1z.js → Popover-DvLcjLjG-Yu5STx-v.js} +77 -14
  66. package/dist/Popover-DvLcjLjG-Yu5STx-v.js.map +1 -0
  67. package/dist/Popover.js +1 -1
  68. package/dist/{ProgressBar-CzXzPpIX-Clg1J71o.js → ProgressBar-BezETeA3-CeeedJ_w.js} +49 -15
  69. package/dist/ProgressBar-BezETeA3-CeeedJ_w.js.map +1 -0
  70. package/dist/{ProgressBar-BL34rg_J.js → ProgressBar-CfstmN5D.js} +2 -2
  71. package/dist/{ProgressBar-BL34rg_J.js.map → ProgressBar-CfstmN5D.js.map} +1 -1
  72. package/dist/ProgressBar.js +1 -1
  73. package/dist/{Radio-BnOSIK1U-1MmGQFPi.js → Radio-8E1l0DJa-CLVaSyQc.js} +3 -3
  74. package/dist/{Radio-BnOSIK1U-1MmGQFPi.js.map → Radio-8E1l0DJa-CLVaSyQc.js.map} +1 -1
  75. package/dist/{Radio-BzZUxQa6.js → Radio-P6dkI3W0.js} +2 -2
  76. package/dist/{Radio-BzZUxQa6.js.map → Radio-P6dkI3W0.js.map} +1 -1
  77. package/dist/Radio.js +1 -1
  78. package/dist/{SelectCard-ynL5QcZD-BtBzMtyR.js → SelectCard-m61WUlo--DlByowef.js} +4 -4
  79. package/dist/{SelectCard-ynL5QcZD-BtBzMtyR.js.map → SelectCard-m61WUlo--DlByowef.js.map} +1 -1
  80. package/dist/SelectCard.js +1 -1
  81. package/dist/{SelectCardGroup-D6GuJJB2.js → SelectCardGroup-DIaWX2Vp.js} +2 -2
  82. package/dist/{SelectCardGroup-D6GuJJB2.js.map → SelectCardGroup-DIaWX2Vp.js.map} +1 -1
  83. package/dist/{SelectTrigger-Bo2VPAD0.js → SelectTrigger-DKh0Bzy6.js} +2 -2
  84. package/dist/{SelectTrigger-Bo2VPAD0.js.map → SelectTrigger-DKh0Bzy6.js.map} +1 -1
  85. package/dist/SelectTrigger.js +1 -1
  86. package/dist/{SelectTriggerBase-BGHwx0mN-B3HiW5tQ.js → SelectTriggerBase-DnRvuD3R-CTFWVZhY.js} +3 -3
  87. package/dist/{SelectTriggerBase-BGHwx0mN-B3HiW5tQ.js.map → SelectTriggerBase-DnRvuD3R-CTFWVZhY.js.map} +1 -1
  88. package/dist/{TextField-COXABNrR.js → TextField--tytNBLh.js} +2 -2
  89. package/dist/{TextField-COXABNrR.js.map → TextField--tytNBLh.js.map} +1 -1
  90. package/dist/{TextField-BIeCvDD--C7yp05g5.js → TextField-D_fqJf85-Bcd6rWv4.js} +2 -2
  91. package/dist/{TextField-BIeCvDD--C7yp05g5.js.map → TextField-D_fqJf85-Bcd6rWv4.js.map} +1 -1
  92. package/dist/TextField.js +1 -1
  93. package/dist/{Textarea-D6K3Jc5_.js → Textarea-B0nZ9vOV.js} +2 -2
  94. package/dist/{Textarea-D6K3Jc5_.js.map → Textarea-B0nZ9vOV.js.map} +1 -1
  95. package/dist/Textarea.js +1 -1
  96. package/dist/Toast.js +1 -1
  97. package/dist/{Toolbar-CLsgDAKk.js → Toolbar-BM78DEEM.js} +3 -3
  98. package/dist/{Toolbar-CLsgDAKk.js.map → Toolbar-BM78DEEM.js.map} +1 -1
  99. package/dist/Toolbar.js +1 -1
  100. package/dist/{Tooltip-B_swJyoW.js → Tooltip-ZFFXA77Y.js} +2 -2
  101. package/dist/{Tooltip-B_swJyoW.js.map → Tooltip-ZFFXA77Y.js.map} +1 -1
  102. package/dist/Tooltip.js +1 -1
  103. package/dist/components/DateFieldRange/DateFieldRange.d.ts +4 -1
  104. package/dist/components/DateFieldRange/index.d.ts +1 -2
  105. package/dist/components/DateFieldSingle/DateFieldSingle.d.ts +3 -1
  106. package/dist/components/DateFieldSingle/index.d.ts +1 -2
  107. package/dist/components/DateFieldYearless/DateFieldYearless.d.ts +62 -0
  108. package/dist/components/DateFieldYearless/index.d.ts +1 -0
  109. package/dist/components/Dialog/Dialog.d.ts +1 -1
  110. package/dist/components/Drawer/Drawer.d.ts +1 -1
  111. package/dist/components/FieldLabel/FieldLabel.d.ts +8 -0
  112. package/dist/components/FieldLabel/index.d.ts +2 -0
  113. package/dist/components/index.d.ts +2 -0
  114. package/dist/index.js +25 -23
  115. package/dist/index.js.map +1 -1
  116. package/dist/{toast-CJSBieY0.js → toast-uADTqqrS.js} +2 -2
  117. package/dist/{toast-CJSBieY0.js.map → toast-uADTqqrS.js.map} +1 -1
  118. package/package.json +3 -3
  119. package/dist/DateFieldRange-BRjBcR4r-CfuSiOfZ.js.map +0 -1
  120. package/dist/DateFieldRange-CGA5ZTRa.js.map +0 -1
  121. package/dist/DateFieldSingle-eP5l_TrQ.js.map +0 -1
  122. package/dist/Dialog-CJZEBa5r.js.map +0 -1
  123. package/dist/Popover-jcmNuir0-DjlCqU1z.js.map +0 -1
  124. package/dist/ProgressBar-CzXzPpIX-Clg1J71o.js.map +0 -1
  125. /package/dist/{Calendar-KVYGk3wS.css → Calendar-CNrdcd3f.css} +0 -0
  126. /package/dist/{Menu-CffX1bPZ.css → Menu-CAiyc2zk.css} +0 -0
  127. /package/dist/{Popover-jcmNuir0.css → Popover-DvLcjLjG.css} +0 -0
  128. /package/dist/{ProgressBar-CzXzPpIX.css → ProgressBar-BezETeA3.css} +0 -0
  129. /package/dist/{Radio-BnOSIK1U.css → Radio-8E1l0DJa.css} +0 -0
  130. /package/dist/{SelectCard-ynL5QcZD.css → SelectCard-m61WUlo-.css} +0 -0
  131. /package/dist/{SelectTriggerBase-BGHwx0mN.css → SelectTriggerBase-DnRvuD3R.css} +0 -0
@@ -1,2 +1 @@
1
- export { DateFieldSingle } from './DateFieldSingle';
2
- export type { DateFieldSingleProps } from './DateFieldSingle';
1
+ export * from './DateFieldSingle';
@@ -0,0 +1,62 @@
1
+ import { DateFieldYearlessProps as CoreDateFieldYearlessProps, DateFieldYearlessChange as CoreDateFieldYearlessChange, DateFieldYearlessChangeHandler as CoreDateFieldYearlessChangeHandler, YearlessDate as CoreYearlessDate, YearlessDateMode as CoreYearlessDateMode } from '@servicetitan/hammer-react';
2
+ import { DataTrackingId } from '../../types/DataTrackingId';
3
+ /**
4
+ * Props for the DateFieldYearless component
5
+ * @property {YearlessDate | null} [value] - The controlled value of the date field
6
+ * @property {YearlessDate | null} [defaultValue] - The default value for uncontrolled usage
7
+ * @property {DateFieldYearlessChangeHandler} [onChange] - Callback function when the date value changes
8
+ * @property {YearlessDateMode} [mode] - The date format mode (mm/dd or dd/mm)
9
+ * @property {boolean} [disableHint] - Whether to disable the hint text
10
+ * @property {boolean} [required] - Whether the field is required
11
+ * @property {YearlessDate | null} [minDate] - The minimum allowed date
12
+ * @property {YearlessDate | null} [maxDate] - The maximum allowed date
13
+ * @property {Object} [unavailable] - Configuration for unavailable dates
14
+ * @property {YearlessDate[]} [unavailable.dates] - Array of dates that are not selectable
15
+ * @extends CoreDateFieldYearlessProps
16
+ * @extends DataTrackingId
17
+ */
18
+ export type DateFieldYearlessProps = CoreDateFieldYearlessProps & DataTrackingId;
19
+ /**
20
+ * Represents a change event for the DateFieldYearless component
21
+ * @property {YearlessDate | null} value - The current date value
22
+ * @property {boolean} isInputValid - Whether the input is valid
23
+ * @property {boolean} isInputEmpty - Whether the input is empty
24
+ * @property {boolean} isValid - Whether the overall value is valid
25
+ */
26
+ export type DateFieldYearlessChange = CoreDateFieldYearlessChange;
27
+ /**
28
+ * Handler function for DateFieldYearless change events
29
+ * @param change - The change event object
30
+ */
31
+ export type DateFieldYearlessChangeHandler = CoreDateFieldYearlessChangeHandler;
32
+ /**
33
+ * Represents a date without a year component
34
+ * @property {number | null} day - The day of the month (1-31)
35
+ * @property {number | null} month - The month of the year (1-12)
36
+ */
37
+ export type YearlessDate = CoreYearlessDate;
38
+ /**
39
+ * The format mode for yearless date input
40
+ * @typedef {"mm/dd" | "dd/mm"} YearlessDateMode
41
+ */
42
+ export type YearlessDateMode = CoreYearlessDateMode;
43
+ /**
44
+ * DateFieldYearless component for inputting dates without year information.
45
+ *
46
+ * Features:
47
+ * - Supports both controlled and uncontrolled usage
48
+ * - Supports different date formats (mm/dd or dd/mm)
49
+ * - Supports layout utilities for positioning and spacing
50
+ *
51
+ * @example
52
+ * <DateFieldYearless
53
+ * label="Birthday"
54
+ * mode="mm/dd"
55
+ * required
56
+ * onChange={(change) => console.log('Date changed:', change.value)}
57
+ * />
58
+ */
59
+ export declare const DateFieldYearless: {
60
+ (props: DateFieldYearlessProps): import("react/jsx-runtime").JSX.Element;
61
+ displayName: string;
62
+ };
@@ -0,0 +1 @@
1
+ export * from './DateFieldYearless';
@@ -130,7 +130,7 @@ export declare const DialogCancelButton: import('react').ForwardRefExoticCompone
130
130
  * </Dialog.Footer>
131
131
  * </Dialog>
132
132
  */
133
- export declare const Dialog: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').DialogHTMLAttributes<HTMLDialogElement>, HTMLDialogElement>, "ref"> & import('@servicetitan/hammer-react/dist/hooks/useDialogTransitionStates').DialogTransitionStateEffects & import('@servicetitan/hammer-react').DisableCloseOnEscapeOrClickProps & {
133
+ export declare const Dialog: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').DialogHTMLAttributes<HTMLDialogElement>, HTMLDialogElement>, "ref"> & import('@servicetitan/hammer-react/dist/hooks/useOpenCloseTransitionStates').OpenCloseTransitionStateEffects & import('@servicetitan/hammer-react').DisableCloseOnEscapeOrClickProps & {
134
134
  fullScreen?: boolean;
135
135
  size?: Extract<import('@servicetitan/hammer-react').Size, "medium" | "large">;
136
136
  open?: boolean;
@@ -140,7 +140,7 @@ export declare const DrawerContent: import('react').ForwardRefExoticComponent<Om
140
140
  * </Drawer.Footer>
141
141
  * </Drawer>
142
142
  */
143
- export declare const Drawer: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').DialogHTMLAttributes<HTMLDialogElement>, HTMLDialogElement>, "ref"> & import('@servicetitan/hammer-react/dist/hooks/useDialogTransitionStates').DialogTransitionStateEffects & import('@servicetitan/hammer-react').DisableCloseOnEscapeOrClickProps & {
143
+ export declare const Drawer: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').DialogHTMLAttributes<HTMLDialogElement>, HTMLDialogElement>, "ref"> & import('@servicetitan/hammer-react/dist/hooks/useOpenCloseTransitionStates').OpenCloseTransitionStateEffects & import('@servicetitan/hammer-react').DisableCloseOnEscapeOrClickProps & {
144
144
  size?: Extract<import('@servicetitan/hammer-react').Size, "medium" | "large">;
145
145
  open?: boolean;
146
146
  onClose?: () => void;
@@ -0,0 +1,8 @@
1
+ import { LabelProps as CoreFieldLabelProps } from '@servicetitan/hammer-react';
2
+ export type FieldLabelProps = CoreFieldLabelProps;
3
+ export declare const FieldLabel: import('react').ForwardRefExoticComponent<Omit<Omit<import('react').DetailedHTMLProps<import('react').LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "ref">, "id"> & {
4
+ id?: string;
5
+ required?: boolean;
6
+ moreInfo?: import('react').ReactNode;
7
+ openMoreInfo?: import('@servicetitan/hammer-react').TooltipProps["open"];
8
+ } & import('react').RefAttributes<HTMLLabelElement>>;
@@ -0,0 +1,2 @@
1
+ export * from './FieldLabel';
2
+ export { FieldLabel as default } from './FieldLabel';
@@ -15,6 +15,7 @@ export * from './Combobox';
15
15
  export * from './DateField';
16
16
  export * from './DateFieldRange';
17
17
  export * from './DateFieldSingle';
18
+ export * from './DateFieldYearless';
18
19
  export * from './DaysOfTheWeek';
19
20
  export * from './Details';
20
21
  export * from './Dialog';
@@ -23,6 +24,7 @@ export * from './Dnd';
23
24
  export * from './DndSort';
24
25
  export * from './Drawer';
25
26
  export * from './EditCard';
27
+ export * from './FieldLabel';
26
28
  export * from './FieldMessage';
27
29
  export * from './Flex';
28
30
  export * from './Grid';
package/dist/index.js CHANGED
@@ -7,41 +7,43 @@ export { B as Button } from './Button-DMQKV2sV.js';
7
7
  export { B as ButtonCompound } from './ButtonCompound-DGuF0zzT.js';
8
8
  export { B as ButtonLink } from './ButtonLink-B0NJuVk5.js';
9
9
  export { B as ButtonToggle } from './ButtonToggle-CKVyEODc.js';
10
- export { C as Calendar, b as CalendarMonth, e as CalendarMonthButton, c as CalendarNext, a as CalendarNow, d as CalendarPrev, f as CalendarYearButton } from './Calendar-2q8zRbMK.js';
10
+ export { C as Calendar, b as CalendarMonth, e as CalendarMonthButton, c as CalendarNext, a as CalendarNow, d as CalendarPrev, f as CalendarYearButton } from './Calendar-MIwfKzm7.js';
11
11
  export { C as Card } from './Card-U2IJPk8B.js';
12
- export { C as Checkbox, a as CheckboxGroup } from './Checkbox-cfgZP7Z2.js';
12
+ export { C as Checkbox, a as CheckboxGroup } from './Checkbox-IPM-sdvR.js';
13
13
  export { C as Chip } from './Chip-BlLavyIK.js';
14
- export { C as Combobox, c as ComboboxContent, a as ComboboxElement, i as ComboboxEmpty, g as ComboboxItem, h as ComboboxItemAddNew, f as ComboboxList, d as ComboboxSearchField, b as ComboboxSelect, e as ComboboxSelectTrigger, u as useInfiniteCombobox } from './Combobox-3l2SK47T.js';
15
- export { D as DateField } from './DateField-BQFAvS78.js';
16
- export { D as DateFieldRange } from './DateFieldRange-CGA5ZTRa.js';
17
- export { D as DateFieldSingle } from './DateFieldSingle-eP5l_TrQ.js';
18
- export { D as DaysOfTheWeek } from './DaysOfTheWeek-Dl31wkmU.js';
14
+ export { C as Combobox, c as ComboboxContent, a as ComboboxElement, i as ComboboxEmpty, g as ComboboxItem, h as ComboboxItemAddNew, f as ComboboxList, d as ComboboxSearchField, b as ComboboxSelect, e as ComboboxSelectTrigger, u as useInfiniteCombobox } from './Combobox-CM8DmNMs.js';
15
+ export { D as DateField } from './DateField-BDJEsVc1.js';
16
+ export { D as DateFieldRange } from './DateFieldRange-BTq6MrNu.js';
17
+ export { D as DateFieldSingle } from './DateFieldSingle-CaeOLrI4.js';
18
+ export { D as DateFieldYearless } from './DateFieldYearless-CbFo3oyZ.js';
19
+ export { D as DaysOfTheWeek } from './DaysOfTheWeek-8zaAuw55.js';
19
20
  export { D as Details, b as DetailsContent, a as DetailsSummary } from './Details-DVg0EOkv.js';
20
- export { D as Dialog, d as DialogCancelButton, c as DialogContent, b as DialogFooter, a as DialogHeader } from './Dialog-CJZEBa5r.js';
21
+ export { D as Dialog, d as DialogCancelButton, c as DialogContent, b as DialogFooter, a as DialogHeader } from './Dialog-DnZE02ob.js';
21
22
  export { D as Divider } from './Divider-CN36wX4s.js';
22
23
  export { D as Dnd } from './index-CKfiQx8n-4nziUo7G.js';
23
24
  export { D as DndSort, a as DndSortCard, b as DndSortZone } from './DndSort-Cl0FCNQm.js';
24
- export { D as Drawer, a as DrawerCancelButton, d as DrawerContent, b as DrawerFooter, c as DrawerHeader } from './Drawer-Cj3nJc4k.js';
25
+ export { D as Drawer, a as DrawerCancelButton, d as DrawerContent, b as DrawerFooter, c as DrawerHeader } from './Drawer-5kgL0gY9.js';
25
26
  export { E as EditCard } from './EditCard-C0hD1VPA.js';
27
+ export { F as FieldLabel } from './FieldLabel-D5rNXy6h.js';
26
28
  export { F as FieldMessage } from './FieldMessage-DkJ0K5s-.js';
27
29
  export { F as Flex } from './Flex-Ln6PmaDl.js';
28
30
  export { G as Grid } from './Grid-CMcDeSYT.js';
29
31
  export { I as Icon } from './Icon-BgKqBmlj.js';
30
- export { I as InputMask } from './InputMask-BdLGTTAk.js';
32
+ export { I as InputMask } from './InputMask-B6kMdXCB.js';
31
33
  export { L as Layout, a as LayoutElement, b as LayoutItem } from './Layout-CUUb2PVr.js';
32
34
  export { L as Link } from './Link-DZa0wmkA.js';
33
35
  export { L as Listbox, a as ListboxOption, b as ListboxOptionGroup } from './Listbox-dVARiucB.js';
34
- export { L as ListView, a as ListViewOption, b as ListViewOptionCell } from './ListView-_YFTewqc.js';
35
- export { M as Menu, a as MenuItem } from './Menu-1EwVMNIw.js';
36
+ export { L as ListView, a as ListViewOption, b as ListViewOptionCell } from './ListView-cMMBtp1O.js';
37
+ export { M as Menu, a as MenuItem } from './Menu-Dk3ESnzI.js';
36
38
  export { O as Overflow, a as OverflowText } from './Overflow-w-3_04fS.js';
37
- export { P as Page } from './Page-BikjTlTM.js';
38
- export { P as Popover, d as PopoverButton, c as PopoverClose, b as PopoverContent, a as PopoverTrigger } from './Popover-rB4BVx-A.js';
39
- export { P as ProgressBar } from './ProgressBar-BL34rg_J.js';
40
- export { R as Radio, a as RadioGroup } from './Radio-BzZUxQa6.js';
39
+ export { P as Page } from './Page-DWeD3rrr.js';
40
+ export { P as Popover, d as PopoverButton, c as PopoverClose, b as PopoverContent, a as PopoverTrigger } from './Popover-2O1Q-34V.js';
41
+ export { P as ProgressBar } from './ProgressBar-CfstmN5D.js';
42
+ export { R as Radio, a as RadioGroup } from './Radio-P6dkI3W0.js';
41
43
  export { S as SearchField } from './SearchField-BGPqpnVd.js';
42
44
  export { S as SegmentedControl, a as SegmentedControlSegment } from './SegmentedControl-DKMQuf7s.js';
43
- export { S as SelectCard, b as SelectCardElement, a as SelectCardGroup } from './SelectCardGroup-D6GuJJB2.js';
44
- export { S as SelectTrigger } from './SelectTrigger-Bo2VPAD0.js';
45
+ export { S as SelectCard, b as SelectCardElement, a as SelectCardGroup } from './SelectCardGroup-DIaWX2Vp.js';
46
+ export { S as SelectTrigger } from './SelectTrigger-DKh0Bzy6.js';
45
47
  export { S as SideNav, a as SideNavCollapsible, b as SideNavGroup, c as SideNavLink } from './SideNav-DEoGpeqJ.js';
46
48
  export { S as Skeleton, a as SkeletonCircle, b as SkeletonPill, c as SkeletonRectangle, d as SkeletonText } from './Skeleton-COxTdwjO.js';
47
49
  export { S as Spinner } from './Spinner-C1r3COiQ.js';
@@ -50,11 +52,11 @@ export { S as Stepper, d as StepperFinalPanel, a as StepperList, e as StepperNex
50
52
  export { S as Switch } from './Switch-DAQFzi-X.js';
51
53
  export { T as Tab, a as TabButton, b as TabList, c as TabPanel } from './Tab-BSC7e4rM.js';
52
54
  export { T as Text } from './Text-B91g6xKn.js';
53
- export { T as Textarea } from './Textarea-D6K3Jc5_.js';
54
- export { T as TextField } from './TextField-COXABNrR.js';
55
- export { T as Toaster, t as toast } from './toast-CJSBieY0.js';
56
- export { T as Toolbar, b as ToolbarButton, d as ToolbarButtonLink, c as ToolbarButtonToggle, a as ToolbarElement, e as ToolbarSelect } from './Toolbar-CLsgDAKk.js';
57
- export { T as Tooltip, b as TooltipContent, a as TooltipTrigger } from './Tooltip-B_swJyoW.js';
55
+ export { T as Textarea } from './Textarea-B0nZ9vOV.js';
56
+ export { T as TextField } from './TextField--tytNBLh.js';
57
+ export { T as Toaster, t as toast } from './toast-uADTqqrS.js';
58
+ export { T as Toolbar, b as ToolbarButton, d as ToolbarButtonLink, c as ToolbarButtonToggle, a as ToolbarElement, e as ToolbarSelect } from './Toolbar-BM78DEEM.js';
59
+ export { T as Tooltip, b as TooltipContent, a as TooltipTrigger } from './Tooltip-ZFFXA77Y.js';
58
60
  export { u as useAccessibleColor } from './useAccessibleColor-Dc6B_M-Z-BYKjkGRg.js';
59
61
  export { u as useBreakpoint } from './useBreakpoint-7QkBkSeP-Cv5fnZxs.js';
60
62
  export { u as useLinkStyles } from './Link-Dqp_XXl_-Bv20l_tY.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef, useRef, useState, useEffect } from 'react';
3
3
  import { u as useMergeRefs } from './useMergeRefs-Bde85AWI-Bde85AWI.js';
4
- import { h as Toaster$1, t as toast$1 } from './ProgressBar-CzXzPpIX-Clg1J71o.js';
4
+ import { h as Toaster$1, t as toast$1 } from './ProgressBar-BezETeA3-CeeedJ_w.js';
5
5
 
6
6
  const SHADOW_HOST_DATA_ATTRS = "[data-mfe-portal-name], [data-mfe-name]";
7
7
  const Toaster = forwardRef(
@@ -93,4 +93,4 @@ Toaster.displayName = Toaster$1.displayName;
93
93
  const toast = toast$1;
94
94
 
95
95
  export { Toaster as T, toast as t };
96
- //# sourceMappingURL=toast-CJSBieY0.js.map
96
+ //# sourceMappingURL=toast-uADTqqrS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast-CJSBieY0.js","sources":["../src/components/Toast/Toaster.tsx","../src/components/Toast/toast.ts"],"sourcesContent":["import {\n ToasterProps as HammerToasterProps,\n Toaster as HammerToaster,\n useMergeRefs,\n ToastEventType,\n} from \"@servicetitan/hammer-react\";\nimport { Ref, forwardRef, useEffect, useRef, useState } from \"react\";\n\nconst SHADOW_HOST_DATA_ATTRS = \"[data-mfe-portal-name], [data-mfe-name]\";\n\n/**\n * Props for the Toaster component\n * @property {number | false} [duration] - Timeout, in ms, before toasts auto-closes. If set to false, toasts will not auto-close\n * @property {string} id - Unique toaster id\n * @property {(toastEvent: ToastEventType) => void} [onToastEvent] - Callback function that is called when toasts are added, updated, or dismissed\n * @property {number | false} [duration] - Duration of the toast in milliseconds. If set to false, the toast will not auto-dismiss\n * @property {string} [focusKey] - How a screen-reader will announce the hotkey used to set focus on the first toast\n * @property {number} [toastsBeforeStack] - How many toasts to display before they start stacking\n * @extends Omit<HammerToasterProps, \"disableEvents\" | \"duration\">\n */\nexport type ToasterProps = Omit<\n HammerToasterProps,\n \"disableEvents\" | \"duration\"\n> & {\n /**\n * Timeout, in ms, before toasts auto-closes. If set to false, toasts will not auto-close.\n * @deprecated The monolith toaster controls the duration of toasts. This prop should not be used in other cases.\n * @default false\n */\n duration?: number | false;\n};\n\n/**\n * Toaster component for managing and displaying toast notifications with anvil2-specific features.\n *\n * Features:\n * - Manages multiple toast notifications in a stack\n * - Handles toast positioning and stacking behavior\n * - Supports custom events for toast management\n * - Automatic toast dismissal with configurable duration\n * - Keyboard navigation and accessibility support\n * - Dialog-aware positioning for modal contexts\n * - Session storage for dialog toaster state\n * - Custom event system for toast lifecycle management\n * - Responsive design with mobile support\n * - Automatic tracking ID generation for analytics\n * - Monolith toaster integration and coordination\n * - Shadow DOM support for micro-frontend environments\n * - A1 toast group compatibility and positioning\n *\n * @example\n * <Toaster\n * id=\"main-toaster\"\n * duration={5000}\n * toastsBeforeStack={3}\n * onToastEvent={(event) => console.log('Toast event:', event)}\n * />\n *\n * @example\n * <Toaster\n * id=\"dialog-toaster\"\n * disableEvents={false}\n * focusKey=\"t\"\n * />\n */\nexport const Toaster = forwardRef(\n (\n { onToastEvent, ...props }: HammerToasterProps,\n ref: Ref<HTMLDivElement>,\n ) => {\n const { id } = props;\n\n const toasterRef = useRef<HTMLDivElement>(null);\n const mergedToasterRef = useMergeRefs([toasterRef, ref]);\n\n const [shouldDisableEvents, setShouldDisableEvents] =\n useState<boolean>(false);\n\n useEffect(() => {\n const toasters = document.querySelectorAll(\"[data-anv='toaster']\");\n const shadowToasters =\n (\n toasterRef.current?.getRootNode() as Document | ShadowRoot\n )?.querySelectorAll(\"[data-anv='toaster']\") || [];\n\n // Toaster(s) exist in the document, bail out if this toaster is not the first one\n if (\n toasters.length &&\n id !== toasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n } else if (\n // Toaster(s) exist in the shadow dom, bail out if this toaster is not the first one\n shadowToasters.length &&\n id !== shadowToasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n }\n }, [id]);\n\n const a1ToastGroupObserver = useRef<MutationObserver | null>(null);\n const a1ToastGroupObserverConnected = useRef<boolean>(false);\n const [a1ToastGroups, setA1ToastGroups] = useState<Element[]>([]);\n const [toastCount, setToastCount] = useState<number>(0);\n\n const handleToastEvent = (event: ToastEventType) => {\n const { toastCount: newToastCount } = event;\n setToastCount(newToastCount);\n onToastEvent?.(event);\n };\n\n const updateA1ToastGroups = () => {\n const mfeRoots = document.querySelectorAll(SHADOW_HOST_DATA_ATTRS);\n const a1ToastGroupsLocal = [\n ...document.getElementsByClassName(\"ToastGroup\"),\n ];\n\n if (mfeRoots.length > 0) {\n mfeRoots.forEach((el) => {\n setTimeout(() => {\n if (el.shadowRoot) {\n a1ToastGroupsLocal.push(\n ...el.shadowRoot.querySelectorAll(\".ToastGroup\"),\n );\n }\n setA1ToastGroups(a1ToastGroupsLocal);\n });\n });\n } else {\n setA1ToastGroups(a1ToastGroupsLocal);\n }\n };\n\n useEffect(() => {\n // set mutation observer for a1 toasts after initial render\n a1ToastGroupObserver.current = new MutationObserver(updateA1ToastGroups);\n }, []);\n\n /*\n Listen for any new A1 Toast Groups to adjust styles and\n prevent overlapping.\n */\n useEffect(() => {\n if (a1ToastGroupObserver.current !== null) {\n if (toastCount > 0 && a1ToastGroupObserverConnected.current === false) {\n // listen for any new a1 toasts\n a1ToastGroupObserver.current.observe(document.body, {\n childList: true,\n subtree: true,\n });\n a1ToastGroupObserverConnected.current = true;\n\n // account for already existing a1 toasts\n updateA1ToastGroups();\n } else if (\n toastCount === 0 &&\n a1ToastGroupObserverConnected.current === true\n ) {\n a1ToastGroupObserver.current.disconnect();\n a1ToastGroupObserverConnected.current = false;\n }\n }\n }, [toastCount]);\n\n useEffect(() => {\n if (a1ToastGroups && a1ToastGroups.length > 0) {\n const toasterHeight =\n toasterRef.current?.firstElementChild?.getBoundingClientRect()\n .height as number;\n a1ToastGroups.forEach((group) => {\n (group as HTMLDivElement).style.top =\n toastCount === 0 ? \"16px\" : `calc(${toasterHeight}px + 2.5rem)`;\n });\n }\n // eslint-disable-next-line\n }, [a1ToastGroups.length, toastCount]);\n\n return (\n <HammerToaster\n {...props}\n onToastEvent={handleToastEvent}\n disableEvents={shouldDisableEvents}\n ref={mergedToasterRef}\n />\n );\n },\n);\n\nToaster.displayName = HammerToaster.displayName;\n","import {\n toast as coreToast,\n toastProps as coreToastProps,\n} from \"@servicetitan/hammer-react\";\n\n/**\n * Props for creating toast notifications\n * @property {string} id - Unique identifier for the toast\n * @property {AlertProps[\"status\"]} status - Visual status of the toast (info, success, warning, danger)\n * @property {string} title - Title text displayed in the toast\n * @property {string} [message] - Additional message content to display below the title\n * @property {number | false} [duration] - Duration in milliseconds before auto-dismiss. Set to false to disable auto-dismiss\n * @property {ToastAction & { secondary?: ToastAction }} [actions] - Action buttons to display in the toast\n * @property {ProgressBarProps[\"value\"] | \"indeterminate\"} [progress] - Progress bar value or indeterminate state\n * @property {() => void} [onDismiss] - Callback function called when toast is dismissed, expired, or closed\n * @property {() => void} [onClose] - Callback function called only when the close button is clicked\n * @property {string} [toasterId] - ID of the specific toaster to display the toast in\n */\nexport type toastProps = coreToastProps;\n\n/**\n * Toast utility functions for creating and managing toast notifications.\n *\n * Features:\n * - Create toast notifications with various status types\n * - Update existing toasts with new content\n * - Dismiss individual toasts or all toasts\n * - Support for action buttons and progress bars\n * - Automatic tracking ID generation for analytics\n * - Integration with anvil2 toaster system\n *\n * @example\n * toast.success({\n * id: \"success-toast\",\n * title: \"Success!\",\n * message: \"Your changes have been saved.\"\n * });\n */\nexport const toast = coreToast;\n"],"names":["HammerToaster","coreToast"],"mappings":"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"}
1
+ {"version":3,"file":"toast-uADTqqrS.js","sources":["../src/components/Toast/Toaster.tsx","../src/components/Toast/toast.ts"],"sourcesContent":["import {\n ToasterProps as HammerToasterProps,\n Toaster as HammerToaster,\n useMergeRefs,\n ToastEventType,\n} from \"@servicetitan/hammer-react\";\nimport { Ref, forwardRef, useEffect, useRef, useState } from \"react\";\n\nconst SHADOW_HOST_DATA_ATTRS = \"[data-mfe-portal-name], [data-mfe-name]\";\n\n/**\n * Props for the Toaster component\n * @property {number | false} [duration] - Timeout, in ms, before toasts auto-closes. If set to false, toasts will not auto-close\n * @property {string} id - Unique toaster id\n * @property {(toastEvent: ToastEventType) => void} [onToastEvent] - Callback function that is called when toasts are added, updated, or dismissed\n * @property {number | false} [duration] - Duration of the toast in milliseconds. If set to false, the toast will not auto-dismiss\n * @property {string} [focusKey] - How a screen-reader will announce the hotkey used to set focus on the first toast\n * @property {number} [toastsBeforeStack] - How many toasts to display before they start stacking\n * @extends Omit<HammerToasterProps, \"disableEvents\" | \"duration\">\n */\nexport type ToasterProps = Omit<\n HammerToasterProps,\n \"disableEvents\" | \"duration\"\n> & {\n /**\n * Timeout, in ms, before toasts auto-closes. If set to false, toasts will not auto-close.\n * @deprecated The monolith toaster controls the duration of toasts. This prop should not be used in other cases.\n * @default false\n */\n duration?: number | false;\n};\n\n/**\n * Toaster component for managing and displaying toast notifications with anvil2-specific features.\n *\n * Features:\n * - Manages multiple toast notifications in a stack\n * - Handles toast positioning and stacking behavior\n * - Supports custom events for toast management\n * - Automatic toast dismissal with configurable duration\n * - Keyboard navigation and accessibility support\n * - Dialog-aware positioning for modal contexts\n * - Session storage for dialog toaster state\n * - Custom event system for toast lifecycle management\n * - Responsive design with mobile support\n * - Automatic tracking ID generation for analytics\n * - Monolith toaster integration and coordination\n * - Shadow DOM support for micro-frontend environments\n * - A1 toast group compatibility and positioning\n *\n * @example\n * <Toaster\n * id=\"main-toaster\"\n * duration={5000}\n * toastsBeforeStack={3}\n * onToastEvent={(event) => console.log('Toast event:', event)}\n * />\n *\n * @example\n * <Toaster\n * id=\"dialog-toaster\"\n * disableEvents={false}\n * focusKey=\"t\"\n * />\n */\nexport const Toaster = forwardRef(\n (\n { onToastEvent, ...props }: HammerToasterProps,\n ref: Ref<HTMLDivElement>,\n ) => {\n const { id } = props;\n\n const toasterRef = useRef<HTMLDivElement>(null);\n const mergedToasterRef = useMergeRefs([toasterRef, ref]);\n\n const [shouldDisableEvents, setShouldDisableEvents] =\n useState<boolean>(false);\n\n useEffect(() => {\n const toasters = document.querySelectorAll(\"[data-anv='toaster']\");\n const shadowToasters =\n (\n toasterRef.current?.getRootNode() as Document | ShadowRoot\n )?.querySelectorAll(\"[data-anv='toaster']\") || [];\n\n // Toaster(s) exist in the document, bail out if this toaster is not the first one\n if (\n toasters.length &&\n id !== toasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n } else if (\n // Toaster(s) exist in the shadow dom, bail out if this toaster is not the first one\n shadowToasters.length &&\n id !== shadowToasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n }\n }, [id]);\n\n const a1ToastGroupObserver = useRef<MutationObserver | null>(null);\n const a1ToastGroupObserverConnected = useRef<boolean>(false);\n const [a1ToastGroups, setA1ToastGroups] = useState<Element[]>([]);\n const [toastCount, setToastCount] = useState<number>(0);\n\n const handleToastEvent = (event: ToastEventType) => {\n const { toastCount: newToastCount } = event;\n setToastCount(newToastCount);\n onToastEvent?.(event);\n };\n\n const updateA1ToastGroups = () => {\n const mfeRoots = document.querySelectorAll(SHADOW_HOST_DATA_ATTRS);\n const a1ToastGroupsLocal = [\n ...document.getElementsByClassName(\"ToastGroup\"),\n ];\n\n if (mfeRoots.length > 0) {\n mfeRoots.forEach((el) => {\n setTimeout(() => {\n if (el.shadowRoot) {\n a1ToastGroupsLocal.push(\n ...el.shadowRoot.querySelectorAll(\".ToastGroup\"),\n );\n }\n setA1ToastGroups(a1ToastGroupsLocal);\n });\n });\n } else {\n setA1ToastGroups(a1ToastGroupsLocal);\n }\n };\n\n useEffect(() => {\n // set mutation observer for a1 toasts after initial render\n a1ToastGroupObserver.current = new MutationObserver(updateA1ToastGroups);\n }, []);\n\n /*\n Listen for any new A1 Toast Groups to adjust styles and\n prevent overlapping.\n */\n useEffect(() => {\n if (a1ToastGroupObserver.current !== null) {\n if (toastCount > 0 && a1ToastGroupObserverConnected.current === false) {\n // listen for any new a1 toasts\n a1ToastGroupObserver.current.observe(document.body, {\n childList: true,\n subtree: true,\n });\n a1ToastGroupObserverConnected.current = true;\n\n // account for already existing a1 toasts\n updateA1ToastGroups();\n } else if (\n toastCount === 0 &&\n a1ToastGroupObserverConnected.current === true\n ) {\n a1ToastGroupObserver.current.disconnect();\n a1ToastGroupObserverConnected.current = false;\n }\n }\n }, [toastCount]);\n\n useEffect(() => {\n if (a1ToastGroups && a1ToastGroups.length > 0) {\n const toasterHeight =\n toasterRef.current?.firstElementChild?.getBoundingClientRect()\n .height as number;\n a1ToastGroups.forEach((group) => {\n (group as HTMLDivElement).style.top =\n toastCount === 0 ? \"16px\" : `calc(${toasterHeight}px + 2.5rem)`;\n });\n }\n // eslint-disable-next-line\n }, [a1ToastGroups.length, toastCount]);\n\n return (\n <HammerToaster\n {...props}\n onToastEvent={handleToastEvent}\n disableEvents={shouldDisableEvents}\n ref={mergedToasterRef}\n />\n );\n },\n);\n\nToaster.displayName = HammerToaster.displayName;\n","import {\n toast as coreToast,\n toastProps as coreToastProps,\n} from \"@servicetitan/hammer-react\";\n\n/**\n * Props for creating toast notifications\n * @property {string} id - Unique identifier for the toast\n * @property {AlertProps[\"status\"]} status - Visual status of the toast (info, success, warning, danger)\n * @property {string} title - Title text displayed in the toast\n * @property {string} [message] - Additional message content to display below the title\n * @property {number | false} [duration] - Duration in milliseconds before auto-dismiss. Set to false to disable auto-dismiss\n * @property {ToastAction & { secondary?: ToastAction }} [actions] - Action buttons to display in the toast\n * @property {ProgressBarProps[\"value\"] | \"indeterminate\"} [progress] - Progress bar value or indeterminate state\n * @property {() => void} [onDismiss] - Callback function called when toast is dismissed, expired, or closed\n * @property {() => void} [onClose] - Callback function called only when the close button is clicked\n * @property {string} [toasterId] - ID of the specific toaster to display the toast in\n */\nexport type toastProps = coreToastProps;\n\n/**\n * Toast utility functions for creating and managing toast notifications.\n *\n * Features:\n * - Create toast notifications with various status types\n * - Update existing toasts with new content\n * - Dismiss individual toasts or all toasts\n * - Support for action buttons and progress bars\n * - Automatic tracking ID generation for analytics\n * - Integration with anvil2 toaster system\n *\n * @example\n * toast.success({\n * id: \"success-toast\",\n * title: \"Success!\",\n * message: \"Your changes have been saved.\"\n * });\n */\nexport const toast = coreToast;\n"],"names":["HammerToaster","coreToast"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/anvil2",
3
- "version": "1.40.3",
3
+ "version": "1.41.0",
4
4
  "type": "module",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.js",
@@ -26,8 +26,8 @@
26
26
  "@servicetitan/anvil-fonts": ">=14",
27
27
  "classnames": "^2.5.1",
28
28
  "@servicetitan/hammer-icon": "1.2.0",
29
- "@servicetitan/hammer-react": "1.38.3",
30
- "@servicetitan/hammer-token": "2.4.0"
29
+ "@servicetitan/hammer-token": "2.4.0",
30
+ "@servicetitan/hammer-react": "1.39.0"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@types/react": "^18",