@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.
- package/CHANGELOG.md +51 -12
- package/dist/Breadcrumbs-C_gan90a.js +36 -0
- package/dist/Breadcrumbs-C_gan90a.js.map +1 -0
- package/dist/{Breadcrumbs-DJbCkSeD.js → Breadcrumbs-D_jgwoN3-Dlw-weD8.js} +8 -38
- package/dist/Breadcrumbs-D_jgwoN3-Dlw-weD8.js.map +1 -0
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Calendar-jl0s6W7p.js → Calendar-C2ONV7cq.js} +2 -2
- package/dist/{Calendar-jl0s6W7p.js.map → Calendar-C2ONV7cq.js.map} +1 -1
- package/dist/{Calendar-CohGSWFp-DFYJkf7Y.js → Calendar-DixTCgAW-CfphBge0.js} +16 -15
- package/dist/Calendar-DixTCgAW-CfphBge0.js.map +1 -0
- package/dist/Calendar.js +1 -1
- package/dist/{Checkbox-TIcImbEx-EgjesTNn.js → Checkbox-BNrjUtHs-BBLXLwO5.js} +3 -3
- package/dist/{Checkbox-TIcImbEx-EgjesTNn.js.map → Checkbox-BNrjUtHs-BBLXLwO5.js.map} +1 -1
- package/dist/{Checkbox-DbDwtefR.js → Checkbox-Dxr3rgQV.js} +2 -2
- package/dist/{Checkbox-DbDwtefR.js.map → Checkbox-Dxr3rgQV.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Combobox-7ADxZKDE.js → Combobox-C7nV-w8I.js} +196 -392
- package/dist/Combobox-C7nV-w8I.js.map +1 -0
- package/dist/Combobox.css +43 -281
- package/dist/Combobox.js +1 -1
- package/dist/{DateField-CUO_26rh.js → DateField-Df42sxE9.js} +43 -43
- package/dist/DateField-Df42sxE9.js.map +1 -0
- package/dist/DateField.js +1 -1
- package/dist/DateFieldRange--ZCTVrKX-DoogWMrm.js +2759 -0
- package/dist/DateFieldRange--ZCTVrKX-DoogWMrm.js.map +1 -0
- package/dist/DateFieldRange-DQJ_FMeA.js +22 -0
- package/dist/DateFieldRange-DQJ_FMeA.js.map +1 -0
- package/dist/DateFieldRange.d.ts +2 -0
- package/dist/DateFieldRange.js +2 -0
- package/dist/DateFieldRange.js.map +1 -0
- package/dist/DateFieldSingle-BXPhS91g.js +22 -0
- package/dist/DateFieldSingle-BXPhS91g.js.map +1 -0
- package/dist/DateFieldSingle.d.ts +2 -0
- package/dist/DateFieldSingle.js +2 -0
- package/dist/DateFieldSingle.js.map +1 -0
- package/dist/{DaysOfTheWeek-CEKoAJSv.js → DaysOfTheWeek-C4ZGriW7.js} +3 -3
- package/dist/{DaysOfTheWeek-CEKoAJSv.js.map → DaysOfTheWeek-C4ZGriW7.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-D6zpW-GE.js → Dialog-CBWaZO5U.js} +2 -2
- package/dist/{Dialog-D6zpW-GE.js.map → Dialog-CBWaZO5U.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/{Drawer-qb7Q0BAm.js → Drawer-Be0tyTMM.js} +2 -2
- package/dist/{Drawer-qb7Q0BAm.js.map → Drawer-Be0tyTMM.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/{FieldMessage-ChFXWVDb-loVSCnCM.js → FieldMessage-Bobp105T-DYhStLY4.js} +4 -4
- package/dist/FieldMessage-Bobp105T-DYhStLY4.js.map +1 -0
- package/dist/{FieldMessage-ChFXWVDb.css → FieldMessage-Bobp105T.css} +13 -3
- package/dist/{FieldMessage-Cg3zcgk5.js → FieldMessage-DkJ0K5s-.js} +2 -2
- package/dist/{FieldMessage-Cg3zcgk5.js.map → FieldMessage-DkJ0K5s-.js.map} +1 -1
- package/dist/FieldMessage.js +1 -1
- package/dist/{Helper-C9sHaTrI-C5fAsK6i.js → Helper-h7k80qls-DHPFHTvI.js} +3 -3
- package/dist/{Helper-C9sHaTrI-C5fAsK6i.js.map → Helper-h7k80qls-DHPFHTvI.js.map} +1 -1
- package/dist/{InputMask-kJ-hlK0O-Ctwa0U7r.js → InputMask-CiHg25XE--lofQ4oF.js} +2 -2
- package/dist/{InputMask-kJ-hlK0O-Ctwa0U7r.js.map → InputMask-CiHg25XE--lofQ4oF.js.map} +1 -1
- package/dist/{InputMask-DKPqOpHs.js → InputMask-DYthrVaU.js} +2 -2
- package/dist/{InputMask-DKPqOpHs.js.map → InputMask-DYthrVaU.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{ListView-0xHc5wT6.js → ListView-DgrUsTC8.js} +3 -3
- package/dist/{ListView-0xHc5wT6.js.map → ListView-DgrUsTC8.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/Menu-By8ps-lb.js +60 -0
- package/dist/Menu-By8ps-lb.js.map +1 -0
- package/dist/{Menu-BAuADOyt.js → Menu-jt64Cbkd-mK95uUq6.js} +23 -73
- package/dist/Menu-jt64Cbkd-mK95uUq6.js.map +1 -0
- package/dist/{Menu.css → Menu-jt64Cbkd.css} +22 -21
- package/dist/Menu.js +1 -1
- package/dist/{Page-CtwsyE3i.js → Page-DoCYLmH8.js} +135 -105
- package/dist/Page-DoCYLmH8.js.map +1 -0
- package/dist/Page.js +1 -1
- package/dist/Pagination.css +124 -0
- package/dist/Pagination.d.ts +6 -0
- package/dist/Pagination.js +430 -0
- package/dist/Pagination.js.map +1 -0
- package/dist/{Popover-VztF0YHt-ci3tYiye.js → Popover-CVCAWhdO-CJw1mW49.js} +3 -3
- package/dist/{Popover-VztF0YHt-ci3tYiye.js.map → Popover-CVCAWhdO-CJw1mW49.js.map} +1 -1
- package/dist/{Popover-Bnkwq99S.js → Popover-Dv7ntx4P.js} +2 -2
- package/dist/{Popover-Bnkwq99S.js.map → Popover-Dv7ntx4P.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-Cfi5zZRy-BpESsdh_.js → ProgressBar-CZhkKwaS-dlDRDjxo.js} +24 -11
- package/dist/ProgressBar-CZhkKwaS-dlDRDjxo.js.map +1 -0
- package/dist/{ProgressBar-BotOFymw.js → ProgressBar-Eeudkcyc.js} +2 -2
- package/dist/{ProgressBar-BotOFymw.js.map → ProgressBar-Eeudkcyc.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-7U7IBI58-BDhdZJoC.js → Radio-DiBn0-hf-hhLKXDdl.js} +4 -4
- package/dist/{Radio-7U7IBI58-BDhdZJoC.js.map → Radio-DiBn0-hf-hhLKXDdl.js.map} +1 -1
- package/dist/{Radio-D4rRt1a6.js → Radio-Dx2GeEZp.js} +2 -2
- package/dist/{Radio-D4rRt1a6.js.map → Radio-Dx2GeEZp.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/{SearchField-Bz4HPxCQ.js → SearchField-BQY7LHe2.js} +3 -3
- package/dist/SearchField-BQY7LHe2.js.map +1 -0
- package/dist/SearchField.js +1 -1
- package/dist/{SelectCard-B5EqtxOK-CpCgVjV8.js → SelectCard-CL8T4DQb-ClozUyqV.js} +46 -26
- package/dist/SelectCard-CL8T4DQb-ClozUyqV.js.map +1 -0
- package/dist/SelectCard-CL8T4DQb.css +51 -0
- package/dist/SelectCard.js +1 -1
- package/dist/{SelectCardGroup-DsHZgCqA.js → SelectCardGroup-KTtcsOar.js} +2 -2
- package/dist/{SelectCardGroup-DsHZgCqA.js.map → SelectCardGroup-KTtcsOar.js.map} +1 -1
- package/dist/SelectTrigger-BvUO-g1F.js +138 -0
- package/dist/SelectTrigger-BvUO-g1F.js.map +1 -0
- package/dist/SelectTrigger.css +16 -0
- package/dist/SelectTrigger.d.ts +6 -0
- package/dist/SelectTrigger.js +2 -0
- package/dist/SelectTrigger.js.map +1 -0
- package/dist/SelectTriggerBase-BMhRDkFW-DjkagPpu.js +301 -0
- package/dist/SelectTriggerBase-BMhRDkFW-DjkagPpu.js.map +1 -0
- package/dist/SelectTriggerBase-BMhRDkFW.css +270 -0
- package/dist/{Switch-Dd9tJFmG.js → Switch-DAQFzi-X.js} +2 -2
- package/dist/{Switch-Dd9tJFmG.js.map → Switch-DAQFzi-X.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/{TextField-BYyyw3m2.js → TextField-0XKj7lDu.js} +2 -2
- package/dist/{TextField-BYyyw3m2.js.map → TextField-0XKj7lDu.js.map} +1 -1
- package/dist/{TextField-CGJtMoil-CJqYM83o.js → TextField-C5KbQxoU-CSkSyt7P.js} +8 -10
- package/dist/TextField-C5KbQxoU-CSkSyt7P.js.map +1 -0
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-AczEXhHB.js → Textarea-DkSeFIg7.js} +8 -10
- package/dist/Textarea-DkSeFIg7.js.map +1 -0
- package/dist/Textarea.js +1 -1
- package/dist/Toast.js +1 -1
- package/dist/{Toolbar-Cu3u0TRX.js → Toolbar-38Z9fVxY.js} +5 -7
- package/dist/Toolbar-38Z9fVxY.js.map +1 -0
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-BL_bgvwA.js → Tooltip-BwUVaBEo.js} +2 -2
- package/dist/{Tooltip-BL_bgvwA.js.map → Tooltip-BwUVaBEo.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/assets/css-utils/a2-border.css +53 -0
- package/dist/assets/css-utils/a2-color.css +235 -0
- package/dist/assets/css-utils/a2-font.css +49 -0
- package/dist/assets/css-utils/a2-spacing.css +483 -0
- package/dist/assets/css-utils/a2-utils.css +785 -0
- package/dist/assets/icons/st/document_audio.svg +1 -0
- package/dist/assets/icons/st/document_doc.svg +1 -0
- package/dist/assets/icons/st/document_drawing.svg +1 -0
- package/dist/assets/icons/st/document_form.svg +1 -0
- package/dist/assets/icons/st/document_message.svg +1 -0
- package/dist/assets/icons/st/document_other.svg +1 -0
- package/dist/assets/icons/st/document_pdf.svg +1 -0
- package/dist/assets/icons/st/document_spreadsheet.svg +1 -0
- package/dist/assets/icons/st/document_text.svg +1 -0
- package/dist/assets/icons/st/document_web.svg +1 -0
- package/dist/assets/icons/st/gnav_insurance_work_queue_active.svg +1 -0
- package/dist/assets/icons/st/gnav_insurance_work_queue_inactive.svg +1 -0
- package/dist/assets/icons/st/gnav_production_work_queue_active.svg +1 -0
- package/dist/assets/icons/st/gnav_production_work_queue_inactive.svg +1 -0
- package/dist/assets/icons/st.ts +14 -0
- package/dist/components/Alert/Alert.figma.d.ts +1 -0
- package/dist/components/DateFieldRange/DateFieldRange.d.ts +7 -0
- package/dist/components/DateFieldRange/index.d.ts +2 -0
- package/dist/components/DateFieldSingle/DateFieldSingle.d.ts +7 -0
- package/dist/components/DateFieldSingle/index.d.ts +2 -0
- package/dist/components/Page/Page.d.ts +19 -352
- package/dist/components/Page/PageContent.d.ts +24 -0
- package/dist/components/Page/PageContext.d.ts +4 -0
- package/dist/components/Page/PageFooter.d.ts +24 -0
- package/dist/components/Page/PageHeader.d.ts +135 -0
- package/dist/components/Page/PagePanel.d.ts +57 -0
- package/dist/components/Page/PageSidebar.d.ts +57 -0
- package/dist/components/Page/PageSidebarContext.d.ts +5 -0
- package/dist/components/Page/PageSidebarHeader.d.ts +23 -0
- package/dist/components/Page/index.d.ts +5 -0
- package/dist/components/Pagination/Pagination.d.ts +58 -0
- package/dist/components/Pagination/index.d.ts +2 -0
- package/dist/components/Pagination/internal/usePaginationArray.d.ts +36 -0
- package/dist/components/SelectTrigger/SelectTrigger.d.ts +11 -0
- package/dist/components/SelectTrigger/index.d.ts +2 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/event-BEJFimi3.js +6 -0
- package/dist/event-BEJFimi3.js.map +1 -0
- package/dist/index.js +27 -24
- package/dist/index.js.map +1 -1
- package/dist/keyboard_arrow_right-DZWNVytH.js +8 -0
- package/dist/keyboard_arrow_right-DZWNVytH.js.map +1 -0
- package/dist/more_horiz-DJgdQiy0.js +6 -0
- package/dist/more_horiz-DJgdQiy0.js.map +1 -0
- package/dist/{toast-B39L6vJ0.js → toast-CWVuLkyv.js} +2 -2
- package/dist/{toast-B39L6vJ0.js.map → toast-CWVuLkyv.js.map} +1 -1
- package/dist/token/core/css-utils/a2-border.css +53 -0
- package/dist/token/core/css-utils/a2-color.css +235 -0
- package/dist/token/core/css-utils/a2-font.css +49 -0
- package/dist/token/core/css-utils/a2-spacing.css +483 -0
- package/dist/token/core/css-utils/a2-utils.css +785 -0
- package/package.json +8 -5
- package/dist/Breadcrumbs-DJbCkSeD.js.map +0 -1
- package/dist/Calendar-CohGSWFp-DFYJkf7Y.js.map +0 -1
- package/dist/Combobox-7ADxZKDE.js.map +0 -1
- package/dist/DateField-CUO_26rh.js.map +0 -1
- package/dist/FieldMessage-ChFXWVDb-loVSCnCM.js.map +0 -1
- package/dist/Menu-BAuADOyt.js.map +0 -1
- package/dist/Page-CtwsyE3i.js.map +0 -1
- package/dist/ProgressBar-Cfi5zZRy-BpESsdh_.js.map +0 -1
- package/dist/SearchField-Bz4HPxCQ.js.map +0 -1
- package/dist/SelectCard-B5EqtxOK-CpCgVjV8.js.map +0 -1
- package/dist/SelectCard-B5EqtxOK.css +0 -38
- package/dist/TextField-CGJtMoil-CJqYM83o.js.map +0 -1
- package/dist/Textarea-AczEXhHB.js.map +0 -1
- package/dist/Toolbar-Cu3u0TRX.js.map +0 -1
- /package/dist/{Breadcrumbs.css → Breadcrumbs-D_jgwoN3.css} +0 -0
- /package/dist/{Calendar-CohGSWFp.css → Calendar-DixTCgAW.css} +0 -0
- /package/dist/{Helper-C9sHaTrI.css → Helper-h7k80qls.css} +0 -0
- /package/dist/{Popover-VztF0YHt.css → Popover-CVCAWhdO.css} +0 -0
- /package/dist/{ProgressBar-Cfi5zZRy.css → ProgressBar-CZhkKwaS.css} +0 -0
- /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,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,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;
|
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
15
|
-
export { D as DateField } from './DateField-
|
|
16
|
-
export { D as
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
33
|
-
export { M as Menu, a as MenuItem } from './Menu-
|
|
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
|
|
36
|
-
export { P as Popover, d as PopoverButton, c as PopoverClose, b as PopoverContent, a as PopoverTrigger } from './Popover-
|
|
37
|
-
export { P as ProgressBar } from './ProgressBar-
|
|
38
|
-
export { R as Radio, a as RadioGroup } from './Radio-
|
|
39
|
-
export { S as SearchField } from './SearchField-
|
|
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-
|
|
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-
|
|
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-
|
|
51
|
-
export { T as TextField } from './TextField-
|
|
52
|
-
export { T as Toaster, t as toast } from './toast-
|
|
53
|
-
export { T as Toolbar, b as ToolbarButton, d as ToolbarButtonLink, c as ToolbarButtonToggle, a as ToolbarElement, e as ToolbarSelect } from './Toolbar-
|
|
54
|
-
export { T as Tooltip, b as TooltipContent, a as TooltipTrigger } from './Tooltip-
|
|
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-
|
|
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-
|
|
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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"}
|