@syntrologie/runtime-sdk 0.2.1 → 0.2.4

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 (144) hide show
  1. package/CAPABILITIES.md +400 -0
  2. package/dist/SmartCanvasApp.js +28 -10
  3. package/dist/SmartCanvasApp.js.map +1 -1
  4. package/dist/api.d.ts +23 -0
  5. package/dist/api.js +23 -5
  6. package/dist/api.js.map +1 -1
  7. package/dist/blocks/data/ComparisonBlock.d.ts +10 -0
  8. package/dist/blocks/data/ComparisonBlock.js +92 -0
  9. package/dist/blocks/data/ComparisonBlock.js.map +1 -0
  10. package/dist/blocks/data/StatsBlock.d.ts +10 -0
  11. package/dist/blocks/data/StatsBlock.js +103 -0
  12. package/dist/blocks/data/StatsBlock.js.map +1 -0
  13. package/dist/blocks/data/index.d.ts +2 -0
  14. package/dist/blocks/data/index.js +3 -0
  15. package/dist/blocks/data/index.js.map +1 -0
  16. package/dist/blocks/index.d.ts +26 -0
  17. package/dist/blocks/index.js +94 -0
  18. package/dist/blocks/index.js.map +1 -0
  19. package/dist/blocks/interactive/ChecklistBlock.d.ts +11 -0
  20. package/dist/blocks/interactive/ChecklistBlock.js +110 -0
  21. package/dist/blocks/interactive/ChecklistBlock.js.map +1 -0
  22. package/dist/blocks/interactive/RatingBlock.d.ts +11 -0
  23. package/dist/blocks/interactive/RatingBlock.js +131 -0
  24. package/dist/blocks/interactive/RatingBlock.js.map +1 -0
  25. package/dist/blocks/interactive/index.d.ts +2 -0
  26. package/dist/blocks/interactive/index.js +3 -0
  27. package/dist/blocks/interactive/index.js.map +1 -0
  28. package/dist/blocks/notification/NotificationBlock.d.ts +26 -0
  29. package/dist/blocks/notification/NotificationBlock.js +166 -0
  30. package/dist/blocks/notification/NotificationBlock.js.map +1 -0
  31. package/dist/blocks/notification/index.d.ts +1 -0
  32. package/dist/blocks/notification/index.js +2 -0
  33. package/dist/blocks/notification/index.js.map +1 -0
  34. package/dist/bootstrap.d.ts +19 -1
  35. package/dist/bootstrap.js +118 -17
  36. package/dist/bootstrap.js.map +1 -1
  37. package/dist/components/ShadowCanvasOverlay.d.ts +12 -3
  38. package/dist/components/ShadowCanvasOverlay.js +75 -24
  39. package/dist/components/ShadowCanvasOverlay.js.map +1 -1
  40. package/dist/components/{RectangleCard.d.ts → TileCard.d.ts} +4 -4
  41. package/dist/components/{RectangleCard.js → TileCard.js} +57 -6
  42. package/dist/components/TileCard.js.map +1 -0
  43. package/dist/components/TileWheel.d.ts +8 -0
  44. package/dist/components/{RectangleWheel.js → TileWheel.js} +7 -7
  45. package/dist/components/TileWheel.js.map +1 -0
  46. package/dist/configFetcher.js.map +1 -1
  47. package/dist/earlyPatcher.js +1 -2
  48. package/dist/earlyPatcher.js.map +1 -1
  49. package/dist/editorLoader.js +74 -17
  50. package/dist/editorLoader.js.map +1 -1
  51. package/dist/experiments/adapters/growthbook.d.ts +18 -2
  52. package/dist/experiments/adapters/growthbook.js +17 -3
  53. package/dist/experiments/adapters/growthbook.js.map +1 -1
  54. package/dist/experiments/registry.d.ts +18 -4
  55. package/dist/experiments/registry.js +1 -1
  56. package/dist/experiments/registry.js.map +1 -1
  57. package/dist/experiments/types.d.ts +8 -3
  58. package/dist/fetchers/cdnFetcher.js.map +1 -1
  59. package/dist/fetchers/experimentsFetcher.js +20 -0
  60. package/dist/fetchers/experimentsFetcher.js.map +1 -1
  61. package/dist/fetchers/types.d.ts +2 -2
  62. package/dist/hooks/useCanvasOverlays.d.ts +5 -1
  63. package/dist/hooks/useCanvasOverlays.js +33 -13
  64. package/dist/hooks/useCanvasOverlays.js.map +1 -1
  65. package/dist/hooks/useShadowCanvasConfig.d.ts +9 -2
  66. package/dist/hooks/useShadowCanvasConfig.js +8 -8
  67. package/dist/hooks/useShadowCanvasConfig.js.map +1 -1
  68. package/dist/hostPatcher/core/patcher.js +14 -15
  69. package/dist/hostPatcher/core/patcher.js.map +1 -1
  70. package/dist/hostPatcher/core/sanitizer.js +1 -1
  71. package/dist/hostPatcher/core/sanitizer.js.map +1 -1
  72. package/dist/hostPatcher/core/types.d.ts +8 -9
  73. package/dist/hostPatcher/policy/defaultPolicy.d.ts +4 -0
  74. package/dist/hostPatcher/policy/defaultPolicy.js +9 -37
  75. package/dist/hostPatcher/policy/defaultPolicy.js.map +1 -1
  76. package/dist/hostPatcher/utils/anchors.js +3 -3
  77. package/dist/hostPatcher/utils/anchors.js.map +1 -1
  78. package/dist/index.d.ts +2 -2
  79. package/dist/index.js +2 -2
  80. package/dist/index.js.map +1 -1
  81. package/dist/overlays/recipeRegistry.d.ts +14 -0
  82. package/dist/overlays/recipeRegistry.js +32 -0
  83. package/dist/overlays/recipeRegistry.js.map +1 -0
  84. package/dist/overlays/runtime/index.d.ts +1 -0
  85. package/dist/overlays/runtime/index.js +1 -0
  86. package/dist/overlays/runtime/index.js.map +1 -1
  87. package/dist/overlays/runtime/overlay/modal.d.ts +11 -0
  88. package/dist/overlays/runtime/overlay/modal.js +78 -0
  89. package/dist/overlays/runtime/overlay/modal.js.map +1 -0
  90. package/dist/overlays/runtime/overlay/root.js +132 -0
  91. package/dist/overlays/runtime/overlay/root.js.map +1 -1
  92. package/dist/overlays/runtime/overlay/runner.d.ts +2 -0
  93. package/dist/overlays/runtime/overlay/runner.js +441 -2
  94. package/dist/overlays/runtime/overlay/runner.js.map +1 -1
  95. package/dist/overlays/runtime/overlay/tooltip.d.ts +1 -0
  96. package/dist/overlays/runtime/overlay/tooltip.js +61 -1
  97. package/dist/overlays/runtime/overlay/tooltip.js.map +1 -1
  98. package/dist/overlays/schema.d.ts +6 -6
  99. package/dist/overlays/types.d.ts +55 -1
  100. package/dist/react.d.ts +6 -1
  101. package/dist/react.js +31 -9
  102. package/dist/react.js.map +1 -1
  103. package/dist/render/RenderContext.d.ts +39 -0
  104. package/dist/render/RenderContext.js +67 -0
  105. package/dist/render/RenderContext.js.map +1 -0
  106. package/dist/render/index.d.ts +3 -0
  107. package/dist/render/index.js +3 -0
  108. package/dist/render/index.js.map +1 -0
  109. package/dist/render/types.d.ts +81 -0
  110. package/dist/render/types.js +2 -0
  111. package/dist/render/types.js.map +1 -0
  112. package/dist/smart-canvas.esm.js +192 -25
  113. package/dist/smart-canvas.esm.js.map +4 -4
  114. package/dist/smart-canvas.js +25962 -26846
  115. package/dist/smart-canvas.js.map +4 -4
  116. package/dist/smart-canvas.min.js +192 -25
  117. package/dist/smart-canvas.min.js.map +4 -4
  118. package/dist/telemetry/adapters/posthog.d.ts +6 -0
  119. package/dist/telemetry/adapters/posthog.js +48 -0
  120. package/dist/telemetry/adapters/posthog.js.map +1 -1
  121. package/dist/telemetry/types.d.ts +30 -0
  122. package/dist/theme/ThemeProvider.d.ts +31 -0
  123. package/dist/theme/ThemeProvider.js +109 -0
  124. package/dist/theme/ThemeProvider.js.map +1 -0
  125. package/dist/theme/defaultTheme.d.ts +18 -0
  126. package/dist/theme/defaultTheme.js +163 -0
  127. package/dist/theme/defaultTheme.js.map +1 -0
  128. package/dist/theme/extractHostTheme.d.ts +14 -0
  129. package/dist/theme/extractHostTheme.js +261 -0
  130. package/dist/theme/extractHostTheme.js.map +1 -0
  131. package/dist/theme/index.d.ts +5 -0
  132. package/dist/theme/index.js +7 -0
  133. package/dist/theme/index.js.map +1 -0
  134. package/dist/theme/types.d.ts +91 -0
  135. package/dist/theme/types.js +6 -0
  136. package/dist/theme/types.js.map +1 -0
  137. package/dist/token.d.ts +4 -0
  138. package/dist/token.js.map +1 -1
  139. package/dist/types.d.ts +228 -47
  140. package/package.json +8 -4
  141. package/schema/canvas-config.schema.json +24 -15
  142. package/dist/components/RectangleCard.js.map +0 -1
  143. package/dist/components/RectangleWheel.d.ts +0 -8
  144. package/dist/components/RectangleWheel.js.map +0 -1
package/dist/types.d.ts CHANGED
@@ -13,16 +13,208 @@ export interface TileComponentProps {
13
13
  export interface TileComponent {
14
14
  mount(container: HTMLElement, props: TileComponentProps): void | (() => void);
15
15
  }
16
+ /**
17
+ * All available block types organized by category
18
+ */
19
+ export type NotificationBlockType = "alert" | "success" | "warning" | "info" | "error";
20
+ export type MediaBlockType = "video" | "gallery" | "code";
21
+ export type InteractiveBlockType = "form" | "rating" | "progress" | "survey" | "checklist";
22
+ export type DataBlockType = "stats" | "comparison" | "chart" | "table";
23
+ export type LegacyBlockType = "text" | "metric" | "chatbot" | "embed";
24
+ /**
25
+ * Union of all block types
26
+ */
27
+ export type BlockType = NotificationBlockType | MediaBlockType | InteractiveBlockType | DataBlockType | LegacyBlockType | "custom";
28
+ export interface NotificationContentBase {
29
+ title: string;
30
+ body?: string;
31
+ dismissible?: boolean;
32
+ icon?: string;
33
+ timestamp?: string;
34
+ }
35
+ export interface AlertContent extends NotificationContentBase {
36
+ type: "alert";
37
+ severity?: "low" | "medium" | "high" | "critical";
38
+ }
39
+ export interface SuccessContent extends NotificationContentBase {
40
+ type: "success";
41
+ confetti?: boolean;
42
+ }
43
+ export interface WarningContent extends NotificationContentBase {
44
+ type: "warning";
45
+ countdown?: number;
46
+ }
47
+ export interface InfoContent extends NotificationContentBase {
48
+ type: "info";
49
+ learnMoreUrl?: string;
50
+ }
51
+ export interface ErrorContent extends NotificationContentBase {
52
+ type: "error";
53
+ errorCode?: string;
54
+ retryable?: boolean;
55
+ }
56
+ export type NotificationContent = AlertContent | SuccessContent | WarningContent | InfoContent | ErrorContent;
57
+ export interface VideoContent {
58
+ type: "video";
59
+ src: string;
60
+ provider?: "youtube" | "vimeo" | "custom";
61
+ poster?: string;
62
+ autoplay?: boolean;
63
+ muted?: boolean;
64
+ loop?: boolean;
65
+ aspectRatio?: "16:9" | "4:3" | "1:1" | "9:16";
66
+ }
67
+ export interface GalleryContent {
68
+ type: "gallery";
69
+ images: Array<{
70
+ src: string;
71
+ alt?: string;
72
+ caption?: string;
73
+ }>;
74
+ layout?: "carousel" | "grid" | "masonry";
75
+ columns?: 2 | 3 | 4;
76
+ }
77
+ export interface CodeContent {
78
+ type: "code";
79
+ code: string;
80
+ language?: string;
81
+ lineNumbers?: boolean;
82
+ highlightLines?: number[];
83
+ copyable?: boolean;
84
+ filename?: string;
85
+ }
86
+ export type MediaContent = VideoContent | GalleryContent | CodeContent;
87
+ export interface FormField {
88
+ id: string;
89
+ type: "text" | "email" | "select" | "checkbox" | "radio" | "textarea";
90
+ label: string;
91
+ placeholder?: string;
92
+ required?: boolean;
93
+ options?: Array<{
94
+ value: string;
95
+ label: string;
96
+ }>;
97
+ defaultValue?: string | boolean;
98
+ }
99
+ export interface FormContent {
100
+ type: "form";
101
+ fields: FormField[];
102
+ submitLabel?: string;
103
+ submitActionId?: string;
104
+ }
105
+ export interface RatingContent {
106
+ type: "rating";
107
+ variant: "stars" | "thumbs" | "nps" | "emoji";
108
+ question?: string;
109
+ maxValue?: number;
110
+ submitActionId?: string;
111
+ }
112
+ export interface ProgressContent {
113
+ type: "progress";
114
+ variant: "bar" | "steps" | "circular";
115
+ value: number;
116
+ max?: number;
117
+ steps?: Array<{
118
+ label: string;
119
+ completed?: boolean;
120
+ }>;
121
+ showPercentage?: boolean;
122
+ }
123
+ export interface SurveyChoice {
124
+ id: string;
125
+ label: string;
126
+ icon?: string;
127
+ }
128
+ export interface SurveyContent {
129
+ type: "survey";
130
+ question: string;
131
+ choices: SurveyChoice[];
132
+ multiSelect?: boolean;
133
+ showResults?: boolean;
134
+ results?: Record<string, number>;
135
+ submitActionId?: string;
136
+ }
137
+ export interface ChecklistItem {
138
+ id: string;
139
+ title: string;
140
+ description?: string;
141
+ href?: string;
142
+ linkLabel?: string;
143
+ completed?: boolean;
144
+ }
145
+ export interface ChecklistContent {
146
+ type: "checklist";
147
+ items: ChecklistItem[];
148
+ title?: string;
149
+ showProgress?: boolean;
150
+ }
151
+ export type InteractiveContent = FormContent | RatingContent | ProgressContent | SurveyContent | ChecklistContent;
152
+ export interface TrendIndicator {
153
+ direction: "up" | "down" | "neutral";
154
+ value: string;
155
+ timeframe?: string;
156
+ }
157
+ export interface StatsContent {
158
+ type: "stats";
159
+ value: string;
160
+ label: string;
161
+ trend?: TrendIndicator;
162
+ sparkline?: number[];
163
+ prefix?: string;
164
+ suffix?: string;
165
+ }
166
+ export interface ComparisonItem {
167
+ label: string;
168
+ value: string | number;
169
+ highlight?: boolean;
170
+ icon?: string;
171
+ }
172
+ export interface ComparisonContent {
173
+ type: "comparison";
174
+ items: ComparisonItem[];
175
+ layout?: "grid" | "list" | "table";
176
+ columns?: 2 | 3 | 4;
177
+ highlightBest?: boolean;
178
+ }
179
+ export interface ChartContent {
180
+ type: "chart";
181
+ chartType: "bar" | "line" | "pie" | "donut";
182
+ data: Array<{
183
+ label: string;
184
+ value: number;
185
+ color?: string;
186
+ }>;
187
+ showLegend?: boolean;
188
+ showLabels?: boolean;
189
+ animated?: boolean;
190
+ }
191
+ export interface TableColumn {
192
+ key: string;
193
+ label: string;
194
+ sortable?: boolean;
195
+ width?: string;
196
+ }
197
+ export interface TableContent {
198
+ type: "table";
199
+ columns: TableColumn[];
200
+ rows: Array<Record<string, string | number>>;
201
+ sortable?: boolean;
202
+ scrollable?: boolean;
203
+ maxHeight?: string;
204
+ }
205
+ export type DataContent = StatsContent | ComparisonContent | ChartContent | TableContent;
16
206
  /**
17
207
  * Grid width: "full" = spans both columns, "half" = one column
18
208
  */
19
209
  export type TileSize = "full" | "half";
20
210
  /**
21
211
  * Built-in tile types (convenience components we ship)
212
+ * @deprecated Use BlockType instead
22
213
  */
23
214
  export type BuiltInTileType = "text" | "metric" | "chatbot" | "embed";
24
215
  /**
25
216
  * Content configuration for built-in tile types
217
+ * @deprecated Use specific content types (NotificationContent, MediaContent, etc.)
26
218
  */
27
219
  export interface BuiltInTileContent {
28
220
  type: BuiltInTileType;
@@ -43,9 +235,13 @@ export interface CustomTileContent {
43
235
  actions?: TileAction[];
44
236
  }
45
237
  /**
46
- * Union of all content types
238
+ * Union of all content types (new block-based system)
239
+ */
240
+ export type BlockContent = NotificationContent | MediaContent | InteractiveContent | DataContent | CustomTileContent;
241
+ /**
242
+ * Union of all content types (includes legacy for backwards compatibility)
47
243
  */
48
- export type TileContent = BuiltInTileContent | CustomTileContent;
244
+ export type TileContent = BuiltInTileContent | CustomTileContent | BlockContent;
49
245
  /**
50
246
  * Action button displayed in expanded tile
51
247
  */
@@ -91,57 +287,42 @@ export interface TileConfig {
91
287
  analyticsKey?: string;
92
288
  }
93
289
  import type { Patch } from "./hostPatcher/core/types";
290
+ /**
291
+ * Theme configuration for the SmartCanvas overlay.
292
+ * These values are typically set from workspace settings after style selection.
293
+ */
294
+ export interface CanvasThemeConfig {
295
+ name?: string;
296
+ description?: string;
297
+ mode?: 'dark' | 'light';
298
+ colorPrimary?: string;
299
+ colorBackground?: string;
300
+ colorText?: string;
301
+ colorTextSecondary?: string;
302
+ borderRadius?: string;
303
+ position?: 'left' | 'right';
304
+ }
305
+ export interface LauncherConfig {
306
+ /** Label shown on the launcher button (default: "Adaptives") */
307
+ label?: string;
308
+ /** Whether to animate the launcher to draw attention */
309
+ animate?: boolean;
310
+ /** Animation style: "pulse" (default), "bounce", "glow" */
311
+ animationStyle?: "pulse" | "bounce" | "glow";
312
+ }
94
313
  export interface CanvasConfigResponse {
95
314
  tiles: TileConfig[];
96
315
  fetchedAt: string;
97
316
  configVersion?: string;
98
317
  canvasTitle?: string;
99
318
  patches?: Patch[];
319
+ /** @deprecated Use overlayRecipes instead */
100
320
  overlayRecipe?: import('./overlays/types').CanvasRecipe;
321
+ /** Multiple overlay recipes (tours) */
322
+ overlayRecipes?: import('./overlays/types').CanvasRecipe[];
323
+ /** SmartCanvas theme configuration from workspace settings */
324
+ theme?: CanvasThemeConfig;
325
+ /** Launcher button configuration */
326
+ launcher?: LauncherConfig;
101
327
  }
102
328
  export type CanvasConfigFetcher = () => Promise<CanvasConfigResponse>;
103
- /** @deprecated Use TileSize */
104
- export type RectangleSize = TileSize | "quarter";
105
- /** @deprecated Use TileContent */
106
- export type RectangleContentType = "text" | "metric" | "chatbot" | "embed" | "custom";
107
- /** @deprecated Use TileAction */
108
- export type RectangleAction = TileAction;
109
- /** @deprecated Use TileContent */
110
- export interface RectangleContent {
111
- type: RectangleContentType;
112
- headline?: string;
113
- body?: string;
114
- metricValue?: string;
115
- metricUnit?: string;
116
- embedUrl?: string;
117
- customRendererKey?: string;
118
- actions?: TileAction[];
119
- }
120
- /** @deprecated Use TileStyle */
121
- export type RectangleStyle = TileStyle;
122
- /** @deprecated Use TileExperiment */
123
- export type RectangleExperimentConfig = TileExperiment;
124
- /** @deprecated Use TileConfig */
125
- export interface RectangleConfig {
126
- id: string;
127
- title: string;
128
- subtitle?: string;
129
- icon?: string;
130
- size?: RectangleSize;
131
- order?: number;
132
- style?: TileStyle;
133
- content: RectangleContent;
134
- experiment?: TileExperiment;
135
- analyticsKey?: string;
136
- }
137
- /** @deprecated Use CanvasConfigResponse */
138
- export interface ShadowCanvasConfigResponse {
139
- rectangles?: RectangleConfig[];
140
- tiles?: TileConfig[];
141
- fetchedAt: string;
142
- configVersion?: string;
143
- canvasTitle?: string;
144
- patches?: Patch[];
145
- overlayRecipe?: import('./overlays/types').CanvasRecipe;
146
- displayMode?: 'standard' | 'focused';
147
- }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syntrologie/runtime-sdk",
3
- "version": "0.2.1",
3
+ "version": "0.2.4",
4
4
  "description": "Syntrologie Runtime SDK for web experimentation and analytics",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
@@ -34,7 +34,8 @@
34
34
  "dist",
35
35
  "schema",
36
36
  "scripts/validate-config.mjs",
37
- "README.md"
37
+ "README.md",
38
+ "CAPABILITIES.md"
38
39
  ],
39
40
  "scripts": {
40
41
  "clean": "rm -rf dist",
@@ -49,8 +50,8 @@
49
50
  "@growthbook/growthbook": "~1.6.2",
50
51
  "@growthbook/growthbook-react": "~1.6.2",
51
52
  "posthog-js": "~1.302.2",
52
- "react": "~18.3.1",
53
- "react-dom": "~18.3.1",
53
+ "react": ">=18.0.0",
54
+ "react-dom": ">=18.0.0",
54
55
  "zod": "~3.25.0"
55
56
  },
56
57
  "peerDependencies": {
@@ -58,6 +59,9 @@
58
59
  "react-dom": ">=18.0.0"
59
60
  },
60
61
  "devDependencies": {
62
+ "@types/node": "^25.0.3",
63
+ "@types/react": "~18.3.0",
64
+ "@types/react-dom": "~18.3.0",
61
65
  "esbuild": "~0.25.0",
62
66
  "typescript": "~5.7.0"
63
67
  }
@@ -118,38 +118,43 @@
118
118
  "type": "object",
119
119
  "oneOf": [
120
120
  {
121
- "required": ["by", "value"],
121
+ "required": ["type", "value"],
122
122
  "properties": {
123
- "by": { "const": "css" },
124
- "value": { "type": "string" },
125
- "within": { "enum": ["document", "shadow"] }
123
+ "type": { "const": "css" },
124
+ "value": { "type": "string" }
126
125
  },
127
126
  "additionalProperties": false
128
127
  },
129
128
  {
130
- "required": ["by", "key"],
129
+ "required": ["type", "key"],
131
130
  "properties": {
132
- "by": { "const": "data" },
131
+ "type": { "const": "data" },
133
132
  "key": { "type": "string" },
134
- "value": { "type": "string" },
135
- "within": { "enum": ["document", "shadow"] }
133
+ "value": { "type": "string" }
136
134
  },
137
135
  "additionalProperties": false
138
136
  },
139
137
  {
140
- "required": ["by"],
138
+ "required": ["type"],
141
139
  "properties": {
142
- "by": { "const": "aria" },
140
+ "type": { "const": "aria" },
143
141
  "role": { "type": "string" },
144
- "label": { "type": "string" },
145
- "within": { "enum": ["document", "shadow"] }
142
+ "label": { "type": "string" }
146
143
  },
147
144
  "additionalProperties": false
148
145
  },
149
146
  {
150
- "required": ["by", "el"],
147
+ "required": ["type", "value"],
151
148
  "properties": {
152
- "by": { "const": "ref" },
149
+ "type": { "const": "shadow-css" },
150
+ "value": { "type": "string" }
151
+ },
152
+ "additionalProperties": false
153
+ },
154
+ {
155
+ "required": ["type"],
156
+ "properties": {
157
+ "type": { "const": "ref" },
153
158
  "el": {}
154
159
  },
155
160
  "additionalProperties": false
@@ -235,8 +240,12 @@
235
240
  "required": ["id", "anchor", "operations"],
236
241
  "properties": {
237
242
  "id": { "type": "string" },
243
+ "routes": {
244
+ "type": "array",
245
+ "items": { "type": "string" },
246
+ "description": "URL path patterns where this patch should apply. Supports wildcards (e.g., '/', '/pricing', '/products/*'). If omitted, patch applies on all pages."
247
+ },
238
248
  "anchor": { "$ref": "#/$defs/anchorSelector" },
239
- "tier": { "enum": ["additive", "moderate", "surgical"] },
240
249
  "operations": {
241
250
  "type": "array",
242
251
  "items": { "$ref": "#/$defs/operation" }
@@ -1 +0,0 @@
1
- {"version":3,"file":"RectangleCard.js","sourceRoot":"","sources":["../../src/components/RectangleCard.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { RectangleConfig } from "../types";
2
- import type { TelemetryClient } from "../telemetry/types";
3
- export interface RectangleWheelProps {
4
- rectangles: RectangleConfig[];
5
- intervalMs?: number;
6
- telemetry?: TelemetryClient;
7
- }
8
- export declare function RectangleWheel({ rectangles, intervalMs, telemetry, }: RectangleWheelProps): import("react/jsx-runtime").JSX.Element | null;
@@ -1 +0,0 @@
1
- {"version":3,"file":"RectangleWheel.js","sourceRoot":"","sources":["../../src/components/RectangleWheel.tsx"],"names":[],"mappings":"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"}