impact-nova 2.2.8 → 2.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/data/ag-grid-react/ag-grid-header-dom.js +6 -8
- package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.d.ts +1 -1
- package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.js +25 -13
- package/dist/components/data/ag-grid-react/headers/custom-header.js +1 -1
- package/dist/components/data/ag-grid-react/headers/custom-inner-header-group.js +7 -7
- package/dist/components/data/ag-grid-react/strip-column-min-width-constraints.d.ts +3 -0
- package/dist/components/data/data-table/data-table.d.ts +1 -1
- package/dist/components/data/data-table/data-table.js +41 -39
- package/dist/components/data/data-table/data-table.types.d.ts +1 -1
- package/dist/components/flows/filter-panel/filter-panel.js +101 -94
- package/dist/components/flows/guidance/adapters/ag-grid-adapter.d.ts +13 -0
- package/dist/components/flows/guidance/adapters/ag-grid-adapter.js +30 -0
- package/dist/components/flows/guidance/adapters/ag-grid.d.ts +2 -0
- package/dist/components/flows/guidance/adapters/ag-grid.js +6 -0
- package/dist/components/flows/guidance/adapters/dialog.d.ts +1 -0
- package/dist/components/flows/guidance/adapters/dialog.js +5 -0
- package/dist/components/flows/guidance/adapters/overlay-adapter.d.ts +5 -0
- package/dist/components/flows/guidance/adapters/overlay-adapter.js +21 -0
- package/dist/components/flows/guidance/engine.d.ts +1 -0
- package/dist/components/flows/guidance/engine.js +36 -0
- package/dist/components/flows/guidance/guidance-context.d.ts +29 -0
- package/dist/components/flows/guidance/guidance-context.js +35 -0
- package/dist/components/flows/guidance/guidance-error-boundary.d.ts +16 -0
- package/dist/components/flows/guidance/guidance-error-boundary.js +49 -0
- package/dist/components/flows/guidance/guidance-layer.d.ts +2 -0
- package/dist/components/flows/guidance/guidance-layer.js +71 -0
- package/dist/components/flows/guidance/guidance-provider.d.ts +3 -0
- package/dist/components/flows/guidance/guidance-provider.js +58 -0
- package/dist/components/flows/guidance/guidance-target.d.ts +7 -0
- package/dist/components/flows/guidance/guidance-target.js +27 -0
- package/dist/components/flows/guidance/guidance.types.d.ts +1 -0
- package/dist/components/flows/guidance/help-center/filter-help-center-guides.d.ts +7 -0
- package/dist/components/flows/guidance/help-center/filter-help-center-guides.js +11 -0
- package/dist/components/flows/guidance/help-center/guide-catalog.d.ts +3 -0
- package/dist/components/flows/guidance/help-center/guide-catalog.js +118 -0
- package/dist/components/flows/guidance/help-center/help-center-header.d.ts +3 -0
- package/dist/components/flows/guidance/help-center/help-center-header.js +43 -0
- package/dist/components/flows/guidance/help-center/help-center.constants.d.ts +5 -0
- package/dist/components/flows/guidance/help-center/help-center.constants.js +7 -0
- package/dist/components/flows/guidance/help-center/help-center.d.ts +10 -0
- package/dist/components/flows/guidance/help-center/help-center.js +95 -0
- package/dist/components/flows/guidance/help-center/help-center.story-helpers.d.ts +10 -0
- package/dist/components/flows/guidance/help-center/help-center.types.d.ts +39 -0
- package/dist/components/flows/guidance/help-center.d.ts +6 -0
- package/dist/components/flows/guidance/help-center.js +19 -0
- package/dist/components/flows/guidance/hooks/use-guidance.d.ts +19 -0
- package/dist/components/flows/guidance/hooks/use-guidance.js +50 -0
- package/dist/components/flows/guidance/hooks/use-help-center.d.ts +24 -0
- package/dist/components/flows/guidance/hooks/use-help-center.js +67 -0
- package/dist/components/flows/guidance/hooks/useGuidanceOverlayGeometry.d.ts +2 -0
- package/dist/components/flows/guidance/hooks/useGuidanceOverlayGeometry.js +30 -0
- package/dist/components/flows/guidance/index.d.ts +18 -0
- package/dist/components/flows/guidance/index.js +48 -0
- package/dist/components/flows/guidance/renderers/announcement-renderer.d.ts +3 -0
- package/dist/components/flows/guidance/renderers/announcement-renderer.js +40 -0
- package/dist/components/flows/guidance/renderers/coach-mark-renderer.d.ts +2 -0
- package/dist/components/flows/guidance/renderers/coach-mark-renderer.js +14 -0
- package/dist/components/flows/guidance/renderers/guidance-card-shared.d.ts +42 -0
- package/dist/components/flows/guidance/renderers/guidance-card-shared.js +213 -0
- package/dist/components/flows/guidance/renderers/guidance-renderer-shared.d.ts +48 -0
- package/dist/components/flows/guidance/renderers/guidance-renderer-shared.js +254 -0
- package/dist/components/flows/guidance/renderers/guidance-tour-overlay.d.ts +11 -0
- package/dist/components/flows/guidance/renderers/guidance-tour-overlay.js +217 -0
- package/dist/components/flows/guidance/renderers/renderer-registry.d.ts +6 -0
- package/dist/components/flows/guidance/renderers/renderer-registry.js +19 -0
- package/dist/components/flows/guidance/renderers/spotlight-renderer.d.ts +2 -0
- package/dist/components/flows/guidance/renderers/spotlight-renderer.js +14 -0
- package/dist/components/flows/guidance/renderers.d.ts +4 -0
- package/dist/components/flows/guidance/renderers.js +11 -0
- package/dist/components/flows/guidance/target.d.ts +3 -0
- package/dist/components/flows/guidance/target.js +6 -0
- package/dist/components/flows/guidance/triggers.d.ts +2 -0
- package/dist/components/flows/guidance/triggers.js +16 -0
- package/dist/components/flows/guidance/use-guidance-target.d.ts +5 -0
- package/dist/components/flows/guidance/use-guidance-target.js +16 -0
- package/dist/components/flows/guidance/utils/motion-settle.d.ts +2 -0
- package/dist/components/flows/guidance/utils/motion-settle.js +17 -0
- package/dist/i18n/defaultMessages.d.ts +13 -0
- package/dist/i18n/defaultMessages.js +23 -11
- package/dist/i18n/index.d.ts +1 -1
- package/dist/i18n/locales/de.js +12 -0
- package/dist/i18n/locales/es.js +12 -0
- package/dist/i18n/locales/hi.js +12 -0
- package/dist/i18n/locales/kn.js +12 -0
- package/dist/impact-nova-components.css +52 -10
- package/dist/impact-nova.css +1 -1
- package/dist/lib/guidance/analytics/analytics-adapter.d.ts +16 -0
- package/dist/lib/guidance/analytics/analytics-adapter.js +50 -0
- package/dist/lib/guidance/engine/guidance-engine.d.ts +74 -0
- package/dist/lib/guidance/engine/guidance-engine.js +384 -0
- package/dist/lib/guidance/engine/guide-registry.d.ts +21 -0
- package/dist/lib/guidance/engine/guide-registry.js +71 -0
- package/dist/lib/guidance/engine/manifest-validator.d.ts +4 -0
- package/dist/lib/guidance/engine/manifest-validator.js +102 -0
- package/dist/lib/guidance/engine/step-navigation.d.ts +5 -0
- package/dist/lib/guidance/engine/step-navigation.js +35 -0
- package/dist/lib/guidance/index.d.ts +12 -0
- package/dist/lib/guidance/storage/storage-adapter.d.ts +10 -0
- package/dist/lib/guidance/storage/storage-adapter.js +51 -0
- package/dist/lib/guidance/storage/storage-keys.d.ts +10 -0
- package/dist/lib/guidance/storage/storage-keys.js +23 -0
- package/dist/lib/guidance/targets/ref-registry.d.ts +12 -0
- package/dist/lib/guidance/targets/ref-registry.js +65 -0
- package/dist/lib/guidance/targets/target-resolver.d.ts +13 -0
- package/dist/lib/guidance/targets/target-resolver.js +85 -0
- package/dist/lib/guidance/triggers/built-in-triggers.d.ts +14 -0
- package/dist/lib/guidance/triggers/built-in-triggers.js +88 -0
- package/dist/lib/guidance/triggers/trigger-registry.d.ts +9 -0
- package/dist/lib/guidance/triggers/trigger-registry.js +44 -0
- package/dist/lib/guidance/types/guidance.types.d.ts +181 -0
- package/dist/lib/overflow/is-line-clamp-text-clipped.d.ts +2 -0
- package/dist/lib/overflow/is-line-clamp-text-clipped.js +33 -0
- package/dist/lib/overflow/is-text-overflowing.d.ts +1 -0
- package/dist/lib/overflow/is-text-overflowing.js +8 -3
- package/dist/llms/rules/installation.js +1 -1
- package/dist/llms/rules/requirements.js +1 -1
- package/package.json +51 -22
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createDialogOpenedTriggerPlugin, getOverlayScopeRoot, } from './overlay-adapter';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
function t() {
|
|
2
|
+
if (typeof document > "u")
|
|
3
|
+
return null;
|
|
4
|
+
const e = document.querySelectorAll(
|
|
5
|
+
'[role="dialog"][data-state="open"], [role="alertdialog"][data-state="open"], [data-component="sheet-content"][data-state="open"]'
|
|
6
|
+
);
|
|
7
|
+
return e.length ? e[e.length - 1] : null;
|
|
8
|
+
}
|
|
9
|
+
function n() {
|
|
10
|
+
return {
|
|
11
|
+
type: "trigger.dialog-opened",
|
|
12
|
+
evaluate: () => t() !== null
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function o() {
|
|
16
|
+
return t();
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
n as createDialogOpenedTriggerPlugin,
|
|
20
|
+
o as getOverlayScopeRoot
|
|
21
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../../../lib/guidance';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { GuidanceEngine as t } from "../../../lib/guidance/engine/guidance-engine.js";
|
|
2
|
+
import { GuideRegistry as i } from "../../../lib/guidance/engine/guide-registry.js";
|
|
3
|
+
import { sanitizeGuideManifest as d, validateGuideManifest as g } from "../../../lib/guidance/engine/manifest-validator.js";
|
|
4
|
+
import { getNextStepId as l, getStepById as p, resolveLocalizedStepContent as s } from "../../../lib/guidance/engine/step-navigation.js";
|
|
5
|
+
import { TriggerPluginRegistry as f } from "../../../lib/guidance/triggers/trigger-registry.js";
|
|
6
|
+
import { registerBuiltInTriggerPlugins as m } from "../../../lib/guidance/triggers/built-in-triggers.js";
|
|
7
|
+
import { LocalStorageGuidanceAdapter as x, defaultGuidanceStorageAdapter as G } from "../../../lib/guidance/storage/storage-adapter.js";
|
|
8
|
+
import { buildCampaignStorageKey as A, buildGuidanceStorageKey as R, buildSessionStatsKey as T } from "../../../lib/guidance/storage/storage-keys.js";
|
|
9
|
+
import { NoopGuidanceAnalyticsAdapter as v, SamplingGuidanceAnalyticsAdapter as I, defaultGuidanceAnalyticsAdapter as K } from "../../../lib/guidance/analytics/analytics-adapter.js";
|
|
10
|
+
import { GuidanceTargetRefRegistry as z, globalGuidanceTargetRefRegistry as B } from "../../../lib/guidance/targets/ref-registry.js";
|
|
11
|
+
import { TargetResolver as F, resolveTargetSynchronously as L, waitForTargetResolved as M, waitForTargetVisible as N } from "../../../lib/guidance/targets/target-resolver.js";
|
|
12
|
+
export {
|
|
13
|
+
t as GuidanceEngine,
|
|
14
|
+
z as GuidanceTargetRefRegistry,
|
|
15
|
+
i as GuideRegistry,
|
|
16
|
+
x as LocalStorageGuidanceAdapter,
|
|
17
|
+
v as NoopGuidanceAnalyticsAdapter,
|
|
18
|
+
I as SamplingGuidanceAnalyticsAdapter,
|
|
19
|
+
F as TargetResolver,
|
|
20
|
+
f as TriggerPluginRegistry,
|
|
21
|
+
A as buildCampaignStorageKey,
|
|
22
|
+
R as buildGuidanceStorageKey,
|
|
23
|
+
T as buildSessionStatsKey,
|
|
24
|
+
K as defaultGuidanceAnalyticsAdapter,
|
|
25
|
+
G as defaultGuidanceStorageAdapter,
|
|
26
|
+
l as getNextStepId,
|
|
27
|
+
p as getStepById,
|
|
28
|
+
B as globalGuidanceTargetRefRegistry,
|
|
29
|
+
m as registerBuiltInTriggerPlugins,
|
|
30
|
+
s as resolveLocalizedStepContent,
|
|
31
|
+
L as resolveTargetSynchronously,
|
|
32
|
+
d as sanitizeGuideManifest,
|
|
33
|
+
g as validateGuideManifest,
|
|
34
|
+
M as waitForTargetResolved,
|
|
35
|
+
N as waitForTargetVisible
|
|
36
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { GuidanceAnalyticsAdapter, GuidanceErrorReporter, GuidancePlugin, GuidanceStorageAdapter, GuideManifest, GuidanceEngine } from '../../../lib/guidance';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface GuidanceProviderProps {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
storage: GuidanceStorageAdapter;
|
|
6
|
+
analytics?: GuidanceAnalyticsAdapter;
|
|
7
|
+
plugins?: GuidancePlugin[];
|
|
8
|
+
locale?: string;
|
|
9
|
+
tenantId?: string;
|
|
10
|
+
appVersion?: string;
|
|
11
|
+
consentRequired?: boolean;
|
|
12
|
+
maxGuidesPerSession?: number;
|
|
13
|
+
cooldownBetweenGuides?: number;
|
|
14
|
+
debug?: boolean;
|
|
15
|
+
errorReporter?: GuidanceErrorReporter;
|
|
16
|
+
mfeBridge?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface GuidanceContextValue {
|
|
19
|
+
engine: GuidanceEngine;
|
|
20
|
+
debug: boolean;
|
|
21
|
+
locale: string;
|
|
22
|
+
registerGuide: (manifest: GuideManifest, routeScope?: string) => void;
|
|
23
|
+
unregisterGuide: (guideId: string) => void;
|
|
24
|
+
unregisterRouteScope: (routeScope: string) => void;
|
|
25
|
+
}
|
|
26
|
+
export declare const GuidanceContext: React.Context<GuidanceContextValue | null>;
|
|
27
|
+
export declare function useGuidanceContext(): GuidanceContextValue;
|
|
28
|
+
export type GuidanceEngineProviderConfig = Omit<GuidanceProviderProps, 'children'>;
|
|
29
|
+
export declare function createGuidanceEngine(props: GuidanceEngineProviderConfig): GuidanceEngine;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as i from "react";
|
|
2
|
+
import { GuidanceEngine as o } from "../../../lib/guidance/engine/guidance-engine.js";
|
|
3
|
+
const a = i.createContext(
|
|
4
|
+
null
|
|
5
|
+
);
|
|
6
|
+
function c() {
|
|
7
|
+
const e = i.useContext(a);
|
|
8
|
+
if (!e)
|
|
9
|
+
throw new Error("useGuidanceContext must be used within GuidanceProvider");
|
|
10
|
+
return e;
|
|
11
|
+
}
|
|
12
|
+
function s(e) {
|
|
13
|
+
const r = {
|
|
14
|
+
tenantId: e.tenantId ?? "default",
|
|
15
|
+
locale: e.locale ?? "en",
|
|
16
|
+
appVersion: e.appVersion ?? "0.0.0",
|
|
17
|
+
maxGuidesPerSession: e.maxGuidesPerSession ?? 3,
|
|
18
|
+
cooldownBetweenGuides: e.cooldownBetweenGuides ?? 3e4,
|
|
19
|
+
maxConcurrentGuides: 1,
|
|
20
|
+
consentRequired: e.consentRequired ?? !1,
|
|
21
|
+
debug: e.debug ?? !1,
|
|
22
|
+
storage: e.storage,
|
|
23
|
+
analytics: e.analytics ?? { track: () => {
|
|
24
|
+
} },
|
|
25
|
+
errorReporter: e.errorReporter
|
|
26
|
+
}, t = new o(r);
|
|
27
|
+
for (const n of e.plugins ?? [])
|
|
28
|
+
n.evaluate && t.triggers.register(n), n.resolve && t.resolver.registerAdapter(n);
|
|
29
|
+
return t;
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
a as GuidanceContext,
|
|
33
|
+
s as createGuidanceEngine,
|
|
34
|
+
c as useGuidanceContext
|
|
35
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
interface GuidanceErrorBoundaryProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
onError?: (error: Error) => void;
|
|
5
|
+
}
|
|
6
|
+
interface GuidanceErrorBoundaryState {
|
|
7
|
+
hasError: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class GuidanceErrorBoundary extends React.Component<GuidanceErrorBoundaryProps, GuidanceErrorBoundaryState> {
|
|
10
|
+
constructor(props: GuidanceErrorBoundaryProps);
|
|
11
|
+
static getDerivedStateFromError(): GuidanceErrorBoundaryState;
|
|
12
|
+
componentDidCatch(error: Error): void;
|
|
13
|
+
render(): React.ReactNode;
|
|
14
|
+
}
|
|
15
|
+
export declare function GuidanceDebugPanel(): React.ReactElement | null;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsxs as t, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import * as a from "react";
|
|
3
|
+
import { useGuidanceContext as d } from "./guidance-context.js";
|
|
4
|
+
class u extends a.Component {
|
|
5
|
+
constructor(e) {
|
|
6
|
+
super(e), this.state = { hasError: !1 };
|
|
7
|
+
}
|
|
8
|
+
static getDerivedStateFromError() {
|
|
9
|
+
return { hasError: !0 };
|
|
10
|
+
}
|
|
11
|
+
componentDidCatch(e) {
|
|
12
|
+
this.props.onError?.(e);
|
|
13
|
+
}
|
|
14
|
+
render() {
|
|
15
|
+
return this.state.hasError ? null : this.props.children;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function l() {
|
|
19
|
+
const { engine: r, debug: e } = d();
|
|
20
|
+
if (!e)
|
|
21
|
+
return null;
|
|
22
|
+
const s = r.registry.getAll(), n = r.state;
|
|
23
|
+
return /* @__PURE__ */ t(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
"data-component": "guidance-debug-panel",
|
|
27
|
+
className: "fixed bottom-4 right-4 z-[9999] max-w-sm rounded-md border border-border-default bg-surface-elevated p-3 text-xs shadow-lg",
|
|
28
|
+
children: [
|
|
29
|
+
/* @__PURE__ */ o("div", { className: "font-semibold text-content-primary", children: "Guidance Debug" }),
|
|
30
|
+
/* @__PURE__ */ t("div", { className: "mt-1 text-content-secondary", children: [
|
|
31
|
+
"Status: ",
|
|
32
|
+
n.status
|
|
33
|
+
] }),
|
|
34
|
+
/* @__PURE__ */ t("div", { className: "mt-1 text-content-secondary", children: [
|
|
35
|
+
"Registered guides: ",
|
|
36
|
+
s.length
|
|
37
|
+
] }),
|
|
38
|
+
n.guideId ? /* @__PURE__ */ t("div", { className: "mt-1 text-content-secondary", children: [
|
|
39
|
+
"Active: ",
|
|
40
|
+
n.guideId
|
|
41
|
+
] }) : null
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
export {
|
|
47
|
+
l as GuidanceDebugPanel,
|
|
48
|
+
u as GuidanceErrorBoundary
|
|
49
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { jsxs as i, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import * as s from "react";
|
|
3
|
+
import { useSyncExternalStore as d } from "react";
|
|
4
|
+
import { useGuidanceContext as m } from "./guidance-context.js";
|
|
5
|
+
import { SpotlightRenderer as p } from "./renderers/spotlight-renderer.js";
|
|
6
|
+
import { CoachMarkRenderer as f } from "./renderers/coach-mark-renderer.js";
|
|
7
|
+
import { AnnouncementRenderer as b } from "./renderers/announcement-renderer.js";
|
|
8
|
+
import { endTourScrollSnapshot as h } from "./renderers/guidance-renderer-shared.js";
|
|
9
|
+
import { Button as l } from "../../primitives/button/button.js";
|
|
10
|
+
function k(e, n) {
|
|
11
|
+
const r = {
|
|
12
|
+
instruction: e,
|
|
13
|
+
...n
|
|
14
|
+
};
|
|
15
|
+
switch (e.renderer) {
|
|
16
|
+
case "spotlight":
|
|
17
|
+
return /* @__PURE__ */ t(p, { ...r });
|
|
18
|
+
case "coach-mark":
|
|
19
|
+
return /* @__PURE__ */ t(f, { ...r });
|
|
20
|
+
case "announcement":
|
|
21
|
+
return /* @__PURE__ */ t(b, { ...r });
|
|
22
|
+
default:
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function G() {
|
|
27
|
+
const { engine: e } = m();
|
|
28
|
+
s.useEffect(() => e.on("guideEnd", () => {
|
|
29
|
+
h();
|
|
30
|
+
}), [e]);
|
|
31
|
+
const n = d(
|
|
32
|
+
(o) => e.subscribe(o),
|
|
33
|
+
() => e.state,
|
|
34
|
+
() => ({ status: "idle" })
|
|
35
|
+
), r = d(
|
|
36
|
+
(o) => e.subscribe(o),
|
|
37
|
+
() => e.getRenderInstruction(),
|
|
38
|
+
() => null
|
|
39
|
+
), a = s.useCallback(() => {
|
|
40
|
+
e.advanceStep();
|
|
41
|
+
}, [e]), u = s.useCallback(() => {
|
|
42
|
+
e.skipStep();
|
|
43
|
+
}, [e]), c = s.useCallback(() => {
|
|
44
|
+
e.dismiss("session");
|
|
45
|
+
}, [e]);
|
|
46
|
+
return n.status === "blocked" ? /* @__PURE__ */ i(
|
|
47
|
+
"div",
|
|
48
|
+
{
|
|
49
|
+
"data-component": "guidance-blocked",
|
|
50
|
+
className: "fixed bottom-4 left-1/2 z-50 -translate-x-1/2 rounded-md border border-border-default bg-surface-elevated px-4 py-3 shadow-lg",
|
|
51
|
+
role: "status",
|
|
52
|
+
children: [
|
|
53
|
+
/* @__PURE__ */ i("p", { className: "text-sm text-content-secondary", children: [
|
|
54
|
+
"Guide step is blocked: ",
|
|
55
|
+
n.reason
|
|
56
|
+
] }),
|
|
57
|
+
/* @__PURE__ */ i("div", { className: "mt-2 flex gap-2", children: [
|
|
58
|
+
/* @__PURE__ */ t(l, { size: "sm", onClick: a, children: "Retry" }),
|
|
59
|
+
/* @__PURE__ */ t(l, { variant: "secondary", size: "sm", onClick: c, children: "Dismiss" })
|
|
60
|
+
] })
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
) : r ? k(r, {
|
|
64
|
+
onNext: a,
|
|
65
|
+
onSkip: u,
|
|
66
|
+
onDismiss: c
|
|
67
|
+
}) : null;
|
|
68
|
+
}
|
|
69
|
+
export {
|
|
70
|
+
G as GuidanceLayer
|
|
71
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { jsx as n, jsxs as l } from "react/jsx-runtime";
|
|
2
|
+
import * as i from "react";
|
|
3
|
+
import { useSyncExternalStore as g } from "react";
|
|
4
|
+
import { createGuidanceEngine as d, GuidanceContext as m } from "./guidance-context.js";
|
|
5
|
+
import { GuidanceDebugPanel as f, GuidanceErrorBoundary as G } from "./guidance-error-boundary.js";
|
|
6
|
+
import { GuidanceLayer as b } from "./guidance-layer.js";
|
|
7
|
+
import { registerRendererPlugins as x } from "./renderers/renderer-registry.js";
|
|
8
|
+
function p({
|
|
9
|
+
children: s,
|
|
10
|
+
...t
|
|
11
|
+
}) {
|
|
12
|
+
const [r] = i.useState(() => d(t));
|
|
13
|
+
i.useEffect(() => {
|
|
14
|
+
x();
|
|
15
|
+
for (const e of t.plugins ?? [])
|
|
16
|
+
e.evaluate && r.triggers.register(e), e.resolve && r.resolver.registerAdapter(e);
|
|
17
|
+
}, [r, t.plugins]);
|
|
18
|
+
const o = i.useMemo(
|
|
19
|
+
() => ({
|
|
20
|
+
engine: r,
|
|
21
|
+
debug: t.debug ?? !1,
|
|
22
|
+
locale: t.locale ?? "en",
|
|
23
|
+
registerGuide: (e, c) => {
|
|
24
|
+
r.registerGuide(e, c);
|
|
25
|
+
},
|
|
26
|
+
unregisterGuide: (e) => {
|
|
27
|
+
r.unregisterGuide(e);
|
|
28
|
+
},
|
|
29
|
+
unregisterRouteScope: (e) => {
|
|
30
|
+
r.unregisterRouteScope(e);
|
|
31
|
+
}
|
|
32
|
+
}),
|
|
33
|
+
[r, t.debug, t.locale]
|
|
34
|
+
), u = g(
|
|
35
|
+
(e) => r.subscribe(e),
|
|
36
|
+
() => r.state.status,
|
|
37
|
+
() => "idle"
|
|
38
|
+
), a = u === "active" || u === "blocked" || u === "evaluating";
|
|
39
|
+
return /* @__PURE__ */ n(m.Provider, { value: o, children: /* @__PURE__ */ l("div", { "data-component": "guidance", className: "contents", children: [
|
|
40
|
+
s,
|
|
41
|
+
t.debug ? /* @__PURE__ */ n(f, {}) : null,
|
|
42
|
+
a ? /* @__PURE__ */ n(
|
|
43
|
+
G,
|
|
44
|
+
{
|
|
45
|
+
onError: (e) => {
|
|
46
|
+
r.reportError({
|
|
47
|
+
code: "render_error",
|
|
48
|
+
message: e.message
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
children: /* @__PURE__ */ n(b, {})
|
|
52
|
+
}
|
|
53
|
+
) : null
|
|
54
|
+
] }) });
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
p as GuidanceProvider
|
|
58
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as u } from "react/jsx-runtime";
|
|
2
|
+
import * as i from "react";
|
|
3
|
+
import { useGuidanceContext as c } from "./guidance-context.js";
|
|
4
|
+
function m({
|
|
5
|
+
targetId: e,
|
|
6
|
+
scope: t,
|
|
7
|
+
children: o
|
|
8
|
+
}) {
|
|
9
|
+
const { engine: n } = c(), r = i.useRef(null);
|
|
10
|
+
return i.useEffect(() => {
|
|
11
|
+
const a = r.current;
|
|
12
|
+
if (a)
|
|
13
|
+
return n.targets.register(e, a, t);
|
|
14
|
+
}, [n, e, t]), /* @__PURE__ */ u(
|
|
15
|
+
"span",
|
|
16
|
+
{
|
|
17
|
+
ref: r,
|
|
18
|
+
"data-guidance-target": e,
|
|
19
|
+
"data-component": "guidance-target",
|
|
20
|
+
className: "inline-flex",
|
|
21
|
+
children: o
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
m as GuidanceTarget
|
|
27
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { GuidanceContextValue, GuidanceProviderProps, } from './guidance-context';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { GuideManifest } from '../../../../lib/guidance';
|
|
2
|
+
export interface FilterHelpCenterGuidesOptions {
|
|
3
|
+
categoryValue: string;
|
|
4
|
+
searchQuery: string;
|
|
5
|
+
allCategoryValue?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function filterHelpCenterGuides(guides: GuideManifest[], options: FilterHelpCenterGuidesOptions): GuideManifest[];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { HELP_CENTER_ALL_CATEGORY_VALUE as u } from "./help-center.constants.js";
|
|
2
|
+
function y(o, e) {
|
|
3
|
+
const l = e.allCategoryValue ?? u, r = e.categoryValue === l ? null : e.categoryValue, t = e.searchQuery.trim().toLowerCase();
|
|
4
|
+
return o.filter((a) => {
|
|
5
|
+
const c = a.metadata.category ?? "general", s = !r || c === r, n = !t || a.metadata.title?.toLowerCase().includes(t) || a.metadata.description?.toLowerCase().includes(t) || a.id.toLowerCase().includes(t);
|
|
6
|
+
return s && n;
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
y as filterHelpCenterGuides
|
|
11
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { jsx as e, jsxs as o } from "react/jsx-runtime";
|
|
2
|
+
import * as f from "react";
|
|
3
|
+
import { useVirtualizer as x } from "@tanstack/react-virtual";
|
|
4
|
+
import { Button as g } from "../../../primitives/button/button.js";
|
|
5
|
+
import { cn as u } from "../../../../lib/utils.js";
|
|
6
|
+
import { GUIDE_LIST_VIRTUALIZATION_THRESHOLD as b, GUIDE_LIST_ROW_GAP as N, GUIDE_CARD_ESTIMATE_HEIGHT as v } from "./help-center.constants.js";
|
|
7
|
+
/* empty css */
|
|
8
|
+
function R({
|
|
9
|
+
guides: t,
|
|
10
|
+
onLaunchGuide: r,
|
|
11
|
+
replayLabel: n = "Replay",
|
|
12
|
+
emptyStateMessage: i = "No guides match your search.",
|
|
13
|
+
getStepCountLabel: d = (a) => `${a} steps`,
|
|
14
|
+
className: m
|
|
15
|
+
}) {
|
|
16
|
+
const a = f.useRef(null), p = t.length >= b, c = x({
|
|
17
|
+
count: p ? t.length : 0,
|
|
18
|
+
getScrollElement: () => a.current,
|
|
19
|
+
estimateSize: () => v,
|
|
20
|
+
gap: N,
|
|
21
|
+
overscan: 5
|
|
22
|
+
});
|
|
23
|
+
return t.length ? /* @__PURE__ */ e(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
ref: a,
|
|
27
|
+
className: u(
|
|
28
|
+
"guidance-help-center-scroll min-h-0 flex-1 overflow-y-auto px-4 pb-3 pt-3",
|
|
29
|
+
m
|
|
30
|
+
),
|
|
31
|
+
"data-component": "guidance-help-center-scroll",
|
|
32
|
+
children: p ? /* @__PURE__ */ e(
|
|
33
|
+
"div",
|
|
34
|
+
{
|
|
35
|
+
className: "relative w-full",
|
|
36
|
+
"data-component": "guidance-guide-catalog",
|
|
37
|
+
style: { height: c.getTotalSize() },
|
|
38
|
+
children: c.getVirtualItems().map((l) => {
|
|
39
|
+
const s = t[l.index];
|
|
40
|
+
return s ? /* @__PURE__ */ e(
|
|
41
|
+
"div",
|
|
42
|
+
{
|
|
43
|
+
ref: c.measureElement,
|
|
44
|
+
"data-index": l.index,
|
|
45
|
+
className: "absolute left-0 top-0 w-full",
|
|
46
|
+
style: { transform: `translateY(${l.start}px)` },
|
|
47
|
+
children: /* @__PURE__ */ e(
|
|
48
|
+
h,
|
|
49
|
+
{
|
|
50
|
+
guide: s,
|
|
51
|
+
onLaunchGuide: r,
|
|
52
|
+
replayLabel: n,
|
|
53
|
+
getStepCountLabel: d
|
|
54
|
+
}
|
|
55
|
+
)
|
|
56
|
+
},
|
|
57
|
+
s.id
|
|
58
|
+
) : null;
|
|
59
|
+
})
|
|
60
|
+
}
|
|
61
|
+
) : /* @__PURE__ */ e(
|
|
62
|
+
"ul",
|
|
63
|
+
{
|
|
64
|
+
className: "flex flex-col gap-2",
|
|
65
|
+
"data-component": "guidance-guide-catalog",
|
|
66
|
+
children: t.map((l) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(
|
|
67
|
+
h,
|
|
68
|
+
{
|
|
69
|
+
guide: l,
|
|
70
|
+
onLaunchGuide: r,
|
|
71
|
+
replayLabel: n,
|
|
72
|
+
getStepCountLabel: d
|
|
73
|
+
}
|
|
74
|
+
) }, l.id))
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
) : /* @__PURE__ */ e(
|
|
79
|
+
"div",
|
|
80
|
+
{
|
|
81
|
+
className: u(
|
|
82
|
+
"guidance-help-center-scroll min-h-0 flex-1 overflow-y-auto px-4 pb-3 pt-3",
|
|
83
|
+
m
|
|
84
|
+
),
|
|
85
|
+
"data-component": "guidance-help-center-scroll",
|
|
86
|
+
children: /* @__PURE__ */ e("p", { className: "rounded-lg border border-dashed border-border-subtle px-4 py-8 text-center text-sm text-content-secondary", children: i })
|
|
87
|
+
}
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
function h({
|
|
91
|
+
guide: t,
|
|
92
|
+
onLaunchGuide: r,
|
|
93
|
+
replayLabel: n,
|
|
94
|
+
getStepCountLabel: i
|
|
95
|
+
}) {
|
|
96
|
+
return /* @__PURE__ */ e("article", { className: "rounded-lg border border-border-subtle bg-canvas-elevated px-3 py-2.5", children: /* @__PURE__ */ o("div", { className: "flex items-start justify-between gap-3", children: [
|
|
97
|
+
/* @__PURE__ */ o("div", { className: "min-w-0 flex-1", children: [
|
|
98
|
+
/* @__PURE__ */ o("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
99
|
+
/* @__PURE__ */ e("h3", { className: "truncate text-sm font-semibold text-content-primary", children: t.metadata.title ?? t.id }),
|
|
100
|
+
/* @__PURE__ */ e("span", { className: "shrink-0 rounded-full bg-brand-tint px-2 py-0.5 text-[11px] font-medium leading-none text-brand", children: i(t.steps.length) })
|
|
101
|
+
] }),
|
|
102
|
+
t.metadata.description ? /* @__PURE__ */ e("p", { className: "mt-1 line-clamp-2 text-xs leading-relaxed text-content-secondary", children: t.metadata.description }) : null
|
|
103
|
+
] }),
|
|
104
|
+
/* @__PURE__ */ e(
|
|
105
|
+
g,
|
|
106
|
+
{
|
|
107
|
+
variant: "outline",
|
|
108
|
+
size: "sm",
|
|
109
|
+
className: "shrink-0",
|
|
110
|
+
onClick: () => r(t.id),
|
|
111
|
+
children: n
|
|
112
|
+
}
|
|
113
|
+
)
|
|
114
|
+
] }) });
|
|
115
|
+
}
|
|
116
|
+
export {
|
|
117
|
+
R as GuideCatalog
|
|
118
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsxs as n, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import { SheetTitle as s, SheetClose as c } from "../../../feedback/sheet/sheet.js";
|
|
4
|
+
import { Button as l } from "../../../primitives/button/button.js";
|
|
5
|
+
import { Cross as m } from "impact-nova-icons";
|
|
6
|
+
import { useImpactNovaI18n as p } from "../../../../i18n/use-impact-nova-i18n.js";
|
|
7
|
+
import { cn as d } from "../../../../lib/utils.js";
|
|
8
|
+
function C({
|
|
9
|
+
title: o,
|
|
10
|
+
children: a,
|
|
11
|
+
className: i
|
|
12
|
+
}) {
|
|
13
|
+
const { t: r } = p(), t = o ?? r("helpCenter.title");
|
|
14
|
+
return /* @__PURE__ */ n(
|
|
15
|
+
"div",
|
|
16
|
+
{
|
|
17
|
+
"data-component": "guidance-help-center-header",
|
|
18
|
+
className: d(
|
|
19
|
+
"flex shrink-0 items-center justify-between gap-3 border-b bg-canvas-elevated px-4 py-[9px]",
|
|
20
|
+
i
|
|
21
|
+
),
|
|
22
|
+
children: [
|
|
23
|
+
typeof t == "string" ? /* @__PURE__ */ e(s, { className: "shrink-0 text-lg font-bold text-content", children: t }) : t,
|
|
24
|
+
/* @__PURE__ */ n("div", { className: "flex items-center gap-2", children: [
|
|
25
|
+
a,
|
|
26
|
+
/* @__PURE__ */ e(c, { asChild: !0, children: /* @__PURE__ */ e(
|
|
27
|
+
l,
|
|
28
|
+
{
|
|
29
|
+
variant: "secondary",
|
|
30
|
+
size: "icon",
|
|
31
|
+
"aria-label": r("aria.close"),
|
|
32
|
+
"data-component": "guidance-help-center-close",
|
|
33
|
+
children: /* @__PURE__ */ e(m, { className: "!h-3 !w-3" })
|
|
34
|
+
}
|
|
35
|
+
) })
|
|
36
|
+
] })
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
C as HelpCenterHeader
|
|
43
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const HELP_CENTER_ALL_CATEGORY_VALUE = "all";
|
|
2
|
+
export declare const GUIDE_CARD_ESTIMATE_HEIGHT = 72;
|
|
3
|
+
export declare const GUIDE_LIST_ROW_GAP = 8;
|
|
4
|
+
/** Below this count, a simple list is rendered instead of windowing. */
|
|
5
|
+
export declare const GUIDE_LIST_VIRTUALIZATION_THRESHOLD = 12;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HelpCenterBodyProps, HelpCenterCategoryTabsProps, HelpCenterContentProps, HelpCenterFooterProps, HelpCenterProps } from './help-center.types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export declare function HelpCenter({ open, onOpenChange, children, className, }: HelpCenterProps): React.ReactElement;
|
|
4
|
+
export declare function HelpCenterContent({ children, className, }: HelpCenterContentProps): React.ReactElement;
|
|
5
|
+
export declare function HelpCenterCategoryTabs({ categories, allCategoryLabel, className, }: HelpCenterCategoryTabsProps): React.ReactElement;
|
|
6
|
+
export declare function HelpCenterBody({ children, className, }: HelpCenterBodyProps): React.ReactElement;
|
|
7
|
+
export declare function HelpCenterFooter({ children, className, }: HelpCenterFooterProps): React.ReactElement;
|
|
8
|
+
export { HelpCenterHeader } from './help-center-header';
|
|
9
|
+
export { GuideCatalog } from './guide-catalog';
|
|
10
|
+
export type { GuideCatalogProps } from './help-center.types';
|