@syntrologie/adapt-nav 2.8.0-canary.2 → 2.8.0-canary.200

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 (142) hide show
  1. package/dist/NavWidgetLit.d.ts +56 -0
  2. package/dist/NavWidgetLit.d.ts.map +1 -0
  3. package/dist/NavWidgetLit.test.d.ts +8 -0
  4. package/dist/NavWidgetLit.test.d.ts.map +1 -0
  5. package/dist/chunk-7DTOSQNC.js +43 -0
  6. package/dist/chunk-7DTOSQNC.js.map +7 -0
  7. package/dist/chunk-ZYHZ6JAD.js +447 -0
  8. package/dist/chunk-ZYHZ6JAD.js.map +7 -0
  9. package/dist/editor.d.ts +48 -21
  10. package/dist/editor.d.ts.map +1 -1
  11. package/dist/editor.js +5361 -310
  12. package/dist/editor.js.map +7 -0
  13. package/dist/resolveNavTarget.d.ts +61 -0
  14. package/dist/resolveNavTarget.d.ts.map +1 -0
  15. package/dist/resolveNavTarget.test.d.ts +2 -0
  16. package/dist/resolveNavTarget.test.d.ts.map +1 -0
  17. package/dist/runtime.d.ts +25 -4
  18. package/dist/runtime.d.ts.map +1 -1
  19. package/dist/runtime.js +617 -139
  20. package/dist/runtime.js.map +7 -0
  21. package/dist/schema.d.ts +524 -200
  22. package/dist/schema.d.ts.map +1 -1
  23. package/dist/schema.js +155 -123
  24. package/dist/schema.js.map +7 -0
  25. package/dist/types.d.ts +8 -1
  26. package/dist/types.d.ts.map +1 -1
  27. package/package.json +12 -16
  28. package/dist/NavWidget.d.ts +0 -31
  29. package/dist/NavWidget.d.ts.map +0 -1
  30. package/dist/NavWidget.js +0 -405
  31. package/dist/cdn.d.ts +0 -62
  32. package/dist/cdn.d.ts.map +0 -1
  33. package/dist/cdn.js +0 -48
  34. package/dist/summarize.js +0 -51
  35. package/dist/types.js +0 -18
  36. package/node_modules/@syntro/design-system/README.md +0 -335
  37. package/node_modules/@syntro/design-system/dist/assets/syntrologie-logo.svg +0 -21
  38. package/node_modules/@syntro/design-system/dist/assets/syntrologie-logomark.svg +0 -10
  39. package/node_modules/@syntro/design-system/dist/index.d.ts +0 -8
  40. package/node_modules/@syntro/design-system/dist/index.d.ts.map +0 -1
  41. package/node_modules/@syntro/design-system/dist/index.js +0 -7
  42. package/node_modules/@syntro/design-system/dist/tailwind-preset.d.ts +0 -19
  43. package/node_modules/@syntro/design-system/dist/tailwind-preset.d.ts.map +0 -1
  44. package/node_modules/@syntro/design-system/dist/tailwind-preset.js +0 -453
  45. package/node_modules/@syntro/design-system/dist/tokens/colors.css +0 -464
  46. package/node_modules/@syntro/design-system/dist/tokens/colors.d.ts +0 -874
  47. package/node_modules/@syntro/design-system/dist/tokens/colors.d.ts.map +0 -1
  48. package/node_modules/@syntro/design-system/dist/tokens/colors.js +0 -564
  49. package/node_modules/@syntro/design-system/dist/tokens/effects.css +0 -43
  50. package/node_modules/@syntro/design-system/dist/tokens/effects.d.ts +0 -85
  51. package/node_modules/@syntro/design-system/dist/tokens/effects.d.ts.map +0 -1
  52. package/node_modules/@syntro/design-system/dist/tokens/effects.js +0 -77
  53. package/node_modules/@syntro/design-system/dist/tokens/index.d.ts +0 -10
  54. package/node_modules/@syntro/design-system/dist/tokens/index.d.ts.map +0 -1
  55. package/node_modules/@syntro/design-system/dist/tokens/index.js +0 -9
  56. package/node_modules/@syntro/design-system/package.json +0 -55
  57. package/node_modules/@syntro/design-system/src/assets/syntrologie-logo.svg +0 -21
  58. package/node_modules/@syntro/design-system/src/assets/syntrologie-logomark.svg +0 -10
  59. package/node_modules/@syntrologie/sdk-contracts/dist/index.d.ts +0 -129
  60. package/node_modules/@syntrologie/sdk-contracts/dist/index.js +0 -15
  61. package/node_modules/@syntrologie/sdk-contracts/dist/schemas.d.ts +0 -2225
  62. package/node_modules/@syntrologie/sdk-contracts/dist/schemas.js +0 -162
  63. package/node_modules/@syntrologie/sdk-contracts/package.json +0 -33
  64. package/node_modules/@syntrologie/shared-editor-ui/dist/cn.d.ts +0 -2
  65. package/node_modules/@syntrologie/shared-editor-ui/dist/cn.d.ts.map +0 -1
  66. package/node_modules/@syntrologie/shared-editor-ui/dist/cn.js +0 -3
  67. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPicker.d.ts +0 -34
  68. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPicker.d.ts.map +0 -1
  69. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPicker.js +0 -160
  70. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggle.d.ts +0 -7
  71. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggle.d.ts.map +0 -1
  72. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggle.js +0 -9
  73. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLine.d.ts +0 -23
  74. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLine.d.ts.map +0 -1
  75. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLine.js +0 -40
  76. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadge.d.ts +0 -7
  77. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadge.d.ts.map +0 -1
  78. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadge.js +0 -22
  79. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSection.d.ts +0 -8
  80. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSection.d.ts.map +0 -1
  81. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSection.js +0 -9
  82. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButton.d.ts +0 -7
  83. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButton.d.ts.map +0 -1
  84. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButton.js +0 -4
  85. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBody.d.ts +0 -7
  86. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBody.d.ts.map +0 -1
  87. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBody.js +0 -4
  88. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCard.d.ts +0 -13
  89. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCard.d.ts.map +0 -1
  90. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCard.js +0 -15
  91. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooter.d.ts +0 -7
  92. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooter.d.ts.map +0 -1
  93. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooter.js +0 -4
  94. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeader.d.ts +0 -9
  95. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeader.d.ts.map +0 -1
  96. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeader.js +0 -4
  97. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInput.d.ts +0 -8
  98. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInput.d.ts.map +0 -1
  99. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInput.js +0 -8
  100. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayout.d.ts +0 -7
  101. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayout.d.ts.map +0 -1
  102. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayout.js +0 -4
  103. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShell.d.ts +0 -25
  104. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShell.d.ts.map +0 -1
  105. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShell.js +0 -379
  106. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelect.d.ts +0 -8
  107. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelect.d.ts.map +0 -1
  108. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelect.js +0 -8
  109. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextarea.d.ts +0 -8
  110. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextarea.d.ts.map +0 -1
  111. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextarea.js +0 -17
  112. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlight.d.ts +0 -32
  113. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlight.d.ts.map +0 -1
  114. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlight.js +0 -87
  115. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyState.d.ts +0 -6
  116. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyState.d.ts.map +0 -1
  117. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyState.js +0 -4
  118. package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeader.d.ts +0 -8
  119. package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeader.d.ts.map +0 -1
  120. package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeader.js +0 -5
  121. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourney.d.ts +0 -12
  122. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourney.d.ts.map +0 -1
  123. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourney.js +0 -40
  124. package/node_modules/@syntrologie/shared-editor-ui/dist/formatConditionLabel.d.ts +0 -26
  125. package/node_modules/@syntrologie/shared-editor-ui/dist/formatConditionLabel.d.ts.map +0 -1
  126. package/node_modules/@syntrologie/shared-editor-ui/dist/formatConditionLabel.js +0 -202
  127. package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useElementRect.d.ts +0 -8
  128. package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useElementRect.d.ts.map +0 -1
  129. package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useElementRect.js +0 -46
  130. package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useTriggerWhenStatus.d.ts +0 -24
  131. package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useTriggerWhenStatus.d.ts.map +0 -1
  132. package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useTriggerWhenStatus.js +0 -87
  133. package/node_modules/@syntrologie/shared-editor-ui/dist/index.d.ts +0 -34
  134. package/node_modules/@syntrologie/shared-editor-ui/dist/index.d.ts.map +0 -1
  135. package/node_modules/@syntrologie/shared-editor-ui/dist/index.js +0 -25
  136. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/elementChainRecommender.d.ts +0 -37
  137. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/elementChainRecommender.d.ts.map +0 -1
  138. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/elementChainRecommender.js +0 -52
  139. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/selectorGenerator.d.ts +0 -22
  140. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/selectorGenerator.d.ts.map +0 -1
  141. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/selectorGenerator.js +0 -143
  142. package/node_modules/@syntrologie/shared-editor-ui/package.json +0 -45
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Adaptive Nav - NavWidgetLit Web Component
3
+ *
4
+ * Lit web component equivalent of NavWidget.tsx. Renders a collapsible
5
+ * navigation tips accordion with per-item conditional visibility, framework-aware
6
+ * navigation, and CSS variable theming.
7
+ *
8
+ * Decorator-free: uses `static override properties` (tsconfig has no
9
+ * experimentalDecorators).
10
+ *
11
+ * Uses light DOM (createRenderRoot returns this) so host-page CSS variables
12
+ * (--sc-*) are inherited without crossing a shadow boundary.
13
+ */
14
+ import { LitElement } from 'lit';
15
+ import type { NavConfig, NavWidgetRuntime } from './types';
16
+ export declare class NavWidgetLit extends LitElement {
17
+ #private;
18
+ createRenderRoot(): this;
19
+ static properties: {
20
+ config: {
21
+ attribute: boolean;
22
+ };
23
+ runtime: {
24
+ attribute: boolean;
25
+ };
26
+ instanceId: {
27
+ type: StringConstructor;
28
+ };
29
+ _expandedIds: {
30
+ state: boolean;
31
+ };
32
+ _renderTick: {
33
+ state: boolean;
34
+ };
35
+ _hoveredId: {
36
+ state: boolean;
37
+ };
38
+ };
39
+ config: NavConfig;
40
+ runtime: NavWidgetRuntime | undefined;
41
+ instanceId: string;
42
+ /** @internal */ _expandedIds: Set<string>;
43
+ /** @internal */ _renderTick: number;
44
+ /** @internal */ _hoveredId: string | null;
45
+ connectedCallback(): void;
46
+ disconnectedCallback(): void;
47
+ updated(changed: Map<string, unknown>): void;
48
+ render(): import("lit-html").TemplateResult<1>;
49
+ }
50
+ export declare function registerNavWidgetLit(): void;
51
+ declare global {
52
+ interface HTMLElementTagNameMap {
53
+ 'syntro-nav-tips': NavWidgetLit;
54
+ }
55
+ }
56
+ //# sourceMappingURL=NavWidgetLit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavWidgetLit.d.ts","sourceRoot":"","sources":["../src/NavWidgetLit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAQ,UAAU,EAAW,MAAM,KAAK,CAAC;AAMhD,OAAO,KAAK,EAAE,SAAS,EAAgB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA0FzE,qBAAa,YAAa,SAAQ,UAAU;;IAGjC,gBAAgB;IAMzB,OAAgB,UAAU;;;;;;;;;;;;;;;;;;;MAUxB;IAIF,MAAM,EAAE,SAAS,CAA4D;IAC7E,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAa;IAClD,UAAU,EAAE,MAAM,CAAgB;IAIlC,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IACvD,gBAAgB,CAAC,WAAW,SAAK;IACjC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IASzC,iBAAiB,IAAI,IAAI;IAOzB,oBAAoB,IAAI,IAAI;IAO5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA0U5C,MAAM;CAuFhB;AAQD,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,YAAY,CAAC;KACjC;CACF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * NavWidgetLit — Vitest + @open-wc/testing-helpers unit tests
3
+ *
4
+ * Tests cover: rendering, expand/collapse, nav-tip-clicked event, XSS rejection,
5
+ * empty state, category grouping, and visibility filtering (triggerWhen).
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=NavWidgetLit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavWidgetLit.test.d.ts","sourceRoot":"","sources":["../src/NavWidgetLit.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,43 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __typeError = (msg) => {
8
+ throw TypeError(msg);
9
+ };
10
+ var __commonJS = (cb, mod) => function __require() {
11
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
30
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
31
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
32
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
33
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
34
+
35
+ export {
36
+ __commonJS,
37
+ __toESM,
38
+ __privateGet,
39
+ __privateAdd,
40
+ __privateSet,
41
+ __privateMethod
42
+ };
43
+ //# sourceMappingURL=chunk-7DTOSQNC.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,447 @@
1
+ // ../../sdk-contracts/dist/schemas.js
2
+ import { z } from "zod";
3
+ var AnchorIdZ = z.object({
4
+ selector: z.string(),
5
+ route: z.union([z.string(), z.array(z.string())])
6
+ }).strict();
7
+ var AuthoringFieldsZ = {
8
+ title: z.string().max(200).optional().describe("Authoring-only: short label shown on the action plan dashboard. Stripped before serving to the runtime SDK."),
9
+ description: z.string().max(1e3).optional().describe("Authoring-only: one-sentence explanation of what this action does and why. Stripped before serving to the runtime SDK."),
10
+ validation: z.array(z.string().max(500)).max(10).optional().describe("Authoring-only: ordered steps a reviewer can follow to trigger this action and visually confirm it works. Each entry is one step. Stripped before serving to the runtime SDK.")
11
+ };
12
+ var COUNTABLE_EVENTS = [
13
+ // User interactions (from PostHog autocapture normalization)
14
+ "ui.click",
15
+ "ui.scroll",
16
+ "ui.input",
17
+ "ui.change",
18
+ "ui.submit",
19
+ // Behavioral detectors (from event-processor)
20
+ "ui.hover",
21
+ "ui.idle",
22
+ "ui.scroll_thrash",
23
+ "ui.focus_bounce",
24
+ // Navigation
25
+ "nav.page_view",
26
+ "nav.page_leave",
27
+ // Derived behavioral signals
28
+ "behavior.rage_click",
29
+ "behavior.hesitation",
30
+ "behavior.confusion"
31
+ ];
32
+ var CountableEventZ = z.enum(COUNTABLE_EVENTS).describe("Event name to count. ui.* = user interactions and behavioral detectors, nav.* = page navigation, behavior.* = derived behavioral signals.");
33
+ var SESSION_METRIC_KEYS = ["time_on_page", "page_views", "scroll_depth"];
34
+ var SessionMetricKeyZ = z.enum(SESSION_METRIC_KEYS).describe("Session metric key. time_on_page = seconds on current page, page_views = pages visited this session, scroll_depth = 0-100 percentage.");
35
+ var PageUrlConditionZ = z.object({
36
+ type: z.literal("page_url"),
37
+ url: z.string().describe('URL path to match (e.g. "/pricing", "/dashboard")')
38
+ }).describe('Fires when the current page URL matches. Use for page-specific actions. Example: {"type": "page_url", "url": "/pricing"}');
39
+ var RouteConditionZ = z.object({
40
+ type: z.literal("route"),
41
+ routeId: z.string().describe("Named route ID from the route filter")
42
+ }).describe("Fires when the current route matches a named route ID.");
43
+ var AnchorVisibleConditionZ = z.object({
44
+ type: z.literal("anchor_visible"),
45
+ anchorId: z.string().describe("CSS selector of the anchor element"),
46
+ state: z.enum(["visible", "present", "absent"]).describe('"visible" = in viewport, "present" = in DOM, "absent" = not in DOM')
47
+ }).describe(`Fires based on a DOM element's visibility state. Example: {"type": "anchor_visible", "anchorId": "#cta-button", "state": "visible"}`);
48
+ var EventOccurredConditionZ = z.object({
49
+ type: z.literal("event_occurred"),
50
+ eventName: z.string().describe('Event name (e.g. "ui.click", "$pageview")'),
51
+ withinMs: z.number().optional().describe("Time window in ms. Omit = any time this session.")
52
+ }).describe('Fires when a specific event has occurred during this session. Example: {"type": "event_occurred", "eventName": "ui.click", "withinMs": 5000}');
53
+ var StateEqualsConditionZ = z.object({
54
+ type: z.literal("state_equals"),
55
+ key: z.string().describe("Key in the SDK persistent state store (localStorage). Only valid for keys the host app explicitly sets via syntro.state.set()."),
56
+ value: z.unknown().describe("Expected value to match against")
57
+ }).describe("Checks the SDK persistent state store (localStorage). ONLY for host-app state set via syntro.state.set() \u2014 NOT for user attributes like region, device, or UTM params (those are handled by segment targeting). Do NOT use this for targeting. If you do not know the valid state keys, do not use this condition type.");
58
+ var ViewportConditionZ = z.object({
59
+ type: z.literal("viewport"),
60
+ minWidth: z.number().optional().describe("Minimum viewport width in pixels"),
61
+ maxWidth: z.number().optional().describe("Maximum viewport width in pixels"),
62
+ minHeight: z.number().optional().describe("Minimum viewport height in pixels"),
63
+ maxHeight: z.number().optional().describe("Maximum viewport height in pixels")
64
+ }).describe('Fires based on viewport (screen) size. Use for responsive behavior. Example: {"type": "viewport", "minWidth": 768} \u2014 fires on tablet and larger.');
65
+ var SessionMetricConditionZ = z.object({
66
+ type: z.literal("session_metric"),
67
+ key: SessionMetricKeyZ,
68
+ operator: z.enum(["gte", "lte", "eq", "gt", "lt"]),
69
+ threshold: z.number().describe("Numeric threshold to compare against")
70
+ }).describe('Fires when a session metric crosses a threshold. Valid keys: "time_on_page" (seconds), "page_views" (count), "scroll_depth" (0-100). Example: {"type": "session_metric", "key": "time_on_page", "operator": "gte", "threshold": 30}');
71
+ var DismissedConditionZ = z.object({
72
+ type: z.literal("dismissed"),
73
+ key: z.string().describe("Dismissal key (usually a tile or action ID)"),
74
+ inverted: z.boolean().optional().describe("When true, fires if NOT dismissed (default behavior)")
75
+ }).describe("Checks if an item has been dismissed by the user. Use with inverted: true to show only if not dismissed.");
76
+ var CooldownActiveConditionZ = z.object({
77
+ type: z.literal("cooldown_active"),
78
+ key: z.string().describe("Cooldown key"),
79
+ inverted: z.boolean().optional().describe("When true, fires if cooldown is NOT active")
80
+ }).describe("Checks if a cooldown timer is currently active. Use to prevent showing the same intervention too frequently.");
81
+ var FrequencyLimitConditionZ = z.object({
82
+ type: z.literal("frequency_limit"),
83
+ key: z.string().describe("Frequency counter key"),
84
+ limit: z.number().describe("Maximum allowed count"),
85
+ inverted: z.boolean().optional().describe("When true, fires if limit NOT reached")
86
+ }).describe("Checks if a frequency limit has been reached. Use to cap how many times an action fires per session.");
87
+ var MatchOpZ = z.object({
88
+ equals: z.union([z.string(), z.number(), z.boolean()]).optional(),
89
+ contains: z.string().optional()
90
+ }).describe("Match operator for counter filters. Exactly one of equals or contains must be specified.");
91
+ var CounterDefZ = z.object({
92
+ events: z.array(CountableEventZ).min(1).describe("Event names to count. Use values from the countable events enum."),
93
+ match: z.record(z.string(), MatchOpZ).optional().describe("Property filters. Keys are event prop names or element-chain fields (tag_name, $el_text, attr__*). All entries AND together.")
94
+ }).describe("Defines what events to count. Registered as an accumulator predicate at config-load time.");
95
+ var EventCountConditionZ = z.object({
96
+ type: z.literal("event_count"),
97
+ key: z.string().describe("Unique key for this counter (used for accumulator registration)"),
98
+ operator: z.enum(["gte", "lte", "eq", "gt", "lt"]),
99
+ count: z.number().int().min(0).describe("Target count threshold"),
100
+ withinMs: z.number().positive().optional().describe("Time window in ms. Omit = count across entire session."),
101
+ counter: CounterDefZ.optional().describe("Inline counter definition. Defines what events to count.")
102
+ }).describe('Fires when accumulated event count crosses a threshold. Most powerful trigger type. Example: {"type": "event_count", "key": "pricing-clicks", "operator": "gte", "count": 3, "counter": {"events": ["ui.click"], "match": {"attr__data-cta": {"contains": "pricing"}}}}');
103
+ var ConditionZ = z.discriminatedUnion("type", [
104
+ PageUrlConditionZ,
105
+ RouteConditionZ,
106
+ AnchorVisibleConditionZ,
107
+ EventOccurredConditionZ,
108
+ StateEqualsConditionZ,
109
+ ViewportConditionZ,
110
+ SessionMetricConditionZ,
111
+ DismissedConditionZ,
112
+ CooldownActiveConditionZ,
113
+ FrequencyLimitConditionZ,
114
+ EventCountConditionZ
115
+ ]);
116
+ var RuleZ = z.object({
117
+ conditions: z.array(ConditionZ).describe("Array of conditions \u2014 ALL must match (AND logic) for this rule to fire."),
118
+ value: z.unknown().describe("Value returned when all conditions match. For triggerWhen: true = fire the action.")
119
+ }).describe("A single rule. ALL conditions must match (AND logic). Rules in a strategy are evaluated top-to-bottom \u2014 first rule where all conditions match wins and returns its value.");
120
+ var RuleStrategyZ = z.object({
121
+ type: z.literal("rules"),
122
+ rules: z.array(RuleZ).describe("Ordered list of rules. Evaluated top-to-bottom \u2014 first match wins."),
123
+ default: z.unknown().describe("Fallback value when no rule matches. For triggerWhen: false = do not fire by default.")
124
+ }).describe("Rule-based strategy. Evaluates rules top-to-bottom. First rule where ALL conditions match returns its value. If no rule matches, returns default. For triggerWhen: set value=true on matching rules, default=false.");
125
+ var ScoreStrategyZ = z.object({
126
+ type: z.literal("score"),
127
+ field: z.string(),
128
+ threshold: z.number(),
129
+ above: z.unknown(),
130
+ below: z.unknown()
131
+ }).describe("Score-based strategy. Compares a field value against a threshold.");
132
+ var ModelStrategyZ = z.object({
133
+ type: z.literal("model"),
134
+ modelId: z.string(),
135
+ inputs: z.array(z.string()),
136
+ outputMapping: z.record(z.string(), z.unknown()),
137
+ default: z.unknown()
138
+ }).describe("ML model strategy. Sends inputs to a model and maps outputs.");
139
+ var ExternalStrategyZ = z.object({
140
+ type: z.literal("external"),
141
+ endpoint: z.string(),
142
+ method: z.enum(["GET", "POST"]).optional(),
143
+ default: z.unknown(),
144
+ timeoutMs: z.number().optional()
145
+ }).describe("External API strategy. Calls an endpoint to determine the value.");
146
+ var DecisionStrategyZ = z.discriminatedUnion("type", [
147
+ RuleStrategyZ,
148
+ ScoreStrategyZ,
149
+ ModelStrategyZ,
150
+ ExternalStrategyZ
151
+ ]);
152
+ var TriggerWhenZ = DecisionStrategyZ.nullable().optional();
153
+ var EventScopeZ = z.object({
154
+ events: z.array(z.string()),
155
+ urlContains: z.string().optional(),
156
+ props: z.record(z.union([z.string(), z.number(), z.boolean()])).optional()
157
+ });
158
+ var NotifyZ = z.object({
159
+ title: z.string().optional(),
160
+ body: z.string().optional(),
161
+ icon: z.string().optional()
162
+ }).nullable().optional();
163
+
164
+ // ../../sdk-contracts/dist/icons.js
165
+ var PREFIX = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"';
166
+ var EMOJI_SVG_PATHS = {
167
+ // ── existing in adaptive-nav ─────────────────────────────────────────────
168
+ "\u{1F4B5}": [
169
+ '<rect width="20" height="12" x="2" y="6" rx="2"/>',
170
+ '<circle cx="12" cy="12" r="2"/>',
171
+ '<path d="M6 12h.01M18 12h.01"/>'
172
+ ],
173
+ "\u{1F3DB}\uFE0F": [
174
+ '<line x1="3" x2="21" y1="22" y2="22"/>',
175
+ '<line x1="6" x2="6" y1="18" y2="11"/>',
176
+ '<line x1="10" x2="10" y1="18" y2="11"/>',
177
+ '<line x1="14" x2="14" y1="18" y2="11"/>',
178
+ '<line x1="18" x2="18" y1="18" y2="11"/>',
179
+ '<polygon points="12 2 20 7 4 7"/>'
180
+ ],
181
+ "\u23ED\uFE0F": ['<polygon points="5 4 15 12 5 20 5 4"/>', '<line x1="19" x2="19" y1="5" y2="19"/>'],
182
+ "\u27A1\uFE0F": ['<path d="M5 12h14"/>', '<path d="m12 5 7 7-7 7"/>'],
183
+ "\u{1F4A1}": [
184
+ '<path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"/>',
185
+ '<path d="M9 18h6"/>',
186
+ '<path d="M10 22h4"/>'
187
+ ],
188
+ "\u{1F4B0}": [
189
+ '<rect width="20" height="12" x="2" y="6" rx="2"/>',
190
+ '<circle cx="12" cy="12" r="2"/>',
191
+ '<path d="M6 12h.01M18 12h.01"/>'
192
+ ],
193
+ "\u{1F4CB}": [
194
+ '<rect width="8" height="4" x="8" y="2" rx="1" ry="1"/>',
195
+ '<path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/>',
196
+ '<path d="M12 11h4"/>',
197
+ '<path d="M12 16h4"/>',
198
+ '<path d="M8 11h.01"/>',
199
+ '<path d="M8 16h.01"/>'
200
+ ],
201
+ "\u2705": ['<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/>', '<path d="m9 11 3 3L22 4"/>'],
202
+ "\u26A0\uFE0F": [
203
+ '<path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/>',
204
+ '<path d="M12 9v4"/>',
205
+ '<path d="M12 17h.01"/>'
206
+ ],
207
+ // ── added for healthmaxxer action_plans ──────────────────────────────────
208
+ "\u{1F6E1}\uFE0F": [
209
+ '<path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/>'
210
+ ],
211
+ "\u{1F4C8}": [
212
+ '<polyline points="22 7 13.5 15.5 8.5 10.5 2 17"/>',
213
+ '<polyline points="16 7 22 7 22 13"/>'
214
+ ],
215
+ "\u{1F52C}": [
216
+ '<path d="M6 18h8"/>',
217
+ '<path d="M3 22h18"/>',
218
+ '<path d="M14 22a7 7 0 1 0 0-14h-1"/>',
219
+ '<path d="M9 14h2"/>',
220
+ '<path d="M9 12a2 2 0 0 1-2-2V6h6v4a2 2 0 0 1-2 2Z"/>',
221
+ '<path d="M12 6V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3"/>'
222
+ ],
223
+ "\u{1F48A}": [
224
+ '<path d="m10.5 20.5 10-10a4.95 4.95 0 1 0-7-7l-10 10a4.95 4.95 0 1 0 7 7Z"/>',
225
+ '<path d="m8.5 8.5 7 7"/>'
226
+ ],
227
+ "\u{1F4C4}": [
228
+ '<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/>',
229
+ '<path d="M14 2v4a2 2 0 0 0 2 2h4"/>',
230
+ '<path d="M10 9H8"/>',
231
+ '<path d="M16 13H8"/>',
232
+ '<path d="M16 17H8"/>'
233
+ ],
234
+ "\u{1F9EA}": [
235
+ '<path d="M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2"/>',
236
+ '<path d="M6.453 15h11.094"/>',
237
+ '<path d="M8.5 2h7"/>'
238
+ ],
239
+ "\u{1F501}": [
240
+ '<path d="m17 2 4 4-4 4"/>',
241
+ '<path d="M3 11v-1a4 4 0 0 1 4-4h14"/>',
242
+ '<path d="m7 22-4-4 4-4"/>',
243
+ '<path d="M21 13v1a4 4 0 0 1-4 4H3"/>'
244
+ ],
245
+ "\u{1F9E0}": [
246
+ '<path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"/>',
247
+ '<path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"/>',
248
+ '<path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"/>',
249
+ '<path d="M17.599 6.5a3 3 0 0 0 .399-1.375"/>',
250
+ '<path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"/>',
251
+ '<path d="M3.477 10.896a4 4 0 0 1 .585-.396"/>',
252
+ '<path d="M19.938 10.5a4 4 0 0 1 .585.396"/>',
253
+ '<path d="M6 18a4 4 0 0 1-1.967-.516"/>',
254
+ '<path d="M19.967 17.484A4 4 0 0 1 18 18"/>'
255
+ ],
256
+ "\u{1F319}": ['<path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"/>'],
257
+ "\u{1F4E6}": [
258
+ '<path d="M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"/>',
259
+ '<path d="M12 22V12"/>',
260
+ '<path d="m3.3 7 8.7 5 8.7-5"/>',
261
+ '<path d="m7.5 4.27 9 5.15"/>'
262
+ ],
263
+ "\u{1F69A}": [
264
+ // Lucide truck
265
+ '<path d="M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2"/>',
266
+ '<path d="M15 18H9"/>',
267
+ '<path d="M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14"/>',
268
+ '<circle cx="17" cy="18" r="2"/>',
269
+ '<circle cx="7" cy="18" r="2"/>'
270
+ ],
271
+ "\u{1F331}": [
272
+ '<path d="M7 20h10"/>',
273
+ '<path d="M10 20c5.5-2.5.8-6.4 3-10"/>',
274
+ '<path d="M9.5 9.4c1.1.8 1.8 2.2 2.3 3.7-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2 2.8-.5 4.4 0 5.5.8z"/>',
275
+ '<path d="M14.1 6a7 7 0 0 0-1.1 4c1.9-.1 3.3-.6 4.3-1.4 1-1 1.6-2.3 1.7-4.6-2.7.1-4 1-4.9 2z"/>'
276
+ ],
277
+ "\u26A1": [
278
+ '<path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"/>'
279
+ ],
280
+ "\u{1F525}": [
281
+ // Lucide flame
282
+ '<path d="M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z"/>'
283
+ ],
284
+ "\u{1F333}": [
285
+ '<path d="M12 22V8"/>',
286
+ '<path d="m17 8-5-6-5 6"/>',
287
+ '<path d="M12 12c-2-2-4-2-4-2 0 0 0 4 2 6 1.5 1.5 3 1 4 0"/>',
288
+ '<path d="M12 12c2-2 4-2 4-2 0 0 0 4-2 6-1.5 1.5-3 1-4 0"/>'
289
+ ],
290
+ "\u{1F33F}": [
291
+ '<path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19.2 2.96a1 1 0 0 1 1.8.5c0 6-2 11-9 16.5"/>',
292
+ '<path d="M2 21c0-3 1.85-5.36 5.08-6"/>'
293
+ ],
294
+ // ── added for runtime-sdk SyntroTileCard / SyntroToastStack ──────────────
295
+ "\u2753": [
296
+ // HelpCircle
297
+ '<circle cx="12" cy="12" r="10"/>',
298
+ '<path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/>',
299
+ '<path d="M12 17h.01"/>'
300
+ ],
301
+ "\u{1F9ED}": [
302
+ // Compass
303
+ '<circle cx="12" cy="12" r="10"/>',
304
+ '<polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"/>'
305
+ ],
306
+ "\u{1F4DD}": [
307
+ // FileText
308
+ '<path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/>',
309
+ '<polyline points="14 2 14 8 20 8"/>',
310
+ '<line x1="16" y1="13" x2="8" y2="13"/>',
311
+ '<line x1="16" y1="17" x2="8" y2="17"/>',
312
+ '<line x1="10" y1="9" x2="8" y2="9"/>'
313
+ ],
314
+ "\u{1F3AF}": [
315
+ // Layers (bullseye-shaped emoji rendered as Lucide Layers — historical)
316
+ '<polygon points="12 2 2 7 12 12 22 7 12 2"/>',
317
+ '<polyline points="2 17 12 22 22 17"/>',
318
+ '<polyline points="2 12 12 17 22 12"/>'
319
+ ],
320
+ "\u{1F3C6}": [
321
+ // Trophy
322
+ '<path d="M6 9H4.5a2.5 2.5 0 0 1 0-5H6"/>',
323
+ '<path d="M18 9h1.5a2.5 2.5 0 0 0 0-5H18"/>',
324
+ '<path d="M4 22h16"/>',
325
+ '<path d="M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22"/>',
326
+ '<path d="M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22"/>',
327
+ '<path d="M18 2H6v7a6 6 0 0 0 12 0V2Z"/>'
328
+ ],
329
+ "\u2728": [
330
+ // Sparkles
331
+ '<path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/>',
332
+ '<path d="M5 3v4"/>',
333
+ '<path d="M19 17v4"/>',
334
+ '<path d="M3 5h4"/>',
335
+ '<path d="M17 19h4"/>'
336
+ ],
337
+ "\u{1F4AC}": [
338
+ // MessageCircle
339
+ '<path d="M7.9 20A9 9 0 1 0 4 16.1L2 22Z"/>'
340
+ ],
341
+ "\u{1F3AE}": [
342
+ // Gamepad2
343
+ '<line x1="6" y1="11" x2="10" y2="11"/>',
344
+ '<line x1="8" y1="9" x2="8" y2="13"/>',
345
+ '<line x1="15" y1="12" x2="15.01" y2="12"/>',
346
+ '<line x1="18" y1="10" x2="18.01" y2="10"/>',
347
+ '<path d="M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z"/>'
348
+ ],
349
+ "\u23F1\uFE0F": [
350
+ // Timer
351
+ '<line x1="10" y1="2" x2="14" y2="2"/>',
352
+ '<line x1="12" y1="14" x2="12" y2="8"/>',
353
+ '<circle cx="12" cy="14" r="8"/>'
354
+ ],
355
+ "\u{1F4D6}": [
356
+ // BookOpen
357
+ '<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/>',
358
+ '<path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/>'
359
+ ],
360
+ "\u{1F514}": [
361
+ // Bell
362
+ '<path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/>',
363
+ '<path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/>'
364
+ ],
365
+ // ── common UI icons ──────────────────────────────────────────────────────
366
+ "\u{1F393}": [
367
+ // GraduationCap
368
+ '<path d="M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z"/>',
369
+ '<path d="M22 10v6"/>',
370
+ '<path d="M6 12.5V16a6 3 0 0 0 12 0v-3.5"/>'
371
+ ],
372
+ "\u23F0": [
373
+ // AlarmClock
374
+ '<circle cx="12" cy="13" r="8"/>',
375
+ '<path d="M12 9v4l2 2"/>',
376
+ '<path d="M5 3 2 6"/>',
377
+ '<path d="m22 6-3-3"/>',
378
+ '<path d="M6.38 18.7 4 21"/>',
379
+ '<path d="M17.64 18.67 20 21"/>'
380
+ ],
381
+ "\u{1F504}": [
382
+ // RefreshCw
383
+ '<path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/>',
384
+ '<path d="M21 3v5h-5"/>',
385
+ '<path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/>',
386
+ '<path d="M8 16H3v5"/>'
387
+ ],
388
+ "\u{1F464}": [
389
+ // User
390
+ '<path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/>',
391
+ '<circle cx="12" cy="7" r="4"/>'
392
+ ],
393
+ "\u{1F3E0}": [
394
+ // House
395
+ '<path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"/>',
396
+ '<path d="M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>'
397
+ ],
398
+ "\u{1F6D2}": [
399
+ // ShoppingCart
400
+ '<circle cx="8" cy="21" r="1"/>',
401
+ '<circle cx="19" cy="21" r="1"/>',
402
+ '<path d="M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12"/>'
403
+ ],
404
+ // ── viz / chart icons (paired with adaptive-viz) ─────────────────────────
405
+ "\u{1F4CA}": [
406
+ // BarChart3 — pairs with 📈 (TrendingUp)
407
+ '<path d="M3 3v18h18"/>',
408
+ '<path d="M18 17V9"/>',
409
+ '<path d="M13 17V5"/>',
410
+ '<path d="M8 17v-3"/>'
411
+ ],
412
+ "\u{1F4C9}": [
413
+ // TrendingDown
414
+ '<polyline points="22 17 13.5 8.5 8.5 13.5 2 7"/>',
415
+ '<polyline points="16 17 22 17 22 11"/>'
416
+ ],
417
+ "\u{1F967}": [
418
+ // PieChart
419
+ '<path d="M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z"/>',
420
+ '<path d="M21.21 15.89A10 10 0 1 1 8 2.83"/>'
421
+ ],
422
+ "\u{1F4B9}": [
423
+ // Activity — line-chart-style waveform
424
+ '<path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.5.5 0 0 1-.96 0L9.24 2.18a.5.5 0 0 0-.96 0l-2.35 8.36A2 2 0 0 1 4.02 12H2"/>'
425
+ ],
426
+ "\u{1F321}\uFE0F": [
427
+ // Thermometer — gauge-style indicator
428
+ '<path d="M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z"/>'
429
+ ]
430
+ };
431
+ function renderIcon(emoji, options = {}) {
432
+ const paths = EMOJI_SVG_PATHS[emoji];
433
+ if (!paths)
434
+ return "";
435
+ const size = options.size ?? 14;
436
+ const stroke = options.color ?? "currentColor";
437
+ return `${PREFIX} width="${size}" height="${size}" stroke="${stroke}">${paths.join("")}</svg>`;
438
+ }
439
+
440
+ export {
441
+ renderIcon,
442
+ AnchorIdZ,
443
+ AuthoringFieldsZ,
444
+ TriggerWhenZ,
445
+ NotifyZ
446
+ };
447
+ //# sourceMappingURL=chunk-ZYHZ6JAD.js.map