impact-nova 2.2.8 → 2.3.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 (124) hide show
  1. package/dist/components/data/ag-grid-react/ag-grid-header-dom.js +6 -8
  2. package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.d.ts +1 -1
  3. package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.js +25 -13
  4. package/dist/components/data/ag-grid-react/headers/custom-header.js +1 -1
  5. package/dist/components/data/ag-grid-react/headers/custom-inner-header-group.js +7 -7
  6. package/dist/components/data/ag-grid-react/headers/utils/filter-utils.js +9 -9
  7. package/dist/components/data/ag-grid-react/strip-column-min-width-constraints.d.ts +3 -0
  8. package/dist/components/data/data-table/data-table.d.ts +1 -1
  9. package/dist/components/data/data-table/data-table.js +41 -39
  10. package/dist/components/data/data-table/data-table.types.d.ts +1 -1
  11. package/dist/components/data-display/calendar/calendar-day-picker-components.js +69 -56
  12. package/dist/components/data-display/calendar/calendar-padding-week.utils.d.ts +5 -0
  13. package/dist/components/data-display/calendar/calendar-padding-week.utils.js +6 -0
  14. package/dist/components/data-display/calendar/calendar.types.d.ts +1 -1
  15. package/dist/components/flows/filter-panel/filter-panel.js +101 -94
  16. package/dist/components/flows/guidance/adapters/ag-grid-adapter.d.ts +13 -0
  17. package/dist/components/flows/guidance/adapters/ag-grid-adapter.js +30 -0
  18. package/dist/components/flows/guidance/adapters/ag-grid.d.ts +2 -0
  19. package/dist/components/flows/guidance/adapters/ag-grid.js +6 -0
  20. package/dist/components/flows/guidance/adapters/dialog.d.ts +1 -0
  21. package/dist/components/flows/guidance/adapters/dialog.js +5 -0
  22. package/dist/components/flows/guidance/adapters/overlay-adapter.d.ts +5 -0
  23. package/dist/components/flows/guidance/adapters/overlay-adapter.js +21 -0
  24. package/dist/components/flows/guidance/engine.d.ts +1 -0
  25. package/dist/components/flows/guidance/engine.js +36 -0
  26. package/dist/components/flows/guidance/guidance-context.d.ts +29 -0
  27. package/dist/components/flows/guidance/guidance-context.js +35 -0
  28. package/dist/components/flows/guidance/guidance-error-boundary.d.ts +16 -0
  29. package/dist/components/flows/guidance/guidance-error-boundary.js +49 -0
  30. package/dist/components/flows/guidance/guidance-layer.d.ts +2 -0
  31. package/dist/components/flows/guidance/guidance-layer.js +71 -0
  32. package/dist/components/flows/guidance/guidance-provider.d.ts +3 -0
  33. package/dist/components/flows/guidance/guidance-provider.js +58 -0
  34. package/dist/components/flows/guidance/guidance-target.d.ts +7 -0
  35. package/dist/components/flows/guidance/guidance-target.js +27 -0
  36. package/dist/components/flows/guidance/guidance.types.d.ts +1 -0
  37. package/dist/components/flows/guidance/help-center/filter-help-center-guides.d.ts +7 -0
  38. package/dist/components/flows/guidance/help-center/filter-help-center-guides.js +11 -0
  39. package/dist/components/flows/guidance/help-center/guide-catalog.d.ts +3 -0
  40. package/dist/components/flows/guidance/help-center/guide-catalog.js +118 -0
  41. package/dist/components/flows/guidance/help-center/help-center-header.d.ts +3 -0
  42. package/dist/components/flows/guidance/help-center/help-center-header.js +43 -0
  43. package/dist/components/flows/guidance/help-center/help-center.constants.d.ts +5 -0
  44. package/dist/components/flows/guidance/help-center/help-center.constants.js +7 -0
  45. package/dist/components/flows/guidance/help-center/help-center.d.ts +10 -0
  46. package/dist/components/flows/guidance/help-center/help-center.js +95 -0
  47. package/dist/components/flows/guidance/help-center/help-center.story-helpers.d.ts +10 -0
  48. package/dist/components/flows/guidance/help-center/help-center.types.d.ts +39 -0
  49. package/dist/components/flows/guidance/help-center.d.ts +6 -0
  50. package/dist/components/flows/guidance/help-center.js +19 -0
  51. package/dist/components/flows/guidance/hooks/use-guidance.d.ts +19 -0
  52. package/dist/components/flows/guidance/hooks/use-guidance.js +50 -0
  53. package/dist/components/flows/guidance/hooks/use-help-center.d.ts +24 -0
  54. package/dist/components/flows/guidance/hooks/use-help-center.js +67 -0
  55. package/dist/components/flows/guidance/hooks/useGuidanceOverlayGeometry.d.ts +2 -0
  56. package/dist/components/flows/guidance/hooks/useGuidanceOverlayGeometry.js +30 -0
  57. package/dist/components/flows/guidance/index.d.ts +18 -0
  58. package/dist/components/flows/guidance/index.js +48 -0
  59. package/dist/components/flows/guidance/renderers/announcement-renderer.d.ts +3 -0
  60. package/dist/components/flows/guidance/renderers/announcement-renderer.js +40 -0
  61. package/dist/components/flows/guidance/renderers/coach-mark-renderer.d.ts +2 -0
  62. package/dist/components/flows/guidance/renderers/coach-mark-renderer.js +14 -0
  63. package/dist/components/flows/guidance/renderers/guidance-card-shared.d.ts +42 -0
  64. package/dist/components/flows/guidance/renderers/guidance-card-shared.js +213 -0
  65. package/dist/components/flows/guidance/renderers/guidance-renderer-shared.d.ts +48 -0
  66. package/dist/components/flows/guidance/renderers/guidance-renderer-shared.js +254 -0
  67. package/dist/components/flows/guidance/renderers/guidance-tour-overlay.d.ts +11 -0
  68. package/dist/components/flows/guidance/renderers/guidance-tour-overlay.js +217 -0
  69. package/dist/components/flows/guidance/renderers/renderer-registry.d.ts +6 -0
  70. package/dist/components/flows/guidance/renderers/renderer-registry.js +19 -0
  71. package/dist/components/flows/guidance/renderers/spotlight-renderer.d.ts +2 -0
  72. package/dist/components/flows/guidance/renderers/spotlight-renderer.js +14 -0
  73. package/dist/components/flows/guidance/renderers.d.ts +4 -0
  74. package/dist/components/flows/guidance/renderers.js +11 -0
  75. package/dist/components/flows/guidance/target.d.ts +3 -0
  76. package/dist/components/flows/guidance/target.js +6 -0
  77. package/dist/components/flows/guidance/triggers.d.ts +2 -0
  78. package/dist/components/flows/guidance/triggers.js +16 -0
  79. package/dist/components/flows/guidance/use-guidance-target.d.ts +5 -0
  80. package/dist/components/flows/guidance/use-guidance-target.js +16 -0
  81. package/dist/components/flows/guidance/utils/motion-settle.d.ts +2 -0
  82. package/dist/components/flows/guidance/utils/motion-settle.js +17 -0
  83. package/dist/components/forms/combobox/combobox.js +185 -160
  84. package/dist/components/forms/combobox/combobox.types.d.ts +2 -0
  85. package/dist/i18n/defaultMessages.d.ts +13 -0
  86. package/dist/i18n/defaultMessages.js +23 -11
  87. package/dist/i18n/index.d.ts +1 -1
  88. package/dist/i18n/locales/de.js +12 -0
  89. package/dist/i18n/locales/es.js +12 -0
  90. package/dist/i18n/locales/hi.js +12 -0
  91. package/dist/i18n/locales/kn.js +12 -0
  92. package/dist/impact-nova-components.css +52 -10
  93. package/dist/impact-nova.css +1 -1
  94. package/dist/lib/guidance/analytics/analytics-adapter.d.ts +16 -0
  95. package/dist/lib/guidance/analytics/analytics-adapter.js +50 -0
  96. package/dist/lib/guidance/engine/guidance-engine.d.ts +74 -0
  97. package/dist/lib/guidance/engine/guidance-engine.js +384 -0
  98. package/dist/lib/guidance/engine/guide-registry.d.ts +21 -0
  99. package/dist/lib/guidance/engine/guide-registry.js +71 -0
  100. package/dist/lib/guidance/engine/manifest-validator.d.ts +4 -0
  101. package/dist/lib/guidance/engine/manifest-validator.js +102 -0
  102. package/dist/lib/guidance/engine/step-navigation.d.ts +5 -0
  103. package/dist/lib/guidance/engine/step-navigation.js +35 -0
  104. package/dist/lib/guidance/index.d.ts +12 -0
  105. package/dist/lib/guidance/storage/storage-adapter.d.ts +10 -0
  106. package/dist/lib/guidance/storage/storage-adapter.js +51 -0
  107. package/dist/lib/guidance/storage/storage-keys.d.ts +10 -0
  108. package/dist/lib/guidance/storage/storage-keys.js +23 -0
  109. package/dist/lib/guidance/targets/ref-registry.d.ts +12 -0
  110. package/dist/lib/guidance/targets/ref-registry.js +65 -0
  111. package/dist/lib/guidance/targets/target-resolver.d.ts +13 -0
  112. package/dist/lib/guidance/targets/target-resolver.js +85 -0
  113. package/dist/lib/guidance/triggers/built-in-triggers.d.ts +14 -0
  114. package/dist/lib/guidance/triggers/built-in-triggers.js +88 -0
  115. package/dist/lib/guidance/triggers/trigger-registry.d.ts +9 -0
  116. package/dist/lib/guidance/triggers/trigger-registry.js +44 -0
  117. package/dist/lib/guidance/types/guidance.types.d.ts +181 -0
  118. package/dist/lib/overflow/is-line-clamp-text-clipped.d.ts +2 -0
  119. package/dist/lib/overflow/is-line-clamp-text-clipped.js +33 -0
  120. package/dist/lib/overflow/is-text-overflowing.d.ts +1 -0
  121. package/dist/lib/overflow/is-text-overflowing.js +8 -3
  122. package/dist/llms/rules/installation.js +1 -1
  123. package/dist/llms/rules/requirements.js +1 -1
  124. package/package.json +51 -22
@@ -0,0 +1,30 @@
1
+ import * as c from "react";
2
+ import { beginTourScrollSnapshot as m, needsGuidanceTargetScroll as l, scrollGuidanceTargetIntoView as f, getVisibleTargetRect as v } from "../renderers/guidance-renderer-shared.js";
3
+ import { hasRunningAnimations as p } from "../utils/motion-settle.js";
4
+ function T(e, u) {
5
+ const [d, s] = c.useState(null);
6
+ return c.useEffect(() => {
7
+ if (!e) {
8
+ s(null);
9
+ return;
10
+ }
11
+ let i = !1, o = 0;
12
+ const r = () => {
13
+ i || s(v(e));
14
+ }, t = () => {
15
+ r(), !i && p(e) && (o = requestAnimationFrame(t));
16
+ };
17
+ m(e), l(e) && f(e), r(), o = requestAnimationFrame(t);
18
+ const a = new ResizeObserver(r);
19
+ a.observe(e);
20
+ const n = () => {
21
+ r();
22
+ };
23
+ return window.addEventListener("resize", n), document.addEventListener("scroll", n, !0), () => {
24
+ i = !0, cancelAnimationFrame(o), a.disconnect(), window.removeEventListener("resize", n), document.removeEventListener("scroll", n, !0);
25
+ };
26
+ }, [u, e]), d;
27
+ }
28
+ export {
29
+ T as useGuidanceOverlayGeometry
30
+ };
@@ -0,0 +1,18 @@
1
+ export { GuidanceProvider } from './guidance-provider';
2
+ export { GuidanceContext, useGuidanceContext, createGuidanceEngine, } from './guidance-context';
3
+ export type { GuidanceProviderProps, GuidanceContextValue } from './guidance-context';
4
+ export { GuidanceTarget } from './guidance-target';
5
+ export { useGuidanceTarget } from './use-guidance-target';
6
+ export type { GuidanceTargetProps } from './guidance-target';
7
+ export { GuidanceLayer } from './guidance-layer';
8
+ export { GuidanceErrorBoundary, GuidanceDebugPanel } from './guidance-error-boundary';
9
+ export { useGuidance, useGuideManifest, useGuidanceEvents } from './hooks/use-guidance';
10
+ export { useHelpCenter, formatHelpCenterCategoryLabel } from './hooks/use-help-center';
11
+ export type { HelpCenterCategory } from './hooks/use-help-center';
12
+ export { HelpCenter, HelpCenterContent, HelpCenterHeader, HelpCenterCategoryTabs, HelpCenterBody, HelpCenterFooter, GuideCatalog, filterHelpCenterGuides, HELP_CENTER_ALL_CATEGORY_VALUE, } from './help-center';
13
+ export type { HelpCenterProps, HelpCenterContentProps, HelpCenterHeaderProps, HelpCenterCategoryTabsProps, HelpCenterBodyProps, HelpCenterFooterProps, GuideCatalogProps, } from './help-center';
14
+ export { createAgGridTargetAdapter, createAgGridReadyTriggerPlugin, emitAgGridReady, } from './adapters/ag-grid-adapter';
15
+ export type { AgGridTargetConfig } from './adapters/ag-grid-adapter';
16
+ export { createDialogOpenedTriggerPlugin, getOverlayScopeRoot, } from './adapters/overlay-adapter';
17
+ export { registerRenderer, getRenderer } from './renderers/renderer-registry';
18
+ export type { GuideManifest, Step, StepContent, TriggerExpression, GuidanceSessionState, GuidancePlugin, GuidanceStorageAdapter, GuidanceAnalyticsAdapter, RendererProps, RenderInstruction, } from '../../../lib/guidance';
@@ -0,0 +1,48 @@
1
+ import { GuidanceProvider as t } from "./guidance-provider.js";
2
+ import { GuidanceContext as a, createGuidanceEngine as n, useGuidanceContext as i } from "./guidance-context.js";
3
+ import { GuidanceTarget as d } from "./guidance-target.js";
4
+ import { useGuidanceTarget as g } from "./use-guidance-target.js";
5
+ import { GuidanceLayer as m } from "./guidance-layer.js";
6
+ import { GuidanceDebugPanel as G, GuidanceErrorBoundary as l } from "./guidance-error-boundary.js";
7
+ import { useGuidance as c, useGuidanceEvents as s, useGuideManifest as H } from "./hooks/use-guidance.js";
8
+ import { formatHelpCenterCategoryLabel as E, useHelpCenter as T } from "./hooks/use-help-center.js";
9
+ import { HelpCenter as R, HelpCenterBody as L, HelpCenterCategoryTabs as P, HelpCenterContent as _, HelpCenterFooter as b } from "./help-center/help-center.js";
10
+ import { filterHelpCenterGuides as O } from "./help-center/filter-help-center-guides.js";
11
+ import { HELP_CENTER_ALL_CATEGORY_VALUE as D } from "./help-center/help-center.constants.js";
12
+ import { createAgGridReadyTriggerPlugin as M, createAgGridTargetAdapter as N, emitAgGridReady as S } from "./adapters/ag-grid-adapter.js";
13
+ import { createDialogOpenedTriggerPlugin as V, getOverlayScopeRoot as Y } from "./adapters/overlay-adapter.js";
14
+ import { getRenderer as j, registerRenderer as k } from "./renderers/renderer-registry.js";
15
+ import { GuideCatalog as w } from "./help-center/guide-catalog.js";
16
+ import { HelpCenterHeader as I } from "./help-center/help-center-header.js";
17
+ export {
18
+ a as GuidanceContext,
19
+ G as GuidanceDebugPanel,
20
+ l as GuidanceErrorBoundary,
21
+ m as GuidanceLayer,
22
+ t as GuidanceProvider,
23
+ d as GuidanceTarget,
24
+ w as GuideCatalog,
25
+ D as HELP_CENTER_ALL_CATEGORY_VALUE,
26
+ R as HelpCenter,
27
+ L as HelpCenterBody,
28
+ P as HelpCenterCategoryTabs,
29
+ _ as HelpCenterContent,
30
+ b as HelpCenterFooter,
31
+ I as HelpCenterHeader,
32
+ M as createAgGridReadyTriggerPlugin,
33
+ N as createAgGridTargetAdapter,
34
+ V as createDialogOpenedTriggerPlugin,
35
+ n as createGuidanceEngine,
36
+ S as emitAgGridReady,
37
+ O as filterHelpCenterGuides,
38
+ E as formatHelpCenterCategoryLabel,
39
+ Y as getOverlayScopeRoot,
40
+ j as getRenderer,
41
+ k as registerRenderer,
42
+ c as useGuidance,
43
+ i as useGuidanceContext,
44
+ s as useGuidanceEvents,
45
+ g as useGuidanceTarget,
46
+ H as useGuideManifest,
47
+ T as useHelpCenter
48
+ };
@@ -0,0 +1,3 @@
1
+ import { RendererProps } from '../../../../lib/guidance';
2
+ import * as React from 'react';
3
+ export declare function AnnouncementRenderer({ instruction, onNext, onSkip, onDismiss, }: RendererProps): React.ReactElement;
@@ -0,0 +1,40 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import "react";
3
+ import { Dialog as d, DialogContent as l } from "../../../feedback/dialog/dialog.js";
4
+ import { GuidanceStepPanel as m } from "./guidance-card-shared.js";
5
+ function b({
6
+ instruction: e,
7
+ onNext: n,
8
+ onSkip: a,
9
+ onDismiss: t
10
+ }) {
11
+ const p = e.stepIndex + 1 >= e.totalSteps;
12
+ return /* @__PURE__ */ o(d, { open: !0, onOpenChange: (r) => !r && t(), children: /* @__PURE__ */ o(
13
+ l,
14
+ {
15
+ "data-component": "guidance-announcement",
16
+ hideClose: !0,
17
+ className: "max-w-[400px] gap-0 overflow-hidden p-0 sm:rounded-2xl sm:shadow-elevation-floating",
18
+ "aria-describedby": void 0,
19
+ children: /* @__PURE__ */ o(
20
+ m,
21
+ {
22
+ title: e.content.title,
23
+ body: e.content.body,
24
+ optionalFooter: e.content.footer,
25
+ stepIndex: e.stepIndex,
26
+ totalSteps: e.totalSteps,
27
+ skippable: e.skippable,
28
+ primaryActionLabel: p ? "Done" : "Next",
29
+ onSkip: a,
30
+ onDismiss: t,
31
+ onPrimaryAction: n,
32
+ showPrimaryAction: !0
33
+ }
34
+ )
35
+ }
36
+ ) });
37
+ }
38
+ export {
39
+ b as AnnouncementRenderer
40
+ };
@@ -0,0 +1,2 @@
1
+ import { RendererProps } from '../../../../lib/guidance';
2
+ export declare function CoachMarkRenderer(props: RendererProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { GuidanceTourOverlay as e } from "./guidance-tour-overlay.js";
3
+ function c(r) {
4
+ return /* @__PURE__ */ o(
5
+ e,
6
+ {
7
+ ...r,
8
+ overlayComponent: "guidance-coach-mark"
9
+ }
10
+ );
11
+ }
12
+ export {
13
+ c as CoachMarkRenderer
14
+ };
@@ -0,0 +1,42 @@
1
+ import * as React from 'react';
2
+ export declare function GuidanceCardCloseButton({ onClose, closeAriaLabel, className, }: {
3
+ onClose: () => void;
4
+ closeAriaLabel: string;
5
+ className?: string;
6
+ }): React.ReactElement;
7
+ export declare function GuidanceStepProgress({ activeStepIndex, totalSteps, }: {
8
+ activeStepIndex: number;
9
+ totalSteps: number;
10
+ }): React.ReactElement | null;
11
+ export declare function GuidanceStepProgressDots({ activeStepIndex, totalSteps, }: {
12
+ activeStepIndex: number;
13
+ totalSteps: number;
14
+ }): React.ReactElement;
15
+ export interface GuidanceTourNavFooterProps {
16
+ activeStepIndex: number;
17
+ totalSteps: number;
18
+ skippable: boolean;
19
+ primaryActionLabel: string;
20
+ onSkip: () => void;
21
+ onPrimaryAction: () => void;
22
+ showPrimaryAction: boolean;
23
+ footerHint?: string | null;
24
+ }
25
+ export declare function GuidanceTourNavFooter({ activeStepIndex, totalSteps, skippable, primaryActionLabel, onSkip, onPrimaryAction, showPrimaryAction, footerHint, }: GuidanceTourNavFooterProps): React.ReactElement;
26
+ export interface GuidanceStepPanelProps {
27
+ title: string;
28
+ body: string;
29
+ optionalFooter?: string;
30
+ stepIndex: number;
31
+ totalSteps: number;
32
+ skippable: boolean;
33
+ primaryActionLabel: string;
34
+ onSkip: () => void;
35
+ onDismiss: () => void;
36
+ onPrimaryAction: () => void;
37
+ showPrimaryAction: boolean;
38
+ footerHint?: string | null;
39
+ titleId?: string;
40
+ bodyId?: string;
41
+ }
42
+ export declare function GuidanceStepPanel({ title, body, optionalFooter, stepIndex, totalSteps, skippable, primaryActionLabel, onSkip, onDismiss, onPrimaryAction, showPrimaryAction, footerHint, titleId, bodyId, }: GuidanceStepPanelProps): React.ReactElement;
@@ -0,0 +1,213 @@
1
+ import { jsxs as o, jsx as n } from "react/jsx-runtime";
2
+ import "react";
3
+ import { Cross as v } from "impact-nova-icons";
4
+ import { Button as x } from "../../../primitives/button/button.js";
5
+ import { cn as h } from "../../../../lib/utils.js";
6
+ const u = 5, f = 2;
7
+ function b(s, e) {
8
+ if (e <= u)
9
+ return Array.from({ length: e }, (r, l) => ({
10
+ kind: "step",
11
+ stepIndex: l
12
+ }));
13
+ const t = Math.max(
14
+ 0,
15
+ Math.min(
16
+ s - 2,
17
+ e - u
18
+ )
19
+ ), a = t + u - 1, i = [];
20
+ if (t > 0)
21
+ for (let r = 0; r < f; r += 1)
22
+ i.push({
23
+ kind: "ellipsis",
24
+ markerId: `leading-${r}`
25
+ });
26
+ for (let r = t; r <= a; r += 1)
27
+ i.push({ kind: "step", stepIndex: r });
28
+ if (a < e - 1)
29
+ for (let r = 0; r < f; r += 1)
30
+ i.push({
31
+ kind: "ellipsis",
32
+ markerId: `trailing-${r}`
33
+ });
34
+ return i;
35
+ }
36
+ function y({
37
+ onClose: s,
38
+ closeAriaLabel: e,
39
+ className: t
40
+ }) {
41
+ return /* @__PURE__ */ n(
42
+ x,
43
+ {
44
+ variant: "ghost",
45
+ size: "iconSm",
46
+ className: h(
47
+ "shrink-0 text-content-tertiary hover:text-content-secondary",
48
+ t
49
+ ),
50
+ "aria-label": e,
51
+ onClick: s,
52
+ children: /* @__PURE__ */ n(v, { className: "size-3.5" })
53
+ }
54
+ );
55
+ }
56
+ function I({
57
+ activeStepIndex: s,
58
+ totalSteps: e
59
+ }) {
60
+ return e <= 1 ? null : /* @__PURE__ */ n(
61
+ C,
62
+ {
63
+ activeStepIndex: s,
64
+ totalSteps: e
65
+ }
66
+ );
67
+ }
68
+ function C({
69
+ activeStepIndex: s,
70
+ totalSteps: e
71
+ }) {
72
+ const t = b(s, e);
73
+ return /* @__PURE__ */ n(
74
+ "div",
75
+ {
76
+ className: "flex items-center justify-center gap-1.5",
77
+ role: "progressbar",
78
+ "aria-valuemin": 1,
79
+ "aria-valuenow": s + 1,
80
+ "aria-valuemax": e,
81
+ "aria-label": `Step ${s + 1} of ${e}`,
82
+ children: t.map((a) => {
83
+ if (a.kind === "ellipsis")
84
+ return /* @__PURE__ */ n(
85
+ "span",
86
+ {
87
+ className: "size-1 rounded-full bg-stroke",
88
+ "aria-hidden": "true"
89
+ },
90
+ a.markerId
91
+ );
92
+ const i = a.stepIndex;
93
+ return /* @__PURE__ */ n(
94
+ "span",
95
+ {
96
+ className: h(
97
+ "rounded-full transition-all",
98
+ i === s ? "size-2.5 bg-[var(--guidance-step-counter-active,var(--color-primary))]" : "size-2 bg-stroke"
99
+ )
100
+ },
101
+ i
102
+ );
103
+ })
104
+ }
105
+ );
106
+ }
107
+ function w({
108
+ activeStepIndex: s,
109
+ totalSteps: e,
110
+ skippable: t,
111
+ primaryActionLabel: a,
112
+ onSkip: i,
113
+ onPrimaryAction: r,
114
+ showPrimaryAction: l,
115
+ footerHint: c
116
+ }) {
117
+ const d = e > 1;
118
+ return /* @__PURE__ */ o("div", { className: "mt-4 flex flex-col", children: [
119
+ d ? /* @__PURE__ */ n("div", { className: "flex justify-center", children: /* @__PURE__ */ n(
120
+ I,
121
+ {
122
+ activeStepIndex: s,
123
+ totalSteps: e
124
+ }
125
+ ) }) : null,
126
+ /* @__PURE__ */ o("div", { className: "flex items-center justify-between gap-3", children: [
127
+ /* @__PURE__ */ n("div", { className: "shrink-0", children: t ? /* @__PURE__ */ n(
128
+ "button",
129
+ {
130
+ type: "button",
131
+ className: "flex h-6 items-center text-sm leading-4 text-content-tertiary transition-colors hover:text-content-secondary",
132
+ onClick: i,
133
+ children: "Skip"
134
+ }
135
+ ) : null }),
136
+ /* @__PURE__ */ n("div", { className: "min-w-0 text-right", children: l ? /* @__PURE__ */ n(
137
+ x,
138
+ {
139
+ size: "sm",
140
+ className: "rounded-full px-4",
141
+ onClick: r,
142
+ children: a
143
+ }
144
+ ) : c ? /* @__PURE__ */ n("span", { className: "text-xs font-medium leading-snug text-content-tertiary", children: c }) : null })
145
+ ] })
146
+ ] });
147
+ }
148
+ function z({
149
+ title: s,
150
+ body: e,
151
+ optionalFooter: t,
152
+ stepIndex: a,
153
+ totalSteps: i,
154
+ skippable: r,
155
+ primaryActionLabel: l,
156
+ onSkip: c,
157
+ onDismiss: d,
158
+ onPrimaryAction: p,
159
+ showPrimaryAction: N,
160
+ footerHint: m,
161
+ titleId: g,
162
+ bodyId: k
163
+ }) {
164
+ return /* @__PURE__ */ o("div", { className: "p-4", children: [
165
+ /* @__PURE__ */ o("div", { className: "flex items-center justify-between gap-2", children: [
166
+ /* @__PURE__ */ n(
167
+ "h3",
168
+ {
169
+ id: g,
170
+ className: "min-w-0 text-base font-bold leading-5 text-content",
171
+ children: s
172
+ }
173
+ ),
174
+ /* @__PURE__ */ n(
175
+ y,
176
+ {
177
+ onClose: d,
178
+ closeAriaLabel: "Close",
179
+ className: "-me-1 shrink-0"
180
+ }
181
+ )
182
+ ] }),
183
+ e ? /* @__PURE__ */ n(
184
+ "p",
185
+ {
186
+ id: k,
187
+ className: "mt-2 text-sm leading-relaxed text-content-secondary",
188
+ children: e
189
+ }
190
+ ) : null,
191
+ t && !m ? /* @__PURE__ */ n("p", { className: "mt-1.5 text-xs text-content-tertiary", children: t }) : null,
192
+ /* @__PURE__ */ n(
193
+ w,
194
+ {
195
+ activeStepIndex: a,
196
+ totalSteps: i,
197
+ skippable: r,
198
+ primaryActionLabel: l,
199
+ onSkip: c,
200
+ onPrimaryAction: p,
201
+ showPrimaryAction: N,
202
+ footerHint: m
203
+ }
204
+ )
205
+ ] });
206
+ }
207
+ export {
208
+ y as GuidanceCardCloseButton,
209
+ z as GuidanceStepPanel,
210
+ I as GuidanceStepProgress,
211
+ C as GuidanceStepProgressDots,
212
+ w as GuidanceTourNavFooter
213
+ };
@@ -0,0 +1,48 @@
1
+ import { RenderInstruction } from '../../../../lib/guidance';
2
+ import * as React from 'react';
3
+ export declare const GUIDANCE_SPOTLIGHT_PADDING = 8;
4
+ export declare const GUIDANCE_POPOVER_GAP = 12;
5
+ export declare const GUIDANCE_VIEWPORT_PADDING = 16;
6
+ export declare const GUIDANCE_TARGET_ANIMATION_POLL_MS = 32;
7
+ export declare const GUIDANCE_TARGET_ANIMATION_POLL_DURATION_MS = 320;
8
+ export declare const GUIDANCE_TARGET_STABLE_FRAME_COUNT = 2;
9
+ export declare const GUIDANCE_TARGET_SCROLL_SETTLE_MS = 400;
10
+ export declare const GUIDANCE_TARGET_SCROLL_PADDING = 32;
11
+ export declare const GUIDANCE_OVERLAY_TRANSITION_MS = 120;
12
+ export declare const GUIDANCE_CLICK_TARGET_ADVANCE_MS = 150;
13
+ export interface HighlightRect {
14
+ x: number;
15
+ y: number;
16
+ width: number;
17
+ height: number;
18
+ }
19
+ export interface PopoverPosition {
20
+ top: number;
21
+ left: number;
22
+ placement: 'top' | 'bottom' | 'left' | 'right';
23
+ }
24
+ export declare function getVisibleTargetRect(targetElement: HTMLElement): HighlightRect;
25
+ export interface ScrollContainerSnapshot {
26
+ element: HTMLElement;
27
+ scrollTop: number;
28
+ scrollLeft: number;
29
+ }
30
+ export declare function beginTourScrollSnapshot(targetElement: HTMLElement): void;
31
+ export declare function endTourScrollSnapshot(): void;
32
+ export declare function needsGuidanceTargetScroll(targetElement: HTMLElement, viewportPadding?: number): boolean;
33
+ export declare function scrollGuidanceTargetIntoView(targetElement: HTMLElement, viewportPadding?: number): void;
34
+ export declare function useScrollGuidanceTargetIntoView(targetElement: HTMLElement | null | undefined, stepId: string): boolean;
35
+ export declare function useTargetRect(targetElement: HTMLElement | null | undefined): HighlightRect | null;
36
+ export declare function useStableTargetRect(targetElement: HTMLElement | null | undefined, stepId?: string): HighlightRect | null;
37
+ export declare function useAdvanceOnTargetClick(instruction: RenderInstruction, onNext: () => void): boolean;
38
+ export declare function useElevateGuidanceTarget(targetElement: HTMLElement | null | undefined, shouldElevate?: boolean): void;
39
+ export declare function buildHighlightRect(targetRect: HighlightRect, padding?: number, clipBounds?: HighlightRect): HighlightRect;
40
+ export declare function buildHighlightRectForTarget(targetElement: HTMLElement, padding?: number): HighlightRect;
41
+ export declare function buildHighlightStyle(targetRect: HighlightRect, padding?: number): React.CSSProperties;
42
+ export declare function computePopoverPosition(options: {
43
+ targetRect: HighlightRect;
44
+ popoverWidth: number;
45
+ popoverHeight: number;
46
+ gap?: number;
47
+ viewportPadding?: number;
48
+ }): PopoverPosition;