impact-nova 2.5.22 → 2.6.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 (37) hide show
  1. package/dist/components/data/ag-grid-react/ag-grid.types.d.ts +2 -0
  2. package/dist/components/data/ag-grid-react/headers/components/header-info.d.ts +9 -3
  3. package/dist/components/data/ag-grid-react/headers/components/header-info.js +69 -61
  4. package/dist/components/data/ag-grid-react/headers/components/info-modal.js +8 -8
  5. package/dist/components/flows/guidance/guidance-layer.js +34 -31
  6. package/dist/components/flows/guidance/hooks/useGuidanceOverlayGeometry.js +29 -20
  7. package/dist/components/flows/guidance/renderers/announcement-renderer.d.ts +1 -1
  8. package/dist/components/flows/guidance/renderers/announcement-renderer.js +74 -28
  9. package/dist/components/flows/guidance/renderers/guidance-action-tap-icon.d.ts +5 -0
  10. package/dist/components/flows/guidance/renderers/guidance-action-tap-icon.js +68 -0
  11. package/dist/components/flows/guidance/renderers/guidance-announcement-surface.d.ts +5 -0
  12. package/dist/components/flows/guidance/renderers/guidance-announcement-surface.js +76 -0
  13. package/dist/components/flows/guidance/renderers/guidance-card-shared.d.ts +43 -2
  14. package/dist/components/flows/guidance/renderers/guidance-card-shared.js +322 -99
  15. package/dist/components/flows/guidance/renderers/guidance-renderer-shared.d.ts +3 -0
  16. package/dist/components/flows/guidance/renderers/guidance-renderer-shared.js +189 -148
  17. package/dist/components/flows/guidance/renderers/guidance-shortcut-display.d.ts +9 -0
  18. package/dist/components/flows/guidance/renderers/guidance-shortcut-display.js +36 -0
  19. package/dist/components/flows/guidance/renderers/guidance-tour-overlay.d.ts +2 -1
  20. package/dist/components/flows/guidance/renderers/guidance-tour-overlay.js +152 -89
  21. package/dist/i18n/defaultMessages.d.ts +6 -0
  22. package/dist/i18n/defaultMessages.js +13 -9
  23. package/dist/i18n/locales/de.js +4 -0
  24. package/dist/i18n/locales/es.js +4 -0
  25. package/dist/i18n/locales/hi.js +4 -0
  26. package/dist/i18n/locales/kn.js +4 -0
  27. package/dist/impact-nova-tokens.scss +22 -0
  28. package/dist/impact-nova.css +1 -1
  29. package/dist/lib/guidance/engine/guidance-engine.d.ts +9 -0
  30. package/dist/lib/guidance/engine/guidance-engine.js +127 -65
  31. package/dist/lib/guidance/engine/manifest-validator.js +37 -30
  32. package/dist/lib/guidance/targets/target-resolver.d.ts +1 -1
  33. package/dist/lib/guidance/targets/target-resolver.js +32 -30
  34. package/dist/lib/guidance/types/guidance.types.d.ts +41 -0
  35. package/dist/llms/rules/installation.js +1 -1
  36. package/dist/llms/rules/requirements.js +1 -1
  37. package/package.json +2 -1
@@ -0,0 +1,76 @@
1
+ import { jsx as e, jsxs as n } from "react/jsx-runtime";
2
+ import * as a from "react";
3
+ function i() {
4
+ const t = a.useId().replace(/:/g, "");
5
+ return {
6
+ dotPatternId: `guidance-announcement-dots-${t}`,
7
+ washGradientId: `guidance-announcement-wash-${t}`
8
+ };
9
+ }
10
+ function c() {
11
+ const { dotPatternId: t, washGradientId: r } = i();
12
+ return /* @__PURE__ */ e(
13
+ "div",
14
+ {
15
+ "aria-hidden": "true",
16
+ className: "pointer-events-none absolute inset-0 z-0 overflow-hidden rounded-2xl bg-canvas",
17
+ children: /* @__PURE__ */ n("svg", { className: "absolute inset-0 size-full", "aria-hidden": "true", children: [
18
+ /* @__PURE__ */ n("defs", { children: [
19
+ /* @__PURE__ */ e(
20
+ "pattern",
21
+ {
22
+ id: t,
23
+ width: "12",
24
+ height: "12",
25
+ patternUnits: "userSpaceOnUse",
26
+ children: /* @__PURE__ */ e(
27
+ "circle",
28
+ {
29
+ cx: "6",
30
+ cy: "6",
31
+ r: "0.75",
32
+ fill: "var(--color-border-accent-muted)",
33
+ fillOpacity: "0.32"
34
+ }
35
+ )
36
+ }
37
+ ),
38
+ /* @__PURE__ */ n(
39
+ "radialGradient",
40
+ {
41
+ id: r,
42
+ cx: "50%",
43
+ cy: "0%",
44
+ rx: "75%",
45
+ ry: "60%",
46
+ gradientUnits: "objectBoundingBox",
47
+ children: [
48
+ /* @__PURE__ */ e(
49
+ "stop",
50
+ {
51
+ offset: "0%",
52
+ stopColor: "var(--guidance-announcement-hero-bg, var(--color-primary-selection))",
53
+ stopOpacity: "1"
54
+ }
55
+ ),
56
+ /* @__PURE__ */ e(
57
+ "stop",
58
+ {
59
+ offset: "100%",
60
+ stopColor: "var(--guidance-announcement-hero-bg, var(--color-primary-selection))",
61
+ stopOpacity: "0"
62
+ }
63
+ )
64
+ ]
65
+ }
66
+ )
67
+ ] }),
68
+ /* @__PURE__ */ e("rect", { width: "100%", height: "100%", fill: `url(#${t})` }),
69
+ /* @__PURE__ */ e("rect", { width: "100%", height: "100%", fill: `url(#${r})` })
70
+ ] })
71
+ }
72
+ );
73
+ }
74
+ export {
75
+ c as GuidanceAnnouncementSurface
76
+ };
@@ -1,4 +1,25 @@
1
+ import { GuidanceKeyBinding, GuidanceShortcutReference } from '../../../../lib/guidance';
1
2
  import * as React from 'react';
3
+ export declare function GuidanceInteractionStepToolbar({ activeStepIndex, totalSteps, onDismiss, className, }: {
4
+ activeStepIndex: number;
5
+ totalSteps: number;
6
+ onDismiss: () => void;
7
+ className?: string;
8
+ }): React.ReactElement | null;
9
+ /** Click-next coach-mark steps: step label, progress, and dismiss (no action badge). */
10
+ export declare function GuidanceCoachMarkStepToolbar({ activeStepIndex, totalSteps, onDismiss, className, }: {
11
+ activeStepIndex: number;
12
+ totalSteps: number;
13
+ onDismiss: () => void;
14
+ className?: string;
15
+ }): React.ReactElement | null;
16
+ export declare function GuidanceTourActionFooter({ hint, keybinding, activeStepIndex, showBack, onBack, }: {
17
+ hint: string;
18
+ keybinding?: GuidanceKeyBinding;
19
+ activeStepIndex: number;
20
+ showBack?: boolean;
21
+ onBack?: () => void;
22
+ }): React.ReactElement;
2
23
  export declare function GuidanceStepProgressBar({ activeStepIndex, totalSteps, className, }: {
3
24
  activeStepIndex: number;
4
25
  totalSteps: number;
@@ -7,6 +28,14 @@ export declare function GuidanceStepProgressBar({ activeStepIndex, totalSteps, c
7
28
  export declare function GuidanceTourInteractionFooter({ hint, }: {
8
29
  hint: string;
9
30
  }): React.ReactElement;
31
+ export declare function GuidanceCloseButton({ onClose, placement, }: {
32
+ onClose: () => void;
33
+ placement?: 'corner' | 'inline';
34
+ }): React.ReactElement;
35
+ export declare function GuidanceTourProgressAndNav({ activeStepIndex, totalSteps, skippable, primaryActionLabel, onSkip, onPrimaryAction, showPrimaryAction, showBack, showSkip, onBack, onEndTour, className, }: GuidanceTourNavFooterProps & {
36
+ className?: string;
37
+ onEndTour?: () => void;
38
+ }): React.ReactElement;
10
39
  export declare function GuidanceStepCounter({ activeStepIndex, totalSteps, }: {
11
40
  activeStepIndex: number;
12
41
  totalSteps: number;
@@ -19,8 +48,14 @@ export interface GuidanceTourNavFooterProps {
19
48
  onSkip: () => void;
20
49
  onPrimaryAction: () => void;
21
50
  showPrimaryAction?: boolean;
51
+ showBack?: boolean;
52
+ showSkip?: boolean;
53
+ embedded?: boolean;
54
+ onBack?: () => void;
55
+ onEndTour?: () => void;
56
+ showStepCounter?: boolean;
22
57
  }
23
- export declare function GuidanceTourNavFooter({ activeStepIndex, totalSteps, skippable, primaryActionLabel, onSkip, onPrimaryAction, showPrimaryAction, }: GuidanceTourNavFooterProps): React.ReactElement;
58
+ export declare function GuidanceTourNavFooter({ activeStepIndex, totalSteps, skippable, primaryActionLabel, onSkip, onPrimaryAction, showPrimaryAction, showBack, showSkip, embedded, onBack, onEndTour, showStepCounter, }: GuidanceTourNavFooterProps): React.ReactElement;
24
59
  export interface GuidanceStepPanelProps {
25
60
  title: string;
26
61
  body: string;
@@ -34,7 +69,13 @@ export interface GuidanceStepPanelProps {
34
69
  onPrimaryAction: () => void;
35
70
  showPrimaryAction: boolean;
36
71
  footerHint?: string | null;
72
+ footerKeybinding?: GuidanceKeyBinding;
73
+ shortcutReferences?: GuidanceShortcutReference[];
37
74
  titleId?: string;
38
75
  bodyId?: string;
76
+ canGoBack?: boolean;
77
+ advanceOn?: 'click-next' | 'click-target' | 'auto' | 'custom-event';
78
+ showBack?: boolean;
79
+ onBack?: () => void;
39
80
  }
40
- export declare function GuidanceStepPanel({ title, body, optionalFooter, stepIndex, totalSteps, skippable, primaryActionLabel, onSkip, onPrimaryAction, showPrimaryAction, footerHint, titleId, bodyId, }: GuidanceStepPanelProps): React.ReactElement;
81
+ export declare function GuidanceStepPanel({ title, body, optionalFooter, stepIndex, totalSteps, skippable, primaryActionLabel, onSkip, onDismiss, onPrimaryAction, showPrimaryAction, footerHint, footerKeybinding, shortcutReferences, titleId, bodyId, canGoBack, advanceOn, showBack, onBack, }: GuidanceStepPanelProps): React.ReactElement;
@@ -1,160 +1,383 @@
1
- import { jsxs as c, jsx as e, Fragment as N } from "react/jsx-runtime";
1
+ import { jsx as e, jsxs as l, Fragment as E } from "react/jsx-runtime";
2
2
  import "react";
3
- import { Button as m } from "../../../primitives/button/button.js";
4
- import { Progress as b } from "../../../primitives/progress/progress.js";
5
- import { cn as h } from "../../../../lib/utils.js";
6
- const v = "End Tour";
7
- function G({
8
- activeStepIndex: t,
3
+ import { Cross as I } from "impact-nova-icons";
4
+ import { Badge as K } from "../../../data-display/badge/badge.js";
5
+ import { GuidanceActionTapIcon as O } from "./guidance-action-tap-icon.js";
6
+ import { GuidanceStepKeybinding as S, GuidanceShortcutReferenceList as M } from "./guidance-shortcut-display.js";
7
+ import { Button as h } from "../../../primitives/button/button.js";
8
+ import { Tooltip as R, TooltipTrigger as U, TooltipContent as $ } from "../../../feedback/tooltip/tooltip.js";
9
+ import { Progress as D } from "../../../primitives/progress/progress.js";
10
+ import { useImpactNovaI18n as g } from "../../../../i18n/use-impact-nova-i18n.js";
11
+ import { cn as m } from "../../../../lib/utils.js";
12
+ const J = "Skip", A = "Back";
13
+ function Q({
14
+ activeStepIndex: r,
9
15
  totalSteps: n,
10
- className: a
16
+ onDismiss: a,
17
+ className: t
11
18
  }) {
19
+ const { t: o } = g();
12
20
  if (n <= 1)
13
21
  return null;
14
- const r = (t + 1) / n * 100;
15
- return /* @__PURE__ */ e(
16
- b,
22
+ const i = o("stepper.stepOfTotal", {
23
+ current: r + 1,
24
+ total: n
25
+ }), s = o("guidance.actionRequiredBadge");
26
+ return /* @__PURE__ */ l(
27
+ "div",
17
28
  {
18
- value: r,
19
- label: !1,
20
- className: h("bg-brand-subtle", a),
21
- "aria-label": `Step ${t + 1} of ${n}`
29
+ className: m(
30
+ "mb-3 flex w-full items-center gap-2",
31
+ t
32
+ ),
33
+ children: [
34
+ /* @__PURE__ */ e("span", { className: "shrink-0 text-xs font-medium leading-none text-content-tertiary", children: i }),
35
+ /* @__PURE__ */ e(
36
+ K,
37
+ {
38
+ variant: "subtle",
39
+ color: "warning",
40
+ size: "sm",
41
+ shape: "square",
42
+ className: "max-w-none shrink-0 uppercase tracking-wide",
43
+ icon: /* @__PURE__ */ e(
44
+ "span",
45
+ {
46
+ "aria-hidden": "true",
47
+ className: "size-1.5 shrink-0 rounded-full bg-badge-warning-ink"
48
+ }
49
+ ),
50
+ children: s
51
+ }
52
+ ),
53
+ /* @__PURE__ */ e("span", { className: "min-w-0 flex-1", "aria-hidden": "true" }),
54
+ /* @__PURE__ */ e(G, { onClose: a, placement: "inline" })
55
+ ]
22
56
  }
23
57
  );
24
58
  }
25
- function $({
26
- hint: t
59
+ function V({
60
+ activeStepIndex: r,
61
+ totalSteps: n,
62
+ onDismiss: a,
63
+ className: t
27
64
  }) {
28
- return /* @__PURE__ */ e(
65
+ const { t: o } = g();
66
+ if (n <= 1)
67
+ return null;
68
+ const i = o("stepper.stepOfTotal", {
69
+ current: r + 1,
70
+ total: n
71
+ });
72
+ return /* @__PURE__ */ l(
29
73
  "div",
30
74
  {
31
- "data-component": "guidance-tour-interaction-footer",
32
- className: "border-t border-stroke-hairline bg-canvas-subtle px-4 py-2.5 text-center text-sm leading-snug text-content-secondary",
33
- children: t
75
+ className: m(
76
+ "mb-3 flex w-full items-center gap-2",
77
+ t
78
+ ),
79
+ children: [
80
+ /* @__PURE__ */ e("span", { className: "shrink-0 text-xs font-medium leading-none text-content-tertiary", children: i }),
81
+ /* @__PURE__ */ e(
82
+ _,
83
+ {
84
+ activeStepIndex: r,
85
+ totalSteps: n,
86
+ className: "min-w-0 flex-1 h-1.5"
87
+ }
88
+ ),
89
+ /* @__PURE__ */ e(G, { onClose: a, placement: "inline" })
90
+ ]
34
91
  }
35
92
  );
36
93
  }
37
- function y({
38
- activeStepIndex: t,
39
- totalSteps: n
94
+ function W({
95
+ hint: r,
96
+ keybinding: n,
97
+ activeStepIndex: a,
98
+ showBack: t,
99
+ onBack: o
40
100
  }) {
41
- return /* @__PURE__ */ c(
42
- "span",
101
+ const i = t && a > 0 && !!o, s = /* @__PURE__ */ l(E, { children: [
102
+ n ? /* @__PURE__ */ e(
103
+ S,
104
+ {
105
+ keybinding: n,
106
+ className: "shrink-0"
107
+ }
108
+ ) : /* @__PURE__ */ e(O, { className: "shrink-0 text-content" }),
109
+ /* @__PURE__ */ e("span", { className: "min-w-0 flex-1 text-pretty text-sm leading-snug text-content-secondary", children: r })
110
+ ] });
111
+ return i ? /* @__PURE__ */ l(
112
+ "div",
43
113
  {
44
- className: "text-sm leading-none",
45
- "aria-label": `Step ${t + 1} of ${n}`,
114
+ "data-component": "guidance-tour-action-footer",
115
+ className: "grid grid-cols-[auto_1fr] items-center gap-x-3 rounded-b-2xl border-t border-stroke-hairline bg-canvas-subtle px-4 py-3",
46
116
  children: [
47
- /* @__PURE__ */ e("span", { className: "font-bold text-content", children: t + 1 }),
48
- /* @__PURE__ */ e("span", { className: "font-normal text-content-tertiary", children: ` / ${n}` })
117
+ /* @__PURE__ */ e(h, { variant: "tertiary", size: "md", onClick: o, children: A }),
118
+ /* @__PURE__ */ e("div", { className: "flex min-w-0 items-center gap-2 justify-self-stretch", role: "status", children: s })
49
119
  ]
50
120
  }
121
+ ) : /* @__PURE__ */ e(
122
+ "div",
123
+ {
124
+ "data-component": "guidance-tour-action-footer",
125
+ className: "flex items-center gap-2 rounded-b-2xl border-t border-stroke-hairline bg-canvas-subtle px-4 py-3",
126
+ role: "status",
127
+ children: s
128
+ }
129
+ );
130
+ }
131
+ function _({
132
+ activeStepIndex: r,
133
+ totalSteps: n,
134
+ className: a
135
+ }) {
136
+ if (n <= 1)
137
+ return null;
138
+ const t = (r + 1) / n * 100;
139
+ return /* @__PURE__ */ e(
140
+ D,
141
+ {
142
+ value: t,
143
+ label: !1,
144
+ className: m("bg-brand-subtle", a),
145
+ "aria-label": `Step ${r + 1} of ${n}`
146
+ }
147
+ );
148
+ }
149
+ function G({
150
+ onClose: r,
151
+ placement: n = "corner"
152
+ }) {
153
+ const { t: a } = g(), t = a("guidance.endTour");
154
+ return /* @__PURE__ */ l(R, { children: [
155
+ /* @__PURE__ */ e(U, { asChild: !0, children: /* @__PURE__ */ e(
156
+ h,
157
+ {
158
+ type: "button",
159
+ variant: "ghost",
160
+ size: "icon",
161
+ className: m(
162
+ "z-20 size-6 h-6 min-h-6 w-6 min-w-6 shrink-0 rounded-full border border-stroke-hairline bg-canvas p-0 text-secondary-foreground shadow-elevation-floating transition-colors hover:bg-canvas hover:text-accent-foreground [&_svg]:size-[13.18px]",
163
+ n === "corner" ? "absolute right-3 top-3" : "relative shrink-0 self-center"
164
+ ),
165
+ "aria-label": t,
166
+ onClick: r,
167
+ children: /* @__PURE__ */ e(I, {})
168
+ }
169
+ ) }),
170
+ /* @__PURE__ */ e($, { side: "bottom", children: t })
171
+ ] });
172
+ }
173
+ function le({
174
+ activeStepIndex: r,
175
+ totalSteps: n,
176
+ skippable: a,
177
+ primaryActionLabel: t,
178
+ onSkip: o,
179
+ onPrimaryAction: i,
180
+ showPrimaryAction: s = !0,
181
+ showBack: p,
182
+ showSkip: u,
183
+ onBack: f,
184
+ onEndTour: c,
185
+ className: d
186
+ }) {
187
+ return /* @__PURE__ */ l("div", { className: m("flex w-full flex-col gap-3", d), children: [
188
+ /* @__PURE__ */ e(
189
+ _,
190
+ {
191
+ activeStepIndex: r,
192
+ totalSteps: n
193
+ }
194
+ ),
195
+ /* @__PURE__ */ e(
196
+ j,
197
+ {
198
+ activeStepIndex: r,
199
+ totalSteps: n,
200
+ skippable: a,
201
+ primaryActionLabel: t,
202
+ onSkip: o,
203
+ onPrimaryAction: i,
204
+ showPrimaryAction: s,
205
+ showBack: p,
206
+ showSkip: u,
207
+ onBack: f,
208
+ onEndTour: c,
209
+ embedded: !0
210
+ }
211
+ )
212
+ ] });
213
+ }
214
+ function X({
215
+ activeStepIndex: r,
216
+ totalSteps: n
217
+ }) {
218
+ const { t: a } = g(), t = a("stepper.stepOfTotal", {
219
+ current: r + 1,
220
+ total: n
221
+ });
222
+ return /* @__PURE__ */ e(
223
+ "span",
224
+ {
225
+ className: "text-xs font-medium leading-none text-content-tertiary",
226
+ "aria-label": t,
227
+ children: t
228
+ }
51
229
  );
52
230
  }
53
- function x({
54
- activeStepIndex: t,
231
+ function j({
232
+ activeStepIndex: r,
55
233
  totalSteps: n,
56
234
  skippable: a,
57
- primaryActionLabel: r,
58
- onSkip: l,
235
+ primaryActionLabel: t,
236
+ onSkip: o,
59
237
  onPrimaryAction: i,
60
- showPrimaryAction: s = !0
238
+ showPrimaryAction: s = !0,
239
+ showBack: p,
240
+ showSkip: u,
241
+ embedded: f = !1,
242
+ onBack: c,
243
+ onEndTour: d,
244
+ showStepCounter: v = !0
61
245
  }) {
62
- return /* @__PURE__ */ c(
246
+ const { t: b } = g(), N = b("guidance.endTour"), k = r + 1 < n, w = p ?? (r > 0 && !!c), C = u ?? (a && k), y = v && n > 1;
247
+ return /* @__PURE__ */ l(
63
248
  "div",
64
249
  {
65
- className: h(
66
- "flex items-center justify-between gap-3 px-4",
67
- s ? "pb-4 pt-2" : "pb-2 pt-2"
250
+ className: m(
251
+ "flex items-center justify-between gap-3",
252
+ f ? "pt-0" : m("px-4", s ? "pb-4 pt-2" : "pb-2 pt-2")
68
253
  ),
69
254
  children: [
70
- n > 1 ? /* @__PURE__ */ e(
71
- y,
72
- {
73
- activeStepIndex: t,
74
- totalSteps: n
75
- }
76
- ) : /* @__PURE__ */ e("span", { "aria-hidden": "true" }),
77
- /* @__PURE__ */ c("div", { className: "ms-auto flex shrink-0 items-center gap-2", children: [
78
- a ? /* @__PURE__ */ e(m, { variant: "secondary", size: "md", onClick: l, children: v }) : null,
79
- s ? /* @__PURE__ */ e(m, { size: "md", onClick: i, children: r }) : null
255
+ /* @__PURE__ */ l("div", { className: "flex min-w-0 items-center justify-start gap-3", children: [
256
+ w && c ? /* @__PURE__ */ e(h, { variant: "tertiary", size: "md", onClick: c, children: A }) : null,
257
+ y ? /* @__PURE__ */ e(
258
+ X,
259
+ {
260
+ activeStepIndex: r,
261
+ totalSteps: n
262
+ }
263
+ ) : null
264
+ ] }),
265
+ /* @__PURE__ */ l("div", { className: "flex shrink-0 items-center gap-3", children: [
266
+ C ? /* @__PURE__ */ e(
267
+ h,
268
+ {
269
+ variant: "ghost",
270
+ size: "md",
271
+ className: "text-brand hover:bg-transparent hover:text-brand",
272
+ onClick: o,
273
+ children: J
274
+ }
275
+ ) : null,
276
+ d ? /* @__PURE__ */ e(h, { type: "button", variant: "tertiary", size: "md", onClick: d, children: N }) : null,
277
+ s ? /* @__PURE__ */ e(h, { variant: "default", size: "md", onClick: i, children: t }) : null
80
278
  ] })
81
279
  ]
82
280
  }
83
281
  );
84
282
  }
85
- function E({
86
- title: t,
283
+ function ce({
284
+ title: r,
87
285
  body: n,
88
286
  optionalFooter: a,
89
- stepIndex: r,
90
- totalSteps: l,
287
+ stepIndex: t,
288
+ totalSteps: o,
91
289
  skippable: i,
92
290
  primaryActionLabel: s,
93
- onSkip: d,
94
- onPrimaryAction: u,
95
- showPrimaryAction: f,
96
- footerHint: o,
97
- titleId: p,
98
- bodyId: g
291
+ onSkip: p,
292
+ onDismiss: u,
293
+ onPrimaryAction: f,
294
+ showPrimaryAction: c,
295
+ footerHint: d,
296
+ footerKeybinding: v,
297
+ shortcutReferences: b,
298
+ titleId: N,
299
+ bodyId: k,
300
+ canGoBack: w = !1,
301
+ advanceOn: C = "click-next",
302
+ showBack: y,
303
+ onBack: z
99
304
  }) {
100
- return /* @__PURE__ */ c("div", { className: "flex flex-col", children: [
101
- /* @__PURE__ */ c("div", { className: "px-4 pt-4", children: [
305
+ const x = !!d, P = t + 1 < o, L = i && C !== "click-next" && P, B = y ?? w, F = !x && (o > 1 || B || L || c), T = F && o > 1, q = F ? /* @__PURE__ */ e("div", { className: "border-t border-stroke-hairline bg-canvas-subtle px-5 py-3", children: /* @__PURE__ */ e(
306
+ j,
307
+ {
308
+ activeStepIndex: t,
309
+ totalSteps: o,
310
+ skippable: i,
311
+ primaryActionLabel: s,
312
+ onSkip: p,
313
+ onPrimaryAction: f,
314
+ showPrimaryAction: c,
315
+ showBack: B,
316
+ showSkip: L,
317
+ onBack: z,
318
+ showStepCounter: !T,
319
+ embedded: !0
320
+ }
321
+ ) }) : null;
322
+ return /* @__PURE__ */ l("div", { className: "relative flex flex-col", children: [
323
+ !x && !T ? /* @__PURE__ */ e(G, { onClose: u, placement: "corner" }) : null,
324
+ /* @__PURE__ */ l("div", { className: "px-5 pb-4 pt-5", children: [
325
+ x ? /* @__PURE__ */ e(
326
+ Q,
327
+ {
328
+ activeStepIndex: t,
329
+ totalSteps: o,
330
+ onDismiss: u
331
+ }
332
+ ) : null,
333
+ T ? /* @__PURE__ */ e(
334
+ V,
335
+ {
336
+ activeStepIndex: t,
337
+ totalSteps: o,
338
+ onDismiss: u
339
+ }
340
+ ) : null,
102
341
  /* @__PURE__ */ e(
103
342
  "h3",
104
343
  {
105
- id: p,
344
+ id: N,
106
345
  className: "text-base font-bold leading-5 text-content",
107
- children: t
346
+ children: r
108
347
  }
109
348
  ),
110
349
  n ? /* @__PURE__ */ e(
111
350
  "p",
112
351
  {
113
- id: g,
352
+ id: k,
114
353
  className: "mt-2 text-sm leading-snug text-content-secondary",
115
354
  children: n
116
355
  }
117
356
  ) : null,
118
- a && !o ? /* @__PURE__ */ e("p", { className: "mt-1.5 text-xs text-content-tertiary", children: a }) : null
357
+ a && !d ? /* @__PURE__ */ e("p", { className: "mt-1.5 text-xs text-content-tertiary", children: a }) : null,
358
+ b?.length ? /* @__PURE__ */ e(M, { references: b }) : null
119
359
  ] }),
120
- /* @__PURE__ */ e("div", { className: "px-4 pt-3", children: /* @__PURE__ */ e(
121
- G,
122
- {
123
- activeStepIndex: r,
124
- totalSteps: l
125
- }
126
- ) }),
127
- !!o ? /* @__PURE__ */ c(N, { children: [
128
- i ? /* @__PURE__ */ e(
129
- x,
130
- {
131
- activeStepIndex: r,
132
- totalSteps: l,
133
- skippable: i,
134
- primaryActionLabel: s,
135
- onSkip: d,
136
- onPrimaryAction: u,
137
- showPrimaryAction: !1
138
- }
139
- ) : null,
140
- /* @__PURE__ */ e($, { hint: o })
141
- ] }) : f ? /* @__PURE__ */ e(
142
- x,
360
+ q,
361
+ x ? /* @__PURE__ */ e(
362
+ W,
143
363
  {
144
- activeStepIndex: r,
145
- totalSteps: l,
146
- skippable: i,
147
- primaryActionLabel: s,
148
- onSkip: d,
149
- onPrimaryAction: u
364
+ hint: d,
365
+ keybinding: v,
366
+ activeStepIndex: t,
367
+ showBack: B,
368
+ onBack: z
150
369
  }
151
370
  ) : null
152
371
  ] });
153
372
  }
154
373
  export {
155
- y as GuidanceStepCounter,
156
- E as GuidanceStepPanel,
157
- G as GuidanceStepProgressBar,
158
- $ as GuidanceTourInteractionFooter,
159
- x as GuidanceTourNavFooter
374
+ G as GuidanceCloseButton,
375
+ V as GuidanceCoachMarkStepToolbar,
376
+ Q as GuidanceInteractionStepToolbar,
377
+ X as GuidanceStepCounter,
378
+ ce as GuidanceStepPanel,
379
+ _ as GuidanceStepProgressBar,
380
+ W as GuidanceTourActionFooter,
381
+ j as GuidanceTourNavFooter,
382
+ le as GuidanceTourProgressAndNav
160
383
  };
@@ -2,6 +2,8 @@ import { RenderInstruction } from '../../../../lib/guidance';
2
2
  import * as React from 'react';
3
3
  export declare const GUIDANCE_SPOTLIGHT_PADDING = 16;
4
4
  export declare const GUIDANCE_POPOVER_GAP = 12;
5
+ /** Extra clearance so the popover body + caret do not sit on the spotlight hole. */
6
+ export declare const GUIDANCE_POPOVER_CARET_CLEARANCE = 12;
5
7
  export declare const GUIDANCE_VIEWPORT_PADDING = 16;
6
8
  export declare const GUIDANCE_TARGET_ANIMATION_POLL_MS = 32;
7
9
  export declare const GUIDANCE_TARGET_ANIMATION_POLL_DURATION_MS = 320;
@@ -45,4 +47,5 @@ export declare function computePopoverPosition(options: {
45
47
  popoverHeight: number;
46
48
  gap?: number;
47
49
  viewportPadding?: number;
50
+ preferredPlacement?: 'top' | 'bottom' | 'left' | 'right' | 'auto';
48
51
  }): PopoverPosition;