@servicetitan/anvil2 1.38.0 → 1.40.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 (201) hide show
  1. package/CHANGELOG.md +51 -12
  2. package/dist/Breadcrumbs-C_gan90a.js +36 -0
  3. package/dist/Breadcrumbs-C_gan90a.js.map +1 -0
  4. package/dist/{Breadcrumbs-DJbCkSeD.js → Breadcrumbs-D_jgwoN3-Dlw-weD8.js} +8 -38
  5. package/dist/Breadcrumbs-D_jgwoN3-Dlw-weD8.js.map +1 -0
  6. package/dist/Breadcrumbs.js +1 -1
  7. package/dist/{Calendar-jl0s6W7p.js → Calendar-C2ONV7cq.js} +2 -2
  8. package/dist/{Calendar-jl0s6W7p.js.map → Calendar-C2ONV7cq.js.map} +1 -1
  9. package/dist/{Calendar-CohGSWFp-DFYJkf7Y.js → Calendar-DixTCgAW-CfphBge0.js} +16 -15
  10. package/dist/Calendar-DixTCgAW-CfphBge0.js.map +1 -0
  11. package/dist/Calendar.js +1 -1
  12. package/dist/{Checkbox-TIcImbEx-EgjesTNn.js → Checkbox-BNrjUtHs-BBLXLwO5.js} +3 -3
  13. package/dist/{Checkbox-TIcImbEx-EgjesTNn.js.map → Checkbox-BNrjUtHs-BBLXLwO5.js.map} +1 -1
  14. package/dist/{Checkbox-DbDwtefR.js → Checkbox-Dxr3rgQV.js} +2 -2
  15. package/dist/{Checkbox-DbDwtefR.js.map → Checkbox-Dxr3rgQV.js.map} +1 -1
  16. package/dist/Checkbox.js +1 -1
  17. package/dist/{Combobox-7ADxZKDE.js → Combobox-C7nV-w8I.js} +196 -392
  18. package/dist/Combobox-C7nV-w8I.js.map +1 -0
  19. package/dist/Combobox.css +43 -281
  20. package/dist/Combobox.js +1 -1
  21. package/dist/{DateField-CUO_26rh.js → DateField-Df42sxE9.js} +43 -43
  22. package/dist/DateField-Df42sxE9.js.map +1 -0
  23. package/dist/DateField.js +1 -1
  24. package/dist/DateFieldRange--ZCTVrKX-DoogWMrm.js +2759 -0
  25. package/dist/DateFieldRange--ZCTVrKX-DoogWMrm.js.map +1 -0
  26. package/dist/DateFieldRange-DQJ_FMeA.js +22 -0
  27. package/dist/DateFieldRange-DQJ_FMeA.js.map +1 -0
  28. package/dist/DateFieldRange.d.ts +2 -0
  29. package/dist/DateFieldRange.js +2 -0
  30. package/dist/DateFieldRange.js.map +1 -0
  31. package/dist/DateFieldSingle-BXPhS91g.js +22 -0
  32. package/dist/DateFieldSingle-BXPhS91g.js.map +1 -0
  33. package/dist/DateFieldSingle.d.ts +2 -0
  34. package/dist/DateFieldSingle.js +2 -0
  35. package/dist/DateFieldSingle.js.map +1 -0
  36. package/dist/{DaysOfTheWeek-CEKoAJSv.js → DaysOfTheWeek-C4ZGriW7.js} +3 -3
  37. package/dist/{DaysOfTheWeek-CEKoAJSv.js.map → DaysOfTheWeek-C4ZGriW7.js.map} +1 -1
  38. package/dist/DaysOfTheWeek.js +1 -1
  39. package/dist/{Dialog-D6zpW-GE.js → Dialog-CBWaZO5U.js} +2 -2
  40. package/dist/{Dialog-D6zpW-GE.js.map → Dialog-CBWaZO5U.js.map} +1 -1
  41. package/dist/Dialog.js +1 -1
  42. package/dist/{Drawer-qb7Q0BAm.js → Drawer-Be0tyTMM.js} +2 -2
  43. package/dist/{Drawer-qb7Q0BAm.js.map → Drawer-Be0tyTMM.js.map} +1 -1
  44. package/dist/Drawer.js +1 -1
  45. package/dist/{FieldMessage-ChFXWVDb-loVSCnCM.js → FieldMessage-Bobp105T-DYhStLY4.js} +4 -4
  46. package/dist/FieldMessage-Bobp105T-DYhStLY4.js.map +1 -0
  47. package/dist/{FieldMessage-ChFXWVDb.css → FieldMessage-Bobp105T.css} +13 -3
  48. package/dist/{FieldMessage-Cg3zcgk5.js → FieldMessage-DkJ0K5s-.js} +2 -2
  49. package/dist/{FieldMessage-Cg3zcgk5.js.map → FieldMessage-DkJ0K5s-.js.map} +1 -1
  50. package/dist/FieldMessage.js +1 -1
  51. package/dist/{Helper-C9sHaTrI-C5fAsK6i.js → Helper-h7k80qls-DHPFHTvI.js} +3 -3
  52. package/dist/{Helper-C9sHaTrI-C5fAsK6i.js.map → Helper-h7k80qls-DHPFHTvI.js.map} +1 -1
  53. package/dist/{InputMask-kJ-hlK0O-Ctwa0U7r.js → InputMask-CiHg25XE--lofQ4oF.js} +2 -2
  54. package/dist/{InputMask-kJ-hlK0O-Ctwa0U7r.js.map → InputMask-CiHg25XE--lofQ4oF.js.map} +1 -1
  55. package/dist/{InputMask-DKPqOpHs.js → InputMask-DYthrVaU.js} +2 -2
  56. package/dist/{InputMask-DKPqOpHs.js.map → InputMask-DYthrVaU.js.map} +1 -1
  57. package/dist/InputMask.js +1 -1
  58. package/dist/{ListView-0xHc5wT6.js → ListView-DgrUsTC8.js} +3 -3
  59. package/dist/{ListView-0xHc5wT6.js.map → ListView-DgrUsTC8.js.map} +1 -1
  60. package/dist/ListView.js +1 -1
  61. package/dist/Menu-By8ps-lb.js +60 -0
  62. package/dist/Menu-By8ps-lb.js.map +1 -0
  63. package/dist/{Menu-BAuADOyt.js → Menu-jt64Cbkd-mK95uUq6.js} +23 -73
  64. package/dist/Menu-jt64Cbkd-mK95uUq6.js.map +1 -0
  65. package/dist/{Menu.css → Menu-jt64Cbkd.css} +22 -21
  66. package/dist/Menu.js +1 -1
  67. package/dist/{Page-CtwsyE3i.js → Page-DoCYLmH8.js} +135 -105
  68. package/dist/Page-DoCYLmH8.js.map +1 -0
  69. package/dist/Page.js +1 -1
  70. package/dist/Pagination.css +124 -0
  71. package/dist/Pagination.d.ts +6 -0
  72. package/dist/Pagination.js +430 -0
  73. package/dist/Pagination.js.map +1 -0
  74. package/dist/{Popover-VztF0YHt-ci3tYiye.js → Popover-CVCAWhdO-CJw1mW49.js} +3 -3
  75. package/dist/{Popover-VztF0YHt-ci3tYiye.js.map → Popover-CVCAWhdO-CJw1mW49.js.map} +1 -1
  76. package/dist/{Popover-Bnkwq99S.js → Popover-Dv7ntx4P.js} +2 -2
  77. package/dist/{Popover-Bnkwq99S.js.map → Popover-Dv7ntx4P.js.map} +1 -1
  78. package/dist/Popover.js +1 -1
  79. package/dist/{ProgressBar-Cfi5zZRy-BpESsdh_.js → ProgressBar-CZhkKwaS-dlDRDjxo.js} +24 -11
  80. package/dist/ProgressBar-CZhkKwaS-dlDRDjxo.js.map +1 -0
  81. package/dist/{ProgressBar-BotOFymw.js → ProgressBar-Eeudkcyc.js} +2 -2
  82. package/dist/{ProgressBar-BotOFymw.js.map → ProgressBar-Eeudkcyc.js.map} +1 -1
  83. package/dist/ProgressBar.js +1 -1
  84. package/dist/{Radio-7U7IBI58-BDhdZJoC.js → Radio-DiBn0-hf-hhLKXDdl.js} +4 -4
  85. package/dist/{Radio-7U7IBI58-BDhdZJoC.js.map → Radio-DiBn0-hf-hhLKXDdl.js.map} +1 -1
  86. package/dist/{Radio-D4rRt1a6.js → Radio-Dx2GeEZp.js} +2 -2
  87. package/dist/{Radio-D4rRt1a6.js.map → Radio-Dx2GeEZp.js.map} +1 -1
  88. package/dist/Radio.js +1 -1
  89. package/dist/{SearchField-Bz4HPxCQ.js → SearchField-BQY7LHe2.js} +3 -3
  90. package/dist/SearchField-BQY7LHe2.js.map +1 -0
  91. package/dist/SearchField.js +1 -1
  92. package/dist/{SelectCard-B5EqtxOK-CpCgVjV8.js → SelectCard-CL8T4DQb-ClozUyqV.js} +46 -26
  93. package/dist/SelectCard-CL8T4DQb-ClozUyqV.js.map +1 -0
  94. package/dist/SelectCard-CL8T4DQb.css +51 -0
  95. package/dist/SelectCard.js +1 -1
  96. package/dist/{SelectCardGroup-DsHZgCqA.js → SelectCardGroup-KTtcsOar.js} +2 -2
  97. package/dist/{SelectCardGroup-DsHZgCqA.js.map → SelectCardGroup-KTtcsOar.js.map} +1 -1
  98. package/dist/SelectTrigger-BvUO-g1F.js +138 -0
  99. package/dist/SelectTrigger-BvUO-g1F.js.map +1 -0
  100. package/dist/SelectTrigger.css +16 -0
  101. package/dist/SelectTrigger.d.ts +6 -0
  102. package/dist/SelectTrigger.js +2 -0
  103. package/dist/SelectTrigger.js.map +1 -0
  104. package/dist/SelectTriggerBase-BMhRDkFW-DjkagPpu.js +301 -0
  105. package/dist/SelectTriggerBase-BMhRDkFW-DjkagPpu.js.map +1 -0
  106. package/dist/SelectTriggerBase-BMhRDkFW.css +270 -0
  107. package/dist/{Switch-Dd9tJFmG.js → Switch-DAQFzi-X.js} +2 -2
  108. package/dist/{Switch-Dd9tJFmG.js.map → Switch-DAQFzi-X.js.map} +1 -1
  109. package/dist/Switch.js +1 -1
  110. package/dist/{TextField-BYyyw3m2.js → TextField-0XKj7lDu.js} +2 -2
  111. package/dist/{TextField-BYyyw3m2.js.map → TextField-0XKj7lDu.js.map} +1 -1
  112. package/dist/{TextField-CGJtMoil-CJqYM83o.js → TextField-C5KbQxoU-CSkSyt7P.js} +8 -10
  113. package/dist/TextField-C5KbQxoU-CSkSyt7P.js.map +1 -0
  114. package/dist/TextField.js +1 -1
  115. package/dist/{Textarea-AczEXhHB.js → Textarea-DkSeFIg7.js} +8 -10
  116. package/dist/Textarea-DkSeFIg7.js.map +1 -0
  117. package/dist/Textarea.js +1 -1
  118. package/dist/Toast.js +1 -1
  119. package/dist/{Toolbar-Cu3u0TRX.js → Toolbar-38Z9fVxY.js} +5 -7
  120. package/dist/Toolbar-38Z9fVxY.js.map +1 -0
  121. package/dist/Toolbar.js +1 -1
  122. package/dist/{Tooltip-BL_bgvwA.js → Tooltip-BwUVaBEo.js} +2 -2
  123. package/dist/{Tooltip-BL_bgvwA.js.map → Tooltip-BwUVaBEo.js.map} +1 -1
  124. package/dist/Tooltip.js +1 -1
  125. package/dist/assets/css-utils/a2-border.css +53 -0
  126. package/dist/assets/css-utils/a2-color.css +235 -0
  127. package/dist/assets/css-utils/a2-font.css +49 -0
  128. package/dist/assets/css-utils/a2-spacing.css +483 -0
  129. package/dist/assets/css-utils/a2-utils.css +785 -0
  130. package/dist/assets/icons/st/document_audio.svg +1 -0
  131. package/dist/assets/icons/st/document_doc.svg +1 -0
  132. package/dist/assets/icons/st/document_drawing.svg +1 -0
  133. package/dist/assets/icons/st/document_form.svg +1 -0
  134. package/dist/assets/icons/st/document_message.svg +1 -0
  135. package/dist/assets/icons/st/document_other.svg +1 -0
  136. package/dist/assets/icons/st/document_pdf.svg +1 -0
  137. package/dist/assets/icons/st/document_spreadsheet.svg +1 -0
  138. package/dist/assets/icons/st/document_text.svg +1 -0
  139. package/dist/assets/icons/st/document_web.svg +1 -0
  140. package/dist/assets/icons/st/gnav_insurance_work_queue_active.svg +1 -0
  141. package/dist/assets/icons/st/gnav_insurance_work_queue_inactive.svg +1 -0
  142. package/dist/assets/icons/st/gnav_production_work_queue_active.svg +1 -0
  143. package/dist/assets/icons/st/gnav_production_work_queue_inactive.svg +1 -0
  144. package/dist/assets/icons/st.ts +14 -0
  145. package/dist/components/Alert/Alert.figma.d.ts +1 -0
  146. package/dist/components/DateFieldRange/DateFieldRange.d.ts +7 -0
  147. package/dist/components/DateFieldRange/index.d.ts +2 -0
  148. package/dist/components/DateFieldSingle/DateFieldSingle.d.ts +7 -0
  149. package/dist/components/DateFieldSingle/index.d.ts +2 -0
  150. package/dist/components/Page/Page.d.ts +19 -352
  151. package/dist/components/Page/PageContent.d.ts +24 -0
  152. package/dist/components/Page/PageContext.d.ts +4 -0
  153. package/dist/components/Page/PageFooter.d.ts +24 -0
  154. package/dist/components/Page/PageHeader.d.ts +135 -0
  155. package/dist/components/Page/PagePanel.d.ts +57 -0
  156. package/dist/components/Page/PageSidebar.d.ts +57 -0
  157. package/dist/components/Page/PageSidebarContext.d.ts +5 -0
  158. package/dist/components/Page/PageSidebarHeader.d.ts +23 -0
  159. package/dist/components/Page/index.d.ts +5 -0
  160. package/dist/components/Pagination/Pagination.d.ts +58 -0
  161. package/dist/components/Pagination/index.d.ts +2 -0
  162. package/dist/components/Pagination/internal/usePaginationArray.d.ts +36 -0
  163. package/dist/components/SelectTrigger/SelectTrigger.d.ts +11 -0
  164. package/dist/components/SelectTrigger/index.d.ts +2 -0
  165. package/dist/components/index.d.ts +3 -0
  166. package/dist/event-BEJFimi3.js +6 -0
  167. package/dist/event-BEJFimi3.js.map +1 -0
  168. package/dist/index.js +27 -24
  169. package/dist/index.js.map +1 -1
  170. package/dist/keyboard_arrow_right-DZWNVytH.js +8 -0
  171. package/dist/keyboard_arrow_right-DZWNVytH.js.map +1 -0
  172. package/dist/more_horiz-DJgdQiy0.js +6 -0
  173. package/dist/more_horiz-DJgdQiy0.js.map +1 -0
  174. package/dist/{toast-B39L6vJ0.js → toast-CWVuLkyv.js} +2 -2
  175. package/dist/{toast-B39L6vJ0.js.map → toast-CWVuLkyv.js.map} +1 -1
  176. package/dist/token/core/css-utils/a2-border.css +53 -0
  177. package/dist/token/core/css-utils/a2-color.css +235 -0
  178. package/dist/token/core/css-utils/a2-font.css +49 -0
  179. package/dist/token/core/css-utils/a2-spacing.css +483 -0
  180. package/dist/token/core/css-utils/a2-utils.css +785 -0
  181. package/package.json +8 -5
  182. package/dist/Breadcrumbs-DJbCkSeD.js.map +0 -1
  183. package/dist/Calendar-CohGSWFp-DFYJkf7Y.js.map +0 -1
  184. package/dist/Combobox-7ADxZKDE.js.map +0 -1
  185. package/dist/DateField-CUO_26rh.js.map +0 -1
  186. package/dist/FieldMessage-ChFXWVDb-loVSCnCM.js.map +0 -1
  187. package/dist/Menu-BAuADOyt.js.map +0 -1
  188. package/dist/Page-CtwsyE3i.js.map +0 -1
  189. package/dist/ProgressBar-Cfi5zZRy-BpESsdh_.js.map +0 -1
  190. package/dist/SearchField-Bz4HPxCQ.js.map +0 -1
  191. package/dist/SelectCard-B5EqtxOK-CpCgVjV8.js.map +0 -1
  192. package/dist/SelectCard-B5EqtxOK.css +0 -38
  193. package/dist/TextField-CGJtMoil-CJqYM83o.js.map +0 -1
  194. package/dist/Textarea-AczEXhHB.js.map +0 -1
  195. package/dist/Toolbar-Cu3u0TRX.js.map +0 -1
  196. /package/dist/{Breadcrumbs.css → Breadcrumbs-D_jgwoN3.css} +0 -0
  197. /package/dist/{Calendar-CohGSWFp.css → Calendar-DixTCgAW.css} +0 -0
  198. /package/dist/{Helper-C9sHaTrI.css → Helper-h7k80qls.css} +0 -0
  199. /package/dist/{Popover-VztF0YHt.css → Popover-CVCAWhdO.css} +0 -0
  200. /package/dist/{ProgressBar-Cfi5zZRy.css → ProgressBar-CZhkKwaS.css} +0 -0
  201. /package/dist/{Radio-7U7IBI58.css → Radio-DiBn0-hf.css} +0 -0
@@ -0,0 +1,135 @@
1
+ import { ButtonProps, ButtonLinkProps, BreadcrumbsLinkProps, ChipProps } from '@servicetitan/hammer-react';
2
+ import { ComponentPropsWithoutRef, ReactNode } from 'react';
3
+ import { LayoutProps } from '../Layout';
4
+ /**
5
+ * Props for page header action buttons
6
+ */
7
+ type PageHeaderActionProps = Omit<ButtonProps, "appearance"> & {
8
+ /**
9
+ * Label text for the action button
10
+ */
11
+ label: string;
12
+ };
13
+ /**
14
+ * Props for page header actions configuration
15
+ */
16
+ type PageHeaderActionsProps = {
17
+ /**
18
+ * Primary action button
19
+ */
20
+ primary?: PageHeaderActionProps;
21
+ /**
22
+ * Array of secondary action buttons
23
+ */
24
+ secondary?: PageHeaderActionProps[];
25
+ };
26
+ /**
27
+ * Base props for preference actions
28
+ */
29
+ type BasePreferenceProps = {
30
+ /**
31
+ * Accessible label for the preference action
32
+ */
33
+ "aria-label": string;
34
+ };
35
+ /**
36
+ * Props for preference button actions
37
+ */
38
+ type PreferenceButtonProps = Omit<ButtonProps, "aria-label" | "icon" | "appearance" | "size" | "className"> & BasePreferenceProps;
39
+ /**
40
+ * Props for preference link actions
41
+ */
42
+ type PreferenceLinkProps = Omit<ButtonLinkProps, "aria-label" | "icon" | "appearance" | "size" | "className"> & BasePreferenceProps;
43
+ /**
44
+ * Props for the PageHeader component
45
+ * @extends ComponentPropsWithoutRef<"header">
46
+ */
47
+ export type PageHeaderProps = ComponentPropsWithoutRef<"header"> & {
48
+ /**
49
+ * Main title of the page
50
+ */
51
+ title: string;
52
+ /**
53
+ * Breadcrumb navigation links
54
+ */
55
+ breadcrumbs?: BreadcrumbsLinkProps[];
56
+ /**
57
+ * Status chips to display
58
+ */
59
+ chips?: ChipProps[];
60
+ /**
61
+ * Description text or content below the title
62
+ */
63
+ description?: ReactNode;
64
+ /**
65
+ * Primary and secondary action buttons
66
+ */
67
+ actions?: PageHeaderActionsProps;
68
+ /**
69
+ * Preference action button or link
70
+ */
71
+ preferenceAction?: PreferenceButtonProps | PreferenceLinkProps;
72
+ /**
73
+ * Layout configuration for the header
74
+ */
75
+ layout?: LayoutProps;
76
+ };
77
+ /**
78
+ * PageHeader component for creating page headers with navigation and actions.
79
+ *
80
+ * Features:
81
+ * - Page title with semantic heading
82
+ * - Breadcrumb navigation support
83
+ * - Status chips display
84
+ * - Primary and secondary action buttons
85
+ * - Preference action button/link
86
+ * - Responsive layout with fluid grid
87
+ * - Accessibility support with proper ARIA labels
88
+ * - Flexible layout configuration
89
+ * - Description content support
90
+ *
91
+ * @example
92
+ * <Page.Header
93
+ * title="Page Title"
94
+ * breadcrumbs={[
95
+ * { href: "/", children: "Home" },
96
+ * { children: "Current Page" }
97
+ * ]}
98
+ * chips={[{ label: "Status" }]}
99
+ * actions={{
100
+ * primary: { label: "Save", onClick: handleSave },
101
+ * secondary: [{ label: "Cancel", onClick: handleCancel }]
102
+ * }}
103
+ * />
104
+ */
105
+ export declare const PageHeader: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & {
106
+ /**
107
+ * Main title of the page
108
+ */
109
+ title: string;
110
+ /**
111
+ * Breadcrumb navigation links
112
+ */
113
+ breadcrumbs?: BreadcrumbsLinkProps[];
114
+ /**
115
+ * Status chips to display
116
+ */
117
+ chips?: ChipProps[];
118
+ /**
119
+ * Description text or content below the title
120
+ */
121
+ description?: ReactNode;
122
+ /**
123
+ * Primary and secondary action buttons
124
+ */
125
+ actions?: PageHeaderActionsProps;
126
+ /**
127
+ * Preference action button or link
128
+ */
129
+ preferenceAction?: PreferenceButtonProps | PreferenceLinkProps;
130
+ /**
131
+ * Layout configuration for the header
132
+ */
133
+ layout?: LayoutProps;
134
+ } & import('react').RefAttributes<HTMLHeadElement>>;
135
+ export {};
@@ -0,0 +1,57 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ /**
3
+ * Props for the PagePanel component
4
+ * @extends ComponentPropsWithoutRef<"div">
5
+ */
6
+ export type PagePanelProps = ComponentPropsWithoutRef<"div"> & {
7
+ /**
8
+ * Whether the panel is open
9
+ * @default true
10
+ */
11
+ open?: boolean;
12
+ /**
13
+ * Size of the panel
14
+ * @default "medium"
15
+ */
16
+ size?: "small" | "medium" | "large";
17
+ /**
18
+ * Whether to remove default padding from the panel
19
+ * @default false
20
+ */
21
+ noPadding?: boolean;
22
+ };
23
+ /**
24
+ * PagePanel component for creating slide-out panels or dialogs.
25
+ *
26
+ * Features:
27
+ * - Responsive design with dialog fallback on mobile
28
+ * - Multiple size variants (small, medium, large)
29
+ * - Optional padding control
30
+ * - Persistent or controlled open state
31
+ * - Automatic mobile dialog conversion
32
+ * - Keyboard navigation and accessibility support
33
+ * - Smooth animations and transitions
34
+ *
35
+ * @example
36
+ * <Page.Panel open={isOpen} size="medium">
37
+ * <Text variant="headline" el="h3">Panel Content</Text>
38
+ * <Button onClick={() => setIsOpen(false)}>Close</Button>
39
+ * </Page.Panel>
40
+ */
41
+ export declare const PagePanel: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
42
+ /**
43
+ * Whether the panel is open
44
+ * @default true
45
+ */
46
+ open?: boolean;
47
+ /**
48
+ * Size of the panel
49
+ * @default "medium"
50
+ */
51
+ size?: "small" | "medium" | "large";
52
+ /**
53
+ * Whether to remove default padding from the panel
54
+ * @default false
55
+ */
56
+ noPadding?: boolean;
57
+ } & import('react').RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,57 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ /**
3
+ * Props for the PageSidebar component
4
+ * @extends ComponentPropsWithoutRef<"div">
5
+ */
6
+ export type PageSidebarProps = ComponentPropsWithoutRef<"div"> & {
7
+ /**
8
+ * Key for storing sidebar collapsed state in localStorage
9
+ * @default "sidebar-collapsed"
10
+ */
11
+ localStorageKey?: string;
12
+ /**
13
+ * Custom tracking ID for analytics
14
+ */
15
+ ["data-tracking-id"]?: string;
16
+ /**
17
+ * Title to display in the adaptive trigger button
18
+ */
19
+ currentPageTitle?: string;
20
+ };
21
+ /**
22
+ * PageSidebar component for creating collapsible navigation sidebars.
23
+ *
24
+ * Features:
25
+ * - Collapsible sidebar with localStorage persistence
26
+ * - Responsive design with adaptive popover on mobile
27
+ * - Automatic tracking ID generation for analytics
28
+ * - Keyboard navigation and accessibility support
29
+ * - Toggle button with tooltip
30
+ * - Context provider for sidebar state
31
+ * - Mobile-friendly popover navigation
32
+ *
33
+ * @example
34
+ * <Page.Sidebar currentPageTitle="Navigation">
35
+ * <Page.SidebarHeader>
36
+ * <Text variant="headline" el="h2">Sidebar Title</Text>
37
+ * </Page.SidebarHeader>
38
+ * <SideNav>
39
+ * <SideNavLink pathname="/">Home</SideNavLink>
40
+ * </SideNav>
41
+ * </Page.Sidebar>
42
+ */
43
+ export declare const PageSidebar: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
44
+ /**
45
+ * Key for storing sidebar collapsed state in localStorage
46
+ * @default "sidebar-collapsed"
47
+ */
48
+ localStorageKey?: string;
49
+ /**
50
+ * Custom tracking ID for analytics
51
+ */
52
+ "data-tracking-id"?: string;
53
+ /**
54
+ * Title to display in the adaptive trigger button
55
+ */
56
+ currentPageTitle?: string;
57
+ } & import('react').RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,5 @@
1
+ type PageSideBarContextProps = {
2
+ collapsed: boolean;
3
+ };
4
+ export declare const PageSideBarContext: import('react').Context<PageSideBarContextProps | null>;
5
+ export {};
@@ -0,0 +1,23 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ /**
3
+ * Props for the PageSidebarHeader component
4
+ * @extends ComponentPropsWithoutRef<"div">
5
+ */
6
+ export type PageSidebarHeaderProps = ComponentPropsWithoutRef<"div">;
7
+ /**
8
+ * PageSidebarHeader component for creating header sections within sidebars.
9
+ *
10
+ * Features:
11
+ * - Container for sidebar header content
12
+ * - Automatic visibility handling based on sidebar collapsed state
13
+ * - Supports all standard div props
14
+ * - Context-aware styling
15
+ *
16
+ * @example
17
+ * <Page.SidebarHeader>
18
+ * <Text variant="headline" el="h2" size="medium">
19
+ * Sidebar Title
20
+ * </Text>
21
+ * </Page.SidebarHeader>
22
+ */
23
+ export declare const PageSidebarHeader: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
@@ -1,2 +1,7 @@
1
1
  export * from './Page';
2
2
  export { Page as default } from './Page';
3
+ export type { PageContentProps } from './PageContent';
4
+ export type { PageSidebarProps } from './PageSidebar';
5
+ export type { PageFooterProps } from './PageFooter';
6
+ export type { PageHeaderProps } from './PageHeader';
7
+ export type { PageContextProps } from './PageContext';
@@ -0,0 +1,58 @@
1
+ import { PaginationProps as CorePaginationProps } from '@servicetitan/hammer-react';
2
+ import { DataTrackingId } from '../../types/DataTrackingId';
3
+ /**
4
+ * Props for the Pagination component
5
+ * @property {number} page - The current page number
6
+ * @property {number} itemsPerPage - Number of items displayed per page
7
+ * @property {number[]} [itemsPerPageOptions] - Available options for items per page selection
8
+ * @property {number} [totalItemCount] - Total number of items across all pages
9
+ * @property {boolean} [showCount] - Whether to display the item count information
10
+ * @property {(page: number) => void} [onPageChange] - Callback when page changes
11
+ * @property {(page: number) => void} [onNextClick] - Callback when next button is clicked
12
+ * @property {(itemsPerPage: number) => void} [onItemsPerPageChange] - Callback when items per page changes
13
+ * @property {(page: number) => void} [onPreviousClick] - Callback when previous button is clicked
14
+ * @extends Omit<CorePaginationProps, "children">
15
+ * @extends DataTrackingId
16
+ */
17
+ export type PaginationProps = Omit<CorePaginationProps, "children"> & DataTrackingId & {
18
+ page: number;
19
+ itemsPerPage: number;
20
+ itemsPerPageOptions?: number[];
21
+ totalItemCount?: number;
22
+ showCount?: boolean;
23
+ onPageChange?: (page: number) => void;
24
+ onItemsPerPageChange?: (itemsPerPage: number) => void;
25
+ };
26
+ /**
27
+ * Pagination component for navigating through paginated content with automatic page array generation.
28
+ *
29
+ * Features:
30
+ * - Automatic page array generation with overflow handling
31
+ * - Supports items per page selection with customizable options
32
+ * - Displays item count information with screen reader support
33
+ * - Handles edge cases like invalid page numbers
34
+ * - Includes previous/next navigation buttons
35
+ * - Supports overflow menus for large page ranges
36
+ * - Fully accessible with proper ARIA attributes
37
+ * - Automatic tracking ID generation for analytics
38
+ *
39
+ * @example
40
+ * <Pagination
41
+ * page={1}
42
+ * itemsPerPage={10}
43
+ * totalItemCount={100}
44
+ * itemsPerPageOptions={[10, 20, 50]}
45
+ * showCount={true}
46
+ * onPageChange={(page) => console.log('Page changed to:', page)}
47
+ * onItemsPerPageChange={(itemsPerPage) => console.log('Items per page:', itemsPerPage)}
48
+ * />
49
+ */
50
+ export declare const Pagination: import('react').ForwardRefExoticComponent<Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLElement>, HTMLElement>, "ref">, "children"> & DataTrackingId & {
51
+ page: number;
52
+ itemsPerPage: number;
53
+ itemsPerPageOptions?: number[];
54
+ totalItemCount?: number;
55
+ showCount?: boolean;
56
+ onPageChange?: (page: number) => void;
57
+ onItemsPerPageChange?: (itemsPerPage: number) => void;
58
+ } & import('react').RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,2 @@
1
+ export * from './Pagination';
2
+ export { Pagination as default } from './Pagination';
@@ -0,0 +1,36 @@
1
+ export type PageArrayItem = {
2
+ type: "page";
3
+ page: number;
4
+ } | {
5
+ type: "overflow";
6
+ startPage: number;
7
+ endPage: number;
8
+ length: number;
9
+ };
10
+ /**
11
+ * Custom hook for managing pagination array state and generation.
12
+ *
13
+ * Features:
14
+ * - Automatically generates pagination array based on current page and total pages
15
+ * - Avoids unnecessary regeneration if the current page is already visible
16
+ * - Updates array when page or total pages change and the visible set must change
17
+ * - Handles jumps to first/last page with overflow between current and target
18
+ * - Provides stable reference for the current pagination array
19
+ *
20
+ * @param page The currently selected page
21
+ * @param totalPages Total number of pages
22
+ * @param maxArrayLength Maximum length of the pagination array (including overflows)
23
+ * @returns The current pagination array
24
+ *
25
+ * @example
26
+ * const pageArray = usePaginationArray({
27
+ * page: 5,
28
+ * totalPages: 10,
29
+ * maxArrayLength: 7
30
+ * });
31
+ */
32
+ export declare const usePaginationArray: ({ page, totalPages, maxArrayLength, }: {
33
+ page: number;
34
+ totalPages: number;
35
+ maxArrayLength?: number;
36
+ }) => PageArrayItem[];
@@ -0,0 +1,11 @@
1
+ import { SelectTriggerProps as CoreSelectTriggerProps, IconProps as CoreIconProps, AvatarProps as CoreAvatarProps } from '@servicetitan/hammer-react';
2
+ import { DataTrackingId } from '../../types/DataTrackingId';
3
+ import { DistributiveOmit } from '../../types';
4
+ export type SelectTriggerProps<Item> = DistributiveOmit<CoreSelectTriggerProps<Item>, "prefix"> & DataTrackingId & {
5
+ prefix?: string | {
6
+ icon: DistributiveOmit<CoreIconProps, "size">;
7
+ } | {
8
+ avatar: DistributiveOmit<CoreAvatarProps, "size">;
9
+ };
10
+ };
11
+ export declare const SelectTrigger: <Item = any>({ prefix: prefixProp, ...props }: SelectTriggerProps<Item>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export * from './SelectTrigger';
2
+ export { SelectTrigger as default } from './SelectTrigger';
@@ -13,6 +13,8 @@ export * from './Checkbox';
13
13
  export * from './Chip';
14
14
  export * from './Combobox';
15
15
  export * from './DateField';
16
+ export * from './DateFieldRange';
17
+ export * from './DateFieldSingle';
16
18
  export * from './DaysOfTheWeek';
17
19
  export * from './Details';
18
20
  export * from './Dialog';
@@ -39,6 +41,7 @@ export * from './Radio';
39
41
  export * from './SearchField';
40
42
  export * from './SegmentedControl';
41
43
  export * from './SelectCard';
44
+ export * from './SelectTrigger';
42
45
  export * from './SideNav';
43
46
  export * from './Skeleton';
44
47
  export * from './Spinner';
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+
3
+ const SvgEvent = (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: "M16 13h-3c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zm0-10v1H8V3c0-.55-.45-1-1-1s-1 .45-1 1v1H5c-1.11 0-1.99.9-1.99 2L3 20a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-1V3c0-.55-.45-1-1-1s-1 .45-1 1zm2 17H6c-.55 0-1-.45-1-1V9h14v10c0 .55-.45 1-1 1z" }));
4
+
5
+ export { SvgEvent as S };
6
+ //# sourceMappingURL=event-BEJFimi3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-BEJFimi3.js","sources":["../../hammer-icon/mdi/round/event.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgEvent = (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: \"M16 13h-3c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zm0-10v1H8V3c0-.55-.45-1-1-1s-1 .45-1 1v1H5c-1.11 0-1.99.9-1.99 2L3 20a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-1V3c0-.55-.45-1-1-1s-1 .45-1 1zm2 17H6c-.55 0-1-.45-1-1V9h14v10c0 .55-.45 1-1 1z\" }));\nexport default SvgEvent;\n"],"names":[],"mappings":";;AACK,MAAC,QAAQ,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,2RAA2R,EAAE,CAAC;;;;"}
package/dist/index.js CHANGED
@@ -2,56 +2,59 @@ export { A as Alert } from './Alert-DipY5OlC.js';
2
2
  export { A as Announcement } from './Announcement-ButSjdLn.js';
3
3
  export { A as Avatar, a as AvatarGroup } from './Avatar-hNOToS9S.js';
4
4
  export { B as Badge } from './Badge-7aZfE-LH.js';
5
- export { B as Breadcrumbs, a as BreadcrumbsElement, b as BreadcrumbsLink } from './Breadcrumbs-DJbCkSeD.js';
5
+ export { B as Breadcrumbs, a as BreadcrumbsElement, b as BreadcrumbsLink } from './Breadcrumbs-C_gan90a.js';
6
6
  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-jl0s6W7p.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-C2ONV7cq.js';
11
11
  export { C as Card } from './Card-U2IJPk8B.js';
12
- export { C as Checkbox, a as CheckboxGroup } from './Checkbox-DbDwtefR.js';
12
+ export { C as Checkbox, a as CheckboxGroup } from './Checkbox-Dxr3rgQV.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-7ADxZKDE.js';
15
- export { D as DateField } from './DateField-CUO_26rh.js';
16
- export { D as DaysOfTheWeek } from './DaysOfTheWeek-CEKoAJSv.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-C7nV-w8I.js';
15
+ export { D as DateField } from './DateField-Df42sxE9.js';
16
+ export { D as DateFieldRange } from './DateFieldRange-DQJ_FMeA.js';
17
+ export { D as DateFieldSingle } from './DateFieldSingle-BXPhS91g.js';
18
+ export { D as DaysOfTheWeek } from './DaysOfTheWeek-C4ZGriW7.js';
17
19
  export { D as Details, b as DetailsContent, a as DetailsSummary } from './Details-DVg0EOkv.js';
18
- export { D as Dialog, d as DialogCancelButton, c as DialogContent, b as DialogFooter, a as DialogHeader } from './Dialog-D6zpW-GE.js';
20
+ export { D as Dialog, d as DialogCancelButton, c as DialogContent, b as DialogFooter, a as DialogHeader } from './Dialog-CBWaZO5U.js';
19
21
  export { D as Divider } from './Divider-CN36wX4s.js';
20
22
  export { D as Dnd } from './index-CKfiQx8n-4nziUo7G.js';
21
23
  export { D as DndSort, a as DndSortCard, b as DndSortZone } from './DndSort-Cl0FCNQm.js';
22
- export { D as Drawer, a as DrawerCancelButton, d as DrawerContent, b as DrawerFooter, c as DrawerHeader } from './Drawer-qb7Q0BAm.js';
24
+ export { D as Drawer, a as DrawerCancelButton, d as DrawerContent, b as DrawerFooter, c as DrawerHeader } from './Drawer-Be0tyTMM.js';
23
25
  export { E as EditCard } from './EditCard-C0hD1VPA.js';
24
- export { F as FieldMessage } from './FieldMessage-Cg3zcgk5.js';
26
+ export { F as FieldMessage } from './FieldMessage-DkJ0K5s-.js';
25
27
  export { F as Flex } from './Flex-Ln6PmaDl.js';
26
28
  export { G as Grid } from './Grid-CMcDeSYT.js';
27
29
  export { I as Icon } from './Icon-BgKqBmlj.js';
28
- export { I as InputMask } from './InputMask-DKPqOpHs.js';
30
+ export { I as InputMask } from './InputMask-DYthrVaU.js';
29
31
  export { L as Layout, a as LayoutElement, b as LayoutItem } from './Layout-CUUb2PVr.js';
30
32
  export { L as Link } from './Link-DZa0wmkA.js';
31
33
  export { L as Listbox, a as ListboxOption, b as ListboxOptionGroup } from './Listbox-dVARiucB.js';
32
- export { L as ListView, a as ListViewOption, b as ListViewOptionCell } from './ListView-0xHc5wT6.js';
33
- export { M as Menu, a as MenuItem } from './Menu-BAuADOyt.js';
34
+ export { L as ListView, a as ListViewOption, b as ListViewOptionCell } from './ListView-DgrUsTC8.js';
35
+ export { M as Menu, a as MenuItem } from './Menu-By8ps-lb.js';
34
36
  export { O as Overflow, a as OverflowText } from './Overflow-B6rIOkAI.js';
35
- export { P as Page, e as PageContent, d as PageHeader, c as PagePanel, a as PageSidebar, b as PageSidebarHeader } from './Page-CtwsyE3i.js';
36
- export { P as Popover, d as PopoverButton, c as PopoverClose, b as PopoverContent, a as PopoverTrigger } from './Popover-Bnkwq99S.js';
37
- export { P as ProgressBar } from './ProgressBar-BotOFymw.js';
38
- export { R as Radio, a as RadioGroup } from './Radio-D4rRt1a6.js';
39
- export { S as SearchField } from './SearchField-Bz4HPxCQ.js';
37
+ export { P as Page } from './Page-DoCYLmH8.js';
38
+ export { P as Popover, d as PopoverButton, c as PopoverClose, b as PopoverContent, a as PopoverTrigger } from './Popover-Dv7ntx4P.js';
39
+ export { P as ProgressBar } from './ProgressBar-Eeudkcyc.js';
40
+ export { R as Radio, a as RadioGroup } from './Radio-Dx2GeEZp.js';
41
+ export { S as SearchField } from './SearchField-BQY7LHe2.js';
40
42
  export { S as SegmentedControl, a as SegmentedControlSegment } from './SegmentedControl-DKMQuf7s.js';
41
- export { S as SelectCard, b as SelectCardElement, a as SelectCardGroup } from './SelectCardGroup-DsHZgCqA.js';
43
+ export { S as SelectCard, b as SelectCardElement, a as SelectCardGroup } from './SelectCardGroup-KTtcsOar.js';
44
+ export { S as SelectTrigger } from './SelectTrigger-BvUO-g1F.js';
42
45
  export { S as SideNav, a as SideNavCollapsible, b as SideNavGroup, c as SideNavLink } from './SideNav-DEoGpeqJ.js';
43
46
  export { S as Skeleton, a as SkeletonCircle, b as SkeletonPill, c as SkeletonRectangle, d as SkeletonText } from './Skeleton-COxTdwjO.js';
44
47
  export { S as Spinner } from './Spinner-C1r3COiQ.js';
45
48
  export { S as SrOnly } from './SrOnly-C_I8eH4C.js';
46
49
  export { S as Stepper, d as StepperFinalPanel, a as StepperList, e as StepperNextButton, c as StepperPanel, f as StepperPrevButton, b as StepperStep } from './Stepper-CwIV7ZiT.js';
47
- export { S as Switch } from './Switch-Dd9tJFmG.js';
50
+ export { S as Switch } from './Switch-DAQFzi-X.js';
48
51
  export { T as Tab, a as TabButton, b as TabList, c as TabPanel } from './Tab-BSC7e4rM.js';
49
52
  export { T as Text } from './Text-B91g6xKn.js';
50
- export { T as Textarea } from './Textarea-AczEXhHB.js';
51
- export { T as TextField } from './TextField-BYyyw3m2.js';
52
- export { T as Toaster, t as toast } from './toast-B39L6vJ0.js';
53
- export { T as Toolbar, b as ToolbarButton, d as ToolbarButtonLink, c as ToolbarButtonToggle, a as ToolbarElement, e as ToolbarSelect } from './Toolbar-Cu3u0TRX.js';
54
- export { T as Tooltip, b as TooltipContent, a as TooltipTrigger } from './Tooltip-BL_bgvwA.js';
53
+ export { T as Textarea } from './Textarea-DkSeFIg7.js';
54
+ export { T as TextField } from './TextField-0XKj7lDu.js';
55
+ export { T as Toaster, t as toast } from './toast-CWVuLkyv.js';
56
+ export { T as Toolbar, b as ToolbarButton, d as ToolbarButtonLink, c as ToolbarButtonToggle, a as ToolbarElement, e as ToolbarSelect } from './Toolbar-38Z9fVxY.js';
57
+ export { T as Tooltip, b as TooltipContent, a as TooltipTrigger } from './Tooltip-BwUVaBEo.js';
55
58
  export { u as useAccessibleColor } from './useAccessibleColor-Dc6B_M-Z-BYKjkGRg.js';
56
59
  export { u as useBreakpoint } from './useBreakpoint-7QkBkSeP-Cv5fnZxs.js';
57
60
  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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+
3
+ const SvgKeyboardArrowLeft = (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: "M14.71 15.88 10.83 12l3.88-3.88a.996.996 0 1 0-1.41-1.41L8.71 11.3a.996.996 0 0 0 0 1.41l4.59 4.59c.39.39 1.02.39 1.41 0 .38-.39.39-1.03 0-1.42z" }));
4
+
5
+ const SvgKeyboardArrowRight = (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: "M9.29 15.88 13.17 12 9.29 8.12a.996.996 0 1 1 1.41-1.41l4.59 4.59c.39.39.39 1.02 0 1.41L10.7 17.3a.996.996 0 0 1-1.41 0c-.38-.39-.39-1.03 0-1.42z" }));
6
+
7
+ export { SvgKeyboardArrowLeft as S, SvgKeyboardArrowRight as a };
8
+ //# sourceMappingURL=keyboard_arrow_right-DZWNVytH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard_arrow_right-DZWNVytH.js","sources":["../../hammer-icon/mdi/round/keyboard_arrow_left.svg","../../hammer-icon/mdi/round/keyboard_arrow_right.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgKeyboardArrowLeft = (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: \"M14.71 15.88 10.83 12l3.88-3.88a.996.996 0 1 0-1.41-1.41L8.71 11.3a.996.996 0 0 0 0 1.41l4.59 4.59c.39.39 1.02.39 1.41 0 .38-.39.39-1.03 0-1.42z\" }));\nexport default SvgKeyboardArrowLeft;\n","import * as React from \"react\";\nconst SvgKeyboardArrowRight = (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: \"M9.29 15.88 13.17 12 9.29 8.12a.996.996 0 1 1 1.41-1.41l4.59 4.59c.39.39.39 1.02 0 1.41L10.7 17.3a.996.996 0 0 1-1.41 0c-.38-.39-.39-1.03 0-1.42z\" }));\nexport default SvgKeyboardArrowRight;\n"],"names":[],"mappings":";;AACK,MAAC,oBAAoB,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,kJAAkJ,EAAE,CAAC;;ACA1X,MAAC,qBAAqB,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,mJAAmJ,EAAE,CAAC;;;;"}
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+
3
+ const SvgMoreHoriz = (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: "M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }));
4
+
5
+ export { SvgMoreHoriz as S };
6
+ //# sourceMappingURL=more_horiz-DJgdQiy0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"more_horiz-DJgdQiy0.js","sources":["../../hammer-icon/mdi/round/more_horiz.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgMoreHoriz = (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: \"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" }));\nexport default SvgMoreHoriz;\n"],"names":[],"mappings":";;AACK,MAAC,YAAY,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,qJAAqJ,EAAE,CAAC;;;;"}
@@ -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-Cfi5zZRy-BpESsdh_.js';
4
+ import { h as Toaster$1, t as toast$1 } from './ProgressBar-CZhkKwaS-dlDRDjxo.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-B39L6vJ0.js.map
96
+ //# sourceMappingURL=toast-CWVuLkyv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast-B39L6vJ0.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-CWVuLkyv.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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"}