@syntrologie/runtime-sdk 2.8.0-canary.167 → 2.8.0-canary.169

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.
@@ -161,6 +161,12 @@ export declare class SmartCanvasElementLit extends LitElement {
161
161
  getOverlayContainer(): HTMLDivElement | null;
162
162
  /** Direct access to the shadow root (for style injection) */
163
163
  getShadowRoot(): ShadowRoot;
164
+ previewNotification(opts: {
165
+ title: string;
166
+ body?: string;
167
+ icon?: string;
168
+ ttl?: number;
169
+ }): void;
164
170
  /**
165
171
  * Set properties directly on the element. The Lit property change triggers
166
172
  * re-render and re-fetch without React.
@@ -31,8 +31,8 @@ import {
31
31
  WaitZ,
32
32
  WidgetConfigZ,
33
33
  coreActionStepSchemas
34
- } from "../chunk-ZTRCUVGX.js";
35
- import "../chunk-6BVRX5WL.js";
34
+ } from "../chunk-R7R2ZKZU.js";
35
+ import "../chunk-44V2AOO4.js";
36
36
  import "../chunk-LSU6P3XW.js";
37
37
  import "../chunk-5Z66FT5C.js";
38
38
  export {
package/dist/api.d.ts CHANGED
@@ -71,6 +71,13 @@ export interface SmartCanvasHandle {
71
71
  startSessionRecording(): void;
72
72
  /** Track a custom event. Returns true if telemetry is available and event was sent. */
73
73
  track(eventName: string, properties?: Record<string, unknown>): boolean;
74
+ /** Push a preview toast notification (used by theme editor to preview notification styles). */
75
+ previewNotification(opts: {
76
+ title: string;
77
+ body?: string;
78
+ icon?: string;
79
+ ttl?: number;
80
+ }): void;
74
81
  /**
75
82
  * v2 Runtime instance for context, events, state, and decisions.
76
83
  */
@@ -40,7 +40,12 @@ var CanvasElementConfigZ = z.object({
40
40
  padding: z.string().optional(),
41
41
  transitionDuration: z.string().optional(),
42
42
  transitionEasing: z.string().optional(),
43
- transitionFade: z.string().optional()
43
+ transitionFade: z.string().optional(),
44
+ backdrop: z.boolean().optional(),
45
+ backdropColor: z.string().optional()
46
+ });
47
+ var MobileThemeOverrideZ = z.object({
48
+ canvas: CanvasElementConfigZ.optional()
44
49
  });
45
50
  var LauncherElementConfigZ = z.object({
46
51
  background: z.string().optional(),
@@ -124,7 +129,8 @@ var CanvasThemeConfigZ = z.object({
124
129
  tile: TileElementConfigZ.optional(),
125
130
  overlay: OverlayElementConfigZ.optional(),
126
131
  notification: NotificationElementConfigZ.optional(),
127
- content: ContentElementConfigZ.optional()
132
+ content: ContentElementConfigZ.optional(),
133
+ mobile: MobileThemeOverrideZ.optional()
128
134
  }).strict();
129
135
  var LauncherConfigZ = z.object({
130
136
  enabled: z.boolean().optional(),
@@ -168,6 +174,7 @@ export {
168
174
  TileNotificationRuleZ,
169
175
  TileZ,
170
176
  CanvasElementConfigZ,
177
+ MobileThemeOverrideZ,
171
178
  LauncherElementConfigZ,
172
179
  TileElementConfigZ,
173
180
  OverlayElementConfigZ,
@@ -178,4 +185,4 @@ export {
178
185
  CanvasConfigResponseZ,
179
186
  configSchemas
180
187
  };
181
- //# sourceMappingURL=chunk-6BVRX5WL.js.map
188
+ //# sourceMappingURL=chunk-44V2AOO4.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/config/schema.ts"],
4
+ "sourcesContent": ["/**\n * Zod schemas for canvas configuration types.\n *\n * Single source of truth for tile, theme, launcher, and top-level\n * CanvasConfigResponse shapes. These schemas are converted to JSON Schema\n * during build and merged into the unified canvas-config.schema.json.\n *\n * Design decisions:\n * - `.strict()` on top-level objects \u2192 `additionalProperties: false` in JSON Schema\n * - Element sub-schemas (canvas, tile, etc.) are NOT strict to allow future expansion\n */\n\nimport { z } from 'zod';\nimport { ActivationConfigZ, ConditionZ } from '../decisions/schema';\n\n// ============================================================================\n// Tile Notification Sub-Types\n// ============================================================================\n\nconst NotificationDeepLinkZ = z\n .object({\n tileId: z.string(),\n itemId: z.string().optional(),\n })\n .strict();\n\nconst TileNotificationRuleZ = z\n .object({\n on: z.string(),\n title: z.string(),\n body: z.string().optional(),\n icon: z.string().optional(),\n ttl: z.number().optional(),\n cooldown: z.number().optional(),\n deepLink: NotificationDeepLinkZ.optional(),\n })\n .strict();\n\n// ============================================================================\n// Tile\n// ============================================================================\n\nexport const TileZ = z\n .object({\n id: z.string(),\n title: z.string().optional(),\n subtitle: z.string().optional(),\n icon: z.string().optional(),\n priority: z.number().optional(),\n widget: z.string(),\n props: z.record(z.unknown()).optional(),\n activation: ActivationConfigZ.optional(),\n notifications: z.array(TileNotificationRuleZ).optional(),\n })\n .strict();\n\n// ============================================================================\n// Theme Config \u2014 Element Sub-Schemas\n// ============================================================================\n\nexport const CanvasElementConfigZ = z.object({\n position: z.enum(['left', 'right']).optional(),\n layout: z.enum(['overlay', 'push']).optional(),\n background: z.string().optional(),\n blur: z.string().optional(),\n border: z.string().optional(),\n width: z.string().optional(),\n /** Padding around tile content. Consumed by inline mode (drawer mode handles its own padding internally). */\n padding: z.string().optional(),\n transitionDuration: z.string().optional(),\n transitionEasing: z.string().optional(),\n transitionFade: z.string().optional(),\n backdrop: z.boolean().optional(),\n backdropColor: z.string().optional(),\n});\n\nexport const MobileThemeOverrideZ = z.object({\n canvas: CanvasElementConfigZ.optional(),\n});\n\nexport const LauncherElementConfigZ = z.object({\n background: z.string().optional(),\n backgroundHover: z.string().optional(),\n color: z.string().optional(),\n size: z.string().optional(),\n shadow: z.string().optional(),\n borderRadius: z.string().optional(),\n icon: z.string().optional(),\n});\n\nexport const TileElementConfigZ = z.object({\n background: z.string().optional(),\n backgroundHover: z.string().optional(),\n border: z.string().optional(),\n borderRadius: z.string().optional(),\n shadow: z.string().optional(),\n titleColor: z.string().optional(),\n textColor: z.string().optional(),\n iconBackground: z.string().optional(),\n iconShadow: z.string().optional(),\n headerPadding: z.string().optional(),\n bodyPadding: z.string().optional(),\n gap: z.string().optional(),\n});\n\nexport const OverlayElementConfigZ = z.object({\n background: z.string().optional(),\n textColor: z.string().optional(),\n titleColor: z.string().optional(),\n arrowColor: z.string().optional(),\n arrowSize: z.string().optional(),\n border: z.string().optional(),\n borderRadius: z.string().optional(),\n scrimOpacity: z.string().optional(),\n highlightRing: z.string().optional(),\n});\n\nexport const NotificationElementConfigZ = z.object({\n background: z.string().optional(),\n textColor: z.string().optional(),\n textSecondaryColor: z.string().optional(),\n border: z.string().optional(),\n borderRadius: z.string().optional(),\n successColor: z.string().optional(),\n warningColor: z.string().optional(),\n errorColor: z.string().optional(),\n iconBackground: z.string().optional(),\n progressGradient: z.string().optional(),\n});\n\nexport const ContentElementConfigZ = z.object({\n background: z.string().optional(),\n backgroundHover: z.string().optional(),\n border: z.string().optional(),\n borderRadius: z.string().optional(),\n textColor: z.string().optional(),\n textSecondaryColor: z.string().optional(),\n // Accordion layout\n itemDivider: z.string().optional(),\n itemGap: z.string().optional(),\n itemPadding: z.string().optional(),\n itemFontSize: z.string().optional(),\n // Expanded content\n bodyPadding: z.string().optional(),\n bodyFontSize: z.string().optional(),\n // Category headers\n categoryPadding: z.string().optional(),\n categoryGap: z.string().optional(),\n categoryFontSize: z.string().optional(),\n // Search\n searchBackground: z.string().optional(),\n searchColor: z.string().optional(),\n // Chevron\n chevronColor: z.string().optional(),\n});\n\n// ============================================================================\n// Theme Config \u2014 Top-Level\n// ============================================================================\n\nexport const CanvasThemeConfigZ = z\n .object({\n mode: z.enum(['dark', 'light']).optional(),\n fontFamily: z.string().optional(),\n colorPrimary: z.string().optional(),\n colorPrimaryHover: z.string().optional(),\n borderRadius: z.string().optional(),\n canvas: CanvasElementConfigZ.optional(),\n launcher: LauncherElementConfigZ.optional(),\n tile: TileElementConfigZ.optional(),\n overlay: OverlayElementConfigZ.optional(),\n notification: NotificationElementConfigZ.optional(),\n content: ContentElementConfigZ.optional(),\n mobile: MobileThemeOverrideZ.optional(),\n })\n .strict();\n\n// ============================================================================\n// Launcher Config\n// ============================================================================\n\nexport const LauncherConfigZ = z\n .object({\n enabled: z.boolean().optional(),\n label: z.string().optional(),\n position: z.string().optional(),\n animate: z.boolean().optional(),\n animationStyle: z.enum(['pulse', 'bounce', 'glow']).optional(),\n notificationCount: z.number().optional(),\n })\n .strict();\n\n// ============================================================================\n// Canvas Config Response (top-level)\n// ============================================================================\n\nexport const CanvasConfigResponseZ = z\n .object({\n schemaVersion: z.string().optional(),\n fetchedAt: z.string().datetime(),\n configVersion: z.string().optional(),\n canvasTitle: z.string().optional(),\n displayMode: z.enum(['standard', 'focused', 'inline']).optional(),\n tiles: z.array(TileZ),\n actions: z.array(z.any()),\n theme: CanvasThemeConfigZ.optional(),\n launcher: LauncherConfigZ.optional(),\n meta: z\n .object({\n verificationSteps: z\n .array(\n z.union([\n z.string(),\n z.object({\n text: z.string(),\n check: ConditionZ.optional(),\n }),\n ])\n )\n .optional(),\n })\n .passthrough()\n .optional(),\n })\n .strict();\n\n// ============================================================================\n// Export: Array for unified schema generation\n// ============================================================================\n\n/**\n * Config schemas for unified JSON Schema generation.\n * The generator imports this array and converts each to a JSON Schema $def.\n */\nexport const configSchemas = [\n { defName: 'tile', schema: TileZ },\n { defName: 'themeConfig', schema: CanvasThemeConfigZ },\n { defName: 'launcherConfig', schema: LauncherConfigZ },\n { defName: 'canvasConfigResponse', schema: CanvasConfigResponseZ },\n];\n\n// ============================================================================\n// Named Exports\n// ============================================================================\n\nexport { NotificationDeepLinkZ, TileNotificationRuleZ };\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  NotificationDeepLinkZ
3
- } from "./chunk-6BVRX5WL.js";
3
+ } from "./chunk-44V2AOO4.js";
4
4
  import {
5
5
  AuthoringFieldsZ,
6
6
  TriggerWhenZ
@@ -250,4 +250,4 @@ export {
250
250
  TourZ,
251
251
  coreActionStepSchemas
252
252
  };
253
- //# sourceMappingURL=chunk-ZTRCUVGX.js.map
253
+ //# sourceMappingURL=chunk-R7R2ZKZU.js.map
@@ -591,6 +591,8 @@ var darkDefaults = {
591
591
  transitionDuration: "300ms",
592
592
  transitionEasing: "cubic-bezier(0.16, 1, 0.3, 1)",
593
593
  transitionFade: "6%",
594
+ backdrop: false,
595
+ backdropColor: "rgba(0, 0, 0, 0.4)",
594
596
  padding: "0"
595
597
  },
596
598
  launcher: {
@@ -657,6 +659,11 @@ var darkDefaults = {
657
659
  searchBackground: withAlpha(slateGrey[3], 0.8),
658
660
  searchColor: text.primary,
659
661
  chevronColor: "currentColor"
662
+ },
663
+ mobile: {
664
+ canvas: {
665
+ backdrop: true
666
+ }
660
667
  }
661
668
  };
662
669
  var lightDefaults = {
@@ -675,6 +682,8 @@ var lightDefaults = {
675
682
  transitionDuration: "300ms",
676
683
  transitionEasing: "cubic-bezier(0.16, 1, 0.3, 1)",
677
684
  transitionFade: "6%",
685
+ backdrop: false,
686
+ backdropColor: "rgba(0, 0, 0, 0.3)",
678
687
  padding: "0"
679
688
  },
680
689
  launcher: {
@@ -741,10 +750,15 @@ var lightDefaults = {
741
750
  searchBackground: slateGrey[12],
742
751
  searchColor: slateGrey[1],
743
752
  chevronColor: "currentColor"
753
+ },
754
+ mobile: {
755
+ canvas: {
756
+ backdrop: true
757
+ }
744
758
  }
745
759
  };
746
760
  function mergeThemeConfig(customer) {
747
- var _a, _b, _c, _d, _e;
761
+ var _a, _b, _c, _d, _e, _f;
748
762
  const base2 = customer.mode === "light" ? lightDefaults : darkDefaults;
749
763
  return {
750
764
  mode: (_a = customer.mode) != null ? _a : base2.mode,
@@ -757,11 +771,14 @@ function mergeThemeConfig(customer) {
757
771
  tile: { ...base2.tile, ...customer.tile },
758
772
  overlay: { ...base2.overlay, ...customer.overlay },
759
773
  notification: { ...base2.notification, ...customer.notification },
760
- content: { ...base2.content, ...customer.content }
774
+ content: { ...base2.content, ...customer.content },
775
+ mobile: {
776
+ canvas: { ...base2.mobile.canvas, ...(_f = customer.mobile) == null ? void 0 : _f.canvas }
777
+ }
761
778
  };
762
779
  }
763
780
  function mergeThemeWithWorkspace(workspaceTheme, configTheme) {
764
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
781
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
765
782
  const mode = (_b = (_a = configTheme.mode) != null ? _a : workspaceTheme.mode) != null ? _b : "dark";
766
783
  const base2 = mode === "light" ? lightDefaults : darkDefaults;
767
784
  return {
@@ -779,7 +796,14 @@ function mergeThemeWithWorkspace(workspaceTheme, configTheme) {
779
796
  ...workspaceTheme.notification,
780
797
  ...configTheme.notification
781
798
  },
782
- content: { ...base2.content, ...workspaceTheme.content, ...configTheme.content }
799
+ content: { ...base2.content, ...workspaceTheme.content, ...configTheme.content },
800
+ mobile: {
801
+ canvas: {
802
+ ...base2.mobile.canvas,
803
+ ...(_k = workspaceTheme.mobile) == null ? void 0 : _k.canvas,
804
+ ...(_l = configTheme.mobile) == null ? void 0 : _l.canvas
805
+ }
806
+ }
783
807
  };
784
808
  }
785
809
  var ELEMENT_SECTIONS = [
@@ -800,7 +824,7 @@ function flattenThemeConfig(config) {
800
824
  const sectionConfig = config[section];
801
825
  if (!sectionConfig) continue;
802
826
  for (const [key, value] of Object.entries(sectionConfig)) {
803
- if (value !== void 0) {
827
+ if (value !== void 0 && typeof value === "string") {
804
828
  vars[`--sc-${section}-${kebabCase(key)}`] = value;
805
829
  }
806
830
  }
@@ -820,4 +844,4 @@ export {
820
844
  mergeThemeWithWorkspace,
821
845
  flattenThemeConfig
822
846
  };
823
- //# sourceMappingURL=chunk-3WAJ3E6R.js.map
847
+ //# sourceMappingURL=chunk-UP2QA7DC.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../design-system/src/tokens/colors.ts", "../../design-system/src/tokens/panel-shell.ts", "../src/theme/defaultTheme.ts"],
4
- "sourcesContent": ["/**\n * Syntro Design System - Color Tokens\n *\n * This file contains all color tokens from the Figma design system.\n * Colors are organized by scale and semantic meaning.\n *\n * @see https://www.figma.com/design/U0Ol5vM7FQvgPfIgCAgxgb/Design-System\n */\n\n// ============================================================================\n// BASE COLORS\n// ============================================================================\n\nexport const base = {\n white: '#ffffff',\n black: '#000000',\n} as const;\n\n// ============================================================================\n// BRAND COLORS\n// ============================================================================\n\nexport const brand = {\n 0: '#2c0b0a',\n 1: '#5b1715',\n 2: '#89221f',\n 3: '#b72e2a',\n 4: '#d44844',\n 5: '#dd6d69',\n 6: '#e5918f',\n 7: '#eeb6b4',\n 8: '#f6dada',\n 9: '#faebea',\n} as const;\n\n// ============================================================================\n// NEUTRAL COLORS\n// ============================================================================\n\nexport const slateGrey = {\n 0: '#07080a',\n 1: '#0f1318',\n 2: '#0e1114',\n 3: '#1c222a',\n 4: '#2b333f',\n 5: '#394454',\n 6: '#475569',\n 7: '#677384',\n 8: '#87919f',\n 9: '#a8afba',\n 10: '#cbd0d7',\n 11: '#e8eaee',\n 12: '#f6f7f9',\n} as const;\n\n// ============================================================================\n// SEMANTIC COLOR SCALES\n// ============================================================================\n\nexport const green = {\n 0: '#07230a',\n 1: '#0e4514',\n 2: '#16681e',\n 3: '#1d8a28',\n 4: '#24ad32',\n 5: '#4fbd5a',\n 6: '#7acd82',\n 7: '#a5deab',\n 8: '#d0eed3',\n 9: '#e5f6e7',\n} as const;\n\nexport const yellow = {\n 0: '#301f09',\n 1: '#5f3e12',\n 2: '#8f5e1b',\n 3: '#be7d24',\n 4: '#ee9c2d',\n 5: '#f1b057',\n 6: '#f5c481',\n 7: '#f8d7ab',\n 8: '#fcebd5',\n 9: '#fdf5ea',\n} as const;\n\nexport const red = {\n 0: '#330707',\n 1: '#660f0e',\n 2: '#991616',\n 3: '#cc1e1d',\n 4: '#ff2524',\n 5: '#ff5150',\n 6: '#ff7c7c',\n 7: '#ffa8a7',\n 8: '#ffd3d3',\n 9: '#ffe9e9',\n} as const;\n\nexport const blue = {\n 0: '#051533',\n 1: '#0a2a66',\n 2: '#0f3f98',\n 3: '#1454cb',\n 4: '#1969fe',\n 5: '#4787fe',\n 6: '#75a5fe',\n 7: '#a3c3ff',\n 8: '#d1e1ff',\n 9: '#e8f0ff',\n} as const;\n\nexport const orange = {\n 0: '#662500',\n 1: '#993d00',\n 2: '#cc5800',\n 3: '#ff7700',\n 4: '#fea85d',\n 5: '#fec58f',\n 6: '#ffd6ae',\n 7: '#fee6cd',\n 8: '#fff1e1',\n 9: '#fff8f0',\n} as const;\n\nexport const purple = {\n 0: '#151229',\n 1: '#2a2452',\n 2: '#40357c',\n 3: '#5547a5',\n 4: '#6a59ce',\n 5: '#887ad8',\n 6: '#a69be2',\n 7: '#c3bdeb',\n 8: '#e1def5',\n 9: '#f0eefa',\n} as const;\n\nexport const pink = {\n 0: '#37091f',\n 1: '#69123c',\n 2: '#9b1c58',\n 3: '#cd2575',\n 4: '#ff2e92',\n 5: '#ff58a8',\n 6: '#ff82be',\n 7: '#ffabd3',\n 8: '#ffd5e9',\n 9: '#ffeaf4',\n} as const;\n\n// ============================================================================\n// LEGACY COLORS (Being phased out)\n// ============================================================================\n\nexport const legacy = {\n aqua: {\n 0: '#0c5f8d',\n 1: '#146b99',\n 2: '#1d78a6',\n 3: '#2e89b6',\n 4: '#4a9fc4',\n 5: '#6bb4d1',\n 6: '#93cce0',\n 7: '#bddff0',\n 8: '#dceef8',\n 9: '#f2f8fc',\n },\n violet: {\n 0: '#6927da',\n 1: '#7839ee',\n 2: '#875bf7',\n 3: '#a48afb',\n 4: '#c3b4fd',\n 5: '#ddd6fe',\n 6: '#ece9fe',\n 7: '#f5f3ff',\n 8: '#fbfaff',\n },\n fuchsia: {\n 0: '#9f1ab1',\n 1: '#ba24d5',\n 2: '#d444f1',\n 3: '#e478fa',\n 4: '#eeaafd',\n 5: '#f6d0fe',\n 6: '#fbe8ff',\n 7: '#fdf4ff',\n 8: '#fefaff',\n },\n pink: {\n 0: '#a10f5f',\n 1: '#dd2590',\n 2: '#ee46bc',\n 3: '#f670c7',\n 4: '#faa7e0',\n 5: '#fcceee',\n 6: '#fce7f6',\n 7: '#fdf2fa',\n 8: '#fef6fb',\n },\n} as const;\n\n// ============================================================================\n// TEXT TOKENS\n// ============================================================================\n\nexport const text = {\n primary: slateGrey[10],\n secondary: slateGrey[9],\n tertiary: slateGrey[8],\n} as const;\n\n// ============================================================================\n// BACKGROUND TOKENS\n// ============================================================================\n\nexport const background = {\n primary: slateGrey[2],\n secondary: slateGrey[0],\n} as const;\n\n// ============================================================================\n// BORDER TOKENS\n// ============================================================================\n\nexport const border = {\n primary: slateGrey[4],\n secondary: slateGrey[3],\n} as const;\n\n// ============================================================================\n// BUTTON TOKENS\n// ============================================================================\n\nexport const button = {\n primary: {\n text: base.white,\n icon: base.white,\n border: brand[3],\n backgroundDefault: brand[3],\n backgroundHover: brand[2],\n },\n neutral: {\n text: slateGrey[10],\n textHover: base.white,\n icon: slateGrey[10],\n iconHover: base.white,\n border: slateGrey[4],\n background: slateGrey[2],\n },\n link: {\n text: base.white,\n icon: base.white,\n hover: brand[5],\n },\n error: {\n text: red[5],\n hover: red[6],\n },\n success: {\n text: green[5],\n hover: green[6],\n },\n} as const;\n\n// ============================================================================\n// BADGE TOKENS\n// ============================================================================\n\nexport const badge = {\n slateGrey: {\n content: slateGrey[10],\n pillOutline: slateGrey[10],\n borderPrimary: slateGrey[5],\n borderSecondary: slateGrey[5],\n background: slateGrey[3],\n },\n brand: {\n content: brand[9],\n pillOutline: brand[9],\n borderPrimary: brand[6],\n borderSecondary: brand[6],\n background: brand[0],\n },\n red: {\n content: red[8],\n pillOutline: red[4],\n borderPrimary: red[2],\n borderSecondary: red[2],\n background: red[0],\n },\n yellow: {\n content: yellow[8],\n pillOutline: yellow[4],\n borderPrimary: yellow[2],\n borderSecondary: yellow[2],\n background: yellow[0],\n },\n green: {\n content: green[8],\n pillOutline: green[4],\n borderPrimary: green[2],\n borderSecondary: green[2],\n background: green[0],\n },\n purple: {\n content: purple[8],\n pillOutline: purple[4],\n borderPrimary: purple[2],\n borderSecondary: purple[2],\n background: purple[0],\n },\n blue: {\n content: blue[8],\n pillOutline: blue[4],\n borderPrimary: blue[2],\n borderSecondary: blue[2],\n background: blue[0],\n },\n orange: {\n content: orange[8],\n pillOutline: orange[4],\n borderPrimary: orange[2],\n borderSecondary: orange[2],\n background: orange[0],\n },\n pink: {\n content: pink[8],\n pillOutline: pink[4],\n borderPrimary: pink[2],\n borderSecondary: pink[2],\n background: pink[0],\n },\n} as const;\n\n// ============================================================================\n// BADGE BANNER TOKENS\n// ============================================================================\n\nexport const badgeBanner = {\n green: {\n content: green[8],\n border: green[2],\n background: green[0],\n },\n yellow: {\n content: yellow[8],\n border: yellow[2],\n background: yellow[0],\n },\n red: {\n content: red[8],\n border: red[2],\n background: red[0],\n },\n} as const;\n\n// ============================================================================\n// ALERT TOKENS\n// ============================================================================\n\nexport const alert = {\n green: {\n content: green[1],\n background: green[9],\n },\n yellow: {\n content: yellow[1],\n background: yellow[9],\n },\n red: {\n content: red[1],\n background: red[9],\n },\n} as const;\n\n// ============================================================================\n// TAG TOKENS\n// ============================================================================\n\nexport const tag = {\n content: slateGrey[10],\n border: slateGrey[4],\n background: slateGrey[3],\n} as const;\n\n// ============================================================================\n// MENU TOKENS\n// ============================================================================\n\nexport const menu = {\n backgroundDefault: slateGrey[2],\n backgroundHover: slateGrey[1],\n selected: slateGrey[3],\n} as const;\n\n// ============================================================================\n// INPUT/DROPDOWN TOKENS\n// ============================================================================\n\nexport const inputDropdown = {\n background: slateGrey[2],\n icon: slateGrey[10],\n borderDefault: slateGrey[4],\n borderSelected: brand[3],\n textLabel: slateGrey[9],\n textPlaceholder: slateGrey[8],\n textHint: slateGrey[8],\n} as const;\n\nexport const inputField = {\n backgroundDefault: slateGrey[2],\n backgroundDisabled: slateGrey[0],\n textLabel: slateGrey[9],\n textPlaceholder: slateGrey[8],\n textHint: slateGrey[8],\n textError: red[5],\n iconDefault: slateGrey[9],\n iconPlaceholder: slateGrey[10],\n iconError: red[5],\n borderDefault: slateGrey[4],\n borderSelected: brand[3],\n borderError: red[5],\n} as const;\n\n// ============================================================================\n// TOGGLE TOKENS\n// ============================================================================\n\nexport const toggle = {\n handleDefault: base.white,\n handleDisabled: slateGrey[10],\n off: {\n backgroundDefault: slateGrey[4],\n backgroundHover: slateGrey[5],\n backgroundDisabled: slateGrey[4],\n },\n on: {\n backgroundDefault: green[3],\n backgroundHover: green[2],\n backgroundDisabled: slateGrey[4],\n },\n} as const;\n\n// ============================================================================\n// CHECKBOX TOKENS\n// ============================================================================\n\nexport const checkbox = {\n off: {\n backgroundDefault: '#00000000',\n backgroundHover: slateGrey[5],\n backgroundDisabled: slateGrey[2],\n border: slateGrey[6],\n },\n on: {\n backgroundDefault: green[0],\n backgroundHover: green[1],\n backgroundDisabled: slateGrey[2],\n border: green[3],\n },\n} as const;\n\n// ============================================================================\n// AVATAR TOKENS\n// ============================================================================\n\nexport const avatar = {\n content: slateGrey[10],\n background: slateGrey[4],\n} as const;\n\n// ============================================================================\n// PROGRESS BAR & SLIDER TOKENS\n// ============================================================================\n\nexport const progressBarSlider = {\n background: slateGrey[4],\n active: green[3],\n} as const;\n\n// ============================================================================\n// CARD TOKENS\n// ============================================================================\n\nexport const card = {\n background: slateGrey[1],\n content: slateGrey[9],\n border: slateGrey[4],\n} as const;\n\n// ============================================================================\n// SIDEBAR TOKENS\n// ============================================================================\n\nexport const sidebar = {\n backgroundDefault: slateGrey[1],\n backgroundHover: slateGrey[3],\n backgroundActive: slateGrey[4],\n border: slateGrey[4],\n contentPrimary: slateGrey[10],\n contentSecondary: slateGrey[9],\n contentTertiary: slateGrey[8],\n} as const;\n\n// ============================================================================\n// MODAL TOKENS\n// ============================================================================\n\nexport const modal = {\n background: slateGrey[1],\n content: slateGrey[9],\n border: slateGrey[4],\n} as const;\n\n// ============================================================================\n// TAB TOKENS\n// ============================================================================\n\nexport const tab = {\n activeBackground: slateGrey[3],\n activeContent: brand[5],\n inactiveContent: slateGrey[9],\n border: slateGrey[4],\n} as const;\n\n// ============================================================================\n// TABLE TOKENS\n// ============================================================================\n\nexport const table = {\n header: {\n textDefault: slateGrey[9],\n textHover: slateGrey[8],\n backgroundDefault: slateGrey[1],\n },\n border: slateGrey[4],\n cell: {\n textPrimary: slateGrey[10],\n textSecondary: slateGrey[9],\n backgroundDefault: slateGrey[2],\n backgroundHover: slateGrey[1],\n },\n} as const;\n\n// ============================================================================\n// BREADCRUMBS TOKENS\n// ============================================================================\n\nexport const breadcrumbs = {\n textPrimaryDefault: slateGrey[10],\n textPrimaryHover: slateGrey[10],\n textSecondaryDefault: slateGrey[8],\n textSecondaryHover: slateGrey[9],\n iconPrimary: slateGrey[10],\n iconSecondary: slateGrey[8],\n} as const;\n\n// ============================================================================\n// LOADING INDICATOR TOKENS\n// ============================================================================\n\nexport const loadingIndicator = {\n background: green[1],\n active: green[5],\n} as const;\n\n// ============================================================================\n// DATE PICKER TOKENS\n// ============================================================================\n\nexport const datePicker = {\n textDefault: slateGrey[10],\n textSelected: base.white,\n textDisabled: slateGrey[7],\n backgroundDefault: slateGrey[2],\n backgroundMiddle: slateGrey[3],\n backgroundSelected: brand[3],\n border: slateGrey[4],\n} as const;\n\n// ============================================================================\n// MISC TOKENS\n// ============================================================================\n\nexport const scroll = slateGrey[9];\n\n// ============================================================================\n// EXPORTS\n// ============================================================================\n\nexport const colors = {\n base,\n brand,\n slateGrey,\n green,\n yellow,\n red,\n blue,\n orange,\n purple,\n pink,\n legacy,\n text,\n background,\n border,\n button,\n badge,\n badgeBanner,\n alert,\n tag,\n menu,\n inputDropdown,\n inputField,\n toggle,\n checkbox,\n avatar,\n progressBarSlider,\n card,\n sidebar,\n modal,\n tab,\n table,\n breadcrumbs,\n loadingIndicator,\n datePicker,\n scroll,\n} as const;\n\nexport default colors;\n", "/**\n * Syntro Design System \u2014 Editor Panel Shell Tokens\n *\n * Single source of truth for the floating editor panel's visuals and behavior.\n * Consumed by:\n * - packages/shared-editor-ui/src/components/EditorPanelShell.tsx (React)\n * - packages/shared-editor-ui/src/controllers/PanelShellController.ts (Lit)\n *\n * Any change here updates both React and Lit panels in one step \u2014 no drift.\n */\n\nimport { base, brand } from './colors';\n\n// ============================================================================\n// Panel background & shadows\n// ============================================================================\n\n/** Dark gradient rendered behind the panel contents (backdrop-blur layered on). */\nexport const panelBackground =\n 'linear-gradient(160deg, rgba(7,8,10,0.84) 0%, rgba(14,17,20,0.88) 45%, rgba(15,19,24,0.84) 100%)';\n\n/** Outer shadows for the panel, indexed by dock state. */\nexport const panelShadows = {\n /** Free-floating panel \u2014 shadow all sides. */\n floating: '0 8px 60px rgba(0,0,0,0.5)',\n /** Docked to left \u2014 shadow cast rightward into page. */\n dockedLeft: '20px 0 60px rgba(0,0,0,0.5)',\n /** Docked to right \u2014 shadow cast leftward into page. */\n dockedRight: '-20px 0 60px rgba(0,0,0,0.5)',\n} as const;\n\n/** Backdrop-filter blur radius applied to the panel surface. */\nexport const panelBackdropBlur = '12px';\n\n// ============================================================================\n// FAB (floating action button) visuals\n// ============================================================================\n\nexport const fab = {\n /** Diameter in pixels. */\n size: 56,\n /** Inset from the panel's top-left corner in pixels. */\n inset: 12,\n /** Background color (always the brand black). */\n background: base.black,\n /** Icon / logo color. */\n color: base.white,\n /** Border \u2014 2px brand red ring. */\n border: `2px solid ${brand[3]}`,\n /** Shadow when the panel is open (inner ring for \"active\" state). */\n shadowOpen: '0 4px 24px rgba(0,0,0,0.6), 0 0 0 2px rgba(255,255,255,0.08)',\n /** Shadow when the panel is closed. */\n shadowClosed: '0 4px 24px rgba(0,0,0,0.6)',\n} as const;\n\n// ============================================================================\n// Behavior: resize, drag, snap\n// ============================================================================\n\nexport const panelBehavior = {\n /** Minimum panel width when resizing or undocked. */\n minWidth: 480,\n /** Minimum panel height when resizing or undocked. */\n minHeight: 400,\n /** Edge thickness of resize handles in pixels. */\n handleSize: 8,\n /** Pixels the FAB must move before a press becomes a drag (vs a click). */\n dragThreshold: 5,\n /** Distance from a viewport edge that triggers edge-dock snapping. */\n snapThreshold: 20,\n} as const;\n\n// ============================================================================\n// Aggregate export\n// ============================================================================\n\nexport const panelShell = {\n background: panelBackground,\n shadows: panelShadows,\n backdropBlur: panelBackdropBlur,\n fab,\n behavior: panelBehavior,\n} as const;\n\nexport default panelShell;\n", "import {\n blue,\n border,\n brand,\n button,\n green,\n red,\n slateGrey,\n text,\n yellow,\n} from '@syntro/design-system/tokens';\n\nimport type { CanvasThemeConfig, CanvasThemeTokens } from './types';\n\n/**\n * Apply alpha transparency to a hex color.\n * Converts a 0-1 alpha value to a 2-digit hex suffix.\n */\nexport function withAlpha(hex: string, alpha: number): string {\n return `${hex}${Math.round(alpha * 255)\n .toString(16)\n .padStart(2, '0')}`;\n}\n\n/**\n * Default dark theme using Syntro Design System tokens\n */\nexport const darkTheme: CanvasThemeTokens = {\n // Brand colors\n colorPrimary: brand[3],\n colorPrimaryHover: brand[4],\n colorPrimaryMuted: brand[0],\n\n // Surface colors (with alpha for glass/vibrancy effects)\n colorBackground: withAlpha(slateGrey[1], 0.95),\n colorBackgroundElevated: withAlpha(slateGrey[3], 0.95),\n colorBackgroundSubtle: withAlpha(slateGrey[0], 0.2),\n colorSurface: withAlpha(slateGrey[4], 0.8),\n colorSurfaceHover: withAlpha(slateGrey[5], 0.8),\n\n // Text colors\n colorText: text.primary,\n colorTextSecondary: text.secondary,\n colorTextMuted: text.tertiary,\n colorTextInverse: slateGrey[1],\n\n // Border colors\n colorBorder: border.primary,\n colorBorderSubtle: border.secondary,\n\n // Semantic colors\n colorSuccess: green[4],\n colorSuccessMuted: green[0],\n colorWarning: yellow[4],\n colorWarningMuted: yellow[0],\n colorError: red[4],\n colorErrorMuted: red[0],\n colorInfo: blue[4],\n colorInfoMuted: blue[0],\n\n // Notification badge\n colorNotification: brand[4],\n colorNotificationMuted: withAlpha(brand[4], 0.4),\n\n // Glass morphism\n glassBackground: withAlpha(slateGrey[1], 0.6),\n glassBackgroundHover: withAlpha(slateGrey[1], 0.7),\n glassBorder: 'rgba(255, 255, 255, 0.08)',\n glassBlur: 'blur(24px)',\n glassSaturate: 'saturate(1.2)',\n\n // Typography (SF Pro stack)\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif\",\n fontFamilyMono: \"'SF Mono', 'Fira Code', Consolas, monospace\",\n fontSizeXs: '0.7rem',\n fontSizeSm: '0.8rem',\n fontSizeMd: '0.9rem',\n fontSizeLg: '1rem',\n fontSizeXl: '1.25rem',\n fontSizeXxl: '1.5rem',\n fontWeightNormal: '400',\n fontWeightMedium: '500',\n fontWeightSemibold: '600',\n fontWeightBold: '700',\n lineHeightTight: '1.25',\n lineHeightNormal: '1.5',\n lineHeightRelaxed: '1.75',\n\n // Spacing\n spacingXs: '0.25rem',\n spacingSm: '0.5rem',\n spacingMd: '0.75rem',\n spacingLg: '1rem',\n spacingXl: '1.5rem',\n\n // Border radius\n borderRadiusSm: '6px',\n borderRadiusMd: '10px',\n borderRadiusLg: '14px',\n borderRadiusXl: '20px',\n borderRadiusFull: '9999px',\n\n // Shadows\n shadowSm: '0 1px 2px rgba(0, 0, 0, 0.2)',\n shadowMd: '0 2px 12px rgba(0, 0, 0, 0.3)',\n shadowLg: '0 8px 24px rgba(0, 0, 0, 0.4)',\n shadowXl: '0 16px 48px rgba(0, 0, 0, 0.5)',\n\n // Backdrop effects\n backdropBlur: 'blur(20px)',\n backdropSaturate: 'saturate(180%)',\n\n // Animation\n transitionFast: '0.1s ease',\n transitionNormal: '0.25s ease',\n transitionSlow: '0.4s ease',\n};\n\n/**\n * Light theme variant using Syntro Design System tokens\n */\nexport const lightTheme: CanvasThemeTokens = {\n // Brand colors\n colorPrimary: brand[3],\n colorPrimaryHover: brand[2],\n colorPrimaryMuted: withAlpha(brand[5], 0.1),\n\n // Surface colors\n colorBackground: withAlpha(slateGrey[12], 0.95),\n colorBackgroundElevated: withAlpha(slateGrey[11], 0.95),\n colorBackgroundSubtle: withAlpha(slateGrey[0], 0.02),\n colorSurface: withAlpha(slateGrey[11], 0.6),\n colorSurfaceHover: withAlpha(slateGrey[10], 0.6),\n\n // Text colors\n colorText: slateGrey[1],\n colorTextSecondary: slateGrey[6],\n colorTextMuted: slateGrey[8],\n colorTextInverse: slateGrey[12],\n\n // Border colors\n colorBorder: withAlpha(slateGrey[0], 0.12),\n colorBorderSubtle: withAlpha(slateGrey[0], 0.06),\n\n // Semantic colors\n colorSuccess: green[4],\n colorSuccessMuted: withAlpha(green[4], 0.12),\n colorWarning: yellow[4],\n colorWarningMuted: withAlpha(yellow[4], 0.12),\n colorError: red[4],\n colorErrorMuted: withAlpha(red[4], 0.12),\n colorInfo: blue[4],\n colorInfoMuted: withAlpha(blue[4], 0.12),\n\n // Notification badge\n colorNotification: brand[3],\n colorNotificationMuted: withAlpha(brand[3], 0.4),\n\n // Glass morphism\n glassBackground: withAlpha(slateGrey[12], 0.7),\n glassBackgroundHover: withAlpha(slateGrey[12], 0.8),\n glassBorder: 'rgba(0, 0, 0, 0.06)',\n glassBlur: 'blur(24px)',\n glassSaturate: 'saturate(1.2)',\n\n // Typography (same as dark)\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif\",\n fontFamilyMono: \"'SF Mono', 'Fira Code', Consolas, monospace\",\n fontSizeXs: '0.7rem',\n fontSizeSm: '0.8rem',\n fontSizeMd: '0.9rem',\n fontSizeLg: '1rem',\n fontSizeXl: '1.25rem',\n fontSizeXxl: '1.5rem',\n fontWeightNormal: '400',\n fontWeightMedium: '500',\n fontWeightSemibold: '600',\n fontWeightBold: '700',\n lineHeightTight: '1.25',\n lineHeightNormal: '1.5',\n lineHeightRelaxed: '1.75',\n\n // Spacing (same as dark)\n spacingXs: '0.25rem',\n spacingSm: '0.5rem',\n spacingMd: '0.75rem',\n spacingLg: '1rem',\n spacingXl: '1.5rem',\n\n // Border radius (same as dark)\n borderRadiusSm: '6px',\n borderRadiusMd: '10px',\n borderRadiusLg: '14px',\n borderRadiusXl: '20px',\n borderRadiusFull: '9999px',\n\n // Shadows (lighter for light mode)\n shadowSm: '0 1px 2px rgba(0, 0, 0, 0.08)',\n shadowMd: '0 2px 12px rgba(0, 0, 0, 0.12)',\n shadowLg: '0 8px 24px rgba(0, 0, 0, 0.16)',\n shadowXl: '0 16px 48px rgba(0, 0, 0, 0.2)',\n\n // Backdrop effects\n backdropBlur: 'blur(20px)',\n backdropSaturate: 'saturate(180%)',\n\n // Animation\n transitionFast: '0.1s ease',\n transitionNormal: '0.25s ease',\n transitionSlow: '0.4s ease',\n};\n\n/**\n * Get default theme based on mode\n */\nexport function getDefaultTheme(mode: 'light' | 'dark' = 'dark'): CanvasThemeTokens {\n return mode === 'light' ? lightTheme : darkTheme;\n}\n\n/**\n * Convert theme tokens to CSS custom properties\n */\n// ---------------------------------------------------------------------------\n// Shared utility: camelCase \u2192 kebab-case\n// ---------------------------------------------------------------------------\n\nfunction kebabCase(str: string): string {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\n/**\n * Convert theme tokens to CSS custom properties\n */\nexport function themeToCssVariables(theme: CanvasThemeTokens): Record<string, string> {\n const variables: Record<string, string> = {};\n for (const [key, value] of Object.entries(theme)) {\n variables[`--sc-${kebabCase(key)}`] = value;\n }\n return variables;\n}\n\n// ---------------------------------------------------------------------------\n// Default themes (nested by visual element)\n// ---------------------------------------------------------------------------\n\nexport const darkDefaults: Required<CanvasThemeConfig> = {\n mode: 'dark',\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif\",\n colorPrimary: brand[3],\n colorPrimaryHover: brand[4],\n borderRadius: '12px',\n canvas: {\n position: 'right',\n layout: 'overlay',\n background: withAlpha(slateGrey[1], 0.6),\n blur: 'blur(24px)',\n border: 'none',\n width: 'clamp(380px, 25vw, 520px)',\n transitionDuration: '300ms',\n transitionEasing: 'cubic-bezier(0.16, 1, 0.3, 1)',\n transitionFade: '6%',\n padding: '0',\n },\n launcher: {\n background: button.primary.backgroundDefault,\n backgroundHover: button.primary.backgroundHover,\n color: button.primary.icon,\n size: '56px',\n shadow: `0 8px 32px ${withAlpha(slateGrey[0], 0.6)}`,\n borderRadius: '9999px',\n },\n tile: {\n background: withAlpha(slateGrey[1], 0.6),\n backgroundHover: withAlpha(slateGrey[1], 0.7),\n border: '1px solid rgba(255, 255, 255, 0.08)',\n borderRadius: '14px',\n shadow: '0 2px 12px rgba(0, 0, 0, 0.3)',\n titleColor: text.primary,\n textColor: text.secondary,\n iconBackground: `linear-gradient(135deg, ${brand[3]} 0%, ${brand[3]}cc 100%)`,\n iconShadow: `0 2px 8px ${brand[3]}40`,\n headerPadding: '0.375rem 0.75rem',\n bodyPadding: '0 0.75rem 0.5rem',\n gap: '0.25rem',\n },\n overlay: {\n background: withAlpha(slateGrey[1], 0.6),\n textColor: text.primary,\n titleColor: text.primary,\n arrowColor: withAlpha(slateGrey[1], 0.6),\n arrowSize: '8px',\n border: 'none',\n borderRadius: '0',\n scrimOpacity: '0',\n highlightRing: `2px solid ${brand[3]}`,\n },\n notification: {\n background: withAlpha(slateGrey[0], 0.95),\n textColor: text.primary,\n textSecondaryColor: text.secondary,\n border: `1px solid ${slateGrey[5]}`,\n borderRadius: '12px',\n successColor: green[4],\n warningColor: yellow[4],\n errorColor: red[4],\n iconBackground: withAlpha(brand[3], 0.15),\n progressGradient: `linear-gradient(90deg, ${brand[3]}, ${brand[4]})`,\n },\n content: {\n background: withAlpha(slateGrey[3], 0.8),\n backgroundHover: withAlpha(slateGrey[5], 0.6),\n border: `1px solid ${withAlpha(slateGrey[5], 0.5)}`,\n borderRadius: '8px',\n textColor: text.primary,\n textSecondaryColor: text.secondary,\n itemDivider: 'none',\n itemGap: '6px',\n itemPadding: '12px 16px',\n itemFontSize: '15px',\n bodyPadding: '0 16px 12px 16px',\n bodyFontSize: '14px',\n categoryPadding: '8px 4px 4px 4px',\n categoryGap: '4px',\n categoryFontSize: '12px',\n searchBackground: withAlpha(slateGrey[3], 0.8),\n searchColor: text.primary,\n chevronColor: 'currentColor',\n },\n};\n\nexport const lightDefaults: Required<CanvasThemeConfig> = {\n mode: 'light',\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif\",\n colorPrimary: brand[3],\n colorPrimaryHover: brand[2],\n borderRadius: '12px',\n canvas: {\n position: 'right',\n layout: 'overlay',\n background: withAlpha(slateGrey[12], 0.7),\n blur: 'blur(24px)',\n border: 'none',\n width: 'clamp(380px, 25vw, 520px)',\n transitionDuration: '300ms',\n transitionEasing: 'cubic-bezier(0.16, 1, 0.3, 1)',\n transitionFade: '6%',\n padding: '0',\n },\n launcher: {\n background: brand[3],\n backgroundHover: brand[2],\n color: '#ffffff',\n size: '56px',\n shadow: '0 8px 32px rgba(0, 0, 0, 0.15)',\n borderRadius: '9999px',\n },\n tile: {\n background: withAlpha(slateGrey[12], 0.7),\n backgroundHover: withAlpha(slateGrey[12], 0.8),\n border: '1px solid rgba(0, 0, 0, 0.06)',\n borderRadius: '14px',\n shadow: '0 2px 12px rgba(0, 0, 0, 0.12)',\n titleColor: slateGrey[1],\n textColor: slateGrey[6],\n iconBackground: `linear-gradient(135deg, ${brand[3]} 0%, ${brand[3]}cc 100%)`,\n iconShadow: `0 2px 8px ${brand[3]}40`,\n headerPadding: '0.375rem 0.75rem',\n bodyPadding: '0 0.75rem 0.5rem',\n gap: '0.25rem',\n },\n overlay: {\n background: withAlpha(slateGrey[12], 0.7),\n textColor: slateGrey[1],\n titleColor: slateGrey[1],\n arrowColor: withAlpha(slateGrey[12], 0.7),\n arrowSize: '8px',\n border: 'none',\n borderRadius: '0',\n scrimOpacity: '0',\n highlightRing: `2px solid ${brand[3]}`,\n },\n notification: {\n background: withAlpha(slateGrey[12], 0.95),\n textColor: slateGrey[1],\n textSecondaryColor: slateGrey[6],\n border: `1px solid ${withAlpha(slateGrey[0], 0.12)}`,\n borderRadius: '12px',\n successColor: green[4],\n warningColor: yellow[4],\n errorColor: red[4],\n iconBackground: withAlpha(brand[3], 0.1),\n progressGradient: `linear-gradient(90deg, ${brand[3]}, ${brand[2]})`,\n },\n content: {\n background: withAlpha(slateGrey[12], 0.8),\n backgroundHover: withAlpha(slateGrey[11], 0.6),\n border: `1px solid ${slateGrey[11]}`,\n borderRadius: '8px',\n textColor: slateGrey[1],\n textSecondaryColor: slateGrey[6],\n itemDivider: 'none',\n itemGap: '6px',\n itemPadding: '12px 16px',\n itemFontSize: '15px',\n bodyPadding: '0 16px 12px 16px',\n bodyFontSize: '14px',\n categoryPadding: '8px 4px 4px 4px',\n categoryGap: '4px',\n categoryFontSize: '12px',\n searchBackground: slateGrey[12],\n searchColor: slateGrey[1],\n chevronColor: 'currentColor',\n },\n};\n\n// ---------------------------------------------------------------------------\n// Merge: deep-merge customer config on top of defaults\n// ---------------------------------------------------------------------------\n\nexport function mergeThemeConfig(customer: CanvasThemeConfig): Required<CanvasThemeConfig> {\n const base = customer.mode === 'light' ? lightDefaults : darkDefaults;\n return {\n mode: customer.mode ?? base.mode,\n fontFamily: customer.fontFamily ?? base.fontFamily,\n colorPrimary: customer.colorPrimary ?? base.colorPrimary,\n colorPrimaryHover: customer.colorPrimaryHover ?? base.colorPrimaryHover,\n borderRadius: customer.borderRadius ?? base.borderRadius,\n canvas: { ...base.canvas, ...customer.canvas },\n launcher: { ...base.launcher, ...customer.launcher },\n tile: { ...base.tile, ...customer.tile },\n overlay: { ...base.overlay, ...customer.overlay },\n notification: { ...base.notification, ...customer.notification },\n content: { ...base.content, ...customer.content },\n };\n}\n\n// ---------------------------------------------------------------------------\n// 3-layer merge: defaults \u2192 workspace theme \u2192 config theme\n// ---------------------------------------------------------------------------\n\nexport function mergeThemeWithWorkspace(\n workspaceTheme: CanvasThemeConfig,\n configTheme: CanvasThemeConfig\n): Required<CanvasThemeConfig> {\n const mode = configTheme.mode ?? workspaceTheme.mode ?? 'dark';\n const base = mode === 'light' ? lightDefaults : darkDefaults;\n return {\n mode,\n fontFamily: configTheme.fontFamily ?? workspaceTheme.fontFamily ?? base.fontFamily,\n colorPrimary: configTheme.colorPrimary ?? workspaceTheme.colorPrimary ?? base.colorPrimary,\n colorPrimaryHover:\n configTheme.colorPrimaryHover ?? workspaceTheme.colorPrimaryHover ?? base.colorPrimaryHover,\n borderRadius: configTheme.borderRadius ?? workspaceTheme.borderRadius ?? base.borderRadius,\n canvas: { ...base.canvas, ...workspaceTheme.canvas, ...configTheme.canvas },\n launcher: { ...base.launcher, ...workspaceTheme.launcher, ...configTheme.launcher },\n tile: { ...base.tile, ...workspaceTheme.tile, ...configTheme.tile },\n overlay: { ...base.overlay, ...workspaceTheme.overlay, ...configTheme.overlay },\n notification: {\n ...base.notification,\n ...workspaceTheme.notification,\n ...configTheme.notification,\n },\n content: { ...base.content, ...workspaceTheme.content, ...configTheme.content },\n };\n}\n\n// ---------------------------------------------------------------------------\n// Flatten: nested config -> --sc-{element}-{property} CSS variables\n// ---------------------------------------------------------------------------\n\nconst ELEMENT_SECTIONS = [\n 'canvas',\n 'launcher',\n 'tile',\n 'overlay',\n 'notification',\n 'content',\n] as const;\n\nexport function flattenThemeConfig(config: Required<CanvasThemeConfig>): Record<string, string> {\n const vars: Record<string, string> = {};\n if (config.fontFamily) vars['--sc-font-family'] = config.fontFamily;\n if (config.colorPrimary) vars['--sc-color-primary'] = config.colorPrimary;\n if (config.colorPrimaryHover) vars['--sc-color-primary-hover'] = config.colorPrimaryHover;\n if (config.borderRadius) vars['--sc-border-radius'] = config.borderRadius;\n for (const section of ELEMENT_SECTIONS) {\n const sectionConfig = config[section];\n if (!sectionConfig) continue;\n for (const [key, value] of Object.entries(sectionConfig)) {\n if (value !== undefined) {\n vars[`--sc-${section}-${kebabCase(key)}`] = value;\n }\n }\n }\n return vars;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Syntro Design System - Color Tokens\n *\n * This file contains all color tokens from the Figma design system.\n * Colors are organized by scale and semantic meaning.\n *\n * @see https://www.figma.com/design/U0Ol5vM7FQvgPfIgCAgxgb/Design-System\n */\n\n// ============================================================================\n// BASE COLORS\n// ============================================================================\n\nexport const base = {\n white: '#ffffff',\n black: '#000000',\n} as const;\n\n// ============================================================================\n// BRAND COLORS\n// ============================================================================\n\nexport const brand = {\n 0: '#2c0b0a',\n 1: '#5b1715',\n 2: '#89221f',\n 3: '#b72e2a',\n 4: '#d44844',\n 5: '#dd6d69',\n 6: '#e5918f',\n 7: '#eeb6b4',\n 8: '#f6dada',\n 9: '#faebea',\n} as const;\n\n// ============================================================================\n// NEUTRAL COLORS\n// ============================================================================\n\nexport const slateGrey = {\n 0: '#07080a',\n 1: '#0f1318',\n 2: '#0e1114',\n 3: '#1c222a',\n 4: '#2b333f',\n 5: '#394454',\n 6: '#475569',\n 7: '#677384',\n 8: '#87919f',\n 9: '#a8afba',\n 10: '#cbd0d7',\n 11: '#e8eaee',\n 12: '#f6f7f9',\n} as const;\n\n// ============================================================================\n// SEMANTIC COLOR SCALES\n// ============================================================================\n\nexport const green = {\n 0: '#07230a',\n 1: '#0e4514',\n 2: '#16681e',\n 3: '#1d8a28',\n 4: '#24ad32',\n 5: '#4fbd5a',\n 6: '#7acd82',\n 7: '#a5deab',\n 8: '#d0eed3',\n 9: '#e5f6e7',\n} as const;\n\nexport const yellow = {\n 0: '#301f09',\n 1: '#5f3e12',\n 2: '#8f5e1b',\n 3: '#be7d24',\n 4: '#ee9c2d',\n 5: '#f1b057',\n 6: '#f5c481',\n 7: '#f8d7ab',\n 8: '#fcebd5',\n 9: '#fdf5ea',\n} as const;\n\nexport const red = {\n 0: '#330707',\n 1: '#660f0e',\n 2: '#991616',\n 3: '#cc1e1d',\n 4: '#ff2524',\n 5: '#ff5150',\n 6: '#ff7c7c',\n 7: '#ffa8a7',\n 8: '#ffd3d3',\n 9: '#ffe9e9',\n} as const;\n\nexport const blue = {\n 0: '#051533',\n 1: '#0a2a66',\n 2: '#0f3f98',\n 3: '#1454cb',\n 4: '#1969fe',\n 5: '#4787fe',\n 6: '#75a5fe',\n 7: '#a3c3ff',\n 8: '#d1e1ff',\n 9: '#e8f0ff',\n} as const;\n\nexport const orange = {\n 0: '#662500',\n 1: '#993d00',\n 2: '#cc5800',\n 3: '#ff7700',\n 4: '#fea85d',\n 5: '#fec58f',\n 6: '#ffd6ae',\n 7: '#fee6cd',\n 8: '#fff1e1',\n 9: '#fff8f0',\n} as const;\n\nexport const purple = {\n 0: '#151229',\n 1: '#2a2452',\n 2: '#40357c',\n 3: '#5547a5',\n 4: '#6a59ce',\n 5: '#887ad8',\n 6: '#a69be2',\n 7: '#c3bdeb',\n 8: '#e1def5',\n 9: '#f0eefa',\n} as const;\n\nexport const pink = {\n 0: '#37091f',\n 1: '#69123c',\n 2: '#9b1c58',\n 3: '#cd2575',\n 4: '#ff2e92',\n 5: '#ff58a8',\n 6: '#ff82be',\n 7: '#ffabd3',\n 8: '#ffd5e9',\n 9: '#ffeaf4',\n} as const;\n\n// ============================================================================\n// LEGACY COLORS (Being phased out)\n// ============================================================================\n\nexport const legacy = {\n aqua: {\n 0: '#0c5f8d',\n 1: '#146b99',\n 2: '#1d78a6',\n 3: '#2e89b6',\n 4: '#4a9fc4',\n 5: '#6bb4d1',\n 6: '#93cce0',\n 7: '#bddff0',\n 8: '#dceef8',\n 9: '#f2f8fc',\n },\n violet: {\n 0: '#6927da',\n 1: '#7839ee',\n 2: '#875bf7',\n 3: '#a48afb',\n 4: '#c3b4fd',\n 5: '#ddd6fe',\n 6: '#ece9fe',\n 7: '#f5f3ff',\n 8: '#fbfaff',\n },\n fuchsia: {\n 0: '#9f1ab1',\n 1: '#ba24d5',\n 2: '#d444f1',\n 3: '#e478fa',\n 4: '#eeaafd',\n 5: '#f6d0fe',\n 6: '#fbe8ff',\n 7: '#fdf4ff',\n 8: '#fefaff',\n },\n pink: {\n 0: '#a10f5f',\n 1: '#dd2590',\n 2: '#ee46bc',\n 3: '#f670c7',\n 4: '#faa7e0',\n 5: '#fcceee',\n 6: '#fce7f6',\n 7: '#fdf2fa',\n 8: '#fef6fb',\n },\n} as const;\n\n// ============================================================================\n// TEXT TOKENS\n// ============================================================================\n\nexport const text = {\n primary: slateGrey[10],\n secondary: slateGrey[9],\n tertiary: slateGrey[8],\n} as const;\n\n// ============================================================================\n// BACKGROUND TOKENS\n// ============================================================================\n\nexport const background = {\n primary: slateGrey[2],\n secondary: slateGrey[0],\n} as const;\n\n// ============================================================================\n// BORDER TOKENS\n// ============================================================================\n\nexport const border = {\n primary: slateGrey[4],\n secondary: slateGrey[3],\n} as const;\n\n// ============================================================================\n// BUTTON TOKENS\n// ============================================================================\n\nexport const button = {\n primary: {\n text: base.white,\n icon: base.white,\n border: brand[3],\n backgroundDefault: brand[3],\n backgroundHover: brand[2],\n },\n neutral: {\n text: slateGrey[10],\n textHover: base.white,\n icon: slateGrey[10],\n iconHover: base.white,\n border: slateGrey[4],\n background: slateGrey[2],\n },\n link: {\n text: base.white,\n icon: base.white,\n hover: brand[5],\n },\n error: {\n text: red[5],\n hover: red[6],\n },\n success: {\n text: green[5],\n hover: green[6],\n },\n} as const;\n\n// ============================================================================\n// BADGE TOKENS\n// ============================================================================\n\nexport const badge = {\n slateGrey: {\n content: slateGrey[10],\n pillOutline: slateGrey[10],\n borderPrimary: slateGrey[5],\n borderSecondary: slateGrey[5],\n background: slateGrey[3],\n },\n brand: {\n content: brand[9],\n pillOutline: brand[9],\n borderPrimary: brand[6],\n borderSecondary: brand[6],\n background: brand[0],\n },\n red: {\n content: red[8],\n pillOutline: red[4],\n borderPrimary: red[2],\n borderSecondary: red[2],\n background: red[0],\n },\n yellow: {\n content: yellow[8],\n pillOutline: yellow[4],\n borderPrimary: yellow[2],\n borderSecondary: yellow[2],\n background: yellow[0],\n },\n green: {\n content: green[8],\n pillOutline: green[4],\n borderPrimary: green[2],\n borderSecondary: green[2],\n background: green[0],\n },\n purple: {\n content: purple[8],\n pillOutline: purple[4],\n borderPrimary: purple[2],\n borderSecondary: purple[2],\n background: purple[0],\n },\n blue: {\n content: blue[8],\n pillOutline: blue[4],\n borderPrimary: blue[2],\n borderSecondary: blue[2],\n background: blue[0],\n },\n orange: {\n content: orange[8],\n pillOutline: orange[4],\n borderPrimary: orange[2],\n borderSecondary: orange[2],\n background: orange[0],\n },\n pink: {\n content: pink[8],\n pillOutline: pink[4],\n borderPrimary: pink[2],\n borderSecondary: pink[2],\n background: pink[0],\n },\n} as const;\n\n// ============================================================================\n// BADGE BANNER TOKENS\n// ============================================================================\n\nexport const badgeBanner = {\n green: {\n content: green[8],\n border: green[2],\n background: green[0],\n },\n yellow: {\n content: yellow[8],\n border: yellow[2],\n background: yellow[0],\n },\n red: {\n content: red[8],\n border: red[2],\n background: red[0],\n },\n} as const;\n\n// ============================================================================\n// ALERT TOKENS\n// ============================================================================\n\nexport const alert = {\n green: {\n content: green[1],\n background: green[9],\n },\n yellow: {\n content: yellow[1],\n background: yellow[9],\n },\n red: {\n content: red[1],\n background: red[9],\n },\n} as const;\n\n// ============================================================================\n// TAG TOKENS\n// ============================================================================\n\nexport const tag = {\n content: slateGrey[10],\n border: slateGrey[4],\n background: slateGrey[3],\n} as const;\n\n// ============================================================================\n// MENU TOKENS\n// ============================================================================\n\nexport const menu = {\n backgroundDefault: slateGrey[2],\n backgroundHover: slateGrey[1],\n selected: slateGrey[3],\n} as const;\n\n// ============================================================================\n// INPUT/DROPDOWN TOKENS\n// ============================================================================\n\nexport const inputDropdown = {\n background: slateGrey[2],\n icon: slateGrey[10],\n borderDefault: slateGrey[4],\n borderSelected: brand[3],\n textLabel: slateGrey[9],\n textPlaceholder: slateGrey[8],\n textHint: slateGrey[8],\n} as const;\n\nexport const inputField = {\n backgroundDefault: slateGrey[2],\n backgroundDisabled: slateGrey[0],\n textLabel: slateGrey[9],\n textPlaceholder: slateGrey[8],\n textHint: slateGrey[8],\n textError: red[5],\n iconDefault: slateGrey[9],\n iconPlaceholder: slateGrey[10],\n iconError: red[5],\n borderDefault: slateGrey[4],\n borderSelected: brand[3],\n borderError: red[5],\n} as const;\n\n// ============================================================================\n// TOGGLE TOKENS\n// ============================================================================\n\nexport const toggle = {\n handleDefault: base.white,\n handleDisabled: slateGrey[10],\n off: {\n backgroundDefault: slateGrey[4],\n backgroundHover: slateGrey[5],\n backgroundDisabled: slateGrey[4],\n },\n on: {\n backgroundDefault: green[3],\n backgroundHover: green[2],\n backgroundDisabled: slateGrey[4],\n },\n} as const;\n\n// ============================================================================\n// CHECKBOX TOKENS\n// ============================================================================\n\nexport const checkbox = {\n off: {\n backgroundDefault: '#00000000',\n backgroundHover: slateGrey[5],\n backgroundDisabled: slateGrey[2],\n border: slateGrey[6],\n },\n on: {\n backgroundDefault: green[0],\n backgroundHover: green[1],\n backgroundDisabled: slateGrey[2],\n border: green[3],\n },\n} as const;\n\n// ============================================================================\n// AVATAR TOKENS\n// ============================================================================\n\nexport const avatar = {\n content: slateGrey[10],\n background: slateGrey[4],\n} as const;\n\n// ============================================================================\n// PROGRESS BAR & SLIDER TOKENS\n// ============================================================================\n\nexport const progressBarSlider = {\n background: slateGrey[4],\n active: green[3],\n} as const;\n\n// ============================================================================\n// CARD TOKENS\n// ============================================================================\n\nexport const card = {\n background: slateGrey[1],\n content: slateGrey[9],\n border: slateGrey[4],\n} as const;\n\n// ============================================================================\n// SIDEBAR TOKENS\n// ============================================================================\n\nexport const sidebar = {\n backgroundDefault: slateGrey[1],\n backgroundHover: slateGrey[3],\n backgroundActive: slateGrey[4],\n border: slateGrey[4],\n contentPrimary: slateGrey[10],\n contentSecondary: slateGrey[9],\n contentTertiary: slateGrey[8],\n} as const;\n\n// ============================================================================\n// MODAL TOKENS\n// ============================================================================\n\nexport const modal = {\n background: slateGrey[1],\n content: slateGrey[9],\n border: slateGrey[4],\n} as const;\n\n// ============================================================================\n// TAB TOKENS\n// ============================================================================\n\nexport const tab = {\n activeBackground: slateGrey[3],\n activeContent: brand[5],\n inactiveContent: slateGrey[9],\n border: slateGrey[4],\n} as const;\n\n// ============================================================================\n// TABLE TOKENS\n// ============================================================================\n\nexport const table = {\n header: {\n textDefault: slateGrey[9],\n textHover: slateGrey[8],\n backgroundDefault: slateGrey[1],\n },\n border: slateGrey[4],\n cell: {\n textPrimary: slateGrey[10],\n textSecondary: slateGrey[9],\n backgroundDefault: slateGrey[2],\n backgroundHover: slateGrey[1],\n },\n} as const;\n\n// ============================================================================\n// BREADCRUMBS TOKENS\n// ============================================================================\n\nexport const breadcrumbs = {\n textPrimaryDefault: slateGrey[10],\n textPrimaryHover: slateGrey[10],\n textSecondaryDefault: slateGrey[8],\n textSecondaryHover: slateGrey[9],\n iconPrimary: slateGrey[10],\n iconSecondary: slateGrey[8],\n} as const;\n\n// ============================================================================\n// LOADING INDICATOR TOKENS\n// ============================================================================\n\nexport const loadingIndicator = {\n background: green[1],\n active: green[5],\n} as const;\n\n// ============================================================================\n// DATE PICKER TOKENS\n// ============================================================================\n\nexport const datePicker = {\n textDefault: slateGrey[10],\n textSelected: base.white,\n textDisabled: slateGrey[7],\n backgroundDefault: slateGrey[2],\n backgroundMiddle: slateGrey[3],\n backgroundSelected: brand[3],\n border: slateGrey[4],\n} as const;\n\n// ============================================================================\n// MISC TOKENS\n// ============================================================================\n\nexport const scroll = slateGrey[9];\n\n// ============================================================================\n// EXPORTS\n// ============================================================================\n\nexport const colors = {\n base,\n brand,\n slateGrey,\n green,\n yellow,\n red,\n blue,\n orange,\n purple,\n pink,\n legacy,\n text,\n background,\n border,\n button,\n badge,\n badgeBanner,\n alert,\n tag,\n menu,\n inputDropdown,\n inputField,\n toggle,\n checkbox,\n avatar,\n progressBarSlider,\n card,\n sidebar,\n modal,\n tab,\n table,\n breadcrumbs,\n loadingIndicator,\n datePicker,\n scroll,\n} as const;\n\nexport default colors;\n", "/**\n * Syntro Design System \u2014 Editor Panel Shell Tokens\n *\n * Single source of truth for the floating editor panel's visuals and behavior.\n * Consumed by:\n * - packages/shared-editor-ui/src/components/EditorPanelShell.tsx (React)\n * - packages/shared-editor-ui/src/controllers/PanelShellController.ts (Lit)\n *\n * Any change here updates both React and Lit panels in one step \u2014 no drift.\n */\n\nimport { base, brand } from './colors';\n\n// ============================================================================\n// Panel background & shadows\n// ============================================================================\n\n/** Dark gradient rendered behind the panel contents (backdrop-blur layered on). */\nexport const panelBackground =\n 'linear-gradient(160deg, rgba(7,8,10,0.84) 0%, rgba(14,17,20,0.88) 45%, rgba(15,19,24,0.84) 100%)';\n\n/** Outer shadows for the panel, indexed by dock state. */\nexport const panelShadows = {\n /** Free-floating panel \u2014 shadow all sides. */\n floating: '0 8px 60px rgba(0,0,0,0.5)',\n /** Docked to left \u2014 shadow cast rightward into page. */\n dockedLeft: '20px 0 60px rgba(0,0,0,0.5)',\n /** Docked to right \u2014 shadow cast leftward into page. */\n dockedRight: '-20px 0 60px rgba(0,0,0,0.5)',\n} as const;\n\n/** Backdrop-filter blur radius applied to the panel surface. */\nexport const panelBackdropBlur = '12px';\n\n// ============================================================================\n// FAB (floating action button) visuals\n// ============================================================================\n\nexport const fab = {\n /** Diameter in pixels. */\n size: 56,\n /** Inset from the panel's top-left corner in pixels. */\n inset: 12,\n /** Background color (always the brand black). */\n background: base.black,\n /** Icon / logo color. */\n color: base.white,\n /** Border \u2014 2px brand red ring. */\n border: `2px solid ${brand[3]}`,\n /** Shadow when the panel is open (inner ring for \"active\" state). */\n shadowOpen: '0 4px 24px rgba(0,0,0,0.6), 0 0 0 2px rgba(255,255,255,0.08)',\n /** Shadow when the panel is closed. */\n shadowClosed: '0 4px 24px rgba(0,0,0,0.6)',\n} as const;\n\n// ============================================================================\n// Behavior: resize, drag, snap\n// ============================================================================\n\nexport const panelBehavior = {\n /** Minimum panel width when resizing or undocked. */\n minWidth: 480,\n /** Minimum panel height when resizing or undocked. */\n minHeight: 400,\n /** Edge thickness of resize handles in pixels. */\n handleSize: 8,\n /** Pixels the FAB must move before a press becomes a drag (vs a click). */\n dragThreshold: 5,\n /** Distance from a viewport edge that triggers edge-dock snapping. */\n snapThreshold: 20,\n} as const;\n\n// ============================================================================\n// Aggregate export\n// ============================================================================\n\nexport const panelShell = {\n background: panelBackground,\n shadows: panelShadows,\n backdropBlur: panelBackdropBlur,\n fab,\n behavior: panelBehavior,\n} as const;\n\nexport default panelShell;\n", "import {\n blue,\n border,\n brand,\n button,\n green,\n red,\n slateGrey,\n text,\n yellow,\n} from '@syntro/design-system/tokens';\n\nimport type { CanvasThemeConfig, CanvasThemeTokens } from './types';\n\n/**\n * Apply alpha transparency to a hex color.\n * Converts a 0-1 alpha value to a 2-digit hex suffix.\n */\nexport function withAlpha(hex: string, alpha: number): string {\n return `${hex}${Math.round(alpha * 255)\n .toString(16)\n .padStart(2, '0')}`;\n}\n\n/**\n * Default dark theme using Syntro Design System tokens\n */\nexport const darkTheme: CanvasThemeTokens = {\n // Brand colors\n colorPrimary: brand[3],\n colorPrimaryHover: brand[4],\n colorPrimaryMuted: brand[0],\n\n // Surface colors (with alpha for glass/vibrancy effects)\n colorBackground: withAlpha(slateGrey[1], 0.95),\n colorBackgroundElevated: withAlpha(slateGrey[3], 0.95),\n colorBackgroundSubtle: withAlpha(slateGrey[0], 0.2),\n colorSurface: withAlpha(slateGrey[4], 0.8),\n colorSurfaceHover: withAlpha(slateGrey[5], 0.8),\n\n // Text colors\n colorText: text.primary,\n colorTextSecondary: text.secondary,\n colorTextMuted: text.tertiary,\n colorTextInverse: slateGrey[1],\n\n // Border colors\n colorBorder: border.primary,\n colorBorderSubtle: border.secondary,\n\n // Semantic colors\n colorSuccess: green[4],\n colorSuccessMuted: green[0],\n colorWarning: yellow[4],\n colorWarningMuted: yellow[0],\n colorError: red[4],\n colorErrorMuted: red[0],\n colorInfo: blue[4],\n colorInfoMuted: blue[0],\n\n // Notification badge\n colorNotification: brand[4],\n colorNotificationMuted: withAlpha(brand[4], 0.4),\n\n // Glass morphism\n glassBackground: withAlpha(slateGrey[1], 0.6),\n glassBackgroundHover: withAlpha(slateGrey[1], 0.7),\n glassBorder: 'rgba(255, 255, 255, 0.08)',\n glassBlur: 'blur(24px)',\n glassSaturate: 'saturate(1.2)',\n\n // Typography (SF Pro stack)\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif\",\n fontFamilyMono: \"'SF Mono', 'Fira Code', Consolas, monospace\",\n fontSizeXs: '0.7rem',\n fontSizeSm: '0.8rem',\n fontSizeMd: '0.9rem',\n fontSizeLg: '1rem',\n fontSizeXl: '1.25rem',\n fontSizeXxl: '1.5rem',\n fontWeightNormal: '400',\n fontWeightMedium: '500',\n fontWeightSemibold: '600',\n fontWeightBold: '700',\n lineHeightTight: '1.25',\n lineHeightNormal: '1.5',\n lineHeightRelaxed: '1.75',\n\n // Spacing\n spacingXs: '0.25rem',\n spacingSm: '0.5rem',\n spacingMd: '0.75rem',\n spacingLg: '1rem',\n spacingXl: '1.5rem',\n\n // Border radius\n borderRadiusSm: '6px',\n borderRadiusMd: '10px',\n borderRadiusLg: '14px',\n borderRadiusXl: '20px',\n borderRadiusFull: '9999px',\n\n // Shadows\n shadowSm: '0 1px 2px rgba(0, 0, 0, 0.2)',\n shadowMd: '0 2px 12px rgba(0, 0, 0, 0.3)',\n shadowLg: '0 8px 24px rgba(0, 0, 0, 0.4)',\n shadowXl: '0 16px 48px rgba(0, 0, 0, 0.5)',\n\n // Backdrop effects\n backdropBlur: 'blur(20px)',\n backdropSaturate: 'saturate(180%)',\n\n // Animation\n transitionFast: '0.1s ease',\n transitionNormal: '0.25s ease',\n transitionSlow: '0.4s ease',\n};\n\n/**\n * Light theme variant using Syntro Design System tokens\n */\nexport const lightTheme: CanvasThemeTokens = {\n // Brand colors\n colorPrimary: brand[3],\n colorPrimaryHover: brand[2],\n colorPrimaryMuted: withAlpha(brand[5], 0.1),\n\n // Surface colors\n colorBackground: withAlpha(slateGrey[12], 0.95),\n colorBackgroundElevated: withAlpha(slateGrey[11], 0.95),\n colorBackgroundSubtle: withAlpha(slateGrey[0], 0.02),\n colorSurface: withAlpha(slateGrey[11], 0.6),\n colorSurfaceHover: withAlpha(slateGrey[10], 0.6),\n\n // Text colors\n colorText: slateGrey[1],\n colorTextSecondary: slateGrey[6],\n colorTextMuted: slateGrey[8],\n colorTextInverse: slateGrey[12],\n\n // Border colors\n colorBorder: withAlpha(slateGrey[0], 0.12),\n colorBorderSubtle: withAlpha(slateGrey[0], 0.06),\n\n // Semantic colors\n colorSuccess: green[4],\n colorSuccessMuted: withAlpha(green[4], 0.12),\n colorWarning: yellow[4],\n colorWarningMuted: withAlpha(yellow[4], 0.12),\n colorError: red[4],\n colorErrorMuted: withAlpha(red[4], 0.12),\n colorInfo: blue[4],\n colorInfoMuted: withAlpha(blue[4], 0.12),\n\n // Notification badge\n colorNotification: brand[3],\n colorNotificationMuted: withAlpha(brand[3], 0.4),\n\n // Glass morphism\n glassBackground: withAlpha(slateGrey[12], 0.7),\n glassBackgroundHover: withAlpha(slateGrey[12], 0.8),\n glassBorder: 'rgba(0, 0, 0, 0.06)',\n glassBlur: 'blur(24px)',\n glassSaturate: 'saturate(1.2)',\n\n // Typography (same as dark)\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif\",\n fontFamilyMono: \"'SF Mono', 'Fira Code', Consolas, monospace\",\n fontSizeXs: '0.7rem',\n fontSizeSm: '0.8rem',\n fontSizeMd: '0.9rem',\n fontSizeLg: '1rem',\n fontSizeXl: '1.25rem',\n fontSizeXxl: '1.5rem',\n fontWeightNormal: '400',\n fontWeightMedium: '500',\n fontWeightSemibold: '600',\n fontWeightBold: '700',\n lineHeightTight: '1.25',\n lineHeightNormal: '1.5',\n lineHeightRelaxed: '1.75',\n\n // Spacing (same as dark)\n spacingXs: '0.25rem',\n spacingSm: '0.5rem',\n spacingMd: '0.75rem',\n spacingLg: '1rem',\n spacingXl: '1.5rem',\n\n // Border radius (same as dark)\n borderRadiusSm: '6px',\n borderRadiusMd: '10px',\n borderRadiusLg: '14px',\n borderRadiusXl: '20px',\n borderRadiusFull: '9999px',\n\n // Shadows (lighter for light mode)\n shadowSm: '0 1px 2px rgba(0, 0, 0, 0.08)',\n shadowMd: '0 2px 12px rgba(0, 0, 0, 0.12)',\n shadowLg: '0 8px 24px rgba(0, 0, 0, 0.16)',\n shadowXl: '0 16px 48px rgba(0, 0, 0, 0.2)',\n\n // Backdrop effects\n backdropBlur: 'blur(20px)',\n backdropSaturate: 'saturate(180%)',\n\n // Animation\n transitionFast: '0.1s ease',\n transitionNormal: '0.25s ease',\n transitionSlow: '0.4s ease',\n};\n\n/**\n * Get default theme based on mode\n */\nexport function getDefaultTheme(mode: 'light' | 'dark' = 'dark'): CanvasThemeTokens {\n return mode === 'light' ? lightTheme : darkTheme;\n}\n\n/**\n * Convert theme tokens to CSS custom properties\n */\n// ---------------------------------------------------------------------------\n// Shared utility: camelCase \u2192 kebab-case\n// ---------------------------------------------------------------------------\n\nfunction kebabCase(str: string): string {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\n/**\n * Convert theme tokens to CSS custom properties\n */\nexport function themeToCssVariables(theme: CanvasThemeTokens): Record<string, string> {\n const variables: Record<string, string> = {};\n for (const [key, value] of Object.entries(theme)) {\n variables[`--sc-${kebabCase(key)}`] = value;\n }\n return variables;\n}\n\n// ---------------------------------------------------------------------------\n// Default themes (nested by visual element)\n// ---------------------------------------------------------------------------\n\nexport const darkDefaults: Required<CanvasThemeConfig> = {\n mode: 'dark',\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif\",\n colorPrimary: brand[3],\n colorPrimaryHover: brand[4],\n borderRadius: '12px',\n canvas: {\n position: 'right',\n layout: 'overlay',\n background: withAlpha(slateGrey[1], 0.6),\n blur: 'blur(24px)',\n border: 'none',\n width: 'clamp(380px, 25vw, 520px)',\n transitionDuration: '300ms',\n transitionEasing: 'cubic-bezier(0.16, 1, 0.3, 1)',\n transitionFade: '6%',\n backdrop: false,\n backdropColor: 'rgba(0, 0, 0, 0.4)',\n padding: '0',\n },\n launcher: {\n background: button.primary.backgroundDefault,\n backgroundHover: button.primary.backgroundHover,\n color: button.primary.icon,\n size: '56px',\n shadow: `0 8px 32px ${withAlpha(slateGrey[0], 0.6)}`,\n borderRadius: '9999px',\n },\n tile: {\n background: withAlpha(slateGrey[1], 0.6),\n backgroundHover: withAlpha(slateGrey[1], 0.7),\n border: '1px solid rgba(255, 255, 255, 0.08)',\n borderRadius: '14px',\n shadow: '0 2px 12px rgba(0, 0, 0, 0.3)',\n titleColor: text.primary,\n textColor: text.secondary,\n iconBackground: `linear-gradient(135deg, ${brand[3]} 0%, ${brand[3]}cc 100%)`,\n iconShadow: `0 2px 8px ${brand[3]}40`,\n headerPadding: '0.375rem 0.75rem',\n bodyPadding: '0 0.75rem 0.5rem',\n gap: '0.25rem',\n },\n overlay: {\n background: withAlpha(slateGrey[1], 0.6),\n textColor: text.primary,\n titleColor: text.primary,\n arrowColor: withAlpha(slateGrey[1], 0.6),\n arrowSize: '8px',\n border: 'none',\n borderRadius: '0',\n scrimOpacity: '0',\n highlightRing: `2px solid ${brand[3]}`,\n },\n notification: {\n background: withAlpha(slateGrey[0], 0.95),\n textColor: text.primary,\n textSecondaryColor: text.secondary,\n border: `1px solid ${slateGrey[5]}`,\n borderRadius: '12px',\n successColor: green[4],\n warningColor: yellow[4],\n errorColor: red[4],\n iconBackground: withAlpha(brand[3], 0.15),\n progressGradient: `linear-gradient(90deg, ${brand[3]}, ${brand[4]})`,\n },\n content: {\n background: withAlpha(slateGrey[3], 0.8),\n backgroundHover: withAlpha(slateGrey[5], 0.6),\n border: `1px solid ${withAlpha(slateGrey[5], 0.5)}`,\n borderRadius: '8px',\n textColor: text.primary,\n textSecondaryColor: text.secondary,\n itemDivider: 'none',\n itemGap: '6px',\n itemPadding: '12px 16px',\n itemFontSize: '15px',\n bodyPadding: '0 16px 12px 16px',\n bodyFontSize: '14px',\n categoryPadding: '8px 4px 4px 4px',\n categoryGap: '4px',\n categoryFontSize: '12px',\n searchBackground: withAlpha(slateGrey[3], 0.8),\n searchColor: text.primary,\n chevronColor: 'currentColor',\n },\n mobile: {\n canvas: {\n backdrop: true,\n },\n },\n};\n\nexport const lightDefaults: Required<CanvasThemeConfig> = {\n mode: 'light',\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif\",\n colorPrimary: brand[3],\n colorPrimaryHover: brand[2],\n borderRadius: '12px',\n canvas: {\n position: 'right',\n layout: 'overlay',\n background: withAlpha(slateGrey[12], 0.7),\n blur: 'blur(24px)',\n border: 'none',\n width: 'clamp(380px, 25vw, 520px)',\n transitionDuration: '300ms',\n transitionEasing: 'cubic-bezier(0.16, 1, 0.3, 1)',\n transitionFade: '6%',\n backdrop: false,\n backdropColor: 'rgba(0, 0, 0, 0.3)',\n padding: '0',\n },\n launcher: {\n background: brand[3],\n backgroundHover: brand[2],\n color: '#ffffff',\n size: '56px',\n shadow: '0 8px 32px rgba(0, 0, 0, 0.15)',\n borderRadius: '9999px',\n },\n tile: {\n background: withAlpha(slateGrey[12], 0.7),\n backgroundHover: withAlpha(slateGrey[12], 0.8),\n border: '1px solid rgba(0, 0, 0, 0.06)',\n borderRadius: '14px',\n shadow: '0 2px 12px rgba(0, 0, 0, 0.12)',\n titleColor: slateGrey[1],\n textColor: slateGrey[6],\n iconBackground: `linear-gradient(135deg, ${brand[3]} 0%, ${brand[3]}cc 100%)`,\n iconShadow: `0 2px 8px ${brand[3]}40`,\n headerPadding: '0.375rem 0.75rem',\n bodyPadding: '0 0.75rem 0.5rem',\n gap: '0.25rem',\n },\n overlay: {\n background: withAlpha(slateGrey[12], 0.7),\n textColor: slateGrey[1],\n titleColor: slateGrey[1],\n arrowColor: withAlpha(slateGrey[12], 0.7),\n arrowSize: '8px',\n border: 'none',\n borderRadius: '0',\n scrimOpacity: '0',\n highlightRing: `2px solid ${brand[3]}`,\n },\n notification: {\n background: withAlpha(slateGrey[12], 0.95),\n textColor: slateGrey[1],\n textSecondaryColor: slateGrey[6],\n border: `1px solid ${withAlpha(slateGrey[0], 0.12)}`,\n borderRadius: '12px',\n successColor: green[4],\n warningColor: yellow[4],\n errorColor: red[4],\n iconBackground: withAlpha(brand[3], 0.1),\n progressGradient: `linear-gradient(90deg, ${brand[3]}, ${brand[2]})`,\n },\n content: {\n background: withAlpha(slateGrey[12], 0.8),\n backgroundHover: withAlpha(slateGrey[11], 0.6),\n border: `1px solid ${slateGrey[11]}`,\n borderRadius: '8px',\n textColor: slateGrey[1],\n textSecondaryColor: slateGrey[6],\n itemDivider: 'none',\n itemGap: '6px',\n itemPadding: '12px 16px',\n itemFontSize: '15px',\n bodyPadding: '0 16px 12px 16px',\n bodyFontSize: '14px',\n categoryPadding: '8px 4px 4px 4px',\n categoryGap: '4px',\n categoryFontSize: '12px',\n searchBackground: slateGrey[12],\n searchColor: slateGrey[1],\n chevronColor: 'currentColor',\n },\n mobile: {\n canvas: {\n backdrop: true,\n },\n },\n};\n\n// ---------------------------------------------------------------------------\n// Merge: deep-merge customer config on top of defaults\n// ---------------------------------------------------------------------------\n\nexport function mergeThemeConfig(customer: CanvasThemeConfig): Required<CanvasThemeConfig> {\n const base = customer.mode === 'light' ? lightDefaults : darkDefaults;\n return {\n mode: customer.mode ?? base.mode,\n fontFamily: customer.fontFamily ?? base.fontFamily,\n colorPrimary: customer.colorPrimary ?? base.colorPrimary,\n colorPrimaryHover: customer.colorPrimaryHover ?? base.colorPrimaryHover,\n borderRadius: customer.borderRadius ?? base.borderRadius,\n canvas: { ...base.canvas, ...customer.canvas },\n launcher: { ...base.launcher, ...customer.launcher },\n tile: { ...base.tile, ...customer.tile },\n overlay: { ...base.overlay, ...customer.overlay },\n notification: { ...base.notification, ...customer.notification },\n content: { ...base.content, ...customer.content },\n mobile: {\n canvas: { ...base.mobile.canvas, ...customer.mobile?.canvas },\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// 3-layer merge: defaults \u2192 workspace theme \u2192 config theme\n// ---------------------------------------------------------------------------\n\nexport function mergeThemeWithWorkspace(\n workspaceTheme: CanvasThemeConfig,\n configTheme: CanvasThemeConfig\n): Required<CanvasThemeConfig> {\n const mode = configTheme.mode ?? workspaceTheme.mode ?? 'dark';\n const base = mode === 'light' ? lightDefaults : darkDefaults;\n return {\n mode,\n fontFamily: configTheme.fontFamily ?? workspaceTheme.fontFamily ?? base.fontFamily,\n colorPrimary: configTheme.colorPrimary ?? workspaceTheme.colorPrimary ?? base.colorPrimary,\n colorPrimaryHover:\n configTheme.colorPrimaryHover ?? workspaceTheme.colorPrimaryHover ?? base.colorPrimaryHover,\n borderRadius: configTheme.borderRadius ?? workspaceTheme.borderRadius ?? base.borderRadius,\n canvas: { ...base.canvas, ...workspaceTheme.canvas, ...configTheme.canvas },\n launcher: { ...base.launcher, ...workspaceTheme.launcher, ...configTheme.launcher },\n tile: { ...base.tile, ...workspaceTheme.tile, ...configTheme.tile },\n overlay: { ...base.overlay, ...workspaceTheme.overlay, ...configTheme.overlay },\n notification: {\n ...base.notification,\n ...workspaceTheme.notification,\n ...configTheme.notification,\n },\n content: { ...base.content, ...workspaceTheme.content, ...configTheme.content },\n mobile: {\n canvas: {\n ...base.mobile.canvas,\n ...workspaceTheme.mobile?.canvas,\n ...configTheme.mobile?.canvas,\n },\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// Flatten: nested config -> --sc-{element}-{property} CSS variables\n// ---------------------------------------------------------------------------\n\nconst ELEMENT_SECTIONS = [\n 'canvas',\n 'launcher',\n 'tile',\n 'overlay',\n 'notification',\n 'content',\n] as const;\n\nexport function flattenThemeConfig(config: Required<CanvasThemeConfig>): Record<string, string> {\n const vars: Record<string, string> = {};\n if (config.fontFamily) vars['--sc-font-family'] = config.fontFamily;\n if (config.colorPrimary) vars['--sc-color-primary'] = config.colorPrimary;\n if (config.colorPrimaryHover) vars['--sc-color-primary-hover'] = config.colorPrimaryHover;\n if (config.borderRadius) vars['--sc-border-radius'] = config.borderRadius;\n for (const section of ELEMENT_SECTIONS) {\n const sectionConfig = config[section];\n if (!sectionConfig) continue;\n for (const [key, value] of Object.entries(sectionConfig)) {\n if (value !== undefined && typeof value === 'string') {\n vars[`--sc-${section}-${kebabCase(key)}`] = value;\n }\n }\n }\n return vars;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["base"]
7
7
  }
@@ -65,6 +65,8 @@ export interface BottomSheetThemeConfig {
65
65
  border?: string;
66
66
  blur?: string;
67
67
  snapPoints?: BottomSheetSnapPoints;
68
+ backdrop?: boolean;
69
+ backdropColor?: string;
68
70
  };
69
71
  }
70
72
  type SnapName = 'peek' | 'mid' | 'full';
@@ -131,12 +133,15 @@ export declare class SyntroBottomSheet extends LitElement {
131
133
  * during pointermove without re-querying. */
132
134
  private _scrollEl;
133
135
  private _onDocumentMousedown;
136
+ private _onScrimClick;
134
137
  createRenderRoot(): this;
135
138
  private get _canvas();
136
139
  private get _duration();
137
140
  private get _easing();
138
141
  private get _border();
139
142
  private get _blur();
143
+ private get _backdrop();
144
+ private get _backdropColor();
140
145
  /** Resolved snap-point heights (vh). */
141
146
  private get snapPoints();
142
147
  /** Top-edge position in vh (from top of viewport) for the active snap
@@ -99,10 +99,17 @@ export declare class SyntroCanvasOverlay extends LitElement {
99
99
  private _stopNotifyWatcher;
100
100
  private _restartNotifyWatcher;
101
101
  private _trackTilesViewed;
102
+ private get _resolvedThemeConfig();
102
103
  private _surfaceMeta;
103
104
  private _toggle;
104
105
  private _handleNotificationClick;
105
106
  private _handleNotificationDismiss;
107
+ previewNotification(opts: {
108
+ title: string;
109
+ body?: string;
110
+ icon?: string;
111
+ ttl?: number;
112
+ }): void;
106
113
  private _onLauncherToggle;
107
114
  private _onDrawerClose;
108
115
  render(): import("lit-html").TemplateResult<1>;
@@ -56,6 +56,9 @@ export declare class SyntroLauncher extends LitElement {
56
56
  launcherConfig: {
57
57
  attribute: boolean;
58
58
  };
59
+ hasActiveTiles: {
60
+ type: BooleanConstructor;
61
+ };
59
62
  _launcherPos: {
60
63
  state: boolean;
61
64
  };
@@ -71,6 +74,7 @@ export declare class SyntroLauncher extends LitElement {
71
74
  colorPrimary: string;
72
75
  colorPrimaryHover: string;
73
76
  launcherConfig: LauncherElementConfig;
77
+ hasActiveTiles: boolean;
74
78
  _launcherPos: {
75
79
  x: number;
76
80
  y: number;