@syntrologie/runtime-sdk 0.2.0 → 0.2.3

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 +25953 -26837
  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 +7 -1
  119. package/dist/telemetry/adapters/posthog.js +49 -1
  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
@@ -0,0 +1,261 @@
1
+ import { darkTheme, lightTheme } from "./defaultTheme";
2
+ /**
3
+ * Common CSS variable prefixes used by popular frameworks
4
+ */
5
+ const CSS_VAR_PATTERNS = [
6
+ // Tailwind
7
+ /^--color-/,
8
+ /^--tw-/,
9
+ // Chakra UI
10
+ /^--chakra-/,
11
+ // MUI
12
+ /^--mui-/,
13
+ // Radix
14
+ /^--radix-/,
15
+ // shadcn/ui
16
+ /^--primary/,
17
+ /^--secondary/,
18
+ /^--background/,
19
+ /^--foreground/,
20
+ /^--muted/,
21
+ /^--accent/,
22
+ /^--destructive/,
23
+ /^--border/,
24
+ /^--ring/,
25
+ /^--radius/,
26
+ // Bootstrap
27
+ /^--bs-/,
28
+ // Generic brand patterns
29
+ /^--brand/,
30
+ /^--theme/,
31
+ /^--app-/,
32
+ ];
33
+ /**
34
+ * Extract CSS custom properties from :root
35
+ */
36
+ function extractCssVariables() {
37
+ const variables = {};
38
+ if (typeof document === "undefined")
39
+ return variables;
40
+ try {
41
+ const root = document.documentElement;
42
+ const computedStyle = getComputedStyle(root);
43
+ // Get all stylesheets
44
+ for (const sheet of document.styleSheets) {
45
+ try {
46
+ for (const rule of sheet.cssRules) {
47
+ if (rule instanceof CSSStyleRule && rule.selectorText === ":root") {
48
+ for (const prop of rule.style) {
49
+ if (prop.startsWith("--")) {
50
+ const value = rule.style.getPropertyValue(prop).trim();
51
+ if (value) {
52
+ variables[prop] = value;
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ catch {
60
+ // Cross-origin stylesheets will throw, skip them
61
+ }
62
+ }
63
+ // Also check computed style for inline CSS variables
64
+ for (const prop of computedStyle) {
65
+ if (prop.startsWith("--") && !variables[prop]) {
66
+ const value = computedStyle.getPropertyValue(prop).trim();
67
+ if (value) {
68
+ variables[prop] = value;
69
+ }
70
+ }
71
+ }
72
+ }
73
+ catch (err) {
74
+ console.warn("[SmartCanvas] Error extracting CSS variables:", err);
75
+ }
76
+ return variables;
77
+ }
78
+ /**
79
+ * Get computed color from an element
80
+ */
81
+ function getComputedColor(element, property) {
82
+ try {
83
+ const style = getComputedStyle(element);
84
+ const value = style.getPropertyValue(property);
85
+ return value && value !== "rgba(0, 0, 0, 0)" ? value.trim() : null;
86
+ }
87
+ catch {
88
+ return null;
89
+ }
90
+ }
91
+ /**
92
+ * Find primary color by analyzing interactive elements
93
+ */
94
+ function findPrimaryColor() {
95
+ if (typeof document === "undefined")
96
+ return null;
97
+ // Look for common button/link patterns
98
+ const selectors = [
99
+ 'button[class*="primary"]',
100
+ 'button[class*="brand"]',
101
+ ".btn-primary",
102
+ "[data-variant='primary']",
103
+ "a[class*='primary']",
104
+ ".cta",
105
+ 'button:not([disabled]):not([class*="secondary"]):not([class*="ghost"])',
106
+ ];
107
+ for (const selector of selectors) {
108
+ try {
109
+ const element = document.querySelector(selector);
110
+ if (element) {
111
+ const bgColor = getComputedColor(element, "background-color");
112
+ if (bgColor && bgColor !== "transparent" && !bgColor.includes("255, 255, 255")) {
113
+ return bgColor;
114
+ }
115
+ }
116
+ }
117
+ catch {
118
+ // Selector might be invalid
119
+ }
120
+ }
121
+ // Fallback: check links
122
+ const link = document.querySelector("a:not([class])") || document.querySelector("a");
123
+ if (link) {
124
+ const color = getComputedColor(link, "color");
125
+ if (color)
126
+ return color;
127
+ }
128
+ return null;
129
+ }
130
+ /**
131
+ * Detect if page is in dark mode
132
+ */
133
+ function detectDarkMode() {
134
+ var _a, _b;
135
+ if (typeof document === "undefined")
136
+ return true;
137
+ // Check prefers-color-scheme
138
+ if ((_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) {
139
+ return true;
140
+ }
141
+ // Check body background luminance
142
+ const body = document.body;
143
+ const bgColor = getComputedColor(body, "background-color");
144
+ if (bgColor) {
145
+ const match = bgColor.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);
146
+ if (match) {
147
+ const [, r, g, b] = match.map(Number);
148
+ const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
149
+ return luminance < 0.5;
150
+ }
151
+ }
152
+ // Check for dark mode classes
153
+ const html = document.documentElement;
154
+ if (html.classList.contains("dark") ||
155
+ html.dataset.theme === "dark" ||
156
+ body.classList.contains("dark")) {
157
+ return true;
158
+ }
159
+ return false;
160
+ }
161
+ /**
162
+ * Extract theme information from the host page
163
+ */
164
+ export function extractHostTheme() {
165
+ const cssVariables = extractCssVariables();
166
+ // Try to find primary color
167
+ let primaryColor = null;
168
+ // First check CSS variables
169
+ const primaryVarNames = [
170
+ "--primary",
171
+ "--color-primary",
172
+ "--brand-color",
173
+ "--accent-color",
174
+ "--theme-primary",
175
+ "--app-primary",
176
+ ];
177
+ for (const varName of primaryVarNames) {
178
+ if (cssVariables[varName]) {
179
+ primaryColor = cssVariables[varName];
180
+ break;
181
+ }
182
+ }
183
+ // If not found, analyze elements
184
+ if (!primaryColor) {
185
+ primaryColor = findPrimaryColor();
186
+ }
187
+ // Extract other colors
188
+ const backgroundColor = cssVariables["--background"] ||
189
+ cssVariables["--color-background"] ||
190
+ getComputedColor(document.body, "background-color");
191
+ const textColor = cssVariables["--foreground"] ||
192
+ cssVariables["--color-text"] ||
193
+ getComputedColor(document.body, "color");
194
+ const borderColor = cssVariables["--border"] ||
195
+ cssVariables["--color-border"] ||
196
+ null;
197
+ const borderRadius = cssVariables["--radius"] ||
198
+ cssVariables["--border-radius"] ||
199
+ null;
200
+ const fontFamily = getComputedColor(document.body, "font-family");
201
+ return {
202
+ primaryColor,
203
+ backgroundColor,
204
+ surfaceColor: cssVariables["--card"] || cssVariables["--surface"] || null,
205
+ textColor,
206
+ textSecondaryColor: cssVariables["--muted-foreground"] || cssVariables["--color-text-secondary"] || null,
207
+ borderColor,
208
+ borderRadius,
209
+ fontFamily,
210
+ cssVariables,
211
+ };
212
+ }
213
+ /**
214
+ * Merge extracted theme with default theme tokens
215
+ */
216
+ export function mergeWithExtractedTheme(extracted, baseTheme) {
217
+ const isDark = detectDarkMode();
218
+ const defaultTheme = baseTheme !== null && baseTheme !== void 0 ? baseTheme : (isDark ? darkTheme : lightTheme);
219
+ // Create merged theme, applying extracted values where available
220
+ const merged = { ...defaultTheme };
221
+ if (extracted.primaryColor) {
222
+ merged.colorPrimary = extracted.primaryColor;
223
+ // Generate hover variant (slightly lighter)
224
+ merged.colorPrimaryHover = extracted.primaryColor; // TODO: compute lighter variant
225
+ merged.colorPrimaryMuted = extracted.primaryColor.replace(")", ", 0.15)").replace("rgb", "rgba");
226
+ }
227
+ if (extracted.backgroundColor) {
228
+ merged.colorBackground = extracted.backgroundColor;
229
+ }
230
+ if (extracted.surfaceColor) {
231
+ merged.colorSurface = extracted.surfaceColor;
232
+ }
233
+ if (extracted.textColor) {
234
+ merged.colorText = extracted.textColor;
235
+ }
236
+ if (extracted.textSecondaryColor) {
237
+ merged.colorTextSecondary = extracted.textSecondaryColor;
238
+ }
239
+ if (extracted.borderColor) {
240
+ merged.colorBorder = extracted.borderColor;
241
+ }
242
+ if (extracted.borderRadius) {
243
+ merged.borderRadiusMd = extracted.borderRadius;
244
+ }
245
+ if (extracted.fontFamily) {
246
+ merged.fontFamily = extracted.fontFamily;
247
+ }
248
+ return merged;
249
+ }
250
+ /**
251
+ * Auto-detect and extract theme from host page
252
+ * Returns merged theme tokens ready to use
253
+ */
254
+ export function autoDetectTheme(baseTheme) {
255
+ if (typeof document === "undefined") {
256
+ return baseTheme !== null && baseTheme !== void 0 ? baseTheme : darkTheme;
257
+ }
258
+ const extracted = extractHostTheme();
259
+ return mergeWithExtractedTheme(extracted, baseTheme);
260
+ }
261
+ //# sourceMappingURL=extractHostTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractHostTheme.js","sourceRoot":"","sources":["../../src/theme/extractHostTheme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type { CanvasThemeTokens, ExtractedTheme, ThemeMode, ThemeAppearance, } from "./types";
2
+ export { darkTheme, lightTheme, getDefaultTheme, themeToCssVariables, } from "./defaultTheme";
3
+ export { extractHostTheme, mergeWithExtractedTheme, autoDetectTheme, } from "./extractHostTheme";
4
+ export { ThemeProvider, useTheme, useThemeToken, useThemeVar, } from "./ThemeProvider";
5
+ export type { ThemeProviderProps } from "./ThemeProvider";
@@ -0,0 +1,7 @@
1
+ // Default themes
2
+ export { darkTheme, lightTheme, getDefaultTheme, themeToCssVariables, } from "./defaultTheme";
3
+ // Theme extraction
4
+ export { extractHostTheme, mergeWithExtractedTheme, autoDetectTheme, } from "./extractHostTheme";
5
+ // Theme provider and hooks
6
+ export { ThemeProvider, useTheme, useThemeToken, useThemeVar, } from "./ThemeProvider";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAQA,iBAAiB;AACjB,OAAO,EACL,SAAS,EACT,UAAU,EACV,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,mBAAmB;AACnB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,QAAQ,EACR,aAAa,EACb,WAAW,GACZ,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Theme token definitions for Smart Canvas
3
+ * Inspired by macOS design language and react.email aesthetics
4
+ */
5
+ /**
6
+ * Complete theme token interface
7
+ */
8
+ export interface CanvasThemeTokens {
9
+ colorPrimary: string;
10
+ colorPrimaryHover: string;
11
+ colorPrimaryMuted: string;
12
+ colorBackground: string;
13
+ colorBackgroundElevated: string;
14
+ colorBackgroundSubtle: string;
15
+ colorSurface: string;
16
+ colorSurfaceHover: string;
17
+ colorText: string;
18
+ colorTextSecondary: string;
19
+ colorTextMuted: string;
20
+ colorTextInverse: string;
21
+ colorBorder: string;
22
+ colorBorderSubtle: string;
23
+ colorSuccess: string;
24
+ colorSuccessMuted: string;
25
+ colorWarning: string;
26
+ colorWarningMuted: string;
27
+ colorError: string;
28
+ colorErrorMuted: string;
29
+ colorInfo: string;
30
+ colorInfoMuted: string;
31
+ fontFamily: string;
32
+ fontFamilyMono: string;
33
+ fontSizeXs: string;
34
+ fontSizeSm: string;
35
+ fontSizeMd: string;
36
+ fontSizeLg: string;
37
+ fontSizeXl: string;
38
+ fontSizeXxl: string;
39
+ fontWeightNormal: string;
40
+ fontWeightMedium: string;
41
+ fontWeightSemibold: string;
42
+ fontWeightBold: string;
43
+ lineHeightTight: string;
44
+ lineHeightNormal: string;
45
+ lineHeightRelaxed: string;
46
+ spacingXs: string;
47
+ spacingSm: string;
48
+ spacingMd: string;
49
+ spacingLg: string;
50
+ spacingXl: string;
51
+ borderRadiusSm: string;
52
+ borderRadiusMd: string;
53
+ borderRadiusLg: string;
54
+ borderRadiusXl: string;
55
+ borderRadiusFull: string;
56
+ shadowSm: string;
57
+ shadowMd: string;
58
+ shadowLg: string;
59
+ shadowXl: string;
60
+ backdropBlur: string;
61
+ backdropSaturate: string;
62
+ transitionFast: string;
63
+ transitionNormal: string;
64
+ transitionSlow: string;
65
+ }
66
+ /**
67
+ * Theme extracted from host page CSS variables
68
+ */
69
+ export interface ExtractedTheme {
70
+ primaryColor: string | null;
71
+ backgroundColor: string | null;
72
+ surfaceColor: string | null;
73
+ textColor: string | null;
74
+ textSecondaryColor: string | null;
75
+ borderColor: string | null;
76
+ borderRadius: string | null;
77
+ fontFamily: string | null;
78
+ cssVariables: Record<string, string>;
79
+ }
80
+ /**
81
+ * Theme mode
82
+ */
83
+ export type ThemeMode = "light" | "dark" | "auto";
84
+ /**
85
+ * User-provided theme overrides via appearance config
86
+ */
87
+ export interface ThemeAppearance {
88
+ mode?: ThemeMode;
89
+ variables?: Partial<Record<`--sc-${string}`, string>>;
90
+ baseTheme?: "system" | "light" | "dark";
91
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Theme token definitions for Smart Canvas
3
+ * Inspired by macOS design language and react.email aesthetics
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/theme/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
package/dist/token.d.ts CHANGED
@@ -10,8 +10,12 @@ export interface SyntroTokenPayload {
10
10
  v: 1;
11
11
  /** Experiments key (assumes growthbook provider by default) */
12
12
  e?: string;
13
+ /** Experiments host URL (e.g., "http://localhost:8110" for dev) */
14
+ eh?: string;
13
15
  /** Telemetry key (assumes posthog provider by default) */
14
16
  t?: string;
17
+ /** Telemetry host URL (e.g., "https://us.i.posthog.com") */
18
+ th?: string;
15
19
  /** Config fetcher type (e.g., "cdn", "experiments") */
16
20
  f?: string;
17
21
  /** Fetcher-specific options (e.g., configId for cdn fetcher) */
package/dist/token.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,YAAY,GAAG,MAAM,CAAC;AAmB5B;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAChD,uCAAuC;IACvC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB,CAAC;IAEvD,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,8CAA8C;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;SACtB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtB,OAAO,YAAY,GAAG,MAAM,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,YAAY,GAAG,MAAM,CAAC;AAyB5B;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAChD,uCAAuC;IACvC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB,CAAC;IAEvD,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,8CAA8C;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;SACtB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtB,OAAO,YAAY,GAAG,MAAM,CAAC;AAC/B,CAAC"}