@syntrologie/adapt-nav 2.16.0 → 2.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/NavWidgetLit.d.ts.map +1 -1
- package/dist/chunk-HMLY7DHA.js +16 -0
- package/dist/chunk-HMLY7DHA.js.map +7 -0
- package/dist/chunk-ZYHZ6JAD.js +447 -0
- package/dist/chunk-ZYHZ6JAD.js.map +7 -0
- package/dist/editor.d.ts +42 -21
- package/dist/editor.d.ts.map +1 -1
- package/dist/editor.js +310 -313
- package/dist/editor.js.map +7 -0
- package/dist/resolveNavTarget.d.ts +61 -0
- package/dist/resolveNavTarget.d.ts.map +1 -0
- package/dist/resolveNavTarget.test.d.ts +2 -0
- package/dist/resolveNavTarget.test.d.ts.map +1 -0
- package/dist/runtime.d.ts +3 -4
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +612 -221
- package/dist/runtime.js.map +7 -0
- package/dist/schema.d.ts +182 -72
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +155 -125
- package/dist/schema.js.map +7 -0
- package/package.json +9 -24
- package/dist/NavWidget.d.ts +0 -31
- package/dist/NavWidget.d.ts.map +0 -1
- package/dist/NavWidget.js +0 -476
- package/dist/NavWidgetLit.js +0 -495
- package/dist/NavWidgetLit.test.js +0 -199
- package/dist/cdn.d.ts +0 -62
- package/dist/cdn.d.ts.map +0 -1
- package/dist/cdn.js +0 -48
- package/dist/editor-lit.d.ts +0 -49
- package/dist/editor-lit.d.ts.map +0 -1
- package/dist/editor-lit.js +0 -319
- package/dist/runtime-lit.d.ts +0 -108
- package/dist/runtime-lit.d.ts.map +0 -1
- package/dist/runtime-lit.js +0 -241
- package/dist/summarize.js +0 -51
- package/dist/types.js +0 -18
- package/node_modules/@syntro/design-system/README.md +0 -335
- package/node_modules/@syntro/design-system/dist/assets/syntrologie-logo.svg +0 -21
- package/node_modules/@syntro/design-system/dist/assets/syntrologie-logomark.svg +0 -10
- package/node_modules/@syntro/design-system/dist/index.d.ts +0 -8
- package/node_modules/@syntro/design-system/dist/index.d.ts.map +0 -1
- package/node_modules/@syntro/design-system/dist/index.js +0 -7
- package/node_modules/@syntro/design-system/dist/tailwind-preset.d.ts +0 -19
- package/node_modules/@syntro/design-system/dist/tailwind-preset.d.ts.map +0 -1
- package/node_modules/@syntro/design-system/dist/tailwind-preset.js +0 -455
- package/node_modules/@syntro/design-system/dist/tokens/colors.css +0 -464
- package/node_modules/@syntro/design-system/dist/tokens/colors.d.ts +0 -874
- package/node_modules/@syntro/design-system/dist/tokens/colors.d.ts.map +0 -1
- package/node_modules/@syntro/design-system/dist/tokens/colors.js +0 -564
- package/node_modules/@syntro/design-system/dist/tokens/effects.css +0 -43
- package/node_modules/@syntro/design-system/dist/tokens/effects.d.ts +0 -139
- package/node_modules/@syntro/design-system/dist/tokens/effects.d.ts.map +0 -1
- package/node_modules/@syntro/design-system/dist/tokens/effects.js +0 -121
- package/node_modules/@syntro/design-system/dist/tokens/index.d.ts +0 -12
- package/node_modules/@syntro/design-system/dist/tokens/index.d.ts.map +0 -1
- package/node_modules/@syntro/design-system/dist/tokens/index.js +0 -11
- package/node_modules/@syntro/design-system/dist/tokens/panel-shell.d.ts +0 -93
- package/node_modules/@syntro/design-system/dist/tokens/panel-shell.d.ts.map +0 -1
- package/node_modules/@syntro/design-system/dist/tokens/panel-shell.js +0 -72
- package/node_modules/@syntro/design-system/package.json +0 -55
- package/node_modules/@syntro/design-system/src/assets/syntrologie-logo.svg +0 -21
- package/node_modules/@syntro/design-system/src/assets/syntrologie-logomark.svg +0 -10
- package/node_modules/@syntrologie/sdk-contracts/dist/index.d.ts +0 -129
- package/node_modules/@syntrologie/sdk-contracts/dist/index.js +0 -17
- package/node_modules/@syntrologie/sdk-contracts/dist/schemas.d.ts +0 -2296
- package/node_modules/@syntrologie/sdk-contracts/dist/schemas.js +0 -361
- package/node_modules/@syntrologie/sdk-contracts/package.json +0 -33
- package/node_modules/@syntrologie/shared-editor-ui/dist/cn.d.ts +0 -2
- package/node_modules/@syntrologie/shared-editor-ui/dist/cn.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/cn.js +0 -3
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPicker.d.ts +0 -34
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPicker.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPicker.js +0 -161
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPickerLit.d.ts +0 -84
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPickerLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPickerLit.js +0 -323
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggle.d.ts +0 -7
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggle.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggle.js +0 -9
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggleLit.d.ts +0 -25
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggleLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggleLit.js +0 -55
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLine.d.ts +0 -23
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLine.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLine.js +0 -40
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLineLit.d.ts +0 -33
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLineLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLineLit.js +0 -118
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadge.d.ts +0 -7
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadge.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadge.js +0 -22
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadgeLit.d.ts +0 -32
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadgeLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadgeLit.js +0 -68
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSection.d.ts +0 -8
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSection.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSection.js +0 -9
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSectionLit.d.ts +0 -34
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSectionLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSectionLit.js +0 -57
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButton.d.ts +0 -7
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButton.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButton.js +0 -4
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButtonLit.d.ts +0 -13
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButtonLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButtonLit.js +0 -31
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBody.d.ts +0 -7
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBody.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBody.js +0 -4
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBodyLit.d.ts +0 -7
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBodyLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBodyLit.js +0 -15
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCard.d.ts +0 -13
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCard.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCard.js +0 -15
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCardLit.d.ts +0 -36
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCardLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCardLit.js +0 -102
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooter.d.ts +0 -7
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooter.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooter.js +0 -4
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooterLit.d.ts +0 -20
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooterLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooterLit.js +0 -48
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeader.d.ts +0 -9
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeader.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeader.js +0 -4
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeaderLit.d.ts +0 -16
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeaderLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeaderLit.js +0 -25
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInput.d.ts +0 -8
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInput.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInput.js +0 -8
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInputLit.d.ts +0 -66
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInputLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInputLit.js +0 -87
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayout.d.ts +0 -7
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayout.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayout.js +0 -4
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayoutLit.d.ts +0 -7
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayoutLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayoutLit.js +0 -15
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShell.d.ts +0 -25
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShell.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShell.js +0 -390
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShellLit.d.ts +0 -66
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShellLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShellLit.js +0 -528
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelect.d.ts +0 -8
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelect.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelect.js +0 -8
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelectLit.d.ts +0 -41
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelectLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelectLit.js +0 -63
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextarea.d.ts +0 -8
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextarea.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextarea.js +0 -17
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextareaLit.d.ts +0 -55
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextareaLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextareaLit.js +0 -92
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlight.d.ts +0 -32
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlight.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlight.js +0 -85
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlightLit.d.ts +0 -90
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlightLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlightLit.js +0 -242
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyState.d.ts +0 -6
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyState.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyState.js +0 -4
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyStateLit.d.ts +0 -12
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyStateLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyStateLit.js +0 -21
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeader.d.ts +0 -8
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeader.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeader.js +0 -5
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeaderLit.d.ts +0 -21
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeaderLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeaderLit.js +0 -33
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourney.d.ts +0 -12
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourney.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourney.js +0 -40
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourneyLit.d.ts +0 -28
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourneyLit.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourneyLit.js +0 -121
- package/node_modules/@syntrologie/shared-editor-ui/dist/controllers/PanelShellController.d.ts +0 -110
- package/node_modules/@syntrologie/shared-editor-ui/dist/controllers/PanelShellController.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/controllers/PanelShellController.js +0 -481
- package/node_modules/@syntrologie/shared-editor-ui/dist/formatConditionLabel.d.ts +0 -26
- package/node_modules/@syntrologie/shared-editor-ui/dist/formatConditionLabel.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/formatConditionLabel.js +0 -202
- package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useElementRect.d.ts +0 -8
- package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useElementRect.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useElementRect.js +0 -46
- package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useTriggerWhenStatus.d.ts +0 -24
- package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useTriggerWhenStatus.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useTriggerWhenStatus.js +0 -86
- package/node_modules/@syntrologie/shared-editor-ui/dist/index.d.ts +0 -36
- package/node_modules/@syntrologie/shared-editor-ui/dist/index.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/index.js +0 -26
- package/node_modules/@syntrologie/shared-editor-ui/dist/lit-elements.d.ts +0 -15
- package/node_modules/@syntrologie/shared-editor-ui/dist/lit-elements.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/lit-elements.js +0 -14
- package/node_modules/@syntrologie/shared-editor-ui/dist/utils/elementChainRecommender.d.ts +0 -33
- package/node_modules/@syntrologie/shared-editor-ui/dist/utils/elementChainRecommender.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/utils/elementChainRecommender.js +0 -68
- package/node_modules/@syntrologie/shared-editor-ui/dist/utils/selectorGenerator.d.ts +0 -22
- package/node_modules/@syntrologie/shared-editor-ui/dist/utils/selectorGenerator.d.ts.map +0 -1
- package/node_modules/@syntrologie/shared-editor-ui/dist/utils/selectorGenerator.js +0 -143
- package/node_modules/@syntrologie/shared-editor-ui/package.json +0 -55
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/NavWidgetLit.ts", "../src/resolveNavTarget.ts", "../src/runtime.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Adaptive Nav - NavWidgetLit Web Component\n *\n * Lit web component equivalent of NavWidget.tsx. Renders a collapsible\n * navigation tips accordion with per-item conditional visibility, framework-aware\n * navigation, and CSS variable theming.\n *\n * Decorator-free: uses `static override properties` (tsconfig has no\n * experimentalDecorators).\n *\n * Uses light DOM (createRenderRoot returns this) so host-page CSS variables\n * (--sc-*) are inherited without crossing a shadow boundary.\n */\n\nimport { renderIcon as renderEmojiIcon } from '@syntrologie/sdk-contracts';\nimport { html, LitElement, nothing } from 'lit';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\n\nimport { detectIsIframe, resolveNavTarget } from './resolveNavTarget';\nimport { navigateWithFrameworkRouter } from './runtime';\nimport type { NavConfig, NavTipAction, NavWidgetRuntime } from './types';\n\n// ============================================================================\n// Design system token fallbacks (inlined to avoid bundling @syntro/design-system\n// as a hard dep for this file; values match packages/design-system/src/tokens/colors.ts)\n// ============================================================================\n\nconst TOKEN_PURPLE_4 = '#6a59ce';\nconst TOKEN_SLATE_GREY_7 = '#677384';\nconst TOKEN_SLATE_GREY_8 = '#87919f';\n\n// ============================================================================\n// Emoji \u2192 Lucide SVG mapping is centralized in @syntrologie/sdk-contracts.\n// To add a new emoji, edit that package's icons.ts \u2014 every adaptive picks it\n// up automatically.\n// ============================================================================\n\nfunction escapeHtml(str: string): string {\n return str\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction renderIcon(emoji: string): string {\n return renderEmojiIcon(emoji) || escapeHtml(emoji);\n}\n\n// (resolveNavTarget extracted to ./resolveNavTarget \u2014 also consumed by\n// NavWidget.tsx so both Lit and React variants share the routing decision)\n\n// ============================================================================\n// Route matching helper\n// ============================================================================\n\nfunction routeMatchesCurrent(routes: string[]): boolean {\n if (typeof window === 'undefined') return false;\n const current = window.location.pathname;\n return routes.some((route) => {\n const routePath = route.split('?')[0].split('#')[0];\n if (routePath.endsWith('/**')) {\n return current.startsWith(routePath.slice(0, -3));\n }\n return current === routePath;\n });\n}\n\n// ============================================================================\n// Pulse animation helper\n// ============================================================================\n\nfunction pulseElement(el: HTMLElement): void {\n const keyframes: Keyframe[] = [\n { boxShadow: '0 0 0 0 rgba(13, 148, 136, 0.5)' },\n { boxShadow: '0 0 0 8px rgba(13, 148, 136, 0)' },\n ];\n el.animate(keyframes, { duration: 600, iterations: 3, easing: 'ease-out' });\n}\n\n// ============================================================================\n// Theme helpers\n// ============================================================================\n\ntype ResolvedTheme = 'light' | 'dark';\n\nfunction resolveTheme(theme: string | undefined): ResolvedTheme {\n if (theme === 'dark') return 'dark';\n if (theme === 'light') return 'light';\n // auto or undefined: detect system preference\n if (typeof window !== 'undefined') {\n return window.matchMedia?.('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n return 'light';\n}\n\n// ============================================================================\n// AnchorId type (matches sdk-contracts shape used in NavWidget.tsx)\n// ============================================================================\n\ninterface AnchorId {\n route: string | string[];\n selector: string;\n}\n\n// ============================================================================\n// NavWidgetLit \u2014 LitElement\n// ============================================================================\n\nexport class NavWidgetLit extends LitElement {\n // ---------- No shadow DOM \u2014 inherit host CSS variables --------------------\n\n override createRenderRoot() {\n return this;\n }\n\n // ---------- Reactive properties (no decorators) --------------------------\n\n static override properties = {\n // Public inputs\n config: { attribute: false },\n runtime: { attribute: false },\n instanceId: { type: String },\n\n // Internal reactive state\n _expandedIds: { state: true },\n _renderTick: { state: true },\n _hoveredId: { state: true },\n };\n\n // ---------- Public properties --------------------------------------------\n\n config: NavConfig = { expandBehavior: 'single', theme: 'auto', actions: [] };\n runtime: NavWidgetRuntime | undefined = undefined;\n instanceId: string = 'nav-widget';\n\n // ---------- Internal state -----------------------------------------------\n\n /** @internal */ _expandedIds: Set<string> = new Set();\n /** @internal */ _renderTick = 0;\n /** @internal */ _hoveredId: string | null = null;\n\n // ---------- Private subscriptions ----------------------------------------\n\n #contextUnsub: (() => void) | null = null;\n #accumulatorUnsub: (() => void) | null = null;\n\n // ---------- Lifecycle: connectedCallback ---------------------------------\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#subscribeRuntime();\n }\n\n // ---------- Lifecycle: disconnectedCallback ------------------------------\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#unsubscribeRuntime();\n }\n\n // ---------- Lifecycle: updated -------------------------------------------\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('runtime')) {\n this.#unsubscribeRuntime();\n this.#subscribeRuntime();\n }\n }\n\n // ---------- Runtime subscriptions ----------------------------------------\n\n #subscribeRuntime(): void {\n if (!this.runtime) return;\n\n this.#contextUnsub = this.runtime.context.subscribe(() => {\n this._renderTick += 1;\n });\n\n if (this.runtime.accumulator?.subscribe) {\n this.#accumulatorUnsub = this.runtime.accumulator.subscribe(() => {\n this._renderTick += 1;\n });\n }\n }\n\n #unsubscribeRuntime(): void {\n this.#contextUnsub?.();\n this.#contextUnsub = null;\n this.#accumulatorUnsub?.();\n this.#accumulatorUnsub = null;\n }\n\n // ---------- Computed helpers (called on each render) ---------------------\n\n #getVisibleTips(): NavTipAction[] {\n // _renderTick is read here to ensure this re-runs when context/accumulator\n // notify (same pattern as useMemo with renderTick dep in React version).\n void this._renderTick;\n\n if (!this.runtime) return this.config.actions;\n\n return this.config.actions.filter((tip) => {\n if (!tip.triggerWhen) return true;\n try {\n const result = this.runtime!.evaluateSync<boolean>(tip.triggerWhen);\n return result.value;\n } catch {\n // Fail-closed: hide tip when strategy evaluation throws\n return false;\n }\n });\n }\n\n #getResolvedTheme(): ResolvedTheme {\n return resolveTheme(this.config.theme);\n }\n\n // ---------- Event handlers -----------------------------------------------\n\n #handleToggle(id: string): void {\n const wasExpanded = this._expandedIds.has(id);\n\n let next: Set<string>;\n if (this.config.expandBehavior === 'single') {\n // Emit collapse events for previously-expanded tips (single mode)\n for (const prevId of this._expandedIds) {\n if (prevId !== id) {\n this.#publishEvent('nav:toggled', {\n tipId: prevId,\n expanded: false,\n });\n }\n }\n next = wasExpanded ? new Set() : new Set([id]);\n } else {\n next = new Set(this._expandedIds);\n if (wasExpanded) {\n next.delete(id);\n } else {\n next.add(id);\n }\n }\n\n this.#publishEvent('nav:toggled', {\n tipId: id,\n expanded: !wasExpanded,\n });\n\n this._expandedIds = next;\n }\n\n #handleNavigate(href: string, external: boolean): void {\n // Reject dangerous URIs\n const normalized = href.trim().toLowerCase();\n if (normalized.startsWith('javascript:') || normalized.startsWith('data:')) return;\n\n this.#publishEvent('nav:tip_clicked', { href, external });\n\n // Also fire a standard custom event for host-page listeners\n this.dispatchEvent(\n new CustomEvent('nav-tip-clicked', {\n bubbles: true,\n detail: { href, external, instanceId: this.instanceId },\n })\n );\n\n // Routing decision is in resolveNavTarget (a pure helper). When mounted\n // in an iframe (canvas surface, partner embed, etc.), every nav escapes\n // via window.open \u2014 sandbox `allow-popups` lets it pop out to the user's\n // main browser. On the customer site (top-level window), normal cross-/\n // same-origin handling applies.\n const target = resolveNavTarget({\n href,\n external,\n windowOrigin: typeof window !== 'undefined' ? window.location.origin : '',\n isIframe: detectIsIframe(),\n });\n\n if (target.kind === 'open') {\n window.open(target.url, '_blank', 'noopener,noreferrer');\n return;\n }\n if (target.kind === 'fullnav') {\n window.location.href = target.url;\n return;\n }\n // kind === 'spa'\n target.url.search = window.location.search;\n if (!navigateWithFrameworkRouter(target.url.toString())) {\n window.history.pushState(null, '', target.url.toString());\n window.dispatchEvent(new PopStateEvent('popstate'));\n }\n }\n\n #handleFocusAnchor(anchor: AnchorId): void {\n const el = document.querySelector(anchor.selector);\n if (!(el instanceof HTMLElement)) return;\n\n this.#publishEvent('nav:tip_focused', {\n selector: anchor.selector,\n route: anchor.route,\n });\n\n this.dispatchEvent(\n new CustomEvent('nav-tip-focused', {\n bubbles: true,\n detail: { selector: anchor.selector, instanceId: this.instanceId },\n })\n );\n\n el.scrollIntoView({ behavior: 'smooth', block: 'center' });\n pulseElement(el);\n setTimeout(() => el.focus(), 400);\n }\n\n #publishEvent(name: string, props: Record<string, unknown>): void {\n this.runtime?.events.publish(name, {\n instanceId: this.instanceId,\n timestamp: Date.now(),\n ...props,\n });\n }\n\n // ---------- Tip item rendering -------------------------------------------\n\n #renderTipItem(tip: NavTipAction, index: number, total: number) {\n const { id, title, description, href, icon, external, anchor, category: _cat } = tip.config;\n const isExpanded = this._expandedIds.has(id);\n const isLast = index === total - 1;\n const isHovered = this._hoveredId === id;\n const theme = this.#getResolvedTheme();\n\n // Determine the effective href from anchor or legacy href\n const effectiveHref = anchor\n ? Array.isArray(anchor.route)\n ? anchor.route[0]\n : anchor.route\n : href;\n\n // Same-page check\n const isSamePage = anchor\n ? routeMatchesCurrent(Array.isArray(anchor.route) ? anchor.route : [anchor.route])\n : effectiveHref\n ? routeMatchesCurrent([effectiveHref])\n : false;\n const hasSelector = anchor?.selector && anchor.selector !== '*';\n const isFocusAction = isSamePage && hasSelector;\n const hasAction = !!effectiveHref || isFocusAction;\n\n const ctaLabel = isFocusAction ? 'Focus \\u2192' : external ? 'Go \\u2197' : 'Go \\u2192';\n\n // Item container styles\n const itemStyle = styleMap({\n borderRadius: 'var(--sc-content-border-radius, 8px)',\n overflow: 'hidden',\n transition: 'box-shadow 0.2s ease',\n backgroundColor: 'var(--sc-content-background)',\n border: 'var(--sc-content-border)',\n ...(isExpanded\n ? {\n boxShadow:\n theme === 'dark'\n ? '0 4px 12px rgba(0, 0, 0, 0.15)'\n : '0 4px 12px rgba(0, 0, 0, 0.08)',\n }\n : {}),\n ...(!isLast ? { borderBottom: 'var(--sc-content-item-divider, none)' } : {}),\n });\n\n // Header styles\n const headerStyle = styleMap({\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n width: '100%',\n padding: 'var(--sc-content-item-padding, 12px 16px)',\n border: 'none',\n cursor: 'pointer',\n fontSize: 'var(--sc-content-item-font-size, 15px)',\n fontWeight: '500',\n fontFamily: 'inherit',\n textAlign: 'left',\n transition: 'background-color 0.15s ease',\n backgroundColor: isHovered ? 'var(--sc-content-background-hover)' : 'transparent',\n color: 'var(--sc-content-text-color)',\n });\n\n // Chevron styles\n const chevronStyle = styleMap({\n fontSize: '20px',\n transition: 'transform 0.2s ease',\n marginLeft: 'auto',\n flexShrink: '0',\n color: 'var(--sc-content-chevron-color, currentColor)',\n transform: isExpanded ? 'rotate(90deg)' : 'rotate(0deg)',\n });\n\n // Body styles\n const bodyStyle = styleMap({\n overflow: 'hidden',\n transition: 'max-height 0.25s ease, padding-bottom 0.25s ease',\n padding: 'var(--sc-content-body-padding, 0 16px 12px 16px)',\n color: 'var(--sc-content-text-secondary-color)',\n maxHeight: isExpanded ? '500px' : '0',\n paddingBottom: isExpanded ? '16px' : '0',\n });\n\n // Description styles\n const descriptionStyle = styleMap({\n fontSize: 'var(--sc-content-body-font-size, 14px)',\n lineHeight: '1.5',\n margin: '0',\n });\n\n // CTA / link button styles\n const linkButtonStyle = styleMap({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n marginTop: '10px',\n padding: '6px 12px',\n borderRadius: '6px',\n textDecoration: 'none',\n fontSize: '13px',\n fontWeight: '500',\n cursor: 'pointer',\n border: 'none',\n transition: 'background-color 0.15s ease',\n backgroundColor: `var(--sc-color-primary, ${TOKEN_PURPLE_4})`,\n color: '#ffffff',\n });\n\n // Icon styles\n const iconStyle = styleMap({\n fontSize: '16px',\n flexShrink: '0',\n });\n\n // Anchor click handler\n const onLinkClick = (e: Event) => {\n e.preventDefault();\n e.stopPropagation();\n if (isFocusAction && anchor) {\n this.#handleFocusAnchor(anchor);\n } else if (effectiveHref) {\n this.#handleNavigate(effectiveHref, external ?? false);\n }\n };\n\n return html`\n <div\n style=${itemStyle}\n data-nav-tip-id=${id}\n >\n <button\n type=\"button\"\n style=${headerStyle}\n aria-expanded=${isExpanded}\n @click=${() => this.#handleToggle(id)}\n @mouseenter=${() => {\n this._hoveredId = id;\n }}\n @mouseleave=${() => {\n this._hoveredId = null;\n }}\n >\n ${icon ? html`<span style=${iconStyle}>${unsafeHTML(renderIcon(icon))}</span>` : nothing}\n <span>${title}</span>\n <span style=${chevronStyle}>${'\\u203A'}</span>\n </button>\n <div style=${bodyStyle} aria-hidden=${!isExpanded}>\n <p style=${descriptionStyle}>${description}</p>\n ${\n hasAction\n ? html`\n <a\n href=${effectiveHref || '#'}\n style=${linkButtonStyle}\n target=${external ? '_blank' : nothing}\n rel=${external ? 'noopener noreferrer' : nothing}\n @click=${onLinkClick}\n >${ctaLabel}</a>\n `\n : nothing\n }\n </div>\n </div>\n `;\n }\n\n // ---------- Render --------------------------------------------------------\n\n override render() {\n const visibleTips = this.#getVisibleTips();\n const theme = this.#getResolvedTheme();\n\n const containerStyle = styleMap({\n fontFamily: 'var(--sc-font-family, system-ui, -apple-system, sans-serif)',\n maxWidth: '100%',\n overflow: 'hidden',\n backgroundColor: 'transparent',\n color: 'inherit',\n });\n\n const accordionStyle = styleMap({\n display: 'flex',\n flexDirection: 'column',\n gap: 'var(--sc-content-item-gap, 6px)',\n });\n\n const categoryHeaderStyle = styleMap({\n fontSize: 'var(--sc-content-category-font-size, 12px)',\n fontWeight: '600',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n padding: 'var(--sc-content-category-padding, 8px 4px 4px 4px)',\n color: theme === 'dark' ? TOKEN_SLATE_GREY_8 : TOKEN_SLATE_GREY_7,\n });\n\n const emptyStateStyle = styleMap({\n fontSize: '13px',\n padding: '16px',\n textAlign: 'center',\n color: theme === 'dark' ? TOKEN_SLATE_GREY_7 : TOKEN_SLATE_GREY_8,\n });\n\n // Empty state\n if (visibleTips.length === 0) {\n return html`\n <div\n style=${containerStyle}\n data-adaptive-id=${this.instanceId}\n data-adaptive-type=\"adaptive-nav\"\n >\n <div style=${emptyStateStyle}>\n You're all set for now! We'll share helpful tips here when they're relevant to what\n you're doing.\n </div>\n </div>\n `;\n }\n\n // Group by category\n const categoryGroups = new Map<string | undefined, NavTipAction[]>();\n for (const tip of visibleTips) {\n const cat = tip.config.category;\n if (!categoryGroups.has(cat)) {\n categoryGroups.set(cat, []);\n }\n categoryGroups.get(cat)!.push(tip);\n }\n\n const hasCategories = visibleTips.some((t) => t.config.category);\n\n return html`\n <div\n style=${containerStyle}\n data-adaptive-id=${this.instanceId}\n data-adaptive-type=\"adaptive-nav\"\n >\n <div style=${accordionStyle}>\n ${\n hasCategories\n ? Array.from(categoryGroups.entries()).map(\n ([category, items]) => html`\n ${\n category\n ? html`<div style=${categoryHeaderStyle} data-category-header=${category}>${category}</div>`\n : nothing\n }\n ${items.map((tip, idx) => this.#renderTipItem(tip, idx, items.length))}\n `\n )\n : visibleTips.map((tip, idx) => this.#renderTipItem(tip, idx, visibleTips.length))\n }\n </div>\n </div>\n `;\n }\n}\n\n// ============================================================================\n// Custom element registration\n// ============================================================================\n\nconst TAG_NAME = 'syntro-nav-tips';\n\nexport function registerNavWidgetLit(): void {\n if (typeof window === 'undefined') return;\n if (!customElements.get(TAG_NAME)) {\n customElements.define(TAG_NAME, NavWidgetLit);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'syntro-nav-tips': NavWidgetLit;\n }\n}\n", "/**\n * Pure decision function for nav-tip click routing.\n *\n * Given an href, an `external` flag, the current window's origin, and whether\n * the SDK is mounted inside an iframe, returns the navigation action to take.\n *\n * Extracted from NavWidgetLit so both the Lit and React widget variants\n * share one decision matrix and so the routing logic can be unit-tested\n * without mutating window.location (jsdom doesn't allow redefining\n * origin/href).\n */\n\nexport type NavTarget =\n | { kind: 'open'; url: string }\n | { kind: 'fullnav'; url: string }\n | { kind: 'spa'; url: URL };\n\nexport interface ResolveNavTargetArgs {\n href: string;\n external: boolean;\n windowOrigin: string;\n /**\n * True when the SDK is mounted inside an iframe (window !== window.top, or\n * window.top access threw cross-origin). When true, every nav escapes via\n * window.open \u2014 the parent page's sandbox `allow-popups` lets the new\n * window pop out to the user's main browser.\n */\n isIframe: boolean;\n}\n\n/**\n * Decide what to do with a nav-tip click.\n *\n * Routing branches (in order):\n *\n * 1. **Iframe context** (`isIframe=true` OR opaque origin \"null\"):\n * always `window.open` the href as-is. Action-plan authors who want\n * cross-iframe nav must use absolute URLs (any host \u2014 customer's,\n * partner's, doesn't matter). The sandbox's `allow-popups` lets the\n * open() call escape to the user's main browser.\n *\n * 2. **Explicit external** (`external=true`): always opens in `_blank`.\n *\n * 3. **Cross-origin absolute href** (no iframe; URL parses to a different\n * origin): full `window.location.href` navigation.\n *\n * 4. **Same-origin** (most common \u2014 SDK on customer site, internal route):\n * SPA-style `pushState` (caller falls back to framework router).\n *\n * 5. **Parse failure**: full-nav fallback; browser does its best.\n */\nexport function resolveNavTarget(args: ResolveNavTargetArgs): NavTarget {\n const { href, external, windowOrigin, isIframe } = args;\n\n const isOpaqueOrigin = windowOrigin === 'null';\n if (isIframe || isOpaqueOrigin) {\n return { kind: 'open', url: href };\n }\n\n if (external) {\n return { kind: 'open', url: href };\n }\n\n let url: URL;\n try {\n url = new URL(href, windowOrigin);\n } catch {\n return { kind: 'fullnav', url: href };\n }\n\n if (url.origin !== windowOrigin) {\n return { kind: 'fullnav', url: url.toString() };\n }\n\n return { kind: 'spa', url };\n}\n\n/**\n * Helper: detect whether the current window is mounted in an iframe.\n * Cross-origin parent access can throw \u2014 treat that as \"in iframe.\"\n */\nexport function detectIsIframe(): boolean {\n if (typeof window === 'undefined') return false;\n try {\n return window !== window.top;\n } catch {\n return true;\n }\n}\n", "/**\n * Adaptive Nav - Runtime Module\n *\n * Runtime manifest for the navigation tips accordion adaptive.\n * Mounts the `<syntro-nav-tips>` Lit web component.\n * Includes widget-based nav tips and navigation action executors\n * (scrollTo, navigate) previously in adaptive-navigation.\n */\n\nimport { registerNavWidgetLit } from './NavWidgetLit';\nimport type {\n ActionExecutor,\n ExecutorResult,\n NavConfig,\n NavigateAction,\n NavTipAction,\n NavWidgetRuntime,\n ScrollToAction,\n} from './types';\n\n// ============================================================================\n// Navigation Action Executors (merged from adaptive-navigation)\n// ============================================================================\n\n/**\n * Execute a scrollTo action\n */\nexport const executeScrollTo: ActionExecutor<ScrollToAction> = async (\n action,\n context\n): Promise<ExecutorResult> => {\n const anchorEl = context.resolveAnchor(action.anchorId);\n if (!anchorEl) {\n console.error(\n `[adaptive-nav] Anchor not found for scrollTo, skipping: ${action.anchorId.selector}`\n );\n return { cleanup: () => {} };\n }\n\n // Scroll to element\n anchorEl.scrollIntoView({\n behavior: action.behavior ?? 'smooth',\n block: action.block ?? 'center',\n inline: action.inline ?? 'nearest',\n });\n\n context.publishEvent('action.applied', {\n id: context.generateId(),\n kind: 'navigation:scrollTo',\n anchorId: action.anchorId,\n behavior: action.behavior ?? 'smooth',\n });\n\n return {\n cleanup: () => {\n // Optionally restore scroll position on revert\n },\n };\n};\n\n/**\n * Try to navigate using the host framework's native router.\n * Returns true if a framework router handled the navigation,\n * false if no framework was detected (caller should use pushState or location.href).\n *\n * Using the native router preserves SPA behavior (no full reload),\n * layout state, scroll position, and framework-specific features\n * (RSC streaming, view transitions, etc.).\n */\nexport function navigateWithFrameworkRouter(url: string): boolean {\n if (typeof window === 'undefined') return false;\n const w = window as any;\n\n // Next.js \u2014 window.next.router.push() triggers App Router navigation\n // with RSC fetch, layout preservation, and loading states\n try {\n const nextRouter = w.next?.router;\n if (nextRouter?.push) {\n nextRouter.push(url);\n return true;\n }\n } catch {\n /* fall through */\n }\n\n // Nuxt 3 \u2014 useRouter() isn't accessible from outside Vue, but\n // $nuxt.$router (Nuxt 2) or window.__NUXT__?.hooks (Nuxt 3) + navigateTo\n // aren't reliably exposed. Nuxt 2 exposes $nuxt.$router.push().\n try {\n if (w.$nuxt?.$router?.push) {\n w.$nuxt.$router.push(url);\n return true;\n }\n } catch {\n /* fall through */\n }\n\n // Angular \u2014 Angular Router isn't exposed on window by default.\n // The most reliable approach is to detect Angular and use location.href.\n if (w.ng || w.getAllAngularRootElements || document.querySelector('[ng-version]')) {\n window.location.href = url;\n return true;\n }\n\n // SvelteKit \u2014 goto() isn't on window, but __SVELTEKIT_DATA__ confirms the framework.\n if (w.__SVELTEKIT_DATA__ || document.body?.hasAttribute('data-sveltekit')) {\n window.location.href = url;\n return true;\n }\n\n // Astro (View Transitions) \u2014 no client-side router API exposed\n if (document.querySelector('[data-astro-transition-fallback]')) {\n window.location.href = url;\n return true;\n }\n\n return false;\n}\n\n/**\n * Check if a URL is same-origin as the current page.\n * Relative URLs (e.g. \"/dashboard\") are always same-origin.\n */\nfunction isSameOrigin(url: string): boolean {\n try {\n const parsed = new URL(url, window.location.origin);\n return parsed.origin === window.location.origin;\n } catch {\n // If URL parsing fails, fall back to full navigation\n return false;\n }\n}\n\n/**\n * Execute a navigate action\n */\nexport const executeNavigate: ActionExecutor<NavigateAction> = async (\n action,\n context\n): Promise<ExecutorResult> => {\n // Validate URL to prevent javascript: URLs\n const url = action.url.trim();\n if (url.toLowerCase().startsWith('javascript:')) {\n throw new Error('javascript: URLs are not allowed');\n }\n\n const target = action.target ?? '_self';\n\n context.publishEvent('action.applied', {\n id: context.generateId(),\n kind: 'navigation:navigate',\n url: action.url,\n target,\n });\n\n if (target === '_blank') {\n // Open in new tab\n window.open(url, '_blank', 'noopener,noreferrer');\n } else if (!action.forceFullNavigation && isSameOrigin(url)) {\n // Try the host framework's native router first (Next.js, Nuxt, Angular, etc.)\n // Falls back to pushState for vanilla SPAs, or location.href as last resort.\n if (!navigateWithFrameworkRouter(url)) {\n window.history.pushState(null, '', url);\n window.dispatchEvent(new PopStateEvent('popstate'));\n }\n } else {\n // Full navigation for cross-origin URLs or when explicitly requested\n window.location.href = url;\n }\n\n return {\n cleanup: () => {\n // Navigation cannot be reverted\n },\n };\n};\n\n// ============================================================================\n// Lit Mountable Widget\n// ============================================================================\n\n/**\n * NavWidgetLitMountable \u2014 Mounts the `<syntro-nav-tips>` Lit web component.\n * Self-registers the custom element on first use.\n */\nexport const NavWidgetLitMountable = {\n mount(\n container: HTMLElement,\n config?: NavConfig & { runtime?: NavWidgetRuntime; instanceId?: string }\n ) {\n registerNavWidgetLit();\n\n const el = document.createElement('syntro-nav-tips');\n\n const {\n runtime,\n instanceId = 'nav-widget',\n ...navConfig\n } = config ?? {\n expandBehavior: 'single' as const,\n theme: 'auto' as const,\n actions: [],\n };\n\n // Assign structured props as JS properties (not HTML attributes)\n Object.assign(el, {\n config: navConfig,\n runtime,\n instanceId,\n });\n\n container.appendChild(el);\n\n return () => el.remove();\n },\n};\n\n// ============================================================================\n// Executor Definitions for Registration\n// ============================================================================\n\n/**\n * All executors provided by this app.\n * These are registered with the runtime's ExecutorRegistry.\n */\nexport const executors = [\n { kind: 'navigation:scrollTo', executor: executeScrollTo },\n { kind: 'navigation:navigate', executor: executeNavigate },\n] as const;\n\n// ============================================================================\n// App Runtime Manifest\n// ============================================================================\n\n/**\n * Runtime manifest for adaptive-nav.\n *\n * Provides:\n * - Navigation action executors (scrollTo, navigate)\n * - Widget-based nav tips accordion using the Lit web component\n */\nexport const runtime = {\n id: 'adaptive-nav',\n version: '2.0.0',\n name: 'Navigation Tips',\n description: 'Navigation actions and accordion-based tips with per-item conditional visibility',\n\n /**\n * Navigation action executors (scrollTo, navigate).\n */\n executors,\n\n /**\n * Widget definitions for the runtime's WidgetRegistry.\n */\n widgets: [\n {\n id: 'adaptive-nav:tips',\n component: NavWidgetLitMountable,\n metadata: {\n name: 'Navigation Tips',\n description: 'Accordion of contextual navigation tips with per-item visibility',\n icon: '\\u{1F9ED}',\n },\n },\n ],\n\n /**\n * Extract notify watcher entries from tile config props.\n * The runtime evaluates these continuously (even with drawer closed)\n * and publishes nav:tip_revealed when triggerWhen transitions false \u2192 true.\n */\n notifyWatchers(props: Record<string, unknown>) {\n const actions = (props.actions ?? []) as NavTipAction[];\n return actions\n .filter((a) => a.notify && a.triggerWhen)\n .map((a) => ({\n id: `nav:${a.config.id}`,\n strategy: a.triggerWhen!,\n eventName: 'nav:tip_revealed',\n eventProps: {\n tipId: a.config.id,\n title: a.notify!.title,\n body: a.notify!.body,\n icon: a.notify!.icon,\n },\n }));\n },\n};\n\nexport default runtime;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["renderIcon", "runtime"]
|
|
7
|
+
}
|