@ultrst-armada/floks 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +2 -3
  2. package/index.d.ts +2 -0
  3. package/index.js +2 -0
  4. package/package.json +67 -4
  5. package/packages/canvas-ui/dist/canvas/index.d.ts +54 -0
  6. package/packages/canvas-ui/dist/canvas/index.js +12 -0
  7. package/packages/canvas-ui/dist/chunk-2GLR35UM.js +391 -0
  8. package/packages/canvas-ui/dist/chunk-34YRDZPJ.js +189 -0
  9. package/packages/canvas-ui/dist/chunk-6VB74RCH.js +147 -0
  10. package/packages/canvas-ui/dist/chunk-QTTWWBNN.js +114 -0
  11. package/packages/canvas-ui/dist/chunk-QWQ4PCXQ.js +718 -0
  12. package/packages/canvas-ui/dist/chunk-SA3JADUG.js +160 -0
  13. package/packages/canvas-ui/dist/chunk-UEIMM6PV.js +508 -0
  14. package/packages/canvas-ui/dist/dock/index.d.ts +37 -0
  15. package/packages/canvas-ui/dist/dock/index.js +10 -0
  16. package/packages/canvas-ui/dist/editor/index.d.ts +44 -0
  17. package/packages/canvas-ui/dist/editor/index.js +10 -0
  18. package/packages/canvas-ui/dist/graph-2d/index.d.ts +270 -0
  19. package/packages/canvas-ui/dist/graph-2d/index.js +50 -0
  20. package/packages/canvas-ui/dist/index.d.ts +176 -0
  21. package/packages/canvas-ui/dist/index.js +1171 -0
  22. package/packages/canvas-ui/dist/predictive/index.d.ts +74 -0
  23. package/packages/canvas-ui/dist/predictive/index.js +13 -0
  24. package/packages/canvas-ui/dist/tile-menu/index.d.ts +45 -0
  25. package/packages/canvas-ui/dist/tile-menu/index.js +12 -0
  26. package/packages/canvas-ui/dist/types-D3RRfQUo.d.ts +46 -0
  27. package/packages/canvas-ui/floks.manifest.json +35 -0
  28. package/packages/canvas-ui/package.json +82 -0
  29. package/packages/ui/dist/BottomStrip-DYhAUQR4.d.ts +12 -0
  30. package/packages/ui/dist/chunk-5ZMXFCD4.js +0 -0
  31. package/packages/ui/dist/chunk-62ITRDJX.js +141 -0
  32. package/packages/ui/dist/chunk-A2CDQISJ.js +32 -0
  33. package/packages/ui/dist/chunk-C32CB5WO.js +1161 -0
  34. package/packages/ui/dist/chunk-C3L53YN4.js +372 -0
  35. package/packages/ui/dist/chunk-DABYTYOU.js +351 -0
  36. package/packages/ui/dist/chunk-DZJ3NSCX.js +665 -0
  37. package/packages/ui/dist/chunk-ELZOBTWX.js +562 -0
  38. package/packages/ui/dist/chunk-GKP6KHTI.js +75 -0
  39. package/packages/ui/dist/chunk-GWW3BGOB.js +238 -0
  40. package/packages/ui/dist/chunk-KIFQA7L6.js +167 -0
  41. package/packages/ui/dist/chunk-OHISLM3Z.js +703 -0
  42. package/packages/ui/dist/chunk-OR5ZNJI4.js +62 -0
  43. package/packages/ui/dist/chunk-QWXEW7WH.js +238 -0
  44. package/packages/ui/dist/chunk-RLQ2ALJG.js +182 -0
  45. package/packages/ui/dist/chunk-S227WJ5E.js +152 -0
  46. package/packages/ui/dist/chunk-SLJBDDSN.js +0 -0
  47. package/packages/ui/dist/chunk-TXKLROFC.js +370 -0
  48. package/packages/ui/dist/chunk-UOR4P6PO.js +32 -0
  49. package/packages/ui/dist/chunk-W42SJGOJ.js +19 -0
  50. package/packages/ui/dist/chunk-XXIH2HWI.js +297 -0
  51. package/packages/ui/dist/chunk-ZQK5I5ZL.js +277 -0
  52. package/packages/ui/dist/components/auth/index.css +183 -0
  53. package/packages/ui/dist/components/auth/index.d.ts +10 -0
  54. package/packages/ui/dist/components/auth/index.js +8 -0
  55. package/packages/ui/dist/components/base/index.css +183 -0
  56. package/packages/ui/dist/components/base/index.d.ts +74 -0
  57. package/packages/ui/dist/components/base/index.js +33 -0
  58. package/packages/ui/dist/components/bottom-strip/index.css +183 -0
  59. package/packages/ui/dist/components/bottom-strip/index.d.ts +67 -0
  60. package/packages/ui/dist/components/bottom-strip/index.js +22 -0
  61. package/packages/ui/dist/components/composite/index.css +273 -0
  62. package/packages/ui/dist/components/composite/index.d.ts +104 -0
  63. package/packages/ui/dist/components/composite/index.js +33 -0
  64. package/packages/ui/dist/components/containers/index.css +404 -0
  65. package/packages/ui/dist/components/containers/index.d.ts +93 -0
  66. package/packages/ui/dist/components/containers/index.js +35 -0
  67. package/packages/ui/dist/components/layout/index.css +246 -0
  68. package/packages/ui/dist/components/layout/index.d.ts +53 -0
  69. package/packages/ui/dist/components/layout/index.js +16 -0
  70. package/packages/ui/dist/components/settings/index.css +183 -0
  71. package/packages/ui/dist/components/settings/index.d.ts +14 -0
  72. package/packages/ui/dist/components/settings/index.js +12 -0
  73. package/packages/ui/dist/components/workspace/index.d.ts +101 -0
  74. package/packages/ui/dist/components/workspace/index.js +16 -0
  75. package/packages/ui/dist/hierarchy/index.css +183 -0
  76. package/packages/ui/dist/hierarchy/index.d.ts +168 -0
  77. package/packages/ui/dist/hierarchy/index.js +36 -0
  78. package/packages/ui/dist/index.css +467 -0
  79. package/packages/ui/dist/index.d.ts +16 -0
  80. package/packages/ui/dist/index.js +282 -0
  81. package/packages/ui/dist/palette/index.d.ts +29 -0
  82. package/packages/ui/dist/palette/index.js +27 -0
  83. package/packages/ui/dist/palettes-De5u5iID.d.ts +394 -0
  84. package/packages/ui/dist/theme/index.d.ts +12063 -0
  85. package/packages/ui/dist/theme/index.js +96 -0
  86. package/packages/ui/floks.manifest.json +119 -0
  87. package/packages/ui/package.json +92 -0
  88. package/packages/ui/src/styles/base.css +130 -0
  89. package/packages/ui/src/styles/composite.css +6 -0
  90. package/packages/ui/src/styles/containers.css +10 -0
  91. package/packages/ui/src/styles/details-panel.css +147 -0
  92. package/packages/ui/src/styles/layout.css +58 -0
  93. package/packages/ui/src/theme/tokens.css +93 -0
@@ -0,0 +1,1161 @@
1
+ import {
2
+ centralLedger
3
+ } from "./chunk-DZJ3NSCX.js";
4
+
5
+ // src/theme/socket.ts
6
+ function validateSocketElements(socket) {
7
+ const missing = [];
8
+ for (const elId of socket.elementIds) {
9
+ if (!centralLedger.has(elId)) {
10
+ missing.push(elId);
11
+ }
12
+ }
13
+ return {
14
+ valid: missing.length === 0,
15
+ missing
16
+ };
17
+ }
18
+ function createAppThemeSocket(definition) {
19
+ if (!definition.appId || !definition.appName) {
20
+ throw new Error("AppThemeSocket requires appId and appName.");
21
+ }
22
+ if (!Array.isArray(definition.elementIds) || definition.elementIds.length === 0) {
23
+ throw new Error(`AppThemeSocket "${definition.appId}" must define at least one elementId.`);
24
+ }
25
+ const check = validateSocketElements(definition);
26
+ if (!check.valid) {
27
+ throw new Error(
28
+ `AppThemeSocket "${definition.appId}" references unknown UI elements: [${check.missing.join(", ")}]. Register them with the centralLedger first.`
29
+ );
30
+ }
31
+ return {
32
+ ...definition,
33
+ version: definition.version || "1.0.0"
34
+ };
35
+ }
36
+
37
+ // src/theme/tokenMapper.ts
38
+ function mapSemanticTokensToCssVars(tokens) {
39
+ if (!tokens) return {};
40
+ return {
41
+ "--skipo-font": tokens.font?.sans || "",
42
+ "--skipo-font-mono": tokens.font?.mono || "",
43
+ "--skipo-bg": tokens.bg?.canvas || "",
44
+ "--skipo-surface": tokens.bg?.surface || "",
45
+ "--skipo-text": tokens.text?.primary || "",
46
+ "--skipo-text-muted": tokens.text?.muted || "",
47
+ "--skipo-accent": tokens.accent?.primary || "",
48
+ "--skipo-accent-fg": tokens.accent?.fg || "",
49
+ "--skipo-border-color": tokens.border?.color || "",
50
+ "--skipo-border": tokens.border?.style || "",
51
+ "--skipo-radius": tokens.radius?.base || "",
52
+ "--skipo-shadow": tokens.shadow?.card || ""
53
+ };
54
+ }
55
+
56
+ // src/theme/schema/cascade.ts
57
+ function resolveTypographyCascade(typo, fallbackAccent = "#D4AF37") {
58
+ const globalFont = typo?.globalFont || "'Courier Prime', monospace";
59
+ const globalMonoFont = typo?.globalMonoFont || "'JetBrains Mono', monospace";
60
+ const globalColor = typo?.globalColor || "#F3EDE0";
61
+ const globalAccentColor = typo?.globalAccentColor || fallbackAccent;
62
+ const headingFont = typo?.headingFont || globalFont;
63
+ const bodyFont = typo?.bodyFont || globalFont;
64
+ const codeFont = typo?.codeFont || globalMonoFont;
65
+ const sec = typo?.sections || {};
66
+ const cssVars = {
67
+ "--skipo-font-global": globalFont,
68
+ "--skipo-font-mono": globalMonoFont,
69
+ "--skipo-color-global": globalColor,
70
+ "--skipo-color-accent": globalAccentColor,
71
+ "--skipo-font-heading": headingFont,
72
+ "--skipo-font-body": bodyFont,
73
+ "--skipo-font-code": codeFont,
74
+ // H1
75
+ "--skipo-font-h1": sec.h1?.font || headingFont,
76
+ "--skipo-h1-size": sec.h1?.fontSize || "28px",
77
+ "--skipo-h1-weight": String(sec.h1?.fontWeight || "800"),
78
+ "--skipo-h1-color": sec.h1?.color || globalAccentColor,
79
+ "--skipo-h1-border": sec.h1?.borderBottom || `2px solid ${globalAccentColor}40`,
80
+ // H2
81
+ "--skipo-font-h2": sec.h2?.font || headingFont,
82
+ "--skipo-h2-size": sec.h2?.fontSize || "22px",
83
+ "--skipo-h2-weight": String(sec.h2?.fontWeight || "700"),
84
+ "--skipo-h2-color": sec.h2?.color || globalColor,
85
+ "--skipo-h2-border": sec.h2?.borderBottom || "1px solid rgba(0,0,0,0.15)",
86
+ // H3
87
+ "--skipo-font-h3": sec.h3?.font || headingFont,
88
+ "--skipo-h3-size": sec.h3?.fontSize || "18px",
89
+ "--skipo-h3-weight": String(sec.h3?.fontWeight || "700"),
90
+ "--skipo-h3-color": sec.h3?.color || globalColor,
91
+ // Paragraph / Body
92
+ "--skipo-font-p": sec.p?.font || bodyFont,
93
+ "--skipo-p-size": sec.p?.fontSize || "15px",
94
+ "--skipo-p-line-height": sec.p?.lineHeight || "1.6",
95
+ "--skipo-p-color": sec.p?.color || globalColor,
96
+ // Blockquote
97
+ "--skipo-blockquote-font": sec.blockquote?.font || bodyFont,
98
+ "--skipo-blockquote-color": sec.blockquote?.color || globalColor,
99
+ "--skipo-blockquote-bg": sec.blockquote?.bg || "rgba(0,0,0,0.2)",
100
+ "--skipo-blockquote-border": sec.blockquote?.borderLeftColor || globalAccentColor,
101
+ // Lists
102
+ "--skipo-list-marker-color": sec.ul?.markerColor || globalAccentColor,
103
+ // Code
104
+ "--skipo-code-font": sec.inlineCode?.font || codeFont,
105
+ "--skipo-code-color": sec.inlineCode?.color || globalAccentColor,
106
+ "--skipo-code-bg": sec.inlineCode?.bg || `${globalAccentColor}20`,
107
+ "--skipo-code-border": sec.inlineCode?.border || `1px solid ${globalAccentColor}40`,
108
+ // Code Block
109
+ "--skipo-codeblock-font": sec.codeBlock?.font || codeFont,
110
+ "--skipo-codeblock-bg": sec.codeBlock?.bg || "#121214",
111
+ // Table
112
+ "--skipo-table-header-bg": sec.table?.headerBg || globalAccentColor,
113
+ "--skipo-table-header-color": sec.table?.headerColor || "#000000",
114
+ // Link
115
+ "--skipo-link-color": sec.link?.color || globalAccentColor
116
+ };
117
+ return {
118
+ globalFont,
119
+ globalMonoFont,
120
+ globalColor,
121
+ globalAccentColor,
122
+ headingFont,
123
+ bodyFont,
124
+ codeFont,
125
+ cssVars
126
+ };
127
+ }
128
+
129
+ // src/theme/engine.ts
130
+ var ThemeEngine = class {
131
+ socket;
132
+ packs = /* @__PURE__ */ new Map();
133
+ activeBasePackId;
134
+ activeMode = "dark";
135
+ elementOverrides = /* @__PURE__ */ new Map();
136
+ listeners = /* @__PURE__ */ new Set();
137
+ constructor(socket, initialPacks = [], initialMode = "dark") {
138
+ this.socket = socket;
139
+ for (const pack of initialPacks) this.registerThemePack(pack);
140
+ this.activeBasePackId = socket.defaultThemePackId || initialPacks[0]?.metadata.id || "";
141
+ this.activeMode = initialMode;
142
+ }
143
+ registerThemePack(pack) {
144
+ this.packs.set(pack.metadata.id, pack);
145
+ }
146
+ getThemePack(packId) {
147
+ return this.packs.get(packId);
148
+ }
149
+ getAllThemePacks() {
150
+ return Array.from(this.packs.values());
151
+ }
152
+ getSocket() {
153
+ return this.socket;
154
+ }
155
+ getActiveBasePackId() {
156
+ return this.activeBasePackId;
157
+ }
158
+ getMode() {
159
+ return this.activeMode;
160
+ }
161
+ setBaseThemePack(packId) {
162
+ if (!this.packs.has(packId)) throw new Error(`Theme pack "${packId}" is not registered.`);
163
+ this.activeBasePackId = packId;
164
+ this.notify();
165
+ this.applyToDOM();
166
+ }
167
+ setMode(mode) {
168
+ if (this.activeMode === mode) return;
169
+ this.activeMode = mode;
170
+ this.notify();
171
+ this.applyToDOM();
172
+ }
173
+ toggleMode() {
174
+ this.activeMode = this.activeMode === "dark" ? "light" : "dark";
175
+ this.notify();
176
+ this.applyToDOM();
177
+ return this.activeMode;
178
+ }
179
+ setElementOverride(elementId, packId) {
180
+ if (!this.socket.elementIds.includes(elementId)) {
181
+ throw new Error(`Element "${elementId}" is not part of app socket "${this.socket.appId}".`);
182
+ }
183
+ if (!this.packs.has(packId)) throw new Error(`Theme pack "${packId}" is not registered.`);
184
+ this.elementOverrides.set(elementId, packId);
185
+ this.notify();
186
+ this.applyToDOM();
187
+ }
188
+ clearElementOverride(elementId) {
189
+ this.elementOverrides.delete(elementId);
190
+ this.notify();
191
+ this.applyToDOM();
192
+ }
193
+ clearAllOverrides() {
194
+ this.elementOverrides.clear();
195
+ this.notify();
196
+ this.applyToDOM();
197
+ }
198
+ batchSetElementOverrides(overrides) {
199
+ for (const [elId, packId] of Object.entries(overrides)) {
200
+ if (this.socket.elementIds.includes(elId) && this.packs.has(packId)) {
201
+ this.elementOverrides.set(elId, packId);
202
+ }
203
+ }
204
+ this.notify();
205
+ this.applyToDOM();
206
+ }
207
+ getElementOverrides() {
208
+ const res = {};
209
+ for (const [elId, packId] of this.elementOverrides.entries()) res[elId] = packId;
210
+ return res;
211
+ }
212
+ resolveElementTheme(elementId) {
213
+ const overridePackId = this.elementOverrides.get(elementId);
214
+ const targetPackId = overridePackId || this.activeBasePackId;
215
+ const targetPack = this.packs.get(targetPackId);
216
+ const isOverridden = !!overridePackId;
217
+ if (targetPack) {
218
+ const modeVariant = targetPack.variants?.[this.activeMode]?.elementStyles?.[elementId];
219
+ if (modeVariant) return { appliedPackId: targetPackId, appliedVariant: this.activeMode, isOverridden, isFallback: false, value: modeVariant };
220
+ const defaultStyle = targetPack.elementStyles?.[elementId];
221
+ if (defaultStyle) return { appliedPackId: targetPackId, appliedVariant: targetPack.metadata.mode || this.activeMode, isOverridden, isFallback: false, value: defaultStyle };
222
+ }
223
+ const basePack = this.packs.get(this.activeBasePackId);
224
+ if (basePack) {
225
+ const baseModeVariant = basePack.variants?.[this.activeMode]?.elementStyles?.[elementId];
226
+ if (baseModeVariant) return { appliedPackId: this.activeBasePackId, appliedVariant: this.activeMode, isOverridden: false, isFallback: false, value: baseModeVariant };
227
+ const baseDefaultStyle = basePack.elementStyles?.[elementId];
228
+ if (baseDefaultStyle) return { appliedPackId: this.activeBasePackId, appliedVariant: basePack.metadata.mode || this.activeMode, isOverridden: false, isFallback: false, value: baseDefaultStyle };
229
+ }
230
+ const fallback = this.socket.elementDefaults?.[elementId] || {};
231
+ return { appliedPackId: targetPackId, appliedVariant: this.activeMode, isOverridden, isFallback: true, value: fallback };
232
+ }
233
+ computeAllCssVariables() {
234
+ const basePack = this.packs.get(this.activeBasePackId);
235
+ const cssVars = {};
236
+ const tokens = basePack?.variants?.[this.activeMode]?.tokens || basePack?.tokens;
237
+ if (tokens) Object.assign(cssVars, mapSemanticTokensToCssVars(tokens));
238
+ const typo = basePack?.variants?.[this.activeMode]?.typography || basePack?.typography;
239
+ if (typo) {
240
+ const resolvedTypo = resolveTypographyCascade(typo, tokens?.accent.primary);
241
+ Object.assign(cssVars, resolvedTypo.cssVars);
242
+ }
243
+ for (const elId of this.socket.elementIds) {
244
+ const resolved = this.resolveElementTheme(elId);
245
+ if (resolved.value.cssVars) Object.assign(cssVars, resolved.value.cssVars);
246
+ }
247
+ return cssVars;
248
+ }
249
+ applyToDOM(target) {
250
+ if (typeof document === "undefined") return;
251
+ const root = target || document.documentElement;
252
+ const vars = this.computeAllCssVariables();
253
+ for (const [key, val] of Object.entries(vars)) {
254
+ if (val) root.style.setProperty(key, val);
255
+ }
256
+ root.setAttribute("data-skipo-theme-id", this.activeBasePackId);
257
+ root.setAttribute("data-skipo-theme-mode", this.activeMode);
258
+ root.setAttribute("data-theme", this.activeMode);
259
+ root.setAttribute("data-skipo-overrides-count", String(this.elementOverrides.size));
260
+ if (this.activeMode === "dark") root.classList.add("dark");
261
+ else root.classList.remove("dark");
262
+ }
263
+ subscribe(fn) {
264
+ this.listeners.add(fn);
265
+ return () => this.listeners.delete(fn);
266
+ }
267
+ notify() {
268
+ const state = {
269
+ activeBasePackId: this.activeBasePackId,
270
+ activeMode: this.activeMode,
271
+ elementOverrides: this.getElementOverrides()
272
+ };
273
+ for (const fn of this.listeners) fn(state);
274
+ }
275
+ };
276
+
277
+ // src/theme/schema/themePack.schema.ts
278
+ import { z as z3 } from "zod";
279
+
280
+ // src/theme/schema/tokens.schema.ts
281
+ import { z } from "zod";
282
+ var SkipoSemanticTokensSchema = z.object({
283
+ bg: z.object({
284
+ canvas: z.string(),
285
+ surface: z.string(),
286
+ surfaceHover: z.string(),
287
+ blur: z.string()
288
+ }),
289
+ text: z.object({
290
+ primary: z.string(),
291
+ muted: z.string(),
292
+ inverse: z.string()
293
+ }),
294
+ accent: z.object({
295
+ primary: z.string(),
296
+ fg: z.string(),
297
+ glow: z.string(),
298
+ hover: z.string().optional()
299
+ }),
300
+ border: z.object({
301
+ color: z.string(),
302
+ input: z.string(),
303
+ style: z.string()
304
+ }),
305
+ radius: z.object({
306
+ base: z.string(),
307
+ sm: z.string(),
308
+ lg: z.string().optional()
309
+ }),
310
+ shadow: z.object({
311
+ card: z.string(),
312
+ cardHover: z.string(),
313
+ btn: z.string(),
314
+ btnHover: z.string(),
315
+ btnActive: z.string()
316
+ }),
317
+ font: z.object({
318
+ sans: z.string(),
319
+ mono: z.string()
320
+ }),
321
+ status: z.object({
322
+ success: z.string(),
323
+ successFg: z.string(),
324
+ warning: z.string(),
325
+ warningFg: z.string(),
326
+ danger: z.string(),
327
+ dangerFg: z.string(),
328
+ info: z.string(),
329
+ infoFg: z.string()
330
+ }),
331
+ shell: z.object({
332
+ topToolbarHeight: z.string(),
333
+ topToolbarBg: z.string(),
334
+ bottomStripHeight: z.string(),
335
+ bottomStripBg: z.string(),
336
+ inspectionTextTranslucent: z.string()
337
+ })
338
+ });
339
+
340
+ // src/theme/schema/typography.schema.ts
341
+ import { z as z2 } from "zod";
342
+ var HeadingLevelSchema = z2.object({
343
+ font: z2.string().optional(),
344
+ fontSize: z2.string().optional(),
345
+ fontWeight: z2.union([z2.string(), z2.number()]).optional(),
346
+ lineHeight: z2.string().optional(),
347
+ letterSpacing: z2.string().optional(),
348
+ color: z2.string().optional(),
349
+ borderBottom: z2.string().optional(),
350
+ textTransform: z2.string().optional()
351
+ });
352
+ var ParagraphStyleSchema = z2.object({
353
+ font: z2.string().optional(),
354
+ fontSize: z2.string().optional(),
355
+ fontWeight: z2.union([z2.string(), z2.number()]).optional(),
356
+ lineHeight: z2.string().optional(),
357
+ color: z2.string().optional(),
358
+ opacity: z2.union([z2.string(), z2.number()]).optional(),
359
+ textAlign: z2.string().optional()
360
+ });
361
+ var BlockquoteStyleSchema = z2.object({
362
+ font: z2.string().optional(),
363
+ fontSize: z2.string().optional(),
364
+ fontStyle: z2.string().optional(),
365
+ color: z2.string().optional(),
366
+ bg: z2.string().optional(),
367
+ borderLeftColor: z2.string().optional(),
368
+ borderLeftWidth: z2.string().optional(),
369
+ calloutTitle: z2.string().optional(),
370
+ calloutColor: z2.string().optional()
371
+ });
372
+ var ListStyleSchema = z2.object({
373
+ font: z2.string().optional(),
374
+ fontSize: z2.string().optional(),
375
+ lineHeight: z2.string().optional(),
376
+ markerColor: z2.string().optional(),
377
+ spacing: z2.string().optional()
378
+ });
379
+ var CodeStyleSchema = z2.object({
380
+ font: z2.string().optional(),
381
+ fontSize: z2.string().optional(),
382
+ color: z2.string().optional(),
383
+ bg: z2.string().optional(),
384
+ border: z2.string().optional(),
385
+ radius: z2.string().optional(),
386
+ headerBg: z2.string().optional(),
387
+ shadow: z2.string().optional()
388
+ });
389
+ var TableStyleSchema = z2.object({
390
+ font: z2.string().optional(),
391
+ headerBg: z2.string().optional(),
392
+ headerColor: z2.string().optional(),
393
+ border: z2.string().optional(),
394
+ cellBg: z2.string().optional(),
395
+ cellPadding: z2.string().optional()
396
+ });
397
+ var LinkStyleSchema = z2.object({
398
+ color: z2.string().optional(),
399
+ textDecoration: z2.string().optional(),
400
+ hoverColor: z2.string().optional(),
401
+ hoverUnderline: z2.boolean().optional()
402
+ });
403
+ var HorizontalRuleStyleSchema = z2.object({
404
+ color: z2.string().optional(),
405
+ borderStyle: z2.string().optional(),
406
+ height: z2.string().optional()
407
+ });
408
+ var MarkdownSectionStylesSchema = z2.object({
409
+ h1: HeadingLevelSchema.optional(),
410
+ h2: HeadingLevelSchema.optional(),
411
+ h3: HeadingLevelSchema.optional(),
412
+ h4: HeadingLevelSchema.optional(),
413
+ h5: HeadingLevelSchema.optional(),
414
+ h6: HeadingLevelSchema.optional(),
415
+ p: ParagraphStyleSchema.optional(),
416
+ blockquote: BlockquoteStyleSchema.optional(),
417
+ ul: ListStyleSchema.optional(),
418
+ ol: ListStyleSchema.optional(),
419
+ inlineCode: CodeStyleSchema.optional(),
420
+ codeBlock: CodeStyleSchema.optional(),
421
+ table: TableStyleSchema.optional(),
422
+ link: LinkStyleSchema.optional(),
423
+ hr: HorizontalRuleStyleSchema.optional()
424
+ });
425
+ var ThemeTypographySchema = z2.object({
426
+ globalFont: z2.string(),
427
+ globalMonoFont: z2.string(),
428
+ globalColor: z2.string().optional(),
429
+ globalAccentColor: z2.string().optional(),
430
+ headingFont: z2.string().optional(),
431
+ bodyFont: z2.string().optional(),
432
+ codeFont: z2.string().optional(),
433
+ sections: MarkdownSectionStylesSchema.optional()
434
+ });
435
+
436
+ // src/theme/schema/themePack.schema.ts
437
+ var SkipoThemeMetadataSchema = z3.object({
438
+ id: z3.string().min(1),
439
+ name: z3.string().min(1),
440
+ version: z3.string().default("1.0.0"),
441
+ mode: z3.enum(["dark", "light"]).default("dark"),
442
+ author: z3.string().optional(),
443
+ description: z3.string().optional()
444
+ });
445
+ var UIElementThemeValueSchema = z3.object({
446
+ cssVars: z3.record(z3.string(), z3.string()).optional(),
447
+ styles: z3.record(z3.string(), z3.union([z3.string(), z3.number()])).optional(),
448
+ effects: z3.object({
449
+ animation: z3.string().optional(),
450
+ transition: z3.string().optional(),
451
+ glow: z3.string().optional(),
452
+ filter: z3.string().optional(),
453
+ transformHover: z3.string().optional()
454
+ }).optional(),
455
+ assets: z3.object({
456
+ wallpaper: z3.string().optional(),
457
+ overlayImage: z3.string().optional(),
458
+ texture: z3.string().optional(),
459
+ iconGlyph: z3.string().optional(),
460
+ mediaUrl: z3.string().optional()
461
+ }).optional()
462
+ });
463
+ var ThemeVariantDefinitionSchema = z3.object({
464
+ mode: z3.enum(["dark", "light"]),
465
+ tokens: SkipoSemanticTokensSchema.optional(),
466
+ typography: ThemeTypographySchema.optional(),
467
+ elementStyles: z3.record(z3.string(), UIElementThemeValueSchema).default({}),
468
+ customCss: z3.string().optional()
469
+ });
470
+ var ModularThemePackSchema = z3.object({
471
+ metadata: SkipoThemeMetadataSchema,
472
+ variants: z3.object({
473
+ dark: ThemeVariantDefinitionSchema,
474
+ light: ThemeVariantDefinitionSchema
475
+ }),
476
+ typography: ThemeTypographySchema.optional(),
477
+ tokens: SkipoSemanticTokensSchema.optional(),
478
+ elementStyles: z3.record(z3.string(), UIElementThemeValueSchema).default({}),
479
+ customCss: z3.string().optional()
480
+ });
481
+ function validateModularThemePack(pack) {
482
+ return ModularThemePackSchema.parse(pack);
483
+ }
484
+ function safeValidateModularThemePack(pack) {
485
+ return ModularThemePackSchema.safeParse(pack);
486
+ }
487
+
488
+ // src/theme/packs/docustack-dark-gold/tokens.ts
489
+ var darkTokens = {
490
+ bg: { canvas: "#121214", surface: "#1E1E24", surfaceHover: "#26262E", blur: "blur(16px)" },
491
+ text: { primary: "#F3EDE0", muted: "#A0A0B0", inverse: "#121214" },
492
+ accent: { primary: "#D4AF37", fg: "#000000", glow: "0 0 16px rgba(212, 175, 55, 0.45)", hover: "#B59443" },
493
+ border: { color: "#000000", input: "#D4AF37", style: "2px solid #000000" },
494
+ radius: { base: "0px", sm: "0px", lg: "0px" },
495
+ shadow: {
496
+ card: "4px 4px 0px #000000",
497
+ cardHover: "6px 6px 0px #000000",
498
+ btn: "2px 2px 0px #000000",
499
+ btnHover: "3px 3px 0px #000000",
500
+ btnActive: "1px 1px 0px #000000"
501
+ },
502
+ font: { sans: "'Courier Prime', monospace", mono: "'JetBrains Mono', monospace" },
503
+ status: {
504
+ success: "#10B981",
505
+ successFg: "#000000",
506
+ warning: "#F59E0B",
507
+ warningFg: "#000000",
508
+ danger: "#EF4444",
509
+ dangerFg: "#FFFFFF",
510
+ info: "#3B82F6",
511
+ infoFg: "#FFFFFF"
512
+ },
513
+ shell: {
514
+ topToolbarHeight: "44px",
515
+ topToolbarBg: "rgba(18, 18, 20, 0.95)",
516
+ bottomStripHeight: "30px",
517
+ bottomStripBg: "rgba(18, 18, 20, 0.95)",
518
+ inspectionTextTranslucent: "rgba(243, 237, 224, 0.85)"
519
+ }
520
+ };
521
+ var lightTokens = {
522
+ bg: { canvas: "#F8F6F0", surface: "#EDE8DC", surfaceHover: "#E4DEC0", blur: "blur(16px)" },
523
+ text: { primary: "#18181A", muted: "#6E6B65", inverse: "#F8F6F0" },
524
+ accent: { primary: "#B58900", fg: "#FFFFFF", glow: "0 0 14px rgba(181, 137, 0, 0.35)", hover: "#997400" },
525
+ border: { color: "#2A2518", input: "#B58900", style: "2px solid #2A2518" },
526
+ radius: { base: "0px", sm: "0px", lg: "0px" },
527
+ shadow: {
528
+ card: "4px 4px 0px #2A2518",
529
+ cardHover: "6px 6px 0px #2A2518",
530
+ btn: "2px 2px 0px #2A2518",
531
+ btnHover: "3px 3px 0px #2A2518",
532
+ btnActive: "1px 1px 0px #2A2518"
533
+ },
534
+ font: { sans: "'Courier Prime', monospace", mono: "'JetBrains Mono', monospace" },
535
+ status: {
536
+ success: "#059669",
537
+ successFg: "#FFFFFF",
538
+ warning: "#D97706",
539
+ warningFg: "#FFFFFF",
540
+ danger: "#DC2626",
541
+ dangerFg: "#FFFFFF",
542
+ info: "#2563EB",
543
+ infoFg: "#FFFFFF"
544
+ },
545
+ shell: {
546
+ topToolbarHeight: "44px",
547
+ topToolbarBg: "#EDE8DC",
548
+ bottomStripHeight: "30px",
549
+ bottomStripBg: "#E4DEC0",
550
+ inspectionTextTranslucent: "rgba(24, 24, 26, 0.85)"
551
+ }
552
+ };
553
+
554
+ // src/theme/packs/docustack-dark-gold/typography.ts
555
+ var darkTypography = {
556
+ globalFont: "'Courier Prime', monospace",
557
+ globalMonoFont: "'JetBrains Mono', monospace",
558
+ globalColor: "#F3EDE0",
559
+ globalAccentColor: "#D4AF37",
560
+ headingFont: "'Courier Prime', monospace",
561
+ bodyFont: "'Courier Prime', monospace",
562
+ codeFont: "'JetBrains Mono', monospace",
563
+ sections: {
564
+ h1: { fontSize: "28px", fontWeight: "800", lineHeight: "1.2", color: "#D4AF37", borderBottom: "2px solid rgba(212, 175, 55, 0.4)" },
565
+ h2: { fontSize: "22px", fontWeight: "700", lineHeight: "1.3", color: "#F3EDE0", borderBottom: "1px solid rgba(212, 175, 55, 0.2)" },
566
+ h3: { fontSize: "18px", fontWeight: "700", lineHeight: "1.4", color: "#F3EDE0" },
567
+ h4: { fontSize: "16px", fontWeight: "600", lineHeight: "1.4", color: "#D4AF37" },
568
+ h5: { fontSize: "14px", fontWeight: "600", lineHeight: "1.4", color: "#F3EDE0" },
569
+ h6: { fontSize: "13px", fontWeight: "600", lineHeight: "1.4", color: "#A0A0B0" },
570
+ p: { fontSize: "15px", lineHeight: "1.6", color: "#F3EDE0" },
571
+ blockquote: { fontStyle: "italic", color: "#D4AF37", bg: "rgba(212, 175, 55, 0.08)", borderLeftColor: "#D4AF37", borderLeftWidth: "4px" },
572
+ ul: { markerColor: "#D4AF37", spacing: "6px" },
573
+ ol: { markerColor: "#D4AF37", spacing: "6px" },
574
+ inlineCode: { fontSize: "13px", color: "#D4AF37", bg: "rgba(212, 175, 55, 0.15)", border: "1px solid rgba(212, 175, 55, 0.3)", radius: "3px" },
575
+ codeBlock: { fontSize: "13px", color: "#F3EDE0", bg: "#18181C", border: "1px solid #333333", radius: "4px" },
576
+ table: { headerBg: "#D4AF37", headerColor: "#000000", border: "1px solid #333333", cellBg: "#1E1E24" },
577
+ link: { color: "#D4AF37", textDecoration: "none", hoverColor: "#FFFFFF", hoverUnderline: true },
578
+ hr: { color: "#D4AF37", borderStyle: "solid", height: "2px" }
579
+ }
580
+ };
581
+ var lightTypography = {
582
+ globalFont: "'Courier Prime', monospace",
583
+ globalMonoFont: "'JetBrains Mono', monospace",
584
+ globalColor: "#18181A",
585
+ globalAccentColor: "#B58900",
586
+ headingFont: "'Courier Prime', monospace",
587
+ bodyFont: "'Courier Prime', monospace",
588
+ codeFont: "'JetBrains Mono', monospace",
589
+ sections: {
590
+ h1: { fontSize: "28px", fontWeight: "800", lineHeight: "1.2", color: "#B58900", borderBottom: "2px solid rgba(181, 137, 0, 0.35)" },
591
+ h2: { fontSize: "22px", fontWeight: "700", lineHeight: "1.3", color: "#18181A", borderBottom: "1px solid rgba(181, 137, 0, 0.2)" },
592
+ h3: { fontSize: "18px", fontWeight: "700", lineHeight: "1.4", color: "#18181A" },
593
+ h4: { fontSize: "16px", fontWeight: "600", lineHeight: "1.4", color: "#B58900" },
594
+ h5: { fontSize: "14px", fontWeight: "600", lineHeight: "1.4", color: "#18181A" },
595
+ h6: { fontSize: "13px", fontWeight: "600", lineHeight: "1.4", color: "#6E6B65" },
596
+ p: { fontSize: "15px", lineHeight: "1.6", color: "#18181A" },
597
+ blockquote: { fontStyle: "italic", color: "#8A6800", bg: "rgba(181, 137, 0, 0.08)", borderLeftColor: "#B58900", borderLeftWidth: "4px" },
598
+ ul: { markerColor: "#B58900", spacing: "6px" },
599
+ ol: { markerColor: "#B58900", spacing: "6px" },
600
+ inlineCode: { fontSize: "13px", color: "#8A6800", bg: "rgba(181, 137, 0, 0.12)", border: "1px solid rgba(181, 137, 0, 0.25)", radius: "3px" },
601
+ codeBlock: { fontSize: "13px", color: "#18181A", bg: "#EDE8DC", border: "1px solid #D4CEBF", radius: "4px" },
602
+ table: { headerBg: "#B58900", headerColor: "#FFFFFF", border: "1px solid #D4CEBF", cellBg: "#F8F6F0" },
603
+ link: { color: "#B58900", textDecoration: "none", hoverColor: "#705300", hoverUnderline: true },
604
+ hr: { color: "#B58900", borderStyle: "solid", height: "2px" }
605
+ }
606
+ };
607
+
608
+ // src/theme/packs/docustack-dark-gold/elements.ts
609
+ var darkElements = {
610
+ canvas: { cssVars: { "--color-base": "#121214", "--skipo-bg": "#121214" }, styles: { backgroundColor: "#121214", color: "#F3EDE0", fontFamily: "var(--skipo-font-body)" } },
611
+ wallpaperOverlay: { cssVars: { "--wallpaper-overlay-color": "#121214", "--wallpaper-overlay-opacity": "0.70" }, effects: { transition: "opacity 0.2s ease-in-out" } },
612
+ topToolbar: { cssVars: { "--color-surface-subtle": "#26262E", "--color-border": "#000000" }, styles: { height: "44px", borderBottom: "2px solid #000000" } },
613
+ bottomStrip: { cssVars: { "--skipo-bottom-strip-bg": "#121214" }, styles: { height: "30px", borderTop: "2px solid #000000", fontFamily: "var(--skipo-font-mono)" } },
614
+ headerBar: { cssVars: { "--color-surface-subtle": "#26262E", "--color-border": "#000000" }, styles: { fontFamily: "var(--skipo-font-heading)" } },
615
+ workspaceTabBar: { cssVars: { "--color-surface": "#1E1E24", "--color-accent": "#D4AF37" } },
616
+ card: { cssVars: { "--color-surface": "#1E1E24", "--color-border": "#000000" }, styles: { border: "2px solid #000000", boxShadow: "4px 4px 0px #000000", fontFamily: "var(--skipo-font-body)" } },
617
+ buttonPrimary: { cssVars: { "--color-accent": "#D4AF37", "--color-border": "#000000" }, styles: { backgroundColor: "#D4AF37", color: "#000000", border: "2px solid #000000" }, effects: { transformHover: "translate(-1px, -1px)", glow: "0 0 10px rgba(212, 175, 55, 0.4)" } },
618
+ buttonSecondary: { cssVars: { "--color-accent-secondary": "#B59443", "--color-surface": "#1E1E24" }, styles: { backgroundColor: "#1E1E24", color: "#F3EDE0", border: "2px solid #000000" } },
619
+ buttonGhost: { styles: { backgroundColor: "transparent", color: "#F3EDE0", border: "none" } },
620
+ inputField: { cssVars: { "--color-surface": "#1E1E24", "--color-border": "#000000" }, styles: { border: "2px solid #000000", fontFamily: "var(--skipo-font-mono)" } },
621
+ selectDropdown: { cssVars: { "--color-surface": "#1E1E24", "--color-text": "#F3EDE0" } },
622
+ badge: { cssVars: { "--color-accent": "#D4AF37" }, styles: { border: "1px solid #000000", fontFamily: "var(--skipo-font-mono)" } },
623
+ kanbanBoard: { cssVars: { "--color-base": "#121214" } },
624
+ kanbanColumn: { cssVars: { "--color-surface": "#1E1E24", "--color-border": "#000000" }, styles: { border: "2px solid #000000", boxShadow: "4px 4px 0px #000000" } },
625
+ kanbanColumnOverlay: { cssVars: { "--column-overlay-color": "#121214", "--column-overlay-opacity": "0.80" } },
626
+ documentCard: { cssVars: { "--color-surface": "#1E1E24", "--color-border": "#000000" }, styles: { border: "2px solid #000000", boxShadow: "3px 3px 0px #000000" } },
627
+ graphCanvas: { cssVars: { "--color-base": "#121214" } },
628
+ graphNodeRoot: { cssVars: { "--color-accent": "#D4AF37" }, styles: { border: "2px solid #000000" }, effects: { glow: "0 0 16px rgba(212, 175, 55, 0.6)" } },
629
+ graphNodeLeaf: { cssVars: { "--color-surface": "#1E1E24", "--color-border": "#000000" }, styles: { border: "2px solid #000000" } },
630
+ graphEdge: { styles: { stroke: "#B59443", strokeWidth: "2px" } },
631
+ codeEditor: { cssVars: { "--color-surface": "#1E1E24" }, styles: { fontFamily: "var(--skipo-font-code)" } },
632
+ aiChatPanel: { cssVars: { "--color-surface": "#1E1E24", "--color-border": "#000000" }, styles: { border: "2px solid #000000", boxShadow: "6px 6px 0px #000000" } }
633
+ };
634
+ var lightElements = {
635
+ canvas: { cssVars: { "--color-base": "#F8F6F0", "--skipo-bg": "#F8F6F0" }, styles: { backgroundColor: "#F8F6F0", color: "#18181A", fontFamily: "var(--skipo-font-body)" } },
636
+ wallpaperOverlay: { cssVars: { "--wallpaper-overlay-color": "#F8F6F0", "--wallpaper-overlay-opacity": "0.65" }, effects: { transition: "opacity 0.2s ease-in-out" } },
637
+ topToolbar: { cssVars: { "--color-surface-subtle": "#E4DEC0", "--color-border": "#2A2518" }, styles: { height: "44px", borderBottom: "2px solid #2A2518" } },
638
+ bottomStrip: { cssVars: { "--skipo-bottom-strip-bg": "#EDE8DC" }, styles: { height: "30px", borderTop: "2px solid #2A2518", fontFamily: "var(--skipo-font-mono)" } },
639
+ headerBar: { cssVars: { "--color-surface-subtle": "#E4DEC0", "--color-border": "#2A2518" }, styles: { fontFamily: "var(--skipo-font-heading)" } },
640
+ workspaceTabBar: { cssVars: { "--color-surface": "#EDE8DC", "--color-accent": "#B58900" } },
641
+ card: { cssVars: { "--color-surface": "#EDE8DC", "--color-border": "#2A2518" }, styles: { border: "2px solid #2A2518", boxShadow: "4px 4px 0px #2A2518", fontFamily: "var(--skipo-font-body)" } },
642
+ buttonPrimary: { cssVars: { "--color-accent": "#B58900", "--color-border": "#2A2518" }, styles: { backgroundColor: "#B58900", color: "#FFFFFF", border: "2px solid #2A2518" }, effects: { transformHover: "translate(-1px, -1px)", glow: "0 0 10px rgba(181, 137, 0, 0.4)" } },
643
+ buttonSecondary: { cssVars: { "--color-accent-secondary": "#997400", "--color-surface": "#EDE8DC" }, styles: { backgroundColor: "#EDE8DC", color: "#18181A", border: "2px solid #2A2518" } },
644
+ buttonGhost: { styles: { backgroundColor: "transparent", color: "#18181A", border: "none" } },
645
+ inputField: { cssVars: { "--color-surface": "#EDE8DC", "--color-border": "#2A2518" }, styles: { border: "2px solid #2A2518", fontFamily: "var(--skipo-font-mono)" } },
646
+ selectDropdown: { cssVars: { "--color-surface": "#EDE8DC", "--color-text": "#18181A" } },
647
+ badge: { cssVars: { "--color-accent": "#B58900" }, styles: { border: "1px solid #2A2518", fontFamily: "var(--skipo-font-mono)" } },
648
+ kanbanBoard: { cssVars: { "--color-base": "#F8F6F0" } },
649
+ kanbanColumn: { cssVars: { "--color-surface": "#EDE8DC", "--color-border": "#2A2518" }, styles: { border: "2px solid #2A2518", boxShadow: "4px 4px 0px #2A2518" } },
650
+ kanbanColumnOverlay: { cssVars: { "--column-overlay-color": "#F8F6F0", "--column-overlay-opacity": "0.75" } },
651
+ documentCard: { cssVars: { "--color-surface": "#EDE8DC", "--color-border": "#2A2518" }, styles: { border: "2px solid #2A2518", boxShadow: "3px 3px 0px #2A2518" } },
652
+ graphCanvas: { cssVars: { "--color-base": "#F8F6F0" } },
653
+ graphNodeRoot: { cssVars: { "--color-accent": "#B58900" }, styles: { border: "2px solid #2A2518" }, effects: { glow: "0 0 14px rgba(181, 137, 0, 0.5)" } },
654
+ graphNodeLeaf: { cssVars: { "--color-surface": "#EDE8DC", "--color-border": "#2A2518" }, styles: { border: "2px solid #2A2518" } },
655
+ graphEdge: { styles: { stroke: "#997400", strokeWidth: "2px" } },
656
+ codeEditor: { cssVars: { "--color-surface": "#EDE8DC" }, styles: { fontFamily: "var(--skipo-font-code)" } },
657
+ aiChatPanel: { cssVars: { "--color-surface": "#EDE8DC", "--color-border": "#2A2518" }, styles: { border: "2px solid #2A2518", boxShadow: "6px 6px 0px #2A2518" } }
658
+ };
659
+
660
+ // src/theme/packs/docustack-dark-gold/manifest.json
661
+ var manifest_default = {
662
+ id: "docustack-dark-gold",
663
+ name: "DocuStack Vault (Dark & Gold)",
664
+ version: "1.0.0",
665
+ mode: "dark",
666
+ author: "DocuStack Team",
667
+ description: "Canonical 2.5D Neo-Brutalist Dark Vault theme with gold accents."
668
+ };
669
+
670
+ // src/theme/packs/docustack-dark-gold/index.ts
671
+ var DOCUSTACK_DARK_GOLD_PACK = validateModularThemePack({
672
+ metadata: manifest_default,
673
+ variants: {
674
+ dark: {
675
+ mode: "dark",
676
+ tokens: darkTokens,
677
+ typography: darkTypography,
678
+ elementStyles: darkElements
679
+ },
680
+ light: {
681
+ mode: "light",
682
+ tokens: lightTokens,
683
+ typography: lightTypography,
684
+ elementStyles: lightElements
685
+ }
686
+ },
687
+ typography: darkTypography,
688
+ tokens: darkTokens,
689
+ elementStyles: darkElements
690
+ });
691
+ var docustack_dark_gold_default = DOCUSTACK_DARK_GOLD_PACK;
692
+
693
+ // src/theme/packs/docustack-warm-coffee/tokens.ts
694
+ var lightTokens2 = {
695
+ bg: { canvas: "#F5EDE4", surface: "#E8DCC4", surfaceHover: "#DFCFB9", blur: "blur(12px)" },
696
+ text: { primary: "#21140E", muted: "#7A6B5D", inverse: "#F5EDE4" },
697
+ accent: { primary: "#C87D32", fg: "#FFFFFF", glow: "0 0 12px rgba(200, 125, 50, 0.35)", hover: "#C25E45" },
698
+ border: { color: "#2C1810", input: "#C87D32", style: "2px solid #2C1810" },
699
+ radius: { base: "0px", sm: "0px", lg: "0px" },
700
+ shadow: {
701
+ card: "4px 4px 0px #2C1810",
702
+ cardHover: "6px 6px 0px #2C1810",
703
+ btn: "2px 2px 0px #2C1810",
704
+ btnHover: "3px 3px 0px #2C1810",
705
+ btnActive: "1px 1px 0px #2C1810"
706
+ },
707
+ font: { sans: "'Courier Prime', monospace", mono: "'JetBrains Mono', monospace" },
708
+ status: {
709
+ success: "#059669",
710
+ successFg: "#FFFFFF",
711
+ warning: "#D97706",
712
+ warningFg: "#FFFFFF",
713
+ danger: "#DC2626",
714
+ dangerFg: "#FFFFFF",
715
+ info: "#2563EB",
716
+ infoFg: "#FFFFFF"
717
+ },
718
+ shell: {
719
+ topToolbarHeight: "44px",
720
+ topToolbarBg: "#DFCFB9",
721
+ bottomStripHeight: "30px",
722
+ bottomStripBg: "#E8DCC4",
723
+ inspectionTextTranslucent: "rgba(33, 20, 14, 0.85)"
724
+ }
725
+ };
726
+ var darkTokens2 = {
727
+ bg: { canvas: "#1A120E", surface: "#281D17", surfaceHover: "#362720", blur: "blur(14px)" },
728
+ text: { primary: "#F5EDE4", muted: "#A8988B", inverse: "#1A120E" },
729
+ accent: { primary: "#E08A3C", fg: "#000000", glow: "0 0 14px rgba(224, 138, 60, 0.4)", hover: "#C87D32" },
730
+ border: { color: "#3D2C22", input: "#E08A3C", style: "2px solid #3D2C22" },
731
+ radius: { base: "0px", sm: "0px", lg: "0px" },
732
+ shadow: {
733
+ card: "4px 4px 0px #000000",
734
+ cardHover: "6px 6px 0px #000000",
735
+ btn: "2px 2px 0px #000000",
736
+ btnHover: "3px 3px 0px #000000",
737
+ btnActive: "1px 1px 0px #000000"
738
+ },
739
+ font: { sans: "'Courier Prime', monospace", mono: "'JetBrains Mono', monospace" },
740
+ status: {
741
+ success: "#10B981",
742
+ successFg: "#000000",
743
+ warning: "#F59E0B",
744
+ warningFg: "#000000",
745
+ danger: "#EF4444",
746
+ dangerFg: "#FFFFFF",
747
+ info: "#3B82F6",
748
+ infoFg: "#FFFFFF"
749
+ },
750
+ shell: {
751
+ topToolbarHeight: "44px",
752
+ topToolbarBg: "#1A120E",
753
+ bottomStripHeight: "30px",
754
+ bottomStripBg: "#281D17",
755
+ inspectionTextTranslucent: "rgba(245, 237, 228, 0.85)"
756
+ }
757
+ };
758
+
759
+ // src/theme/packs/docustack-warm-coffee/typography.ts
760
+ var lightTypography2 = {
761
+ globalFont: "'Courier Prime', monospace",
762
+ globalMonoFont: "'JetBrains Mono', monospace",
763
+ globalColor: "#21140E",
764
+ globalAccentColor: "#C87D32",
765
+ headingFont: "'Courier Prime', monospace",
766
+ bodyFont: "'Courier Prime', monospace",
767
+ codeFont: "'JetBrains Mono', monospace",
768
+ sections: {
769
+ h1: { fontSize: "28px", fontWeight: "800", lineHeight: "1.2", color: "#C87D32", borderBottom: "2px solid rgba(200, 125, 50, 0.35)" },
770
+ h2: { fontSize: "22px", fontWeight: "700", lineHeight: "1.3", color: "#21140E", borderBottom: "1px solid rgba(200, 125, 50, 0.2)" },
771
+ h3: { fontSize: "18px", fontWeight: "700", lineHeight: "1.4", color: "#21140E" },
772
+ h4: { fontSize: "16px", fontWeight: "600", lineHeight: "1.4", color: "#C87D32" },
773
+ h5: { fontSize: "14px", fontWeight: "600", lineHeight: "1.4", color: "#21140E" },
774
+ h6: { fontSize: "13px", fontWeight: "600", lineHeight: "1.4", color: "#7A6B5D" },
775
+ p: { fontSize: "15px", lineHeight: "1.6", color: "#21140E" },
776
+ blockquote: { fontStyle: "italic", color: "#9E5B1E", bg: "rgba(200, 125, 50, 0.08)", borderLeftColor: "#C87D32", borderLeftWidth: "4px" },
777
+ ul: { markerColor: "#C87D32", spacing: "6px" },
778
+ ol: { markerColor: "#C87D32", spacing: "6px" },
779
+ inlineCode: { fontSize: "13px", color: "#9E5B1E", bg: "rgba(200, 125, 50, 0.12)", border: "1px solid rgba(200, 125, 50, 0.25)", radius: "3px" },
780
+ codeBlock: { fontSize: "13px", color: "#21140E", bg: "#E8DCC4", border: "1px solid #DFCFB9", radius: "4px" },
781
+ table: { headerBg: "#C87D32", headerColor: "#FFFFFF", border: "1px solid #DFCFB9", cellBg: "#F5EDE4" },
782
+ link: { color: "#C87D32", textDecoration: "none", hoverColor: "#C25E45", hoverUnderline: true },
783
+ hr: { color: "#C87D32", borderStyle: "solid", height: "2px" }
784
+ }
785
+ };
786
+ var darkTypography2 = {
787
+ globalFont: "'Courier Prime', monospace",
788
+ globalMonoFont: "'JetBrains Mono', monospace",
789
+ globalColor: "#F5EDE4",
790
+ globalAccentColor: "#E08A3C",
791
+ headingFont: "'Courier Prime', monospace",
792
+ bodyFont: "'Courier Prime', monospace",
793
+ codeFont: "'JetBrains Mono', monospace",
794
+ sections: {
795
+ h1: { fontSize: "28px", fontWeight: "800", lineHeight: "1.2", color: "#E08A3C", borderBottom: "2px solid rgba(224, 138, 60, 0.4)" },
796
+ h2: { fontSize: "22px", fontWeight: "700", lineHeight: "1.3", color: "#F5EDE4", borderBottom: "1px solid rgba(224, 138, 60, 0.2)" },
797
+ h3: { fontSize: "18px", fontWeight: "700", lineHeight: "1.4", color: "#F5EDE4" },
798
+ h4: { fontSize: "16px", fontWeight: "600", lineHeight: "1.4", color: "#E08A3C" },
799
+ h5: { fontSize: "14px", fontWeight: "600", lineHeight: "1.4", color: "#F5EDE4" },
800
+ h6: { fontSize: "13px", fontWeight: "600", lineHeight: "1.4", color: "#A8988B" },
801
+ p: { fontSize: "15px", lineHeight: "1.6", color: "#F5EDE4" },
802
+ blockquote: { fontStyle: "italic", color: "#E08A3C", bg: "rgba(224, 138, 60, 0.08)", borderLeftColor: "#E08A3C", borderLeftWidth: "4px" },
803
+ ul: { markerColor: "#E08A3C", spacing: "6px" },
804
+ ol: { markerColor: "#E08A3C", spacing: "6px" },
805
+ inlineCode: { fontSize: "13px", color: "#E08A3C", bg: "rgba(224, 138, 60, 0.15)", border: "1px solid rgba(224, 138, 60, 0.3)", radius: "3px" },
806
+ codeBlock: { fontSize: "13px", color: "#F5EDE4", bg: "#281D17", border: "1px solid #3D2C22", radius: "4px" },
807
+ table: { headerBg: "#E08A3C", headerColor: "#000000", border: "1px solid #3D2C22", cellBg: "#1A120E" },
808
+ link: { color: "#E08A3C", textDecoration: "none", hoverColor: "#FFFFFF", hoverUnderline: true },
809
+ hr: { color: "#E08A3C", borderStyle: "solid", height: "2px" }
810
+ }
811
+ };
812
+
813
+ // src/theme/packs/docustack-warm-coffee/elements.ts
814
+ var lightElements2 = {
815
+ canvas: { cssVars: { "--color-base": "#F5EDE4", "--skipo-bg": "#F5EDE4" }, styles: { backgroundColor: "#F5EDE4", color: "#21140E", fontFamily: "var(--skipo-font-body)" } },
816
+ wallpaperOverlay: { cssVars: { "--wallpaper-overlay-color": "#F5EDE4", "--wallpaper-overlay-opacity": "0.60" } },
817
+ topToolbar: { cssVars: { "--color-surface-subtle": "#DFCFB9", "--color-border": "#2C1810" }, styles: { height: "44px", borderBottom: "2px solid #2C1810" } },
818
+ bottomStrip: { cssVars: { "--skipo-bottom-strip-bg": "#E8DCC4" }, styles: { height: "30px", borderTop: "2px solid #2C1810", fontFamily: "var(--skipo-font-mono)" } },
819
+ headerBar: { cssVars: { "--color-surface-subtle": "#DFCFB9", "--color-border": "#2C1810" }, styles: { fontFamily: "var(--skipo-font-heading)" } },
820
+ workspaceTabBar: { cssVars: { "--color-surface": "#E8DCC4", "--color-accent": "#C87D32" } },
821
+ card: { cssVars: { "--color-surface": "#E8DCC4", "--color-border": "#2C1810" }, styles: { border: "2px solid #2C1810", boxShadow: "4px 4px 0px #2C1810", fontFamily: "var(--skipo-font-body)" } },
822
+ buttonPrimary: { cssVars: { "--color-accent": "#C87D32", "--color-border": "#2C1810" }, styles: { backgroundColor: "#C87D32", color: "#FFFFFF", border: "2px solid #2C1810" } },
823
+ buttonSecondary: { cssVars: { "--color-accent-secondary": "#C25E45", "--color-surface": "#E8DCC4" }, styles: { backgroundColor: "#E8DCC4", color: "#21140E", border: "2px solid #2C1810" } },
824
+ kanbanColumn: { cssVars: { "--color-surface": "#E8DCC4", "--color-border": "#2C1810" } },
825
+ kanbanColumnOverlay: { cssVars: { "--column-overlay-color": "#F5EDE4", "--column-overlay-opacity": "0.75" } },
826
+ documentCard: { cssVars: { "--color-surface": "#E8DCC4", "--color-border": "#2C1810" }, styles: { border: "2px solid #2C1810", boxShadow: "3px 3px 0px #2C1810" } },
827
+ graphCanvas: { cssVars: { "--color-base": "#F5EDE4" } },
828
+ graphNodeRoot: { cssVars: { "--color-accent": "#C87D32" }, styles: { border: "2px solid #2C1810" } },
829
+ graphNodeLeaf: { cssVars: { "--color-surface": "#E8DCC4", "--color-border": "#2C1810" }, styles: { border: "2px solid #2C1810" } },
830
+ graphEdge: { styles: { stroke: "#C87D32", strokeWidth: "2px" } },
831
+ codeEditor: { cssVars: { "--color-surface": "#E8DCC4" }, styles: { fontFamily: "var(--skipo-font-code)" } },
832
+ aiChatPanel: { cssVars: { "--color-surface": "#E8DCC4", "--color-border": "#2C1810" }, styles: { border: "2px solid #2C1810", boxShadow: "6px 6px 0px #2C1810" } }
833
+ };
834
+ var darkElements2 = {
835
+ canvas: { cssVars: { "--color-base": "#1A120E", "--skipo-bg": "#1A120E" }, styles: { backgroundColor: "#1A120E", color: "#F5EDE4", fontFamily: "var(--skipo-font-body)" } },
836
+ wallpaperOverlay: { cssVars: { "--wallpaper-overlay-color": "#1A120E", "--wallpaper-overlay-opacity": "0.75" } },
837
+ topToolbar: { cssVars: { "--color-surface-subtle": "#362720", "--color-border": "#3D2C22" }, styles: { height: "44px", borderBottom: "2px solid #3D2C22" } },
838
+ bottomStrip: { cssVars: { "--skipo-bottom-strip-bg": "#281D17" }, styles: { height: "30px", borderTop: "2px solid #3D2C22", fontFamily: "var(--skipo-font-mono)" } },
839
+ headerBar: { cssVars: { "--color-surface-subtle": "#362720", "--color-border": "#3D2C22" }, styles: { fontFamily: "var(--skipo-font-heading)" } },
840
+ workspaceTabBar: { cssVars: { "--color-surface": "#281D17", "--color-accent": "#E08A3C" } },
841
+ card: { cssVars: { "--color-surface": "#281D17", "--color-border": "#3D2C22" }, styles: { border: "2px solid #3D2C22", boxShadow: "4px 4px 0px #000000", fontFamily: "var(--skipo-font-body)" } },
842
+ buttonPrimary: { cssVars: { "--color-accent": "#E08A3C", "--color-border": "#3D2C22" }, styles: { backgroundColor: "#E08A3C", color: "#000000", border: "2px solid #3D2C22" } },
843
+ buttonSecondary: { cssVars: { "--color-accent-secondary": "#C87D32", "--color-surface": "#281D17" }, styles: { backgroundColor: "#281D17", color: "#F5EDE4", border: "2px solid #3D2C22" } },
844
+ kanbanColumn: { cssVars: { "--color-surface": "#281D17", "--color-border": "#3D2C22" } },
845
+ kanbanColumnOverlay: { cssVars: { "--column-overlay-color": "#1A120E", "--column-overlay-opacity": "0.80" } },
846
+ documentCard: { cssVars: { "--color-surface": "#281D17", "--color-border": "#3D2C22" }, styles: { border: "2px solid #3D2C22", boxShadow: "3px 3px 0px #000000" } },
847
+ graphCanvas: { cssVars: { "--color-base": "#1A120E" } },
848
+ graphNodeRoot: { cssVars: { "--color-accent": "#E08A3C" }, styles: { border: "2px solid #3D2C22" } },
849
+ graphNodeLeaf: { cssVars: { "--color-surface": "#281D17", "--color-border": "#3D2C22" }, styles: { border: "2px solid #3D2C22" } },
850
+ graphEdge: { styles: { stroke: "#E08A3C", strokeWidth: "2px" } },
851
+ codeEditor: { cssVars: { "--color-surface": "#281D17" }, styles: { fontFamily: "var(--skipo-font-code)" } },
852
+ aiChatPanel: { cssVars: { "--color-surface": "#281D17", "--color-border": "#3D2C22" }, styles: { border: "2px solid #3D2C22", boxShadow: "6px 6px 0px #000000" } }
853
+ };
854
+
855
+ // src/theme/packs/docustack-warm-coffee/manifest.json
856
+ var manifest_default2 = {
857
+ id: "docustack-warm-coffee",
858
+ name: "DocuStack Warm Coffee",
859
+ version: "1.0.0",
860
+ mode: "light",
861
+ author: "DocuStack Team",
862
+ description: "Warm espresso and caramel dual-variant palette."
863
+ };
864
+
865
+ // src/theme/packs/docustack-warm-coffee/index.ts
866
+ var DOCUSTACK_WARM_COFFEE_PACK = validateModularThemePack({
867
+ metadata: manifest_default2,
868
+ variants: {
869
+ dark: {
870
+ mode: "dark",
871
+ tokens: darkTokens2,
872
+ typography: darkTypography2,
873
+ elementStyles: darkElements2
874
+ },
875
+ light: {
876
+ mode: "light",
877
+ tokens: lightTokens2,
878
+ typography: lightTypography2,
879
+ elementStyles: lightElements2
880
+ }
881
+ },
882
+ typography: lightTypography2,
883
+ tokens: lightTokens2,
884
+ elementStyles: lightElements2
885
+ });
886
+ var docustack_warm_coffee_default = DOCUSTACK_WARM_COFFEE_PACK;
887
+
888
+ // src/theme/packs/docustack-cyberpunk-neon/tokens.ts
889
+ var darkTokens3 = {
890
+ bg: { canvas: "#0A0B10", surface: "#121520", surfaceHover: "#1A1F2C", blur: "blur(20px)" },
891
+ text: { primary: "#E0F7FC", muted: "#708A9E", inverse: "#0A0B10" },
892
+ accent: { primary: "#00F0FF", fg: "#000000", glow: "0 0 18px rgba(0, 240, 255, 0.65)", hover: "#00D0E0" },
893
+ border: { color: "#00F0FF", input: "#FF0055", style: "2px solid #00F0FF" },
894
+ radius: { base: "0px", sm: "0px", lg: "0px" },
895
+ shadow: {
896
+ card: "4px 4px 0px #000000",
897
+ cardHover: "6px 6px 0px rgba(0, 240, 255, 0.4)",
898
+ btn: "2px 2px 0px #000000",
899
+ btnHover: "3px 3px 0px #00F0FF",
900
+ btnActive: "1px 1px 0px #000000"
901
+ },
902
+ font: { sans: "'Space Grotesk', sans-serif", mono: "'JetBrains Mono', monospace" },
903
+ status: {
904
+ success: "#00FF9D",
905
+ successFg: "#000000",
906
+ warning: "#FFE600",
907
+ warningFg: "#000000",
908
+ danger: "#FF0055",
909
+ dangerFg: "#FFFFFF",
910
+ info: "#00F0FF",
911
+ infoFg: "#000000"
912
+ },
913
+ shell: {
914
+ topToolbarHeight: "44px",
915
+ topToolbarBg: "#0A0B10",
916
+ bottomStripHeight: "30px",
917
+ bottomStripBg: "#0A0B10",
918
+ inspectionTextTranslucent: "rgba(224, 247, 252, 0.85)"
919
+ }
920
+ };
921
+ var lightTokens3 = {
922
+ bg: { canvas: "#EBF4F7", surface: "#D4E5ED", surfaceHover: "#C2D9E4", blur: "blur(16px)" },
923
+ text: { primary: "#0B1920", muted: "#536D7A", inverse: "#EBF4F7" },
924
+ accent: { primary: "#008C99", fg: "#FFFFFF", glow: "0 0 14px rgba(0, 140, 153, 0.4)", hover: "#00727D" },
925
+ border: { color: "#008C99", input: "#D6004C", style: "2px solid #008C99" },
926
+ radius: { base: "0px", sm: "0px", lg: "0px" },
927
+ shadow: {
928
+ card: "4px 4px 0px #A0B4BE",
929
+ cardHover: "6px 6px 0px rgba(0, 140, 153, 0.4)",
930
+ btn: "2px 2px 0px #A0B4BE",
931
+ btnHover: "3px 3px 0px #008C99",
932
+ btnActive: "1px 1px 0px #A0B4BE"
933
+ },
934
+ font: { sans: "'Space Grotesk', sans-serif", mono: "'JetBrains Mono', monospace" },
935
+ status: {
936
+ success: "#059669",
937
+ successFg: "#FFFFFF",
938
+ warning: "#D97706",
939
+ warningFg: "#FFFFFF",
940
+ danger: "#DC2626",
941
+ dangerFg: "#FFFFFF",
942
+ info: "#0284C7",
943
+ infoFg: "#FFFFFF"
944
+ },
945
+ shell: {
946
+ topToolbarHeight: "44px",
947
+ topToolbarBg: "#D4E5ED",
948
+ bottomStripHeight: "30px",
949
+ bottomStripBg: "#C2D9E4",
950
+ inspectionTextTranslucent: "rgba(11, 25, 32, 0.85)"
951
+ }
952
+ };
953
+
954
+ // src/theme/packs/docustack-cyberpunk-neon/typography.ts
955
+ var darkTypography3 = {
956
+ globalFont: "'Space Grotesk', sans-serif",
957
+ globalMonoFont: "'JetBrains Mono', monospace",
958
+ globalColor: "#E0F7FC",
959
+ globalAccentColor: "#00F0FF",
960
+ headingFont: "'Space Grotesk', sans-serif",
961
+ bodyFont: "'Space Grotesk', sans-serif",
962
+ codeFont: "'JetBrains Mono', monospace",
963
+ sections: {
964
+ h1: { fontSize: "28px", fontWeight: "800", lineHeight: "1.2", color: "#00F0FF", borderBottom: "2px solid rgba(0, 240, 255, 0.4)" },
965
+ h2: { fontSize: "22px", fontWeight: "700", lineHeight: "1.3", color: "#FF0055", borderBottom: "1px solid rgba(255, 0, 85, 0.3)" },
966
+ h3: { fontSize: "18px", fontWeight: "700", lineHeight: "1.4", color: "#00F0FF" },
967
+ h4: { fontSize: "16px", fontWeight: "600", lineHeight: "1.4", color: "#00FF9D" },
968
+ h5: { fontSize: "14px", fontWeight: "600", lineHeight: "1.4", color: "#E0F7FC" },
969
+ h6: { fontSize: "13px", fontWeight: "600", lineHeight: "1.4", color: "#708A9E" },
970
+ p: { fontSize: "15px", lineHeight: "1.6", color: "#E0F7FC" },
971
+ blockquote: { fontStyle: "italic", color: "#00F0FF", bg: "rgba(0, 240, 255, 0.08)", borderLeftColor: "#FF0055", borderLeftWidth: "4px" },
972
+ ul: { markerColor: "#00F0FF", spacing: "6px" },
973
+ ol: { markerColor: "#FF0055", spacing: "6px" },
974
+ inlineCode: { fontSize: "13px", color: "#00F0FF", bg: "rgba(0, 240, 255, 0.15)", border: "1px solid rgba(0, 240, 255, 0.4)", radius: "3px" },
975
+ codeBlock: { fontSize: "13px", color: "#00FF9D", bg: "#080A10", border: "1px solid rgba(0, 240, 255, 0.25)", radius: "4px" },
976
+ table: { headerBg: "#00F0FF", headerColor: "#000000", border: "1px solid rgba(0, 240, 255, 0.25)", cellBg: "#121520" },
977
+ link: { color: "#00F0FF", textDecoration: "none", hoverColor: "#FF0055", hoverUnderline: true },
978
+ hr: { color: "#00F0FF", borderStyle: "solid", height: "2px" }
979
+ }
980
+ };
981
+ var lightTypography3 = {
982
+ globalFont: "'Space Grotesk', sans-serif",
983
+ globalMonoFont: "'JetBrains Mono', monospace",
984
+ globalColor: "#0B1920",
985
+ globalAccentColor: "#008C99",
986
+ headingFont: "'Space Grotesk', sans-serif",
987
+ bodyFont: "'Space Grotesk', sans-serif",
988
+ codeFont: "'JetBrains Mono', monospace",
989
+ sections: {
990
+ h1: { fontSize: "28px", fontWeight: "800", lineHeight: "1.2", color: "#008C99", borderBottom: "2px solid rgba(0, 140, 153, 0.35)" },
991
+ h2: { fontSize: "22px", fontWeight: "700", lineHeight: "1.3", color: "#D6004C", borderBottom: "1px solid rgba(214, 0, 76, 0.25)" },
992
+ h3: { fontSize: "18px", fontWeight: "700", lineHeight: "1.4", color: "#008C99" },
993
+ h4: { fontSize: "16px", fontWeight: "600", lineHeight: "1.4", color: "#059669" },
994
+ h5: { fontSize: "14px", fontWeight: "600", lineHeight: "1.4", color: "#0B1920" },
995
+ h6: { fontSize: "13px", fontWeight: "600", lineHeight: "1.4", color: "#536D7A" },
996
+ p: { fontSize: "15px", lineHeight: "1.6", color: "#0B1920" },
997
+ blockquote: { fontStyle: "italic", color: "#008C99", bg: "rgba(0, 140, 153, 0.08)", borderLeftColor: "#D6004C", borderLeftWidth: "4px" },
998
+ ul: { markerColor: "#008C99", spacing: "6px" },
999
+ ol: { markerColor: "#D6004C", spacing: "6px" },
1000
+ inlineCode: { fontSize: "13px", color: "#008C99", bg: "rgba(0, 140, 153, 0.12)", border: "1px solid rgba(0, 140, 153, 0.25)", radius: "3px" },
1001
+ codeBlock: { fontSize: "13px", color: "#0B1920", bg: "#D4E5ED", border: "1px solid #C2D9E4", radius: "4px" },
1002
+ table: { headerBg: "#008C99", headerColor: "#FFFFFF", border: "1px solid #C2D9E4", cellBg: "#EBF4F7" },
1003
+ link: { color: "#008C99", textDecoration: "none", hoverColor: "#D6004C", hoverUnderline: true },
1004
+ hr: { color: "#008C99", borderStyle: "solid", height: "2px" }
1005
+ }
1006
+ };
1007
+
1008
+ // src/theme/packs/docustack-cyberpunk-neon/elements.ts
1009
+ var darkElements3 = {
1010
+ canvas: { cssVars: { "--color-base": "#0A0B10", "--skipo-bg": "#0A0B10" }, styles: { backgroundColor: "#0A0B10", color: "#E0F7FC", fontFamily: "var(--skipo-font-body)" } },
1011
+ buttonPrimary: {
1012
+ cssVars: { "--color-accent": "#00F0FF" },
1013
+ styles: { backgroundColor: "#00F0FF", color: "#000000", border: "2px solid #000000" },
1014
+ effects: { glow: "0 0 15px rgba(0, 240, 255, 0.8)" }
1015
+ },
1016
+ graphNodeRoot: {
1017
+ cssVars: { "--color-accent": "#00F0FF" },
1018
+ styles: { border: "2px solid #00F0FF" },
1019
+ effects: { glow: "0 0 20px rgba(0, 240, 255, 0.9)" }
1020
+ }
1021
+ };
1022
+ var lightElements3 = {
1023
+ canvas: { cssVars: { "--color-base": "#EBF4F7", "--skipo-bg": "#EBF4F7" }, styles: { backgroundColor: "#EBF4F7", color: "#0B1920", fontFamily: "var(--skipo-font-body)" } },
1024
+ buttonPrimary: {
1025
+ cssVars: { "--color-accent": "#008C99" },
1026
+ styles: { backgroundColor: "#008C99", color: "#FFFFFF", border: "2px solid #008C99" },
1027
+ effects: { glow: "0 0 12px rgba(0, 140, 153, 0.5)" }
1028
+ },
1029
+ graphNodeRoot: {
1030
+ cssVars: { "--color-accent": "#008C99" },
1031
+ styles: { border: "2px solid #008C99" },
1032
+ effects: { glow: "0 0 16px rgba(0, 140, 153, 0.6)" }
1033
+ }
1034
+ };
1035
+
1036
+ // src/theme/packs/docustack-cyberpunk-neon/manifest.json
1037
+ var manifest_default3 = {
1038
+ id: "docustack-cyberpunk-neon",
1039
+ name: "DocuStack Cyberpunk Neon",
1040
+ version: "1.0.0",
1041
+ mode: "dark",
1042
+ author: "DocuStack Team",
1043
+ description: "High-contrast cyberpunk cyan and magenta dual-variant glow."
1044
+ };
1045
+
1046
+ // src/theme/packs/docustack-cyberpunk-neon/index.ts
1047
+ var DOCUSTACK_CYBERPUNK_PACK = validateModularThemePack({
1048
+ metadata: manifest_default3,
1049
+ variants: {
1050
+ dark: {
1051
+ mode: "dark",
1052
+ tokens: darkTokens3,
1053
+ typography: darkTypography3,
1054
+ elementStyles: darkElements3
1055
+ },
1056
+ light: {
1057
+ mode: "light",
1058
+ tokens: lightTokens3,
1059
+ typography: lightTypography3,
1060
+ elementStyles: lightElements3
1061
+ }
1062
+ },
1063
+ typography: darkTypography3,
1064
+ tokens: darkTokens3,
1065
+ elementStyles: darkElements3
1066
+ });
1067
+ var docustack_cyberpunk_neon_default = DOCUSTACK_CYBERPUNK_PACK;
1068
+
1069
+ // src/theme/appSocket.ts
1070
+ var DEPM_THEME_PACKS = [
1071
+ DOCUSTACK_DARK_GOLD_PACK,
1072
+ DOCUSTACK_WARM_COFFEE_PACK,
1073
+ DOCUSTACK_CYBERPUNK_PACK
1074
+ ];
1075
+ var depmThemeSocket = createAppThemeSocket({
1076
+ appId: "depm",
1077
+ appName: "DEPM Multi-Cloud Ecosystem Platform",
1078
+ version: "1.0.0",
1079
+ defaultThemePackId: "docustack-dark-gold",
1080
+ elementIds: [
1081
+ "canvas",
1082
+ "topToolbar",
1083
+ "bottomStrip",
1084
+ "headerBar",
1085
+ "workspaceTabBar",
1086
+ "card",
1087
+ "modalDialog",
1088
+ "floatingPanel",
1089
+ "buttonPrimary",
1090
+ "buttonSecondary",
1091
+ "buttonGhost",
1092
+ "inputField",
1093
+ "selectDropdown",
1094
+ "badge",
1095
+ "kanbanBoard",
1096
+ "documentCard",
1097
+ "graphCanvas",
1098
+ "graphNodeRoot",
1099
+ "graphNodeLeaf",
1100
+ "graphEdge",
1101
+ "codeEditor"
1102
+ ],
1103
+ elementDefaults: {
1104
+ canvas: {
1105
+ cssVars: {
1106
+ "--skipo-bg": "#121214",
1107
+ "--color-base": "#121214"
1108
+ }
1109
+ },
1110
+ topToolbar: {
1111
+ cssVars: {
1112
+ "--skipo-top-toolbar-height": "44px",
1113
+ "--skipo-top-toolbar-bg": "rgba(18, 18, 20, 0.95)"
1114
+ }
1115
+ },
1116
+ bottomStrip: {
1117
+ cssVars: {
1118
+ "--skipo-bottom-strip-height": "30px",
1119
+ "--skipo-bottom-strip-bg": "rgba(18, 18, 20, 0.95)"
1120
+ }
1121
+ }
1122
+ }
1123
+ });
1124
+ var appThemeEngine = new ThemeEngine(
1125
+ depmThemeSocket,
1126
+ DEPM_THEME_PACKS,
1127
+ "dark"
1128
+ );
1129
+
1130
+ export {
1131
+ validateSocketElements,
1132
+ createAppThemeSocket,
1133
+ resolveTypographyCascade,
1134
+ ThemeEngine,
1135
+ SkipoSemanticTokensSchema,
1136
+ HeadingLevelSchema,
1137
+ ParagraphStyleSchema,
1138
+ BlockquoteStyleSchema,
1139
+ ListStyleSchema,
1140
+ CodeStyleSchema,
1141
+ TableStyleSchema,
1142
+ LinkStyleSchema,
1143
+ HorizontalRuleStyleSchema,
1144
+ MarkdownSectionStylesSchema,
1145
+ ThemeTypographySchema,
1146
+ SkipoThemeMetadataSchema,
1147
+ UIElementThemeValueSchema,
1148
+ ThemeVariantDefinitionSchema,
1149
+ ModularThemePackSchema,
1150
+ validateModularThemePack,
1151
+ safeValidateModularThemePack,
1152
+ DOCUSTACK_DARK_GOLD_PACK,
1153
+ docustack_dark_gold_default,
1154
+ DOCUSTACK_WARM_COFFEE_PACK,
1155
+ docustack_warm_coffee_default,
1156
+ DOCUSTACK_CYBERPUNK_PACK,
1157
+ docustack_cyberpunk_neon_default,
1158
+ DEPM_THEME_PACKS,
1159
+ depmThemeSocket,
1160
+ appThemeEngine
1161
+ };