@syntrologie/runtime-sdk 0.2.21 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/CAPABILITIES.md +944 -440
  2. package/README.md +395 -66
  3. package/dist/RuntimeProvider.d.ts +51 -0
  4. package/dist/RuntimeProvider.js +113 -0
  5. package/dist/RuntimeProvider.js.map +1 -0
  6. package/dist/SmartCanvasApp.d.ts +16 -10
  7. package/dist/SmartCanvasApp.js +47 -51
  8. package/dist/SmartCanvasApp.js.map +1 -1
  9. package/dist/SmartCanvasElement.d.ts +5 -5
  10. package/dist/SmartCanvasElement.js +24 -14
  11. package/dist/SmartCanvasElement.js.map +1 -1
  12. package/dist/SmartCanvasPortal.d.ts +2 -2
  13. package/dist/SmartCanvasPortal.js +2 -2
  14. package/dist/SmartCanvasPortal.js.map +1 -1
  15. package/dist/actions/ActionEngine.d.ts +11 -0
  16. package/dist/actions/ActionEngine.js +272 -0
  17. package/dist/actions/ActionEngine.js.map +1 -0
  18. package/dist/actions/executors/index.d.ts +116 -0
  19. package/dist/actions/executors/index.js +240 -0
  20. package/dist/actions/executors/index.js.map +1 -0
  21. package/dist/actions/executors/tour.d.ts +18 -0
  22. package/dist/actions/executors/tour.js +332 -0
  23. package/dist/actions/executors/tour.js.map +1 -0
  24. package/dist/actions/index.d.ts +10 -0
  25. package/dist/actions/index.js +12 -0
  26. package/dist/actions/index.js.map +1 -0
  27. package/dist/actions/types.d.ts +399 -0
  28. package/dist/actions/types.js +8 -0
  29. package/dist/actions/types.js.map +1 -0
  30. package/dist/actions/validation.d.ts +14 -0
  31. package/dist/actions/validation.js +577 -0
  32. package/dist/actions/validation.js.map +1 -0
  33. package/dist/adaptives/adaptive-chatbot/index.js +9 -0
  34. package/dist/adaptives/adaptive-chatbot/index.js.map +7 -0
  35. package/dist/adaptives/adaptive-content/index.js +2 -0
  36. package/dist/adaptives/adaptive-content/index.js.map +7 -0
  37. package/dist/adaptives/adaptive-faq/index.js +11 -0
  38. package/dist/adaptives/adaptive-faq/index.js.map +7 -0
  39. package/dist/adaptives/adaptive-gamification/index.js +2 -0
  40. package/dist/adaptives/adaptive-gamification/index.js.map +7 -0
  41. package/dist/adaptives/adaptive-nav/index.js +11 -0
  42. package/dist/adaptives/adaptive-nav/index.js.map +7 -0
  43. package/dist/adaptives/adaptive-overlays/index.js +91 -0
  44. package/dist/adaptives/adaptive-overlays/index.js.map +7 -0
  45. package/dist/antiFlicker.js +1 -1
  46. package/dist/api.d.ts +40 -26
  47. package/dist/api.js +87 -60
  48. package/dist/api.js.map +1 -1
  49. package/dist/apps/AppContext.d.ts +31 -0
  50. package/dist/apps/AppContext.js +91 -0
  51. package/dist/apps/AppContext.js.map +1 -0
  52. package/dist/apps/AppLoader.d.ts +85 -0
  53. package/dist/apps/AppLoader.js +282 -0
  54. package/dist/apps/AppLoader.js.map +1 -0
  55. package/dist/apps/AppRegistry.d.ts +102 -0
  56. package/dist/apps/AppRegistry.js +317 -0
  57. package/dist/apps/AppRegistry.js.map +1 -0
  58. package/dist/apps/examples/gamification-app.example.d.ts +305 -0
  59. package/dist/apps/examples/gamification-app.example.js +329 -0
  60. package/dist/apps/examples/gamification-app.example.js.map +1 -0
  61. package/dist/apps/index.d.ts +14 -0
  62. package/dist/apps/index.js +16 -0
  63. package/dist/apps/index.js.map +1 -0
  64. package/dist/apps/types.d.ts +231 -0
  65. package/dist/apps/types.js +8 -0
  66. package/dist/apps/types.js.map +1 -0
  67. package/dist/blocks/data/ComparisonBlock.d.ts +1 -1
  68. package/dist/blocks/data/ComparisonBlock.js +40 -40
  69. package/dist/blocks/data/ComparisonBlock.js.map +1 -1
  70. package/dist/blocks/data/StatsBlock.d.ts +1 -1
  71. package/dist/blocks/data/StatsBlock.js +42 -44
  72. package/dist/blocks/data/StatsBlock.js.map +1 -1
  73. package/dist/blocks/data/index.d.ts +2 -2
  74. package/dist/blocks/data/index.js +2 -2
  75. package/dist/blocks/index.d.ts +5 -5
  76. package/dist/blocks/index.js +29 -30
  77. package/dist/blocks/index.js.map +1 -1
  78. package/dist/blocks/interactive/ChecklistBlock.d.ts +1 -1
  79. package/dist/blocks/interactive/ChecklistBlock.js +60 -60
  80. package/dist/blocks/interactive/ChecklistBlock.js.map +1 -1
  81. package/dist/blocks/interactive/RatingBlock.d.ts +1 -1
  82. package/dist/blocks/interactive/RatingBlock.js +73 -65
  83. package/dist/blocks/interactive/RatingBlock.js.map +1 -1
  84. package/dist/blocks/interactive/index.d.ts +2 -2
  85. package/dist/blocks/interactive/index.js +2 -2
  86. package/dist/blocks/notification/NotificationBlock.d.ts +2 -2
  87. package/dist/blocks/notification/NotificationBlock.js +68 -64
  88. package/dist/blocks/notification/NotificationBlock.js.map +1 -1
  89. package/dist/blocks/notification/index.d.ts +1 -1
  90. package/dist/blocks/notification/index.js +1 -1
  91. package/dist/bootstrap.d.ts +32 -8
  92. package/dist/bootstrap.js +218 -102
  93. package/dist/bootstrap.js.map +1 -1
  94. package/dist/components/ShadowCanvasOverlay.d.ts +6 -6
  95. package/dist/components/ShadowCanvasOverlay.js +156 -118
  96. package/dist/components/ShadowCanvasOverlay.js.map +1 -1
  97. package/dist/components/TileCard.d.ts +5 -5
  98. package/dist/components/TileCard.js +205 -154
  99. package/dist/components/TileCard.js.map +1 -1
  100. package/dist/components/TileWheel.d.ts +3 -3
  101. package/dist/components/TileWheel.js +29 -7
  102. package/dist/components/TileWheel.js.map +1 -1
  103. package/dist/config-validator.d.ts +49 -0
  104. package/dist/config-validator.js +173 -0
  105. package/dist/config-validator.js.map +1 -0
  106. package/dist/configFetcher.d.ts +7 -3
  107. package/dist/configFetcher.js +70 -29
  108. package/dist/configFetcher.js.map +1 -1
  109. package/dist/context/ContextManager.d.ts +3 -3
  110. package/dist/context/ContextManager.js +19 -18
  111. package/dist/context/ContextManager.js.map +1 -1
  112. package/dist/context/index.d.ts +4 -4
  113. package/dist/context/index.js +3 -3
  114. package/dist/context/schema.d.ts +9 -9
  115. package/dist/context/schema.js +2 -2
  116. package/dist/context/schema.js.map +1 -1
  117. package/dist/decisions/engine.d.ts +5 -5
  118. package/dist/decisions/engine.js +13 -13
  119. package/dist/decisions/engine.js.map +1 -1
  120. package/dist/decisions/index.d.ts +6 -6
  121. package/dist/decisions/index.js +5 -5
  122. package/dist/decisions/schema.d.ts +131 -131
  123. package/dist/decisions/schema.js +21 -21
  124. package/dist/decisions/schema.js.map +1 -1
  125. package/dist/decisions/strategies/rules.d.ts +1 -1
  126. package/dist/decisions/strategies/rules.js +24 -24
  127. package/dist/decisions/strategies/rules.js.map +1 -1
  128. package/dist/decisions/strategies/score.d.ts +1 -1
  129. package/dist/decisions/strategies/score.js +3 -3
  130. package/dist/decisions/types.d.ts +19 -19
  131. package/dist/earlyPatcher.d.ts +8 -20
  132. package/dist/earlyPatcher.js +13 -62
  133. package/dist/earlyPatcher.js.map +1 -1
  134. package/dist/editorLoader.d.ts +19 -7
  135. package/dist/editorLoader.js +154 -97
  136. package/dist/editorLoader.js.map +1 -1
  137. package/dist/events/EventBus.d.ts +3 -3
  138. package/dist/events/EventBus.js +5 -7
  139. package/dist/events/EventBus.js.map +1 -1
  140. package/dist/events/index.d.ts +6 -6
  141. package/dist/events/index.js +5 -5
  142. package/dist/events/normalizers/canvas.d.ts +2 -2
  143. package/dist/events/normalizers/canvas.js +3 -3
  144. package/dist/events/normalizers/canvas.js.map +1 -1
  145. package/dist/events/normalizers/posthog.d.ts +25 -1
  146. package/dist/events/normalizers/posthog.js +35 -27
  147. package/dist/events/normalizers/posthog.js.map +1 -1
  148. package/dist/events/schema.d.ts +13 -13
  149. package/dist/events/schema.js +3 -3
  150. package/dist/events/schema.js.map +1 -1
  151. package/dist/events/types.d.ts +7 -1
  152. package/dist/events/types.js +29 -21
  153. package/dist/events/types.js.map +1 -1
  154. package/dist/experiments/adapters/growthbook.d.ts +5 -4
  155. package/dist/experiments/adapters/growthbook.js +14 -6
  156. package/dist/experiments/adapters/growthbook.js.map +1 -1
  157. package/dist/experiments/index.d.ts +3 -3
  158. package/dist/experiments/index.js +1 -1
  159. package/dist/experiments/registry.d.ts +2 -2
  160. package/dist/experiments/registry.js +2 -2
  161. package/dist/experiments/types.d.ts +10 -1
  162. package/dist/fetchers/cdnFetcher.d.ts +1 -1
  163. package/dist/fetchers/cdnFetcher.js +4 -8
  164. package/dist/fetchers/cdnFetcher.js.map +1 -1
  165. package/dist/fetchers/experimentsFetcher.d.ts +25 -3
  166. package/dist/fetchers/experimentsFetcher.js +55 -8
  167. package/dist/fetchers/experimentsFetcher.js.map +1 -1
  168. package/dist/fetchers/index.d.ts +3 -3
  169. package/dist/fetchers/index.js +2 -2
  170. package/dist/fetchers/index.js.map +1 -1
  171. package/dist/fetchers/mergeConfigs.d.ts +29 -0
  172. package/dist/fetchers/mergeConfigs.js +38 -0
  173. package/dist/fetchers/mergeConfigs.js.map +1 -0
  174. package/dist/fetchers/registry.d.ts +1 -1
  175. package/dist/fetchers/registry.js +4 -4
  176. package/dist/fetchers/types.d.ts +1 -1
  177. package/dist/hooks/useCanvasOverlays.d.ts +8 -5
  178. package/dist/hooks/useCanvasOverlays.js +66 -17
  179. package/dist/hooks/useCanvasOverlays.js.map +1 -1
  180. package/dist/hooks/useHostPatches.d.ts +2 -2
  181. package/dist/hooks/useHostPatches.js +8 -8
  182. package/dist/hooks/useHostPatches.js.map +1 -1
  183. package/dist/hooks/useShadowCanvasConfig.d.ts +5 -9
  184. package/dist/hooks/useShadowCanvasConfig.js +7 -5
  185. package/dist/hooks/useShadowCanvasConfig.js.map +1 -1
  186. package/dist/hostPatcher/core/patcher.d.ts +1 -1
  187. package/dist/hostPatcher/core/patcher.js +18 -9
  188. package/dist/hostPatcher/core/patcher.js.map +1 -1
  189. package/dist/hostPatcher/core/sanitizer.js +24 -3
  190. package/dist/hostPatcher/core/sanitizer.js.map +1 -1
  191. package/dist/hostPatcher/policy/defaultPolicy.js +15 -5
  192. package/dist/hostPatcher/policy/defaultPolicy.js.map +1 -1
  193. package/dist/hostPatcher/utils/anchors.js +4 -6
  194. package/dist/hostPatcher/utils/anchors.js.map +1 -1
  195. package/dist/index.d.ts +34 -27
  196. package/dist/index.js +51 -24
  197. package/dist/index.js.map +1 -1
  198. package/dist/logger.d.ts +29 -0
  199. package/dist/logger.js +81 -0
  200. package/dist/logger.js.map +1 -0
  201. package/dist/metrics/index.d.ts +1 -1
  202. package/dist/metrics/index.js +1 -1
  203. package/dist/metrics/sessionMetrics.d.ts +1 -1
  204. package/dist/metrics/sessionMetrics.js +6 -6
  205. package/dist/overlays/fetcher.d.ts +2 -2
  206. package/dist/overlays/fetcher.js +13 -15
  207. package/dist/overlays/fetcher.js.map +1 -1
  208. package/dist/overlays/recipeRegistry.js +2 -2
  209. package/dist/overlays/recipeRegistry.js.map +1 -1
  210. package/dist/overlays/runtime/anchor/resolve.js +1 -1
  211. package/dist/overlays/runtime/anchor/resolve.js.map +1 -1
  212. package/dist/overlays/runtime/index.d.ts +7 -7
  213. package/dist/overlays/runtime/index.js +7 -7
  214. package/dist/overlays/runtime/overlay/highlight.js +39 -39
  215. package/dist/overlays/runtime/overlay/highlight.js.map +1 -1
  216. package/dist/overlays/runtime/overlay/modal.js +5 -5
  217. package/dist/overlays/runtime/overlay/modal.js.map +1 -1
  218. package/dist/overlays/runtime/overlay/root.js +1 -1
  219. package/dist/overlays/runtime/overlay/runner.js +88 -28
  220. package/dist/overlays/runtime/overlay/runner.js.map +1 -1
  221. package/dist/overlays/runtime/overlay/tooltip.d.ts +1 -1
  222. package/dist/overlays/runtime/overlay/tooltip.js +13 -15
  223. package/dist/overlays/runtime/overlay/tooltip.js.map +1 -1
  224. package/dist/overlays/runtime/utils/dom.js +4 -1
  225. package/dist/overlays/runtime/utils/dom.js.map +1 -1
  226. package/dist/overlays/schema.d.ts +146 -146
  227. package/dist/overlays/schema.js +12 -8
  228. package/dist/overlays/schema.js.map +1 -1
  229. package/dist/react.d.ts +7 -7
  230. package/dist/react.js +4 -4
  231. package/dist/react.js.map +1 -1
  232. package/dist/render/RenderContext.d.ts +2 -2
  233. package/dist/render/RenderContext.js +5 -5
  234. package/dist/render/RenderContext.js.map +1 -1
  235. package/dist/render/index.d.ts +3 -3
  236. package/dist/render/index.js +1 -1
  237. package/dist/render/types.d.ts +4 -4
  238. package/dist/runtime.d.ts +32 -8
  239. package/dist/runtime.js +109 -13
  240. package/dist/runtime.js.map +1 -1
  241. package/dist/smart-canvas.esm.js +144 -55
  242. package/dist/smart-canvas.esm.js.map +4 -4
  243. package/dist/smart-canvas.js +14688 -11455
  244. package/dist/smart-canvas.js.map +4 -4
  245. package/dist/smart-canvas.min.js +145 -55
  246. package/dist/smart-canvas.min.js.map +4 -4
  247. package/dist/state/StateStore.d.ts +1 -7
  248. package/dist/state/StateStore.js +15 -9
  249. package/dist/state/StateStore.js.map +1 -1
  250. package/dist/state/helpers/cooldowns.d.ts +1 -1
  251. package/dist/state/helpers/cooldowns.js +1 -1
  252. package/dist/state/helpers/dismissals.d.ts +1 -1
  253. package/dist/state/helpers/dismissals.js +1 -1
  254. package/dist/state/helpers/frequency.d.ts +1 -1
  255. package/dist/state/helpers/frequency.js +1 -1
  256. package/dist/state/index.d.ts +4 -4
  257. package/dist/state/index.js +3 -3
  258. package/dist/state/schema.d.ts +1 -1
  259. package/dist/state/schema.js +1 -1
  260. package/dist/store/example.d.ts +1 -0
  261. package/dist/store/example.js +43 -0
  262. package/dist/store/example.js.map +1 -0
  263. package/dist/store/mini-effector.d.ts +46 -0
  264. package/dist/store/mini-effector.js +88 -0
  265. package/dist/store/mini-effector.js.map +1 -0
  266. package/dist/surfaces/Surfaces.d.ts +11 -0
  267. package/dist/surfaces/Surfaces.js +361 -0
  268. package/dist/surfaces/Surfaces.js.map +1 -0
  269. package/dist/surfaces/index.d.ts +9 -0
  270. package/dist/surfaces/index.js +12 -0
  271. package/dist/surfaces/index.js.map +1 -0
  272. package/dist/surfaces/positioning.d.ts +50 -0
  273. package/dist/surfaces/positioning.js +228 -0
  274. package/dist/surfaces/positioning.js.map +1 -0
  275. package/dist/surfaces/types.d.ts +167 -0
  276. package/dist/surfaces/types.js +23 -0
  277. package/dist/surfaces/types.js.map +1 -0
  278. package/dist/telemetry/adapters/noop.d.ts +12 -0
  279. package/dist/telemetry/adapters/noop.js +42 -0
  280. package/dist/telemetry/adapters/noop.js.map +1 -0
  281. package/dist/telemetry/adapters/posthog.d.ts +8 -2
  282. package/dist/telemetry/adapters/posthog.js +36 -14
  283. package/dist/telemetry/adapters/posthog.js.map +1 -1
  284. package/dist/telemetry/index.d.ts +4 -3
  285. package/dist/telemetry/index.js +3 -2
  286. package/dist/telemetry/index.js.map +1 -1
  287. package/dist/telemetry/registry.d.ts +2 -9
  288. package/dist/telemetry/registry.js +4 -2
  289. package/dist/telemetry/registry.js.map +1 -1
  290. package/dist/telemetry/types.d.ts +1 -1
  291. package/dist/theme/ThemeProvider.d.ts +2 -2
  292. package/dist/theme/ThemeProvider.js +21 -21
  293. package/dist/theme/ThemeProvider.js.map +1 -1
  294. package/dist/theme/defaultTheme.d.ts +4 -5
  295. package/dist/theme/defaultTheme.js +127 -118
  296. package/dist/theme/defaultTheme.js.map +1 -1
  297. package/dist/theme/extractHostTheme.d.ts +1 -1
  298. package/dist/theme/extractHostTheme.js +43 -45
  299. package/dist/theme/extractHostTheme.js.map +1 -1
  300. package/dist/theme/index.d.ts +5 -5
  301. package/dist/theme/index.js +3 -3
  302. package/dist/theme/index.js.map +1 -1
  303. package/dist/theme/types.d.ts +2 -2
  304. package/dist/token.d.ts +2 -0
  305. package/dist/token.js +3 -6
  306. package/dist/token.js.map +1 -1
  307. package/dist/types-only.d.ts +32 -0
  308. package/dist/types-only.js +11 -0
  309. package/dist/types-only.js.map +1 -0
  310. package/dist/types.d.ts +89 -56
  311. package/dist/types.js +14 -2
  312. package/dist/types.js.map +1 -1
  313. package/dist/version.d.ts +13 -0
  314. package/dist/version.js +14 -0
  315. package/dist/version.js.map +1 -0
  316. package/dist/widgets/WidgetRegistry.d.ts +145 -0
  317. package/dist/widgets/WidgetRegistry.js +191 -0
  318. package/dist/widgets/WidgetRegistry.js.map +1 -0
  319. package/dist/widgets/index.d.ts +7 -0
  320. package/dist/widgets/index.js +7 -0
  321. package/dist/widgets/index.js.map +1 -0
  322. package/package.json +35 -15
  323. package/schema/canvas-config.schema.json +488 -254
  324. package/schema/runtime-context.schema.json +1 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positioning.js","sourceRoot":"","sources":["../../src/surfaces/positioning.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Surfaces Types
3
+ *
4
+ * Defines types for the managed surface system that renders UI into named slots.
5
+ * Surfaces handles layout, stacking, animations, and priority-based arbitration.
6
+ */
7
+ import type { Placement } from '@floating-ui/dom';
8
+ /** Static surface slots with fixed positioning */
9
+ export type StaticSurfaceSlot = 'drawer_right' | 'drawer_left' | 'drawer_bottom' | 'overlay_center' | 'overlay_corner_br' | 'overlay_corner_bl' | 'toast_top' | 'toast_bottom';
10
+ /** Dynamic inline slot (rendered inside anchor) */
11
+ export type InlineSurfaceSlot = `inline:${string}`;
12
+ /** Dynamic adjacent slot (positioned near anchor) */
13
+ export type AdjacentSurfaceSlot = `adjacent:${string}`;
14
+ /** All surface slot types */
15
+ export type SurfaceSlot = StaticSurfaceSlot | InlineSurfaceSlot | AdjacentSurfaceSlot;
16
+ /** React component content */
17
+ export interface ReactContent {
18
+ type: 'react';
19
+ component: unknown;
20
+ props?: Record<string, unknown>;
21
+ }
22
+ /** HTML string content */
23
+ export interface HtmlContent {
24
+ type: 'html';
25
+ content: string;
26
+ }
27
+ /** Widget reference content */
28
+ export interface WidgetContent {
29
+ type: 'widget';
30
+ widgetId: string;
31
+ config?: Record<string, unknown>;
32
+ }
33
+ /** Custom mount function content */
34
+ export interface CustomContent {
35
+ type: 'custom';
36
+ mount: (container: HTMLElement) => () => void;
37
+ }
38
+ /** Union of all renderable content types */
39
+ export type RenderableContent = ReactContent | HtmlContent | WidgetContent | CustomContent;
40
+ /** Position configuration for adjacent slots */
41
+ export interface PositionConfig {
42
+ placement: Placement | 'auto';
43
+ offset?: {
44
+ x: number;
45
+ y: number;
46
+ };
47
+ flip?: boolean;
48
+ shift?: boolean;
49
+ }
50
+ /** Size constraints for mounted content */
51
+ export interface MountConstraints {
52
+ maxWidth?: string;
53
+ maxHeight?: string;
54
+ minWidth?: string;
55
+ minHeight?: string;
56
+ }
57
+ /** Animation types for enter/exit */
58
+ export type AnimationType = 'fade' | 'slide' | 'scale' | 'none';
59
+ /** Options when mounting content to a surface */
60
+ export interface MountOptions {
61
+ /** Priority for conflict resolution (higher wins) */
62
+ priority?: number;
63
+ /** Whether to unmount other content in the same slot */
64
+ exclusive?: boolean;
65
+ /** Animation for enter/exit */
66
+ animation?: AnimationType;
67
+ /** Position configuration for adjacent slots */
68
+ position?: PositionConfig;
69
+ /** Size constraints */
70
+ constraints?: MountConstraints;
71
+ /** ID of the adaptive mounting this content */
72
+ adaptiveId?: string;
73
+ /** Whether to auto-unmount on route change */
74
+ autoUnmountOnRouteChange?: boolean;
75
+ }
76
+ /** Handle returned when content is mounted */
77
+ export interface MountHandle {
78
+ /** Unique ID for this mount */
79
+ id: string;
80
+ /** Update the content */
81
+ update: (content: RenderableContent) => void;
82
+ /** Update mount options */
83
+ setOptions: (opts: Partial<MountOptions>) => void;
84
+ /** Unmount the content */
85
+ unmount: () => void;
86
+ /** Check if still mounted */
87
+ isMounted: () => boolean;
88
+ /** Get the DOM container element */
89
+ getContainer: () => HTMLElement | null;
90
+ }
91
+ /** State of a surface slot */
92
+ export interface SurfaceState {
93
+ /** The slot identifier */
94
+ slot: SurfaceSlot;
95
+ /** Whether the slot is currently occupied */
96
+ occupied: boolean;
97
+ /** Priority of the current content (if occupied) */
98
+ currentPriority?: number;
99
+ /** Adaptive ID that owns current content */
100
+ currentAdaptiveId?: string;
101
+ /** Total number of mounts to this slot this session */
102
+ mountCount: number;
103
+ /** ID of the current mount (if occupied) */
104
+ currentMountId?: string;
105
+ }
106
+ /** Callback for surface state changes */
107
+ export type SurfaceChangeCallback = (state: SurfaceState) => void;
108
+ /** Widget registry interface (subset needed by Surfaces) */
109
+ export interface SurfacesWidgetRegistry {
110
+ has: (id: string) => boolean;
111
+ mount: (id: string, container: HTMLElement, config?: Record<string, unknown>) => {
112
+ unmount: () => void;
113
+ update: (config?: Record<string, unknown>) => void;
114
+ };
115
+ }
116
+ /** Options for creating a Surfaces instance */
117
+ export interface SurfacesOptions {
118
+ /** Overlay root element for rendering */
119
+ overlayRoot: HTMLElement;
120
+ /** Event bus for publishing surface events */
121
+ eventBus?: {
122
+ publish: (name: string, props?: Record<string, unknown>) => void;
123
+ };
124
+ /** Function to resolve anchor IDs to elements (for inline/adjacent slots) */
125
+ anchorResolver?: (anchorId: string) => HTMLElement | null;
126
+ /** Default animation type */
127
+ defaultAnimation?: AnimationType;
128
+ /** Widget registry for resolving widget content */
129
+ widgetRegistry?: SurfacesWidgetRegistry;
130
+ }
131
+ /** The Surfaces interface */
132
+ export interface Surfaces {
133
+ /** Mount content to a surface slot */
134
+ mount: (slot: SurfaceSlot, content: RenderableContent, opts?: MountOptions) => MountHandle;
135
+ /** Get the current state of a slot */
136
+ getState: (slot: SurfaceSlot) => SurfaceState;
137
+ /** Subscribe to state changes for a slot */
138
+ onStateChange: (slot: SurfaceSlot, fn: SurfaceChangeCallback) => () => void;
139
+ /** Check if content can be mounted to a slot */
140
+ canMount: (slot: SurfaceSlot, priority?: number) => boolean;
141
+ /** Clean up all mounted surfaces */
142
+ destroy: () => void;
143
+ }
144
+ /** Resolved internal options (with defaults applied) */
145
+ export interface InternalMountOptions {
146
+ priority: number;
147
+ exclusive: boolean;
148
+ animation: AnimationType;
149
+ position: PositionConfig;
150
+ constraints: MountConstraints;
151
+ adaptiveId?: string;
152
+ autoUnmountOnRouteChange: boolean;
153
+ }
154
+ /** Internal mount entry */
155
+ export interface InternalMountEntry {
156
+ id: string;
157
+ slot: SurfaceSlot;
158
+ content: RenderableContent;
159
+ options: InternalMountOptions;
160
+ container: HTMLElement;
161
+ cleanup?: () => void;
162
+ mountedAt: number;
163
+ }
164
+ /** Slot type classifier */
165
+ export declare function getSlotType(slot: SurfaceSlot): 'static' | 'inline' | 'adjacent';
166
+ /** Extract anchor ID from inline/adjacent slots */
167
+ export declare function getSlotAnchorId(slot: SurfaceSlot): string | null;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Surfaces Types
3
+ *
4
+ * Defines types for the managed surface system that renders UI into named slots.
5
+ * Surfaces handles layout, stacking, animations, and priority-based arbitration.
6
+ */
7
+ /** Slot type classifier */
8
+ export function getSlotType(slot) {
9
+ if (slot.startsWith('inline:'))
10
+ return 'inline';
11
+ if (slot.startsWith('adjacent:'))
12
+ return 'adjacent';
13
+ return 'static';
14
+ }
15
+ /** Extract anchor ID from inline/adjacent slots */
16
+ export function getSlotAnchorId(slot) {
17
+ if (slot.startsWith('inline:'))
18
+ return slot.slice(7);
19
+ if (slot.startsWith('adjacent:'))
20
+ return slot.slice(9);
21
+ return null;
22
+ }
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/surfaces/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+OH,2BAA2B;AAC3B,MAAM,UAAU,WAAW,CAAC,IAAiB;IAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,UAAU,CAAC;IACpD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,eAAe,CAAC,IAAiB;IAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * No-op adapter for the TelemetryClient interface.
3
+ *
4
+ * Used when telemetry is disabled (e.g. demo mode with t="noop").
5
+ * All tracking methods silently do nothing. Session/distinct IDs
6
+ * return stable values so downstream code that reads them still works.
7
+ */
8
+ import type { TelemetryClient } from '../types';
9
+ /**
10
+ * Create a TelemetryClient that silently discards all events.
11
+ */
12
+ export declare function createNoopClient(): TelemetryClient;
@@ -0,0 +1,42 @@
1
+ function randomId() {
2
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
3
+ let id = '';
4
+ for (let i = 0; i < 16; i++) {
5
+ id += chars[Math.floor(Math.random() * chars.length)];
6
+ }
7
+ return id;
8
+ }
9
+ class NoopAdapter {
10
+ constructor() {
11
+ this.sessionId = randomId();
12
+ console.log(`[Syntro Telemetry] Using noop adapter (no telemetry configured). sessionId=${this.sessionId}`);
13
+ }
14
+ trackCanvasOpened(_surface) { }
15
+ trackCanvasClosed(_surface) { }
16
+ trackRectangleViewed(_rectangleId, _surface) { }
17
+ trackAction(_action, _rectangleId, _surface) { }
18
+ register(_properties) { }
19
+ getSessionId() {
20
+ return this.sessionId;
21
+ }
22
+ startSessionRecording() { }
23
+ trackExperiment(_key, _variationId, _variationName) { }
24
+ setPersonProperties(_properties) { }
25
+ setPersonPropertiesOnce(_properties) { }
26
+ getDistinctId() {
27
+ return 'demo-user';
28
+ }
29
+ getAllFeatureFlags() {
30
+ return {};
31
+ }
32
+ getSegmentFlags() {
33
+ return {};
34
+ }
35
+ }
36
+ /**
37
+ * Create a TelemetryClient that silently discards all events.
38
+ */
39
+ export function createNoopClient() {
40
+ return new NoopAdapter();
41
+ }
42
+ //# sourceMappingURL=noop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop.js","sourceRoot":"","sources":["../../../src/telemetry/adapters/noop.ts"],"names":[],"mappings":"AASA,SAAS,QAAQ;IACf,MAAM,KAAK,GAAG,gEAAgE,CAAC;IAC/E,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,WAAW;IAGf;QACE,IAAI,CAAC,SAAS,GAAG,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CACT,8EAA8E,IAAI,CAAC,SAAS,EAAE,CAC/F,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,QAAuB,IAAS,CAAC;IACnD,iBAAiB,CAAC,QAAuB,IAAS,CAAC;IACnD,oBAAoB,CAAC,YAAoB,EAAE,QAAuB,IAAS,CAAC;IAC5E,WAAW,CAAC,OAAe,EAAE,YAAoB,EAAE,QAAuB,IAAS,CAAC;IAEpF,QAAQ,CAAC,WAAoC,IAAS,CAAC;IACvD,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,qBAAqB,KAAU,CAAC;IAChC,eAAe,CAAC,IAAY,EAAE,YAAoB,EAAE,cAAuB,IAAS,CAAC;IACrF,mBAAmB,CAAC,WAAoC,IAAS,CAAC;IAClE,uBAAuB,CAAC,WAAoC,IAAS,CAAC;IAEtE,aAAa;QACX,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,kBAAkB;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,eAAe;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,WAAW,EAAE,CAAC;AAC3B,CAAC"}
@@ -4,8 +4,8 @@
4
4
  * This file is INTERNAL - consumers should only import from telemetry/types.ts
5
5
  * and use the TelemetryClient interface.
6
6
  */
7
- import type { PostHog, Properties } from "posthog-js";
8
- import type { TelemetryClient, CanvasSurface } from "../types";
7
+ import type { PostHog, Properties } from 'posthog-js';
8
+ import type { TelemetryClient, CanvasSurface } from '../types';
9
9
  export interface PostHogAdapterOptions {
10
10
  /**
11
11
  * PostHog API key.
@@ -53,6 +53,11 @@ export interface PostHogAdapterOptions {
53
53
  * Used to update GrowthBook attributes with segment membership.
54
54
  */
55
55
  onFeatureFlagsLoaded?: (flags: Record<string, boolean | string>) => void;
56
+ /**
57
+ * Callback when any event is captured by PostHog.
58
+ * Used to feed events into the EventBus for runtime decisions.
59
+ */
60
+ onCapture?: (eventName: string, properties?: Record<string, unknown>) => void;
56
61
  }
57
62
  interface CanvasAnalyticsPayload extends Properties {
58
63
  rectangleId?: string;
@@ -65,6 +70,7 @@ export declare class PostHogAdapter implements TelemetryClient {
65
70
  private readonly options;
66
71
  private client?;
67
72
  private featureFlagsCallback?;
73
+ private captureCallback?;
68
74
  constructor(options?: PostHogAdapterOptions);
69
75
  /**
70
76
  * Get all feature flags from PostHog.
@@ -1,4 +1,4 @@
1
- import posthog from "posthog-js";
1
+ import posthog from 'posthog-js';
2
2
  /**
3
3
  * Internal adapter that implements TelemetryClient using PostHog.
4
4
  */
@@ -8,14 +8,17 @@ export class PostHogAdapter {
8
8
  this.options = options;
9
9
  this.client = options.client;
10
10
  this.featureFlagsCallback = options.onFeatureFlagsLoaded;
11
- if (!this.client && typeof window !== "undefined" && options.apiKey) {
12
- this.client = posthog;
11
+ this.captureCallback = options.onCapture;
12
+ if (!this.client && typeof window !== 'undefined' && options.apiKey) {
13
13
  // Determine if we should enable feature flags (for segment membership)
14
14
  // Default: true (enabled) to support segment targeting via /decide
15
15
  const enableFeatureFlags = (_a = options.enableFeatureFlags) !== null && _a !== void 0 ? _a : true;
16
+ // Use a named instance so we don't clobber the customer's global PostHog.
17
+ // posthog.init() with a 3rd arg returns an isolated instance.
18
+ const instanceName = `syntro_${options.apiKey.slice(-6) || 'sdk'}`;
16
19
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
- this.client.init(options.apiKey, {
18
- api_host: (_b = options.apiHost) !== null && _b !== void 0 ? _b : "https://telemetry.syntrologie.com",
20
+ this.client = posthog.init(options.apiKey, {
21
+ api_host: (_b = options.apiHost) !== null && _b !== void 0 ? _b : 'https://telemetry.syntrologie.com',
19
22
  // Feature flags for segment membership (in_segment_* flags)
20
23
  // When enabled, /decide is called to get segment flags
21
24
  advanced_disable_feature_flags: !enableFeatureFlags,
@@ -48,9 +51,28 @@ export class PostHogAdapter {
48
51
  this.featureFlagsCallback(allFlags);
49
52
  }
50
53
  });
54
+ // If flags already loaded before callback was registered, fire immediately
55
+ const existingFlags = this.getAllFeatureFlags();
56
+ if (existingFlags && Object.keys(existingFlags).length > 0) {
57
+ this.featureFlagsCallback(existingFlags);
58
+ }
59
+ }
60
+ // Wire up capture callback to feed events into EventBus
61
+ if (this.captureCallback) {
62
+ // PostHog's eventCaptured passes a single CaptureResult object:
63
+ // { uuid, event, properties, $set, $set_once, timestamp }
64
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
+ ph.on('eventCaptured', (data) => {
66
+ var _a;
67
+ const eventName = typeof data === 'string' ? data : data === null || data === void 0 ? void 0 : data.event;
68
+ const properties = typeof data === 'string' ? undefined : data === null || data === void 0 ? void 0 : data.properties;
69
+ if (typeof eventName === 'string') {
70
+ (_a = this.captureCallback) === null || _a === void 0 ? void 0 : _a.call(this, eventName, properties);
71
+ }
72
+ });
51
73
  }
52
74
  },
53
- });
75
+ }, instanceName);
54
76
  }
55
77
  }
56
78
  /**
@@ -72,7 +94,7 @@ export class PostHogAdapter {
72
94
  return {};
73
95
  const segmentFlags = {};
74
96
  for (const [key, value] of Object.entries(allFlags)) {
75
- if (key.startsWith("in_segment_")) {
97
+ if (key.startsWith('in_segment_')) {
76
98
  segmentFlags[key] = value === true;
77
99
  }
78
100
  }
@@ -91,16 +113,16 @@ export class PostHogAdapter {
91
113
  (_a = this.client) === null || _a === void 0 ? void 0 : _a.capture(eventName, payload);
92
114
  }
93
115
  trackCanvasOpened(surface) {
94
- this.track("shadow_canvas_opened", { surface });
116
+ this.track('shadow_canvas_opened', { surface });
95
117
  }
96
118
  trackCanvasClosed(surface) {
97
- this.track("shadow_canvas_closed", { surface });
119
+ this.track('shadow_canvas_closed', { surface });
98
120
  }
99
121
  trackRectangleViewed(rectangleId, surface) {
100
- this.track("shadow_canvas_rectangle_viewed", { rectangleId, surface });
122
+ this.track('shadow_canvas_rectangle_viewed', { rectangleId, surface });
101
123
  }
102
124
  trackAction(action, rectangleId, surface) {
103
- this.track("shadow_canvas_action", { action, rectangleId, surface });
125
+ this.track('shadow_canvas_action', { action, rectangleId, surface });
104
126
  }
105
127
  register(properties) {
106
128
  var _a, _b;
@@ -126,7 +148,7 @@ export class PostHogAdapter {
126
148
  [`${experimentProperty}_id`]: variationId,
127
149
  });
128
150
  // Fire discrete event for experiment assignment tracking
129
- this.track("$experiment_started", {
151
+ this.track('$experiment_started', {
130
152
  $experiment_key: experimentKey,
131
153
  $experiment_variation_id: variationId,
132
154
  $experiment_variation_name: variationName !== null && variationName !== void 0 ? variationName : `variation_${variationId}`,
@@ -135,12 +157,12 @@ export class PostHogAdapter {
135
157
  setPersonProperties(properties) {
136
158
  var _a;
137
159
  // PostHog's $set event sets person properties
138
- (_a = this.client) === null || _a === void 0 ? void 0 : _a.capture("$set", { $set: properties });
160
+ (_a = this.client) === null || _a === void 0 ? void 0 : _a.capture('$set', { $set: properties });
139
161
  }
140
162
  setPersonPropertiesOnce(properties) {
141
163
  var _a;
142
164
  // PostHog's $set_once only sets if property doesn't exist
143
- (_a = this.client) === null || _a === void 0 ? void 0 : _a.capture("$set", { $set_once: properties });
165
+ (_a = this.client) === null || _a === void 0 ? void 0 : _a.capture('$set', { $set_once: properties });
144
166
  }
145
167
  getDistinctId() {
146
168
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/telemetry/adapters/posthog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/telemetry/adapters/posthog.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
- export type { TelemetryClient, CanvasSurface } from "./types";
2
- export { createPostHogClient } from "./adapters/posthog";
3
- export type { PostHogAdapterOptions } from "./adapters/posthog";
1
+ export type { TelemetryClient, CanvasSurface } from './types';
2
+ export { createPostHogClient } from './adapters/posthog';
3
+ export type { PostHogAdapterOptions } from './adapters/posthog';
4
+ export { createNoopClient } from './adapters/noop';
@@ -1,3 +1,4 @@
1
- // Adapter factory - consumers use this to create clients
2
- export { createPostHogClient } from "./adapters/posthog";
1
+ // Adapter factories - consumers use these to create clients
2
+ export { createPostHogClient } from './adapters/posthog';
3
+ export { createNoopClient } from './adapters/noop';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAGA,yDAAyD;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAGA,4DAA4D;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,12 +1,5 @@
1
- /**
2
- * Telemetry provider registry.
3
- *
4
- * Maps provider names to their adapter factories.
5
- * This allows the bootstrap module to dynamically create
6
- * telemetry clients based on token configuration.
7
- */
8
- import { PostHogAdapterOptions } from "./adapters/posthog";
9
- import type { TelemetryClient } from "./types";
1
+ import { PostHogAdapterOptions } from './adapters/posthog';
2
+ import type { TelemetryClient } from './types';
10
3
  /**
11
4
  * Create a telemetry client for the specified provider.
12
5
  *
@@ -5,9 +5,11 @@
5
5
  * This allows the bootstrap module to dynamically create
6
6
  * telemetry clients based on token configuration.
7
7
  */
8
- import { createPostHogClient } from "./adapters/posthog";
8
+ import { createNoopClient } from './adapters/noop';
9
+ import { createPostHogClient } from './adapters/posthog';
9
10
  const adapters = {
10
11
  posthog: (config) => createPostHogClient(config),
12
+ noop: () => createNoopClient(),
11
13
  };
12
14
  /**
13
15
  * Create a telemetry client for the specified provider.
@@ -20,7 +22,7 @@ const adapters = {
20
22
  export function createTelemetryClient(provider, config) {
21
23
  const factory = adapters[provider];
22
24
  if (!factory) {
23
- throw new Error(`Unknown telemetry provider: ${provider}. Supported: ${Object.keys(adapters).join(", ")}`);
25
+ throw new Error(`Unknown telemetry provider: ${provider}. Supported: ${Object.keys(adapters).join(', ')}`);
24
26
  }
25
27
  return factory(config);
26
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/telemetry/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,mBAAmB,EAAyB,MAAM,oBAAoB,CAAC;AAKhF,MAAM,QAAQ,GAAmC;IAC/C,OAAO,EAAE,CAAC,MAA6B,EAAE,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC;CACxE,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,MAA6B;IAE7B,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,gBAAgB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/telemetry/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAyB,MAAM,oBAAoB,CAAC;AAKhF,MAAM,QAAQ,GAAmC;IAC/C,OAAO,EAAE,CAAC,MAA6B,EAAE,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC;IACvE,IAAI,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE;CAC/B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,MAA6B;IAE7B,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,gBAAgB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Surface where the canvas UI is displayed.
3
3
  */
4
- export type CanvasSurface = "overlay" | "wheel";
4
+ export type CanvasSurface = 'overlay' | 'wheel';
5
5
  /**
6
6
  * Clean interface for telemetry/analytics clients.
7
7
  *
@@ -1,5 +1,5 @@
1
- import { ReactNode } from "react";
2
- import type { CanvasThemeTokens, ThemeAppearance, ThemeMode } from "./types";
1
+ import { ReactNode } from 'react';
2
+ import type { CanvasThemeTokens, ThemeAppearance, ThemeMode } from './types';
3
3
  interface ThemeContextValue {
4
4
  theme: CanvasThemeTokens;
5
5
  mode: ThemeMode;
@@ -1,46 +1,46 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createContext, useContext, useMemo, useEffect, useState } from "react";
3
- import { darkTheme, lightTheme, themeToCssVariables } from "./defaultTheme";
4
- import { autoDetectTheme } from "./extractHostTheme";
2
+ import { createContext, useContext, useMemo, useEffect, useState } from 'react';
3
+ import { darkTheme, lightTheme, themeToCssVariables } from './defaultTheme';
4
+ import { autoDetectTheme } from './extractHostTheme';
5
5
  const ThemeContext = createContext(null);
6
6
  /**
7
7
  * Detect system color scheme preference
8
8
  */
9
9
  function getSystemMode() {
10
10
  var _a, _b;
11
- if (typeof window === "undefined")
12
- return "dark";
13
- return ((_b = (_a = window.matchMedia) === null || _a === void 0 ? void 0 : _a.call(window, "(prefers-color-scheme: dark)")) === null || _b === void 0 ? void 0 : _b.matches) ? "dark" : "light";
11
+ if (typeof window === 'undefined')
12
+ return 'dark';
13
+ return ((_b = (_a = window.matchMedia) === null || _a === void 0 ? void 0 : _a.call(window, '(prefers-color-scheme: dark)')) === null || _b === void 0 ? void 0 : _b.matches) ? 'dark' : 'light';
14
14
  }
15
15
  /**
16
16
  * Theme provider component that injects CSS variables into shadow DOM
17
17
  */
18
18
  export function ThemeProvider({ children, appearance, autoDetect = true, shadowRoot, }) {
19
19
  var _a;
20
- const [mode, setMode] = useState((_a = appearance === null || appearance === void 0 ? void 0 : appearance.mode) !== null && _a !== void 0 ? _a : "auto");
20
+ const [mode, setMode] = useState((_a = appearance === null || appearance === void 0 ? void 0 : appearance.mode) !== null && _a !== void 0 ? _a : 'auto');
21
21
  const [systemMode, setSystemMode] = useState(getSystemMode);
22
22
  // Listen for system color scheme changes
23
23
  useEffect(() => {
24
- if (typeof window === "undefined")
24
+ if (typeof window === 'undefined')
25
25
  return;
26
- const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
26
+ const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
27
27
  const handleChange = (e) => {
28
- setSystemMode(e.matches ? "dark" : "light");
28
+ setSystemMode(e.matches ? 'dark' : 'light');
29
29
  };
30
- mediaQuery.addEventListener("change", handleChange);
31
- return () => mediaQuery.removeEventListener("change", handleChange);
30
+ mediaQuery.addEventListener('change', handleChange);
31
+ return () => mediaQuery.removeEventListener('change', handleChange);
32
32
  }, []);
33
33
  // Resolve effective mode
34
- const effectiveMode = mode === "auto" ? systemMode : mode;
34
+ const effectiveMode = mode === 'auto' ? systemMode : mode;
35
35
  // Build theme
36
36
  const theme = useMemo(() => {
37
37
  let baseTheme;
38
38
  if (autoDetect) {
39
39
  // Auto-detect theme from host page
40
- baseTheme = autoDetectTheme(effectiveMode === "light" ? lightTheme : darkTheme);
40
+ baseTheme = autoDetectTheme(effectiveMode === 'light' ? lightTheme : darkTheme);
41
41
  }
42
42
  else {
43
- baseTheme = effectiveMode === "light" ? lightTheme : darkTheme;
43
+ baseTheme = effectiveMode === 'light' ? lightTheme : darkTheme;
44
44
  }
45
45
  return baseTheme;
46
46
  }, [autoDetect, effectiveMode]);
@@ -62,16 +62,16 @@ export function ThemeProvider({ children, appearance, autoDetect = true, shadowR
62
62
  if (!shadowRoot)
63
63
  return;
64
64
  // Find or create the style element
65
- let styleEl = shadowRoot.querySelector("#sc-theme-vars");
65
+ let styleEl = shadowRoot.querySelector('#sc-theme-vars');
66
66
  if (!styleEl) {
67
- styleEl = document.createElement("style");
68
- styleEl.id = "sc-theme-vars";
67
+ styleEl = document.createElement('style');
68
+ styleEl.id = 'sc-theme-vars';
69
69
  shadowRoot.insertBefore(styleEl, shadowRoot.firstChild);
70
70
  }
71
71
  // Generate CSS
72
72
  const cssRules = Object.entries(cssVariables)
73
73
  .map(([key, value]) => ` ${key}: ${value};`)
74
- .join("\n");
74
+ .join('\n');
75
75
  styleEl.textContent = `:host {\n${cssRules}\n}`;
76
76
  }, [shadowRoot, cssVariables]);
77
77
  const value = {
@@ -88,7 +88,7 @@ export function ThemeProvider({ children, appearance, autoDetect = true, shadowR
88
88
  export function useTheme() {
89
89
  const context = useContext(ThemeContext);
90
90
  if (!context) {
91
- throw new Error("useTheme must be used within a ThemeProvider");
91
+ throw new Error('useTheme must be used within a ThemeProvider');
92
92
  }
93
93
  return context;
94
94
  }
@@ -103,7 +103,7 @@ export function useThemeToken(token) {
103
103
  * Hook to get CSS variable name for a token
104
104
  */
105
105
  export function useThemeVar(token) {
106
- const kebabCase = (str) => str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
106
+ const kebabCase = (str) => str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
107
107
  return `var(--sc-${kebabCase(token)})`;
108
108
  }
109
109
  //# sourceMappingURL=ThemeProvider.js.map