@servicetitan/anvil2 1.32.1 → 1.33.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 (138) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/{Alert-BcjnX40X-DdR5a1fS.js → Alert-BcjnX40X-DK8meb2Z.js} +2 -3
  3. package/dist/{Alert-BcjnX40X-DdR5a1fS.js.map → Alert-BcjnX40X-DK8meb2Z.js.map} +1 -1
  4. package/dist/{Alert-S-riTJp2.js → Alert-D4O5XFXo.js} +2 -2
  5. package/dist/{Alert-S-riTJp2.js.map → Alert-D4O5XFXo.js.map} +1 -1
  6. package/dist/Alert.js +1 -1
  7. package/dist/{Announcement-BUNvjkVo.js → Announcement-D30SgkZg.js} +2 -3
  8. package/dist/{Announcement-BUNvjkVo.js.map → Announcement-D30SgkZg.js.map} +1 -1
  9. package/dist/Announcement.js +1 -1
  10. package/dist/{Checkbox-DdIDGlbE.js → Checkbox-C4JF-LvE.js} +2 -2
  11. package/dist/{Checkbox-DdIDGlbE.js.map → Checkbox-C4JF-LvE.js.map} +1 -1
  12. package/dist/{Checkbox-B1OkhWY6-BXBzUXK4.js → Checkbox-ZLz_xJx9-CxqouREp.js} +44 -10
  13. package/dist/Checkbox-ZLz_xJx9-CxqouREp.js.map +1 -0
  14. package/dist/Checkbox.css +69 -72
  15. package/dist/Checkbox.js +1 -1
  16. package/dist/{Checkbox.module-DMrZNVpb-DOdjd86H.js → Checkbox.module-B6diiZe0-DDAy-YPr.js} +19 -18
  17. package/dist/Checkbox.module-B6diiZe0-DDAy-YPr.js.map +1 -0
  18. package/dist/{Combobox-DZp6NgeF.js → Combobox-VCa5Qplb.js} +5 -6
  19. package/dist/Combobox-VCa5Qplb.js.map +1 -0
  20. package/dist/Combobox.js +1 -1
  21. package/dist/{DateField-BuCxeZbi.js → DateField-Ex0bquMB.js} +5 -5
  22. package/dist/{DateField-BuCxeZbi.js.map → DateField-Ex0bquMB.js.map} +1 -1
  23. package/dist/DateField.js +1 -1
  24. package/dist/{DaysOfTheWeek-BL27GHpA.js → DaysOfTheWeek-CQqCFF2f.js} +3 -4
  25. package/dist/DaysOfTheWeek-CQqCFF2f.js.map +1 -0
  26. package/dist/DaysOfTheWeek.js +1 -1
  27. package/dist/Dialog-QtgPY3ji.js +333 -0
  28. package/dist/Dialog-QtgPY3ji.js.map +1 -0
  29. package/dist/Dialog.css +146 -0
  30. package/dist/Dialog.js +1 -1
  31. package/dist/{DndSort-8xmZRn1w.js → DndSort-BVcdqJLB.js} +2 -2
  32. package/dist/{DndSort-8xmZRn1w.js.map → DndSort-BVcdqJLB.js.map} +1 -1
  33. package/dist/DndSort.js +1 -1
  34. package/dist/{Drawer-R27M51bR.js → Drawer-18QCWW4F.js} +2 -2
  35. package/dist/{Drawer-R27M51bR.js.map → Drawer-18QCWW4F.js.map} +1 -1
  36. package/dist/Drawer.js +1 -1
  37. package/dist/{Flex-DlNiHX1G-CBMDzqYU.js → Flex-CLu2TnzF-aW2OhBYv.js} +9 -4
  38. package/dist/Flex-CLu2TnzF-aW2OhBYv.js.map +1 -0
  39. package/dist/{Flex-DlNiHX1G.css → Flex-CLu2TnzF.css} +14 -1
  40. package/dist/{Flex-CqNlL2mR.js → Flex-Dvn6ix9U.js} +2 -2
  41. package/dist/{Flex-CqNlL2mR.js.map → Flex-Dvn6ix9U.js.map} +1 -1
  42. package/dist/Flex.js +1 -1
  43. package/dist/{InputMask-C8Yx-RsH-PbALaG2H.js → InputMask-CAaKh5xX-n62jt7dp.js} +2 -2
  44. package/dist/{InputMask-C8Yx-RsH-PbALaG2H.js.map → InputMask-CAaKh5xX-n62jt7dp.js.map} +1 -1
  45. package/dist/{InputMask-Dfdl3HR_.js → InputMask-txxn_qIf.js} +2 -2
  46. package/dist/{InputMask-Dfdl3HR_.js.map → InputMask-txxn_qIf.js.map} +1 -1
  47. package/dist/InputMask.js +1 -1
  48. package/dist/{ListView-D3u27ODE.js → ListView-DNwkCrxf.js} +3 -3
  49. package/dist/ListView-DNwkCrxf.js.map +1 -0
  50. package/dist/ListView.js +1 -1
  51. package/dist/{Listbox-CthJSHQ3-BnNf4vnZ.js → Listbox-DlKyRbri-Dc3ny9gH.js} +2 -2
  52. package/dist/{Listbox-CthJSHQ3-BnNf4vnZ.js.map → Listbox-DlKyRbri-Dc3ny9gH.js.map} +1 -1
  53. package/dist/{Listbox-Oz_LxoiF.js → Listbox-eNhS0Wmx.js} +2 -2
  54. package/dist/{Listbox-Oz_LxoiF.js.map → Listbox-eNhS0Wmx.js.map} +1 -1
  55. package/dist/Listbox.js +1 -1
  56. package/dist/{Menu-DY1JLQrj.js → Menu-DvVci7Qr.js} +225 -110
  57. package/dist/Menu-DvVci7Qr.js.map +1 -0
  58. package/dist/Menu.css +35 -26
  59. package/dist/Menu.js +1 -1
  60. package/dist/{Overflow-DXWJ1gWT-6WRtRAc3.js → Overflow-D6S5X1N4-C7YfnaOv.js} +3 -3
  61. package/dist/{Overflow-DXWJ1gWT-6WRtRAc3.js.map → Overflow-D6S5X1N4-C7YfnaOv.js.map} +1 -1
  62. package/dist/{Overflow-STQ_RpAD.js → Overflow-DDsq_uUA.js} +2 -2
  63. package/dist/{Overflow-STQ_RpAD.js.map → Overflow-DDsq_uUA.js.map} +1 -1
  64. package/dist/Overflow.js +1 -1
  65. package/dist/{Page-DWih1Hby.js → Page-BFVfMExj.js} +6 -6
  66. package/dist/{Page-DWih1Hby.js.map → Page-BFVfMExj.js.map} +1 -1
  67. package/dist/Page.js +1 -1
  68. package/dist/{Popover-CV-xrb9G.js → Popover-BbcT-mFU.js} +2 -2
  69. package/dist/{Popover-CV-xrb9G.js.map → Popover-BbcT-mFU.js.map} +1 -1
  70. package/dist/{Popover-DX4P8WCW-BgQrtbWH.js → Popover-CbeghwZg--83MWVgP.js} +3 -3
  71. package/dist/{Popover-DX4P8WCW-BgQrtbWH.js.map → Popover-CbeghwZg--83MWVgP.js.map} +1 -1
  72. package/dist/Popover.js +1 -1
  73. package/dist/{ProgressBar-CgpalFK8-DxfzF8hg.js → ProgressBar-DojG9LHF-nlymvlXw.js} +311 -535
  74. package/dist/ProgressBar-DojG9LHF-nlymvlXw.js.map +1 -0
  75. package/dist/{ProgressBar-CgpalFK8.css → ProgressBar-DojG9LHF.css} +167 -276
  76. package/dist/{ProgressBar-BBEzuQ2S.js → ProgressBar-OtKoZ_jO.js} +2 -2
  77. package/dist/{ProgressBar-BBEzuQ2S.js.map → ProgressBar-OtKoZ_jO.js.map} +1 -1
  78. package/dist/ProgressBar.js +1 -1
  79. package/dist/{Radio-zEofJnTU.js → Radio-BWK27b7p.js} +2 -2
  80. package/dist/{Radio-zEofJnTU.js.map → Radio-BWK27b7p.js.map} +1 -1
  81. package/dist/{Radio-DE79qJFW-BRf9rOOV.js → Radio-BbohS64t-Ch6NvYfF.js} +54 -24
  82. package/dist/Radio-BbohS64t-Ch6NvYfF.js.map +1 -0
  83. package/dist/{Radio-DE79qJFW.css → Radio-BbohS64t.css} +50 -54
  84. package/dist/Radio.js +1 -1
  85. package/dist/SelectCard.js +1 -1
  86. package/dist/{SelectCardGroup-B_CVDaUI.js → SelectCardGroup-4MngIOom.js} +3 -3
  87. package/dist/{SelectCardGroup-B_CVDaUI.js.map → SelectCardGroup-4MngIOom.js.map} +1 -1
  88. package/dist/{Stepper-CeH1RiN9.js → Stepper-CuQn-jSf.js} +2 -2
  89. package/dist/{Stepper-CeH1RiN9.js.map → Stepper-CuQn-jSf.js.map} +1 -1
  90. package/dist/Stepper.js +1 -1
  91. package/dist/{TextField-CgkazfKE.js → TextField-Djr02a3D.js} +2 -2
  92. package/dist/{TextField-CgkazfKE.js.map → TextField-Djr02a3D.js.map} +1 -1
  93. package/dist/{TextField-69svqHPM-Box5JvkC.js → TextField-DtlCGV8B-BPoNBGYn.js} +2 -3
  94. package/dist/TextField-DtlCGV8B-BPoNBGYn.js.map +1 -0
  95. package/dist/TextField.js +1 -1
  96. package/dist/{Textarea-Dv67XBNL.js → Textarea-DjqGI_N0.js} +2 -3
  97. package/dist/Textarea-DjqGI_N0.js.map +1 -0
  98. package/dist/Textarea.js +1 -1
  99. package/dist/Toast.js +1 -1
  100. package/dist/{Toolbar-gsDzLpRl.js → Toolbar-DiUrfZ4O.js} +5 -5
  101. package/dist/{Toolbar-gsDzLpRl.js.map → Toolbar-DiUrfZ4O.js.map} +1 -1
  102. package/dist/Toolbar.js +1 -1
  103. package/dist/{Tooltip-B8v6z3nj.js → Tooltip-DE8tqyR3.js} +2 -2
  104. package/dist/{Tooltip-B8v6z3nj.js.map → Tooltip-DE8tqyR3.js.map} +1 -1
  105. package/dist/Tooltip.js +1 -1
  106. package/dist/{check_circle-BGfigqq-.js → check_circle-DJhuiYqa.js} +4 -2
  107. package/dist/check_circle-DJhuiYqa.js.map +1 -0
  108. package/dist/components/Checkbox/Checkbox.d.ts +2 -2
  109. package/dist/components/Flex/Flex.d.ts +12 -6
  110. package/dist/components/Radio/Radio.d.ts +2 -2
  111. package/dist/index.js +26 -26
  112. package/dist/internal/utils/generateChromaticStickersheetProps.d.ts +16 -0
  113. package/dist/{toast-C-F09cHz.js → toast-BRfZ2rPu.js} +2 -2
  114. package/dist/{toast-C-F09cHz.js.map → toast-BRfZ2rPu.js.map} +1 -1
  115. package/package.json +4 -4
  116. package/dist/Checkbox-B1OkhWY6-BXBzUXK4.js.map +0 -1
  117. package/dist/Checkbox.module-DMrZNVpb-DOdjd86H.js.map +0 -1
  118. package/dist/Combobox-DZp6NgeF.js.map +0 -1
  119. package/dist/DaysOfTheWeek-BL27GHpA.js.map +0 -1
  120. package/dist/Dialog-CWhCRYT8.js +0 -66
  121. package/dist/Dialog-CWhCRYT8.js.map +0 -1
  122. package/dist/Flex-DlNiHX1G-CBMDzqYU.js.map +0 -1
  123. package/dist/Helper-DBmwQvEP-BB75un4q.js +0 -55
  124. package/dist/Helper-DBmwQvEP-BB75un4q.js.map +0 -1
  125. package/dist/Helper-DBmwQvEP.css +0 -25
  126. package/dist/ListView-D3u27ODE.js.map +0 -1
  127. package/dist/Menu-DY1JLQrj.js.map +0 -1
  128. package/dist/ProgressBar-CgpalFK8-DxfzF8hg.js.map +0 -1
  129. package/dist/Radio-DE79qJFW-BRf9rOOV.js.map +0 -1
  130. package/dist/TextField-69svqHPM-Box5JvkC.js.map +0 -1
  131. package/dist/Textarea-Dv67XBNL.js.map +0 -1
  132. package/dist/check_circle-BGfigqq-.js.map +0 -1
  133. package/dist/getActiveElements-CqR6e_P--CqR6e_P-.js +0 -16
  134. package/dist/getActiveElements-CqR6e_P--CqR6e_P-.js.map +0 -1
  135. package/dist/warning-c4Wj1rI4.js +0 -6
  136. package/dist/warning-c4Wj1rI4.js.map +0 -1
  137. /package/dist/{Overflow-DXWJ1gWT.css → Overflow-D6S5X1N4.css} +0 -0
  138. /package/dist/{Popover-DX4P8WCW.css → Popover-CbeghwZg.css} +0 -0
@@ -1,26 +1,24 @@
1
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useState, useRef, useEffect, forwardRef, useId, createContext, useContext, useCallback, useMemo, cloneElement, isValidElement, Fragment as Fragment$1, useLayoutEffect } from 'react';
3
3
  import { c as cx } from './index-tZvMCc77.js';
4
4
  import { I as Icon } from './Icon-DuwR7O2z-C_rTZRSc.js';
5
- import { a as SvgCheckCircle, S as SvgError, b as SvgInfo } from './check_circle-BGfigqq-.js';
5
+ import { b as SvgCheckCircle, S as SvgError, a as SvgWarning, c as SvgInfo } from './check_circle-DJhuiYqa.js';
6
6
  import { t as tabbable, q as useDelayGroup, F as FloatingPortal, b as FloatingArrow, p as computePosition, n as autoUpdate, o as offset, f as flip, d as shift, e as arrow$1, l as limitShift, r as useDelayGroupContext, c as useFloating, h as useHover, i as safePolygon, v as useFocus, j as useDismiss, k as useRole, m as useInteractions } from './floating-ui.react-Domgunz0.js';
7
7
  import { a as PortalProviderContext } from './PortalProvider-9lXkQ0xY-BKoGegS1.js';
8
8
  import { S as SvgClose } from './close-DZj38AEh.js';
9
9
  import { T as Text } from './Text-BCRKWTMM-B3ftA79H.js';
10
10
  import { B as Button } from './Button-CEDmdZ-2-DJVJnigb.js';
11
- import { A as Alert } from './Alert-BcjnX40X-DdR5a1fS.js';
12
- import { F as Flex } from './Flex-DlNiHX1G-CBMDzqYU.js';
11
+ import { A as Alert } from './Alert-BcjnX40X-DK8meb2Z.js';
12
+ import { F as Flex } from './Flex-CLu2TnzF-aW2OhBYv.js';
13
13
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-3B2XYWSr-5ZanZ8Ew.js';
14
- import { H as Helper } from './Helper-DBmwQvEP-BB75un4q.js';
15
- import { u as useSwipe } from './useSwipe-DIUHs7T5-DIUHs7T5.js';
16
14
  import { S as SrOnly } from './SrOnly-BXm1DGl3-BJVodjQp.js';
17
- import { g as getActiveElement } from './getActiveElements-CqR6e_P--CqR6e_P-.js';
15
+ import { u as useSwipe } from './useSwipe-DIUHs7T5-DIUHs7T5.js';
18
16
  import { u as useMergeRefs } from './useMergeRefs-Bde85AWI-Bde85AWI.js';
19
17
  import { T as ThemeProvider, a as ThemeProviderContext } from './ThemeProvider-DrK12Ru--CcKMzgE3.js';
20
18
  import { g as getKeyboardFocusableElements } from './getKeyboardFocusableElements-QqcABz0D.js';
21
19
  import { u as useTooltipLegacyGroup } from './HammerProvider-C9QySDSZ-3uQ0NgD4.js';
22
20
 
23
- import './ProgressBar-CgpalFK8.css';/**
21
+ import './ProgressBar-DojG9LHF.css';/**
24
22
  * Convert array of 16 byte values to UUID string format of the form:
25
23
  * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
26
24
  */
@@ -129,114 +127,176 @@ const useKeyboardFocusables = (element, options = {
129
127
  return { focusables, updateFocusables };
130
128
  };
131
129
 
132
- const dialog = "_dialog_1uzo4_3";
133
- const container$1 = "_container_1uzo4_23";
134
- const content$2 = "_content_1uzo4_36";
135
- const header$1 = "_header_1uzo4_43";
136
- const footer$1 = "_footer_1uzo4_63";
137
- const large$1 = "_large_1uzo4_100";
138
- const fullscreen = "_fullscreen_1uzo4_100";
139
- const sticky$1 = "_sticky_1uzo4_119";
130
+ const getActiveElement = (activeDocument) => {
131
+ const activeElement = activeDocument.activeElement;
132
+ if (!activeElement) {
133
+ return activeElement;
134
+ }
135
+ if (!activeElement.shadowRoot) {
136
+ return activeElement;
137
+ }
138
+ if (activeElement.shadowRoot) {
139
+ return getActiveElement(activeElement.shadowRoot);
140
+ }
141
+ return activeElement;
142
+ };
143
+
144
+ const label = "_label_iolth_3";
145
+ const required = "_required_iolth_47";
140
146
  const styles$6 = {
141
- dialog: dialog,
142
- container: container$1,
143
- content: content$2,
144
- header: header$1,
145
- "close-container": "_close-container_1uzo4_56",
146
- footer: footer$1,
147
- large: large$1,
148
- fullscreen: fullscreen,
149
- sticky: sticky$1,
150
- "close-button": "_close-button_1uzo4_125"
147
+ label: label,
148
+ "top-container": "_top-container_iolth_38",
149
+ "label-text": "_label-text_iolth_43",
150
+ required: required,
151
+ "info-trigger": "_info-trigger_iolth_52",
152
+ "info-content": "_info-content_iolth_57"
151
153
  };
152
154
 
153
- const DialogCancelButton = forwardRef((props, ref) => {
154
- const { onClick, ...rest } = props;
155
- const { close } = useDialogContext();
156
- const onClickHandler = (e) => {
157
- onClick?.(e);
158
- close();
155
+ const content$1 = "_content_tjoaw_3";
156
+ const scroller = "_scroller_tjoaw_30";
157
+ const arrow = "_arrow_tjoaw_33";
158
+ const trigger = "_trigger_tjoaw_39";
159
+ const styles$5 = {
160
+ content: content$1,
161
+ scroller: scroller,
162
+ arrow: arrow,
163
+ trigger: trigger
164
+ };
165
+
166
+ function useTooltipContext() {
167
+ const context = useContext(TooltipContext);
168
+ const invokerRef = useRef(null);
169
+ const popoverRef = useRef(null);
170
+ const arrowRef = useRef(null);
171
+ useLayoutEffect(() => {
172
+ if (!invokerRef.current) return;
173
+ context?.setInvoker?.(invokerRef.current);
174
+ if (!context?.openState) return;
175
+ context.openTooltip();
176
+ }, [context, invokerRef]);
177
+ useLayoutEffect(() => {
178
+ if (!popoverRef.current) return;
179
+ context?.setTooltip?.(popoverRef.current);
180
+ context?.setRootNode?.(popoverRef.current.getRootNode());
181
+ if (!arrowRef.current) return;
182
+ context?.setArrowElement?.(arrowRef.current);
183
+ }, [context, popoverRef]);
184
+ const onMouseEnterHandler = () => {
185
+ context?.openTooltip();
159
186
  };
160
- return /* @__PURE__ */ jsx(
161
- Button,
162
- {
163
- "aria-label": "Close dialog",
164
- "data-anv": "dialog-cancel-button",
165
- onClick: onClickHandler,
166
- ref,
167
- ...rest
187
+ const onMouseLeaveHandler = () => {
188
+ context?.closeTooltip();
189
+ };
190
+ const onFocusHandler = () => {
191
+ if (context?.controlled) return;
192
+ context?.openTooltip();
193
+ };
194
+ const onBlurHandler = () => {
195
+ if (context?.controlled) return;
196
+ context?.closeTooltip();
197
+ };
198
+ const onKeyDownHandler = (e) => {
199
+ if (!context?.openState) return;
200
+ if (e.code === "Escape" && !context.controlled) {
201
+ context?.closeTooltip();
202
+ return;
168
203
  }
169
- );
170
- });
171
- DialogCancelButton.displayName = "DialogCancelButton";
204
+ };
205
+ if (!context || !invokerRef || !popoverRef) return;
206
+ return {
207
+ invoker: {
208
+ ref: invokerRef,
209
+ element: context.invoker,
210
+ onMouseEnter: onMouseEnterHandler,
211
+ onMouseLeave: onMouseLeaveHandler,
212
+ onKeyDown: onKeyDownHandler,
213
+ onFocus: onFocusHandler,
214
+ onBlur: onBlurHandler,
215
+ "aria-haspopup": true,
216
+ "aria-expanded": context.openState,
217
+ "aria-details": context.tooltipId,
218
+ "data-state": context.openState ? "open" : "closed",
219
+ "aria-describedby": context.tooltipId
220
+ },
221
+ tooltip: {
222
+ ref: popoverRef,
223
+ element: context.popover,
224
+ id: context.tooltipId,
225
+ show: context.openTooltip,
226
+ close: context.closeTooltip,
227
+ style: context.tooltipStyle,
228
+ arrowRef,
229
+ key: context.resetKey
230
+ },
231
+ setOpen: context.setOpenState,
232
+ open: context.openState,
233
+ controlled: context.controlled,
234
+ placement: context.placement,
235
+ disableFlipFallback: context.disableFlipFallback
236
+ };
237
+ }
172
238
 
173
- const DialogHeader = forwardRef(
174
- (props, ref) => {
175
- const { children, className, ...rest } = props;
176
- const headerClassNames = cx(className, styles$6["header"]);
177
- return /* @__PURE__ */ jsxs(
178
- "header",
179
- {
180
- className: headerClassNames,
181
- "data-anv": "dialog-header",
182
- ref,
183
- ...rest,
184
- children: [
185
- /* @__PURE__ */ jsx(Text, { variant: "headline", el: "h1", children }),
186
- /* @__PURE__ */ jsx("span", { className: styles$6["close-container"], children: /* @__PURE__ */ jsx(
187
- DialogCancelButton,
188
- {
189
- className: styles$6["close-button"],
190
- size: "small",
191
- appearance: "ghost",
192
- "aria-label": "Close dialog",
193
- icon: SvgClose
194
- }
195
- ) })
196
- ]
197
- }
198
- );
199
- }
200
- );
201
- DialogHeader.displayName = "DialogHeader";
239
+ function supportsPopover() {
240
+ return Object.prototype.hasOwnProperty.call(HTMLElement.prototype, "popover");
241
+ }
202
242
 
203
- const DialogFooter = forwardRef(
204
- (props, ref) => {
205
- const { children, className, sticky = false, ...rest } = props;
206
- const footerClassNames = cx(styles$6["footer"], className, {
207
- [styles$6["sticky"]]: sticky
208
- });
209
- return /* @__PURE__ */ jsx(
210
- "footer",
211
- {
212
- className: footerClassNames,
213
- "data-anv": "dialog-footer",
214
- ref,
215
- ...rest,
216
- children
217
- }
243
+ const TooltipLegacyContext = createContext(null);
244
+ const useTooltipLegacyContext = () => {
245
+ const context = useContext(TooltipLegacyContext);
246
+ if (context == null) {
247
+ throw new Error(
248
+ "TooltipLegacy components must be wrapped in <TooltipLegacy />"
218
249
  );
219
250
  }
220
- );
221
- DialogFooter.displayName = "DialogFooter";
251
+ return context;
252
+ };
222
253
 
223
- const DialogContent = forwardRef(
224
- (props, ref) => {
225
- const { children, className, ...rest } = props;
226
- const contentClassNames = cx(styles$6["content"], className);
227
- return /* @__PURE__ */ jsx(
228
- "div",
229
- {
230
- className: contentClassNames,
231
- "data-anv": "dialog-content",
232
- ref,
233
- ...rest,
234
- children
254
+ const styles$4 = {
255
+ "content-legacy": "_content-legacy_19gkz_4",
256
+ "arrow-legacy": "_arrow-legacy_19gkz_30",
257
+ "trigger-legacy": "_trigger-legacy_19gkz_33"
258
+ };
259
+
260
+ const ATTRIBUTE_NAME_LIST = "data-anv-dialogs";
261
+ const ATTRIBUTE_NAME_BOOL = "data-anv-dialogs-open";
262
+ const useDialogScrollLock = ({
263
+ open,
264
+ id,
265
+ enableScrollChaining,
266
+ elementRef
267
+ }) => {
268
+ useEffect(() => {
269
+ if (enableScrollChaining) return () => {
270
+ };
271
+ const root = elementRef.current?.getRootNode();
272
+ if (!(root instanceof ShadowRoot)) return () => {
273
+ };
274
+ const updateDialogAttributes = (shouldAdd) => {
275
+ const currentDialogs = root.host.getAttribute(ATTRIBUTE_NAME_LIST)?.split(" ").filter(Boolean) ?? [];
276
+ const newDialogs = new Set(currentDialogs);
277
+ if (shouldAdd) {
278
+ newDialogs.add(id);
279
+ } else {
280
+ newDialogs.delete(id);
235
281
  }
236
- );
237
- }
238
- );
239
- DialogContent.displayName = "DialogContent";
282
+ const dialogList = Array.from(newDialogs);
283
+ root.host.setAttribute(ATTRIBUTE_NAME_LIST, dialogList.join(" "));
284
+ if (dialogList.length > 0) {
285
+ root.host.setAttribute(ATTRIBUTE_NAME_BOOL, "true");
286
+ } else {
287
+ root.host.removeAttribute(ATTRIBUTE_NAME_BOOL);
288
+ }
289
+ };
290
+ updateDialogAttributes(open);
291
+ return () => {
292
+ if (elementRef.current?.getRootNode() === root) {
293
+ updateDialogAttributes(false);
294
+ }
295
+ };
296
+ }, [open, id, enableScrollChaining, elementRef]);
297
+ };
298
+
299
+ const DialogContext = createContext(null);
240
300
 
241
301
  const ToastProviderContext = createContext({
242
302
  toasts: [],
@@ -340,7 +400,7 @@ const hidden = "_hidden_lombm_25";
340
400
  const stacked = "_stacked_lombm_89";
341
401
  const open = "_open_lombm_184";
342
402
  const close = "_close_lombm_185";
343
- const styles$5 = {
403
+ const styles$3 = {
344
404
  popover: popover,
345
405
  toaster: toaster,
346
406
  hidden: hidden,
@@ -607,7 +667,7 @@ const Toast = forwardRef(
607
667
  ...alertProps
608
668
  }, ref) => {
609
669
  const { setToastHeights, extraToastsVisible, isDialogToaster } = useToasts();
610
- const closeToast = useCloseToast(styles$5.close);
670
+ const closeToast = useCloseToast(styles$3.close);
611
671
  const toastPositionStyles = useToastPositionStyles(index);
612
672
  const toastWrapperRef = useRef(null);
613
673
  const timerRef = useRef();
@@ -615,18 +675,18 @@ const Toast = forwardRef(
615
675
  const createdAtRef = useRef(createdAt ?? 0);
616
676
  const hasBeenStackedRef = useRef(false);
617
677
  const [transitionClass, setTransitionClass] = useState(
618
- styles$5.hidden
678
+ styles$3.hidden
619
679
  );
620
680
  const [toastOpened, setToastOpened] = useState(false);
621
681
  const duration = actions ? false : durationProp;
622
682
  const alertClasses = cx(
623
- styles$5["toast-alert"],
683
+ styles$3["toast-alert"],
624
684
  toastClassName,
625
685
  transitionClass
626
686
  );
627
687
  useEffect(() => {
628
688
  if (!toastOpened) {
629
- setTransitionClass(styles$5.open);
689
+ setTransitionClass(styles$3.open);
630
690
  setTimeout(() => {
631
691
  setTransitionClass(void 0);
632
692
  }, ANIMATION_DURATION);
@@ -735,7 +795,7 @@ const Toast = forwardRef(
735
795
  hasMessage ? /* @__PURE__ */ jsx(
736
796
  "div",
737
797
  {
738
- className: styles$5["message-container"],
798
+ className: styles$3["message-container"],
739
799
  id: `toast-message-${alertProps.id}`,
740
800
  children: message
741
801
  }
@@ -753,7 +813,7 @@ const Toast = forwardRef(
753
813
  value: progress
754
814
  }
755
815
  ) }) : null,
756
- actions ? /* @__PURE__ */ jsxs("div", { className: styles$5["alert-action"], children: [
816
+ actions ? /* @__PURE__ */ jsxs("div", { className: styles$3["alert-action"], children: [
757
817
  /* @__PURE__ */ jsx(
758
818
  Button,
759
819
  {
@@ -782,6 +842,53 @@ const Toast = forwardRef(
782
842
  );
783
843
  Toast.displayName = "Toast";
784
844
 
845
+ const helper = "_helper_1mtj6_2";
846
+ const messages = "_messages_1mtj6_9";
847
+ const styles$2 = {
848
+ helper: helper,
849
+ messages: messages,
850
+ "error-container": "_error-container_1mtj6_15",
851
+ "error-icon": "_error-icon_1mtj6_21"
852
+ };
853
+
854
+ const Helper = forwardRef((props, ref) => {
855
+ const {
856
+ id,
857
+ hint,
858
+ description,
859
+ errorAriaLive = "assertive",
860
+ errorMessage,
861
+ maxLength,
862
+ isTyping,
863
+ inputLength = 0,
864
+ showCounter
865
+ } = props;
866
+ return /* @__PURE__ */ jsxs("div", { className: styles$2["helper"], ref, id, children: [
867
+ /* @__PURE__ */ jsxs("div", { className: styles$2["messages"], children: [
868
+ errorMessage ? /* @__PURE__ */ jsxs("div", { className: styles$2["error-container"], children: [
869
+ /* @__PURE__ */ jsx(
870
+ Icon,
871
+ {
872
+ inherit: true,
873
+ className: styles$2["error-icon"],
874
+ "aria-hidden": true,
875
+ svg: SvgWarning
876
+ }
877
+ ),
878
+ /* @__PURE__ */ jsx("span", { className: styles$2["error-message"], "aria-live": errorAriaLive, children: errorMessage })
879
+ ] }) : hint ?? null,
880
+ description ? /* @__PURE__ */ jsx("div", { className: styles$2["description-container"], children: description ? /* @__PURE__ */ jsx("span", { children: description }) : null }) : null
881
+ ] }),
882
+ showCounter ? /* @__PURE__ */ jsx("div", { className: styles$2["counter"], children: /* @__PURE__ */ jsxs("span", { "aria-hidden": "true", children: [
883
+ inputLength,
884
+ "/",
885
+ maxLength
886
+ ] }) }) : null,
887
+ isTyping && !!maxLength ? maxLength - inputLength >= 1 ? /* @__PURE__ */ jsx(SrOnly, { children: /* @__PURE__ */ jsx("span", { "aria-live": "polite", "aria-atomic": "true", children: `${maxLength - inputLength} character${maxLength - inputLength !== 1 ? "s" : ""} left` }) }) : /* @__PURE__ */ jsx(SrOnly, { children: /* @__PURE__ */ jsx("span", { role: "alert", children: "Maximum characters count reached" }) }) : null
888
+ ] });
889
+ });
890
+ Helper.displayName = "Helper";
891
+
785
892
  function useHotkeyFocus({
786
893
  disabled,
787
894
  hotkey,
@@ -940,10 +1047,10 @@ const ToastStack = forwardRef(
940
1047
  const showMoreButton = !extraToastsVisible && toastCount > toastsBeforeStack;
941
1048
  const extraToastsLength = toastCount - toastsBeforeStack;
942
1049
  const showMoreButtonText = `${extraToastsLength} more message${extraToastsLength > 1 ? "s" : ""}`;
943
- const toastStackClasses = cx(styles$5["toast-stack"], className, {
944
- [styles$5["show-more-button"]]: showMoreButton,
945
- [styles$5["show-extra-toast"]]: extraToastsVisible,
946
- [styles$5["disable-animations"]]: disableAnimations
1050
+ const toastStackClasses = cx(styles$3["toast-stack"], className, {
1051
+ [styles$3["show-more-button"]]: showMoreButton,
1052
+ [styles$3["show-extra-toast"]]: extraToastsVisible,
1053
+ [styles$3["disable-animations"]]: disableAnimations
947
1054
  });
948
1055
  const handleToastStackFocusHover = () => {
949
1056
  if (toastPausedStatus === "resumed" || toastPausedStatus === void 0) {
@@ -979,13 +1086,13 @@ const ToastStack = forwardRef(
979
1086
  const isStacked = !extraToastsVisible && index < toastCount - toastsBeforeStack;
980
1087
  const isLastToastDisplayed = index === toastCount - toastsBeforeStack;
981
1088
  const isHidden = index < toastCount - toastsBeforeStack - 2;
982
- const toastClasses = cx(styles$5.toast, toastClassName);
983
- const toastContainerClasses = cx(styles$5["toast-wrapper"], {
984
- [styles$5.stacked]: isStacked || isLastToastDisplayed,
985
- [styles$5["stack-one"]]: isStacked && index === toastCount - toastsBeforeStack - 1,
986
- [styles$5["stack-two"]]: isStacked && index === toastCount - toastsBeforeStack - 2,
987
- [styles$5["stacked-extra"]]: isHidden,
988
- [styles$5["stacked-show-extra"]]: extraToastsVisible
1089
+ const toastClasses = cx(styles$3.toast, toastClassName);
1090
+ const toastContainerClasses = cx(styles$3["toast-wrapper"], {
1091
+ [styles$3.stacked]: isStacked || isLastToastDisplayed,
1092
+ [styles$3["stack-one"]]: isStacked && index === toastCount - toastsBeforeStack - 1,
1093
+ [styles$3["stack-two"]]: isStacked && index === toastCount - toastsBeforeStack - 2,
1094
+ [styles$3["stacked-extra"]]: isHidden,
1095
+ [styles$3["stacked-show-extra"]]: extraToastsVisible
989
1096
  });
990
1097
  const handleOnClose = (e) => {
991
1098
  onClose?.(e);
@@ -1012,12 +1119,12 @@ const ToastStack = forwardRef(
1012
1119
  showMoreButton && /* @__PURE__ */ jsx(
1013
1120
  "div",
1014
1121
  {
1015
- className: styles$5["show-more-button-container"],
1122
+ className: styles$3["show-more-button-container"],
1016
1123
  style: showMoreButtonPositionStyles,
1017
1124
  children: /* @__PURE__ */ jsx(
1018
1125
  Button,
1019
1126
  {
1020
- className: styles$5["show-collapse-button"],
1127
+ className: styles$3["show-collapse-button"],
1021
1128
  onClick: handleShowMoreButtonClick,
1022
1129
  appearance: "secondary",
1023
1130
  tabIndex: 0,
@@ -1034,10 +1141,10 @@ const ToastStack = forwardRef(
1034
1141
  ]
1035
1142
  }
1036
1143
  ),
1037
- extraToastsVisible && /* @__PURE__ */ jsx("div", { className: styles$5["show-collapse-button-container"], children: /* @__PURE__ */ jsx(
1144
+ extraToastsVisible && /* @__PURE__ */ jsx("div", { className: styles$3["show-collapse-button-container"], children: /* @__PURE__ */ jsx(
1038
1145
  Button,
1039
1146
  {
1040
- className: styles$5["show-collapse-button"],
1147
+ className: styles$3["show-collapse-button"],
1041
1148
  onClick: handleToastStackBlur,
1042
1149
  appearance: "secondary",
1043
1150
  children: "Collapse Messages"
@@ -1078,7 +1185,7 @@ const ToasterPopover = forwardRef(
1078
1185
  }
1079
1186
  };
1080
1187
  }, [toastCount, isDialogToaster]);
1081
- return /* @__PURE__ */ jsx("div", { ref: combinedRef, className: styles$5.popover, popover: "manual", children: props.children });
1188
+ return /* @__PURE__ */ jsx("div", { ref: combinedRef, className: styles$3.popover, popover: "manual", children: props.children });
1082
1189
  }
1083
1190
  );
1084
1191
  ToasterPopover.displayName = "ToasterPopover";
@@ -1146,7 +1253,7 @@ const ToasterContent = forwardRef(
1146
1253
  });
1147
1254
  dispatchEvent(DialogToasterEvent);
1148
1255
  }, [isDialogToaster]);
1149
- const closeToast = useCloseToast(styles$5.close);
1256
+ const closeToast = useCloseToast(styles$3.close);
1150
1257
  useEffect(() => {
1151
1258
  let timeout;
1152
1259
  updateDialogToasterStorage(isDialogToaster);
@@ -1245,8 +1352,8 @@ const ToasterContent = forwardRef(
1245
1352
  updateDialogToasterStorage(false);
1246
1353
  };
1247
1354
  }, []);
1248
- const toasterClasses = cx(styles$5.toaster, {
1249
- [styles$5["hidden"]]: shouldHideToaster,
1355
+ const toasterClasses = cx(styles$3.toaster, {
1356
+ [styles$3["hidden"]]: shouldHideToaster,
1250
1357
  [`${className}`]: className != null
1251
1358
  });
1252
1359
  return /* @__PURE__ */ jsx(
@@ -1279,219 +1386,25 @@ const Toaster = forwardRef(
1279
1386
  Toaster.displayName = "Toaster";
1280
1387
  ToasterContent.displayName = "ToasterContent";
1281
1388
 
1282
- const DialogContext = createContext(null);
1283
- const DialogElement = forwardRef(
1284
- (props, ref) => {
1285
- const {
1286
- className,
1287
- open = false,
1288
- children,
1289
- onOpen,
1290
- onOpenChange,
1291
- onClose,
1292
- onCancel,
1293
- onKeyDown,
1294
- fullScreen = false,
1295
- disableCloseOnEscape = false,
1296
- disableCloseOnClickOutside = false,
1297
- size,
1298
- enableScrollChaining,
1299
- ...rest
1300
- } = props;
1301
- const elRef = useRef(null);
1302
- const contentRef = useRef(null);
1303
- const [hasOpenPopover, setHasOpenPopover] = useState(false);
1304
- const id = useId();
1305
- const DialogClassNames = cx([styles$6["dialog"]], className, {
1306
- [styles$6["fullscreen"]]: fullScreen,
1307
- [styles$6["large"]]: size === "large"
1308
- });
1309
- const { focusables } = useKeyboardFocusables(contentRef, {
1310
- observeChange: true
1311
- });
1312
- useEffect(() => {
1313
- if (!open || enableScrollChaining) return;
1314
- let blockDocumentScroll = false;
1315
- const content = contentRef.current;
1316
- const scrollHandler = (e) => {
1317
- const target = e.target;
1318
- const isShadow2 = contentRef.current?.getRootNode() instanceof ShadowRoot;
1319
- const isOverflowing = elRef.current && elRef.current.scrollHeight > elRef.current.clientHeight;
1320
- if (isShadow2) {
1321
- if (blockDocumentScroll) {
1322
- e.preventDefault();
1323
- return;
1324
- }
1325
- return;
1326
- }
1327
- if (!isOverflowing || !content?.contains(target)) {
1328
- e.preventDefault();
1329
- return;
1330
- }
1331
- return;
1332
- };
1333
- const shadowScrollHandler = (e) => {
1334
- const target = e.target;
1335
- const isTargetInsideContent = content?.contains(target);
1336
- const isOverflowing = elRef.current && elRef.current.scrollHeight > elRef.current.clientHeight;
1337
- blockDocumentScroll = !isTargetInsideContent;
1338
- if (!isOverflowing || !content?.contains(target)) {
1339
- e.preventDefault();
1340
- }
1341
- return;
1342
- };
1343
- const isShadow = content?.getRootNode() instanceof ShadowRoot;
1344
- document.addEventListener("wheel", scrollHandler, {
1345
- passive: false
1346
- });
1347
- if (isShadow) {
1348
- content?.getRootNode().addEventListener("wheel", shadowScrollHandler, {
1349
- passive: false
1350
- });
1351
- }
1352
- return () => {
1353
- document.getRootNode().removeEventListener("wheel", scrollHandler);
1354
- if (isShadow) {
1355
- content?.getRootNode().removeEventListener("wheel", shadowScrollHandler);
1356
- }
1357
- };
1358
- }, [enableScrollChaining, open]);
1359
- useEffect(() => {
1360
- if (typeof document === "undefined" || disableCloseOnClickOutside) return;
1361
- const onClickOutsideHandler = (e) => {
1362
- if (hasOpenPopover) return;
1363
- if (e.composedPath()[0] === elRef.current) {
1364
- onClose?.();
1365
- }
1366
- };
1367
- document.addEventListener("mousedown", onClickOutsideHandler);
1368
- return () => document.removeEventListener("mousedown", onClickOutsideHandler);
1369
- }, [disableCloseOnClickOutside, onClose, onOpenChange, hasOpenPopover]);
1370
- const initial = useRef(true);
1371
- useEffect(() => {
1372
- if (initial.current) {
1373
- initial.current = false;
1374
- } else {
1375
- onOpenChange?.(open);
1376
- }
1377
- if (open) {
1378
- onOpen?.();
1379
- elRef.current?.showModal();
1380
- return;
1381
- }
1382
- setTimeout(() => {
1383
- elRef.current?.close();
1384
- }, 1);
1385
- }, [id, onOpen, onOpenChange, open]);
1386
- useEffect(() => {
1387
- if (!open) return;
1388
- if (!focusables) return;
1389
- const activeElement = getActiveElement(document);
1390
- if (!activeElement) return;
1391
- if (activeElement.dataset.anv !== "dialog-header-close-button" && focusables.includes(activeElement)) {
1392
- return;
1393
- }
1394
- if (focusables[0]?.dataset.anv === "dialog-header-close-button" && focusables[1]) {
1395
- focusables[1].focus();
1396
- } else {
1397
- focusables[0]?.focus();
1398
- }
1399
- }, [open, focusables]);
1400
- const onKeyDownHandler = (e) => {
1401
- onKeyDown?.(e);
1402
- if (e.code === "Escape") {
1403
- e.preventDefault();
1404
- if (disableCloseOnEscape) return;
1405
- if (hasOpenPopover) return;
1406
- onClose?.();
1407
- return;
1408
- }
1409
- if (e.code === "Tab") {
1410
- if (e.shiftKey && e.target === focusables?.[0]) {
1411
- e.preventDefault();
1412
- focusables[focusables.length - 1]?.focus();
1413
- return;
1414
- }
1415
- if (e.target === focusables?.[focusables.length - 1] && !e.shiftKey) {
1416
- e.preventDefault();
1417
- focusables[0].focus();
1418
- return;
1419
- }
1420
- }
1421
- };
1422
- const close = useCallback(() => {
1423
- onClose?.();
1424
- }, [onClose]);
1425
- return (
1426
- // dialog element does seem to be interactive on MDN guideline
1427
- // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
1428
- /* @__PURE__ */ jsxs(
1429
- "dialog",
1430
- {
1431
- className: DialogClassNames,
1432
- "data-anv": "dialog",
1433
- ref: useMergeRefs([ref, elRef]),
1434
- onKeyDown: onKeyDownHandler,
1435
- ...rest,
1436
- children: [
1437
- /* @__PURE__ */ jsx(ToastProvider, { isDialogToaster: open, children: /* @__PURE__ */ jsx(ToasterPopover, { children: /* @__PURE__ */ jsx(ToasterContent, { id: "dialog-toaster" }) }) }),
1438
- /* @__PURE__ */ jsx(
1439
- DialogContext.Provider,
1440
- {
1441
- value: { close, ref: elRef, hasOpenPopover, setHasOpenPopover },
1442
- children: /* @__PURE__ */ jsx(
1443
- "section",
1444
- {
1445
- ref: contentRef,
1446
- className: styles$6["container"],
1447
- "data-open": open,
1448
- children
1449
- }
1450
- )
1451
- }
1452
- )
1453
- ]
1454
- }
1455
- )
1456
- );
1457
- }
1458
- );
1459
- function useDialogContext() {
1460
- const context = useContext(DialogContext);
1461
- if (!context) {
1462
- throw new Error(
1463
- "useDialogContext must be used within a DialogContextProvider"
1464
- );
1465
- }
1466
- return context;
1467
- }
1468
- DialogElement.displayName = "Dialog";
1469
- const Dialog = Object.assign(DialogElement, {
1470
- Header: DialogHeader,
1471
- Footer: DialogFooter,
1472
- Content: DialogContent,
1473
- CancelButton: DialogCancelButton
1474
- });
1475
-
1476
- const drawer = "_drawer_pysn1_3";
1477
- const container = "_container_pysn1_29";
1478
- const content$1 = "_content_pysn1_42";
1479
- const header = "_header_pysn1_49";
1480
- const footer = "_footer_pysn1_73";
1481
- const remove = "_remove_pysn1_91";
1482
- const large = "_large_pysn1_100";
1483
- const sticky = "_sticky_pysn1_103";
1484
- const styles$4 = {
1389
+ const drawer = "_drawer_vyd6b_3";
1390
+ const container = "_container_vyd6b_29";
1391
+ const content = "_content_vyd6b_42";
1392
+ const header = "_header_vyd6b_49";
1393
+ const footer = "_footer_vyd6b_73";
1394
+ const remove = "_remove_vyd6b_91";
1395
+ const large = "_large_vyd6b_100";
1396
+ const sticky = "_sticky_vyd6b_103";
1397
+ const styles$1 = {
1485
1398
  drawer: drawer,
1486
1399
  container: container,
1487
- content: content$1,
1400
+ content: content,
1488
1401
  header: header,
1489
- "close-container": "_close-container_pysn1_66",
1402
+ "close-container": "_close-container_vyd6b_66",
1490
1403
  footer: footer,
1491
1404
  remove: remove,
1492
1405
  large: large,
1493
1406
  sticky: sticky,
1494
- "close-button": "_close-button_pysn1_109"
1407
+ "close-button": "_close-button_vyd6b_109"
1495
1408
  };
1496
1409
 
1497
1410
  const DrawerCancelButton = forwardRef((props, ref) => {
@@ -1517,12 +1430,12 @@ DrawerCancelButton.displayName = "DrawerCancelButton";
1517
1430
  const DrawerHeader = forwardRef(
1518
1431
  (props, ref) => {
1519
1432
  const { children } = props;
1520
- return /* @__PURE__ */ jsxs("header", { className: styles$4.header, "data-anv": "drawer-header", ref, children: [
1433
+ return /* @__PURE__ */ jsxs("header", { className: styles$1.header, "data-anv": "drawer-header", ref, children: [
1521
1434
  /* @__PURE__ */ jsx(Text, { variant: "headline", el: "h1", children }),
1522
- /* @__PURE__ */ jsx("span", { className: styles$4["close-container"], children: /* @__PURE__ */ jsx(
1435
+ /* @__PURE__ */ jsx("span", { className: styles$1["close-container"], children: /* @__PURE__ */ jsx(
1523
1436
  DrawerCancelButton,
1524
1437
  {
1525
- className: styles$4["close-button"],
1438
+ className: styles$1["close-button"],
1526
1439
  size: "small",
1527
1440
  appearance: "ghost",
1528
1441
  "aria-label": "Close drawer",
@@ -1538,8 +1451,8 @@ DrawerHeader.displayName = "DrawerHeader";
1538
1451
  const DrawerFooter = forwardRef(
1539
1452
  (props, ref) => {
1540
1453
  const { children, sticky = false, ...rest } = props;
1541
- const DrawerFooterCX = cx(styles$4.footer, {
1542
- [styles$4["sticky"]]: sticky
1454
+ const DrawerFooterCX = cx(styles$1.footer, {
1455
+ [styles$1["sticky"]]: sticky
1543
1456
  });
1544
1457
  return /* @__PURE__ */ jsx(
1545
1458
  "footer",
@@ -1558,7 +1471,7 @@ DrawerFooter.displayName = "DrawerFooter";
1558
1471
  const DrawerContent = forwardRef(
1559
1472
  (props, ref) => {
1560
1473
  const { children, ...rest } = props;
1561
- const DrawerContentCX = cx(styles$4.content, {});
1474
+ const DrawerContentCX = cx(styles$1.content, {});
1562
1475
  return /* @__PURE__ */ jsx(
1563
1476
  "div",
1564
1477
  {
@@ -1596,15 +1509,22 @@ const DrawerElement = forwardRef(
1596
1509
  const toasterRef = useRef(null);
1597
1510
  const combinedRef = useMergeRefs([elRef, ref]);
1598
1511
  const [remove, setRemove] = useState(false);
1599
- const DrawerClassNames = cx([styles$4.drawer], className, {
1600
- [styles$4.remove]: remove,
1601
- [styles$4.large]: size === "large"
1512
+ const id = useId();
1513
+ const DrawerClassNames = cx([styles$1.drawer], className, {
1514
+ [styles$1.remove]: remove,
1515
+ [styles$1.large]: size === "large"
1602
1516
  });
1603
1517
  const { focusables } = useKeyboardFocusables(contentRef, {
1604
1518
  observeChange: false
1605
1519
  });
1606
1520
  const firstFocusable = focusables?.[0];
1607
1521
  const lastFocusable = focusables?.[focusables.length - 1];
1522
+ useDialogScrollLock({
1523
+ open,
1524
+ id,
1525
+ enableScrollChaining,
1526
+ elementRef: elRef
1527
+ });
1608
1528
  useEffect(() => {
1609
1529
  if (open) {
1610
1530
  onOpen?.();
@@ -1631,53 +1551,6 @@ const DrawerElement = forwardRef(
1631
1551
  focusables[0]?.focus();
1632
1552
  }
1633
1553
  }, [open, focusables]);
1634
- useEffect(() => {
1635
- if (!open || enableScrollChaining) return;
1636
- let blockDocumentScroll = false;
1637
- const content = contentRef.current;
1638
- const scrollHandler = (e) => {
1639
- const target = e.target;
1640
- const isShadow2 = contentRef.current?.getRootNode() instanceof ShadowRoot;
1641
- const isOverflowing = elRef.current && elRef.current.scrollHeight > elRef.current.clientHeight;
1642
- if (isShadow2) {
1643
- if (blockDocumentScroll) {
1644
- e.preventDefault();
1645
- return;
1646
- }
1647
- return;
1648
- }
1649
- if (!isOverflowing || !content?.contains(target)) {
1650
- e.preventDefault();
1651
- return;
1652
- }
1653
- return;
1654
- };
1655
- const shadowScrollHandler = (e) => {
1656
- const target = e.target;
1657
- const isTargetInsideContent = content?.contains(target);
1658
- const isOverflowing = elRef.current && elRef.current.scrollHeight > elRef.current.clientHeight;
1659
- blockDocumentScroll = !isTargetInsideContent;
1660
- if (!isOverflowing || !content?.contains(target)) {
1661
- e.preventDefault();
1662
- }
1663
- return;
1664
- };
1665
- const isShadow = content?.getRootNode() instanceof ShadowRoot;
1666
- document.addEventListener("wheel", scrollHandler, {
1667
- passive: false
1668
- });
1669
- if (isShadow) {
1670
- content?.getRootNode().addEventListener("wheel", shadowScrollHandler, {
1671
- passive: false
1672
- });
1673
- }
1674
- return () => {
1675
- document.getRootNode().removeEventListener("wheel", scrollHandler);
1676
- if (isShadow) {
1677
- content?.getRootNode().removeEventListener("wheel", shadowScrollHandler);
1678
- }
1679
- };
1680
- }, [enableScrollChaining, open]);
1681
1554
  const onCancelHandler = (e) => {
1682
1555
  e.preventDefault();
1683
1556
  if (disableCloseOnEscape) return;
@@ -1725,6 +1598,7 @@ const DrawerElement = forwardRef(
1725
1598
  {
1726
1599
  className: DrawerClassNames,
1727
1600
  "data-anv": "drawer",
1601
+ "data-anv-scroll-chaining": enableScrollChaining,
1728
1602
  ref: combinedRef,
1729
1603
  onCancel: onCancelHandler,
1730
1604
  onClick: onClickHandler,
@@ -1736,7 +1610,7 @@ const DrawerElement = forwardRef(
1736
1610
  "section",
1737
1611
  {
1738
1612
  ref: contentRef,
1739
- className: styles$4.container,
1613
+ className: styles$1.container,
1740
1614
  "data-open": open,
1741
1615
  children
1742
1616
  }
@@ -1764,122 +1638,6 @@ const Drawer = Object.assign(DrawerElement, {
1764
1638
  CancelButton: DrawerCancelButton
1765
1639
  });
1766
1640
 
1767
- function supportsPopover() {
1768
- return Object.prototype.hasOwnProperty.call(HTMLElement.prototype, "popover");
1769
- }
1770
-
1771
- const label = "_label_iolth_3";
1772
- const required = "_required_iolth_47";
1773
- const styles$3 = {
1774
- label: label,
1775
- "top-container": "_top-container_iolth_38",
1776
- "label-text": "_label-text_iolth_43",
1777
- required: required,
1778
- "info-trigger": "_info-trigger_iolth_52",
1779
- "info-content": "_info-content_iolth_57"
1780
- };
1781
-
1782
- const content = "_content_tjoaw_3";
1783
- const scroller = "_scroller_tjoaw_30";
1784
- const arrow = "_arrow_tjoaw_33";
1785
- const trigger = "_trigger_tjoaw_39";
1786
- const styles$2 = {
1787
- content: content,
1788
- scroller: scroller,
1789
- arrow: arrow,
1790
- trigger: trigger
1791
- };
1792
-
1793
- function useTooltipContext() {
1794
- const context = useContext(TooltipContext);
1795
- const invokerRef = useRef(null);
1796
- const popoverRef = useRef(null);
1797
- const arrowRef = useRef(null);
1798
- useLayoutEffect(() => {
1799
- if (!invokerRef.current) return;
1800
- context?.setInvoker?.(invokerRef.current);
1801
- if (!context?.openState) return;
1802
- context.openTooltip();
1803
- }, [context, invokerRef]);
1804
- useLayoutEffect(() => {
1805
- if (!popoverRef.current) return;
1806
- context?.setTooltip?.(popoverRef.current);
1807
- context?.setRootNode?.(popoverRef.current.getRootNode());
1808
- if (!arrowRef.current) return;
1809
- context?.setArrowElement?.(arrowRef.current);
1810
- }, [context, popoverRef]);
1811
- const onMouseEnterHandler = () => {
1812
- context?.openTooltip();
1813
- };
1814
- const onMouseLeaveHandler = () => {
1815
- context?.closeTooltip();
1816
- };
1817
- const onFocusHandler = () => {
1818
- if (context?.controlled) return;
1819
- context?.openTooltip();
1820
- };
1821
- const onBlurHandler = () => {
1822
- if (context?.controlled) return;
1823
- context?.closeTooltip();
1824
- };
1825
- const onKeyDownHandler = (e) => {
1826
- if (!context?.openState) return;
1827
- if (e.code === "Escape" && !context.controlled) {
1828
- context?.closeTooltip();
1829
- return;
1830
- }
1831
- };
1832
- if (!context || !invokerRef || !popoverRef) return;
1833
- return {
1834
- invoker: {
1835
- ref: invokerRef,
1836
- element: context.invoker,
1837
- onMouseEnter: onMouseEnterHandler,
1838
- onMouseLeave: onMouseLeaveHandler,
1839
- onKeyDown: onKeyDownHandler,
1840
- onFocus: onFocusHandler,
1841
- onBlur: onBlurHandler,
1842
- "aria-haspopup": true,
1843
- "aria-expanded": context.openState,
1844
- "aria-details": context.tooltipId,
1845
- "data-state": context.openState ? "open" : "closed",
1846
- "aria-describedby": context.tooltipId
1847
- },
1848
- tooltip: {
1849
- ref: popoverRef,
1850
- element: context.popover,
1851
- id: context.tooltipId,
1852
- show: context.openTooltip,
1853
- close: context.closeTooltip,
1854
- style: context.tooltipStyle,
1855
- arrowRef,
1856
- key: context.resetKey
1857
- },
1858
- setOpen: context.setOpenState,
1859
- open: context.openState,
1860
- controlled: context.controlled,
1861
- placement: context.placement,
1862
- disableFlipFallback: context.disableFlipFallback
1863
- };
1864
- }
1865
-
1866
- const TooltipLegacyContext = createContext(null);
1867
- const useTooltipLegacyContext = () => {
1868
- const context = useContext(TooltipLegacyContext);
1869
- if (context == null) {
1870
- throw new Error(
1871
- "TooltipLegacy components must be wrapped in <TooltipLegacy />"
1872
- );
1873
- }
1874
- return context;
1875
- };
1876
-
1877
- const styles$1 = {
1878
- "content-legacy": "_content-legacy_19gkz_4",
1879
- "arrow-legacy": "_arrow-legacy_19gkz_30",
1880
- "trigger-legacy": "_trigger-legacy_19gkz_33"
1881
- };
1882
-
1883
1641
  const TooltipLegacyContent = forwardRef(function TooltipLegacyContent2({ style, className, ...props }, propRef) {
1884
1642
  const {
1885
1643
  context: floatingContext,
@@ -1895,7 +1653,7 @@ const TooltipLegacyContent = forwardRef(function TooltipLegacyContent2({ style,
1895
1653
  useDelayGroup(floatingContext, { id });
1896
1654
  const ref = useMergeRefs([context.refs.setFloating, propRef]);
1897
1655
  if (!floatingContext.open) return null;
1898
- const contentCx = cx(styles$1["content-legacy"], className);
1656
+ const contentCx = cx(styles$4["content-legacy"], className);
1899
1657
  return /* @__PURE__ */ jsx(
1900
1658
  FloatingPortal,
1901
1659
  {
@@ -1918,7 +1676,7 @@ const TooltipLegacyContent = forwardRef(function TooltipLegacyContent2({ style,
1918
1676
  {
1919
1677
  ref: context.arrowRef,
1920
1678
  context: floatingContext,
1921
- className: styles$1["arrow-legacy"]
1679
+ className: styles$4["arrow-legacy"]
1922
1680
  }
1923
1681
  ),
1924
1682
  props.children
@@ -1943,7 +1701,7 @@ const TooltipContentElement = forwardRef(
1943
1701
  ...rest
1944
1702
  } = props;
1945
1703
  const context = useTooltipContext();
1946
- const tooltipClassNames = cx(className, styles$2["content"]);
1704
+ const tooltipClassNames = cx(className, styles$5["content"]);
1947
1705
  const childrenRef = useRef(null);
1948
1706
  const focusItems = useRef();
1949
1707
  const combinedStyles = {
@@ -1999,7 +1757,7 @@ const TooltipContentElement = forwardRef(
1999
1757
  /* @__PURE__ */ jsx(
2000
1758
  "div",
2001
1759
  {
2002
- className: styles$2.scroller,
1760
+ className: styles$5.scroller,
2003
1761
  role: "presentation",
2004
1762
  tabIndex: -1,
2005
1763
  ref: childrenRef,
@@ -2008,7 +1766,7 @@ const TooltipContentElement = forwardRef(
2008
1766
  },
2009
1767
  context?.tooltip.key
2010
1768
  ),
2011
- /* @__PURE__ */ jsx("span", { className: styles$2["arrow"], ref: context?.tooltip.arrowRef, children: /* @__PURE__ */ jsxs("svg", { "aria-hidden": "true", width: "14", height: "14", viewBox: "0 0 14 14", children: [
1769
+ /* @__PURE__ */ jsx("span", { className: styles$5["arrow"], ref: context?.tooltip.arrowRef, children: /* @__PURE__ */ jsxs("svg", { "aria-hidden": "true", width: "14", height: "14", viewBox: "0 0 14 14", children: [
2012
1770
  /* @__PURE__ */ jsx("path", { stroke: "none", d: "M0,0 H14 L7,7 Q7,7 7,7 Z" }),
2013
1771
  /* @__PURE__ */ jsx("clipPath", { id: ":r9:", children: /* @__PURE__ */ jsx("rect", { x: "0", y: "0", width: "14", height: "14" }) })
2014
1772
  ] }) })
@@ -2037,7 +1795,7 @@ const TooltipLegacyTrigger = forwardRef(function TooltipLegacyTrigger2({ childre
2037
1795
  "span",
2038
1796
  {
2039
1797
  ref,
2040
- className: cx([styles$1["trigger-legacy"]], className),
1798
+ className: cx([styles$4["trigger-legacy"]], className),
2041
1799
  "data-anv": "tooltip-trigger",
2042
1800
  "data-state": context.open ? "open" : "closed",
2043
1801
  ...restOfContextProps,
@@ -2100,7 +1858,7 @@ const TooltipTriggerElement = forwardRef(
2100
1858
  return /* @__PURE__ */ jsx(
2101
1859
  "span",
2102
1860
  {
2103
- className: cx([styles$2["trigger"]], className),
1861
+ className: cx([styles$5["trigger"]], className),
2104
1862
  "data-anv": "tooltip-trigger",
2105
1863
  ref: propRef,
2106
1864
  onMouseEnter: onMouseEnterHandler,
@@ -2404,30 +2162,48 @@ const Tooltip = Object.assign(TooltipElement, {
2404
2162
  Context: TooltipContext
2405
2163
  });
2406
2164
 
2165
+ const LabelMoreInfoIcon = ({
2166
+ moreInfo,
2167
+ openMoreInfo
2168
+ }) => {
2169
+ const [open, setOpen] = useState(openMoreInfo);
2170
+ useEffect(() => {
2171
+ if (openMoreInfo) {
2172
+ setOpen(true);
2173
+ } else {
2174
+ setOpen(false);
2175
+ setTimeout(() => {
2176
+ setOpen(void 0);
2177
+ });
2178
+ }
2179
+ }, [openMoreInfo]);
2180
+ return /* @__PURE__ */ jsxs(
2181
+ Tooltip,
2182
+ {
2183
+ open,
2184
+ placement: "top",
2185
+ offset: 5,
2186
+ fallbackPlacements: ["right", "bottom", "left"],
2187
+ children: [
2188
+ /* @__PURE__ */ jsx(Tooltip.Trigger, { className: styles$6["info-trigger"], children: /* @__PURE__ */ jsx(Icon, { svg: SvgInfo }) }),
2189
+ /* @__PURE__ */ jsx(Tooltip.Content, { className: styles$6["info-content"], children: moreInfo })
2190
+ ]
2191
+ }
2192
+ );
2193
+ };
2407
2194
  const Label = forwardRef((props, ref) => {
2408
2195
  const { children, className, moreInfo, required, openMoreInfo, ...rest } = props;
2409
- const LabelClassNames = cx([styles$3["label"]], className);
2196
+ const LabelClassNames = cx([styles$6["label"]], className);
2410
2197
  return /* @__PURE__ */ jsxs("label", { className: LabelClassNames, "data-anv": "label", ref, ...rest, children: [
2411
- /* @__PURE__ */ jsxs("div", { className: styles$3["top-container"], "aria-atomic": "true", children: [
2412
- /* @__PURE__ */ jsxs("span", { className: styles$3["label-text"], children: [
2198
+ /* @__PURE__ */ jsxs("div", { className: styles$6["top-container"], "aria-atomic": "true", children: [
2199
+ /* @__PURE__ */ jsxs("span", { className: styles$6["label-text"], children: [
2413
2200
  children,
2414
2201
  required ? /* @__PURE__ */ jsxs(Fragment, { children: [
2415
- /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: styles$3["required"], children: "*" }),
2202
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: styles$6["required"], children: "*" }),
2416
2203
  /* @__PURE__ */ jsx(SrOnly, { children: "Required" })
2417
2204
  ] }) : null
2418
2205
  ] }),
2419
- moreInfo ? /* @__PURE__ */ jsxs(
2420
- Tooltip,
2421
- {
2422
- open: openMoreInfo ? openMoreInfo : void 0,
2423
- placement: "top",
2424
- fallbackPlacements: ["right", "bottom", "left"],
2425
- children: [
2426
- /* @__PURE__ */ jsx(Tooltip.Trigger, { className: styles$3["info-trigger"], children: /* @__PURE__ */ jsx(Icon, { svg: SvgInfo }) }),
2427
- /* @__PURE__ */ jsx(Tooltip.Content, { className: styles$3["info-content"], children: moreInfo })
2428
- ]
2429
- }
2430
- ) : null
2206
+ moreInfo ? /* @__PURE__ */ jsx(LabelMoreInfoIcon, { moreInfo, openMoreInfo }) : null
2431
2207
  ] }),
2432
2208
  moreInfo ? /* @__PURE__ */ jsx(SrOnly, { children: moreInfo }) : null
2433
2209
  ] });
@@ -2552,5 +2328,5 @@ const ProgressBar = forwardRef(
2552
2328
  );
2553
2329
  ProgressBar.displayName = "ProgressBar";
2554
2330
 
2555
- export { DialogHeader as D, Label as L, ProgressBar as P, TooltipTrigger as T, DialogFooter as a, DialogContent as b, DialogCancelButton as c, Dialog as d, DrawerCancelButton as e, DrawerFooter as f, DrawerHeader as g, DrawerContent as h, Drawer as i, TooltipContent as j, Tooltip as k, Toaster as l, DialogContext as m, DrawerContext as n, supportsPopover as s, toast as t, useKeyboardFocusables as u };
2556
- //# sourceMappingURL=ProgressBar-CgpalFK8-DxfzF8hg.js.map
2331
+ export { DrawerCancelButton as D, Helper as H, Label as L, ProgressBar as P, TooltipTrigger as T, DrawerFooter as a, DrawerHeader as b, DrawerContent as c, Drawer as d, TooltipContent as e, Tooltip as f, getActiveElement as g, Toaster as h, DialogContext as i, useDialogScrollLock as j, ToastProvider as k, ToasterPopover as l, ToasterContent as m, DrawerContext as n, supportsPopover as s, toast as t, useKeyboardFocusables as u };
2332
+ //# sourceMappingURL=ProgressBar-DojG9LHF-nlymvlXw.js.map