@imagineio/configurator-sdk 0.1.0-beta.1
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.
- package/LICENSE.md +294 -0
- package/README.md +103 -0
- package/dist/00a41227ff.js +1 -0
- package/dist/00ab3dcbb5.js +1 -0
- package/dist/01a664fa9f.css +51 -0
- package/dist/04746bff9a.js +1 -0
- package/dist/04931f795e.js +1 -0
- package/dist/05973a4da2.js +3 -0
- package/dist/061b81ad81.js +1 -0
- package/dist/066fc9aa40.js +1 -0
- package/dist/09c4973968.js +1 -0
- package/dist/0a35b2c5f4.js +1 -0
- package/dist/0af28430ab.js +1 -0
- package/dist/0e2dedae0d.js +1 -0
- package/dist/0f7c8345a8.js +1 -0
- package/dist/12b8165d6d.js +1 -0
- package/dist/1458417bdb.js +1 -0
- package/dist/14c83bc57a.js +1 -0
- package/dist/15d6bec3b5.css +150 -0
- package/dist/16a399703e.js +1 -0
- package/dist/17876f4322.css +114 -0
- package/dist/1870fc037b.js +1 -0
- package/dist/1a2629800a.css +196 -0
- package/dist/1e243363f6.js +1 -0
- package/dist/1fac915f8b.js +1 -0
- package/dist/1fff100656.js +1 -0
- package/dist/205827c5c8.js +1 -0
- package/dist/20b0104576.js +1 -0
- package/dist/2239b22616.js +1 -0
- package/dist/22bd38ddcf.js +1 -0
- package/dist/239b619005.css +1849 -0
- package/dist/23dc0ccf32.js +1 -0
- package/dist/26155bf68c.js +1 -0
- package/dist/2774152dd2.js +1 -0
- package/dist/27fee7007f.js +1 -0
- package/dist/281cf952fa.js +1 -0
- package/dist/28a9d58274.js +1 -0
- package/dist/28d887bf8a.js +1 -0
- package/dist/28df2aa12f.js +1 -0
- package/dist/297e653adf.js +1 -0
- package/dist/2990ba64d6.js +1 -0
- package/dist/2b6aa27f6d.js +1 -0
- package/dist/2c7c1bcef1.js +1 -0
- package/dist/2cab5c5c23.js +1 -0
- package/dist/2cafe3274b.js +1 -0
- package/dist/2e366d7386.js +1 -0
- package/dist/2f8cc8b292.js +1 -0
- package/dist/30be653f00.css +110 -0
- package/dist/31ea036f5c.js +1 -0
- package/dist/32861ea2b0.js +1 -0
- package/dist/33fa2c8ca2.js +1 -0
- package/dist/35d8449ed8.js +1 -0
- package/dist/3656ffa1b8.js +1 -0
- package/dist/367a479d3a.js +1 -0
- package/dist/371ed78aa2.js +1 -0
- package/dist/37596ace72.js +1 -0
- package/dist/37addc7fb3.js +1 -0
- package/dist/388cadacbd.js +1 -0
- package/dist/39a62ef7b8.js +1 -0
- package/dist/3bbcee0334.js +1 -0
- package/dist/3c916f744f.js +1 -0
- package/dist/3f37665dd1.js +1 -0
- package/dist/3fb3ab6757.js +1 -0
- package/dist/40d6aeb28c.js +1 -0
- package/dist/41ed5985ad.js +1 -0
- package/dist/431a2d8618.js +1 -0
- package/dist/44a229099f.js +1 -0
- package/dist/4741e5d07d.css +263 -0
- package/dist/4910c07ca8.css +411 -0
- package/dist/4a99ddb3fd.js +1 -0
- package/dist/4aa671f9f6.js +1 -0
- package/dist/4b8958aa4c.js +1 -0
- package/dist/4ba4f544b9.js +1 -0
- package/dist/4c24338793.js +1 -0
- package/dist/4d7a0d1897.js +1 -0
- package/dist/4e1db1e3b0.js +1 -0
- package/dist/4e7d0a0d4a.js +1 -0
- package/dist/51b23203e5.css +1447 -0
- package/dist/52436e0169.js +1 -0
- package/dist/54413c1eae.js +1 -0
- package/dist/54f0fcf38b.js +1 -0
- package/dist/55ab45ada4.css +370 -0
- package/dist/561dc3f1ab.js +1 -0
- package/dist/58e6419ba8.js +1 -0
- package/dist/5c9fd9201c.js +1 -0
- package/dist/5d05e8982e.js +1 -0
- package/dist/5d5e8a9c58.js +3 -0
- package/dist/5e4f2349ff.js +1 -0
- package/dist/609e5e5d28.js +1 -0
- package/dist/60d697292c.js +1 -0
- package/dist/61e0c0c9b5.js +1 -0
- package/dist/631a9f7fac.js +1 -0
- package/dist/64e9020b49.js +1 -0
- package/dist/66c461dc2c.js +1 -0
- package/dist/672404d987.js +1 -0
- package/dist/67f6338a4a.js +1 -0
- package/dist/6855e6a3b1.js +1 -0
- package/dist/6b0a81e4f8.js +1 -0
- package/dist/6ba86aa3b8.js +1 -0
- package/dist/6bff84d27e.js +1 -0
- package/dist/6c0a2572dd.js +1 -0
- package/dist/6d238282c1.js +1 -0
- package/dist/6e2595aa36.js +1 -0
- package/dist/6f9ae59d6c.js +1 -0
- package/dist/70dd811d74.js +1 -0
- package/dist/710c1ab641.js +1 -0
- package/dist/7206ce49c6.js +1 -0
- package/dist/7281d77ed9.js +1 -0
- package/dist/73f7d65985.js +1 -0
- package/dist/776277593f.js +1 -0
- package/dist/79a397bb92.js +1 -0
- package/dist/7a748aae59.js +1 -0
- package/dist/7bfb0ecfbb.css +572 -0
- package/dist/7bfcd0a517.js +1 -0
- package/dist/7d9ddaeb47.js +1 -0
- package/dist/7f833bc5af.js +1 -0
- package/dist/811b403d43.js +1 -0
- package/dist/817d930a49.js +1 -0
- package/dist/81802759ca.js +1 -0
- package/dist/81eb433604.js +1 -0
- package/dist/82a8a4bc35.js +1 -0
- package/dist/85af90fade.js +1 -0
- package/dist/872c4302e0.js +1 -0
- package/dist/87bb469216.js +1 -0
- package/dist/87dcc12b65.js +1 -0
- package/dist/87f511c4a8.js +1 -0
- package/dist/88251d6671.js +1 -0
- package/dist/882bc739c8.js +1 -0
- package/dist/89ab18ebc5.js +1 -0
- package/dist/8a22e8944f.css +563 -0
- package/dist/8a3a57c008.js +1 -0
- package/dist/8ade32d067.js +1 -0
- package/dist/8bf6d26ad6.css +233 -0
- package/dist/8c27edda0f.js +1 -0
- package/dist/8db8655f21.js +24 -0
- package/dist/8f60e5059a.js +1 -0
- package/dist/91707f5ca0.css +78 -0
- package/dist/921bf270dd.js +20 -0
- package/dist/9326c23506.js +1 -0
- package/dist/94a0a79c65.js +1 -0
- package/dist/9526094bb7.js +1 -0
- package/dist/9544661159.js +1 -0
- package/dist/95a44ebec2.js +1 -0
- package/dist/970313b92b.js +1 -0
- package/dist/9794652102.js +1 -0
- package/dist/983cbed22c.js +1 -0
- package/dist/9840b9ce12.js +1 -0
- package/dist/98f3644031.js +1 -0
- package/dist/992778075d.css +353 -0
- package/dist/9c6c598569.js +1 -0
- package/dist/9f474b5d1a.js +1 -0
- package/dist/a0f71d0bf5.js +1 -0
- package/dist/a3c983d431.js +1 -0
- package/dist/a3f18e76fe.js +1 -0
- package/dist/a493e9aa8f.js +1 -0
- package/dist/a77b15c0d6.js +1 -0
- package/dist/a811c90bd5.js +1 -0
- package/dist/a822c5e4f2.js +1 -0
- package/dist/aaa0e82d7f.css +69 -0
- package/dist/ab6c80484f.js +1 -0
- package/dist/ae96f219e3.js +1 -0
- package/dist/b11b38869d.css +427 -0
- package/dist/b1349d5a21.js +4 -0
- package/dist/b14379d31b.css +151 -0
- package/dist/b3efb26fd7.js +1 -0
- package/dist/b59b0dde17.js +1 -0
- package/dist/b5c372377f.js +1 -0
- package/dist/b976df09ec.js +1 -0
- package/dist/baeaed46c9.js +1 -0
- package/dist/bb719febc6.js +1 -0
- package/dist/bcd44b4040.js +1 -0
- package/dist/bdc4e4c5b9.css +209 -0
- package/dist/bdec200d00.js +1 -0
- package/dist/be0cfe2236.js +1 -0
- package/dist/be337ddda5.js +1 -0
- package/dist/c12c112c6f.js +1 -0
- package/dist/c2a14a77ae.js +1 -0
- package/dist/c3b8f1973b.js +1 -0
- package/dist/c44d37da7a.js +1 -0
- package/dist/c4790179f1.js +1 -0
- package/dist/c5e990946e.js +1 -0
- package/dist/c71892453b.js +1 -0
- package/dist/c9a1656c62.js +1 -0
- package/dist/ca497b066c.js +1 -0
- package/dist/cdb4a0f7b3.js +3 -0
- package/dist/ce663020e4.js +60 -0
- package/dist/cec035efb1.js +1 -0
- package/dist/d0f9681634.js +1 -0
- package/dist/d118c2e7ba.js +1 -0
- package/dist/d20718159b.js +3 -0
- package/dist/d30f1f506e.js +1 -0
- package/dist/d3cd7f1bc1.js +1 -0
- package/dist/d4378d9afa.js +1 -0
- package/dist/d464da28a5.js +1 -0
- package/dist/d566d3874b.js +1 -0
- package/dist/d617bbb9f5.js +26 -0
- package/dist/d65f32e004.js +1 -0
- package/dist/d6851ea979.js +1 -0
- package/dist/d7c9500ba9.js +1 -0
- package/dist/d803155241.js +1 -0
- package/dist/d903df4e0d.js +1 -0
- package/dist/d94df858ea.js +1 -0
- package/dist/da7b5f450d.js +1 -0
- package/dist/daa11edd01.js +1 -0
- package/dist/db4afd43c9.js +1 -0
- package/dist/dbd5ba1d07.js +1 -0
- package/dist/dc2a1a0e13.js +1 -0
- package/dist/dc812f3e14.js +1 -0
- package/dist/dcbf419090.css +122 -0
- package/dist/dcdba78ddf.js +1 -0
- package/dist/de408c4516.js +1 -0
- package/dist/e1cd279733.js +1 -0
- package/dist/e379e0039b.js +1 -0
- package/dist/e4fe0551fd.js +1 -0
- package/dist/e6eed481cc.css +28 -0
- package/dist/e75f1e5992.js +1 -0
- package/dist/ea8577d22b.js +1 -0
- package/dist/ec4a34fc80.css +313 -0
- package/dist/ed6a54cdf6.js +1 -0
- package/dist/ee242c0099.js +1 -0
- package/dist/ee9b9fd7d1.js +1 -0
- package/dist/f0c3d8a28a.js +1 -0
- package/dist/f11a45a150.js +1 -0
- package/dist/f1b3b2622a.js +1 -0
- package/dist/f7b4a178e3.js +1 -0
- package/dist/f89d7cd931.js +1 -0
- package/dist/f8cb80a93c.js +1 -0
- package/dist/f8fec86f10.js +1 -0
- package/dist/fbd844f2d1.js +1 -0
- package/dist/fe235d7160.js +1 -0
- package/dist/fe58a84b85.js +1 -0
- package/dist/fe68b361ba.js +1 -0
- package/dist/ff5b3d17e2.js +1 -0
- package/dist/styles/globals.css +442 -0
- package/dist/styles/themes.css +532 -0
- package/dist/styles/variables.css +299 -0
- package/package.json +68 -0
- package/static/assets/draco/README.md +32 -0
- package/static/assets/draco/draco_decoder.js +34 -0
- package/static/assets/draco/draco_decoder.wasm +0 -0
- package/static/assets/draco/draco_encoder.js +35 -0
- package/static/assets/draco/draco_encoder.wasm +0 -0
- package/static/assets/draco/draco_encoder_wrapper.js +98 -0
- package/static/assets/draco/draco_wasm_wrapper.js +117 -0
- package/static/favicon.svg +28 -0
- package/static/version.txt +1 -0
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
@layer sdk-base, vendor, sdk;
|
|
2
|
+
@layer sdk-base {
|
|
3
|
+
/* ============================================================================
|
|
4
|
+
BACKEND-SELECTABLE THEMES
|
|
5
|
+
----------------------------------------------------------------------------
|
|
6
|
+
Applied by applyTheme() (sdk/ui/applyTheme.js) as TWO attributes on <html>:
|
|
7
|
+
data-theme — numbered palette id (theme2, theme3, theme4, theme5, …)
|
|
8
|
+
"theme1" is the base/default and sets NO attribute.
|
|
9
|
+
data-theme-mode — 'dark' | 'light', derived from the id
|
|
10
|
+
|
|
11
|
+
`data-theme-mode="dark"` carries the SHARED dark skin — dark surfaces, light
|
|
12
|
+
text, and the fixes for Sidebar.css/option-card CSS that hardcode light hexes
|
|
13
|
+
(#fff, #363636, #F7F7F7) instead of tokens. Written ONCE here so every dark
|
|
14
|
+
palette (theme2, theme3, any future one) inherits white text without
|
|
15
|
+
duplication. `data-theme="<id>"` then layers accent / font / layout on top.
|
|
16
|
+
Scoped selectors out-specificity the base rules, so load order is moot.
|
|
17
|
+
|
|
18
|
+
Selected by /systems/<id>/.theme (app) or the /embed/<slug> boot payload.
|
|
19
|
+
Add a theme = add its palette block (+ its id to DARK_THEMES in applyTheme.js
|
|
20
|
+
if it's dark). No component code changes.
|
|
21
|
+
============================================================================ */
|
|
22
|
+
|
|
23
|
+
/* ========================================================================
|
|
24
|
+
RECORD BRIDGE — when a backend/embed theme RECORD is active, applyTheme sets
|
|
25
|
+
data-theme (+ --color-* tokens). Map those tokens onto the base vars the
|
|
26
|
+
DEFAULT layout (Themes 1 & 5) reads. Structural shells (theme2/3/4) read
|
|
27
|
+
--color-* directly via var(); this bridge covers the shared MainLayout path.
|
|
28
|
+
Each token falls back to the base literal so there's zero change when no record
|
|
29
|
+
is applied. Placed BEFORE the legacy preset blocks so a legacy preview like
|
|
30
|
+
`?theme=theme5` (which sets its own bg/text vars + data-theme-preset) still
|
|
31
|
+
wins; records set no color tokens on the preset path, so this only affects
|
|
32
|
+
actual records.
|
|
33
|
+
======================================================================== */
|
|
34
|
+
:root[data-theme] {
|
|
35
|
+
--bg-secondary: var(--color-background, #f5f5f5);
|
|
36
|
+
--bg-scene: var(--color-background, #ffffff);
|
|
37
|
+
--bg-primary: var(--color-surface, #ffffff);
|
|
38
|
+
--text-primary: var(--color-foreground, #1a1a1a);
|
|
39
|
+
--text-secondary: var(--color-secondary, #666666);
|
|
40
|
+
--text-muted: var(--color-secondary, #888888);
|
|
41
|
+
--border-default: var(--color-border, #e5e5e5);
|
|
42
|
+
--color-selection: var(--color-accent, #4a90d9);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* ========================================================================
|
|
46
|
+
SHARED SURFACE OVERRIDES — reused by any theme that renders on dark
|
|
47
|
+
surfaces (currently theme2 + theme3). NOT a user-facing "dark mode"; just a
|
|
48
|
+
shared block so those themes don't each re-declare the same hardcoded-hex
|
|
49
|
+
fixes (Sidebar.css / option cards hardcode #fff/#363636/#F7F7F7). A theme
|
|
50
|
+
opts in via data-theme-mode="dark" (set by applyTheme for these ids).
|
|
51
|
+
======================================================================== */
|
|
52
|
+
:root[data-theme-preset][data-theme-mode="dark"] {
|
|
53
|
+
--bg-primary: #1e1e22;
|
|
54
|
+
--bg-secondary: #141417;
|
|
55
|
+
--bg-tertiary: #26262b;
|
|
56
|
+
--bg-muted: #202024;
|
|
57
|
+
--bg-scene: #17171a;
|
|
58
|
+
--bg-disabled: #2a2a2e;
|
|
59
|
+
--bg-overlay: rgba(0, 0, 0, 0.6);
|
|
60
|
+
--bg-wall: #2a2823;
|
|
61
|
+
|
|
62
|
+
--text-primary: #f2f2f4;
|
|
63
|
+
--text-secondary: #b8b8be;
|
|
64
|
+
--text-muted: #8a8a92;
|
|
65
|
+
--text-tertiary: #77777e;
|
|
66
|
+
--text-disabled: #55555b;
|
|
67
|
+
--text-inverse: #1a1a1a;
|
|
68
|
+
--text-link: #7db5f0;
|
|
69
|
+
|
|
70
|
+
--border-default: #34343a;
|
|
71
|
+
--border-light: #3a3a42;
|
|
72
|
+
--border-dark: #44444c;
|
|
73
|
+
--border-selected: #7db5f0;
|
|
74
|
+
|
|
75
|
+
--color-selection: #5b9be0;
|
|
76
|
+
--color-selection-rgb: 91, 155, 224;
|
|
77
|
+
--color-selection-light: rgba(91, 155, 224, 0.14);
|
|
78
|
+
--color-selection-medium: rgba(91, 155, 224, 0.26);
|
|
79
|
+
--color-selection-border: rgba(91, 155, 224, 0.5);
|
|
80
|
+
--color-hover: #f2f2f4;
|
|
81
|
+
--color-active: #f2f2f4;
|
|
82
|
+
|
|
83
|
+
/* neutral scale remapped (900 = lightest here) so token-driven text/borders
|
|
84
|
+
keep contrast on dark surfaces */
|
|
85
|
+
--color-neutral-900: #f2f2f4;
|
|
86
|
+
--color-neutral-800: #e2e2e6;
|
|
87
|
+
--color-neutral-700: #c4c4ca;
|
|
88
|
+
--color-neutral-600: #a6a6ae;
|
|
89
|
+
--color-neutral-500: #8a8a92;
|
|
90
|
+
--color-neutral-400: #6e6e76;
|
|
91
|
+
--color-neutral-300: #4c4c54;
|
|
92
|
+
--color-neutral-200: #3a3a42;
|
|
93
|
+
--color-neutral-100: #2e2e34;
|
|
94
|
+
--color-neutral-50: #26262b;
|
|
95
|
+
|
|
96
|
+
--thumbnail-bg: #26262b;
|
|
97
|
+
--thumbnail-border: #3a3a42;
|
|
98
|
+
--thumbnail-border-hover: #7db5f0;
|
|
99
|
+
--thumbnail-border-selected: #7db5f0;
|
|
100
|
+
--slider-track-bg: #3a3a42;
|
|
101
|
+
--slider-thumb-bg: #f2f2f4;
|
|
102
|
+
--icon-color-default: #9a9aa2;
|
|
103
|
+
--icon-color-hover: #f2f2f4;
|
|
104
|
+
--icon-color-active: #7db5f0;
|
|
105
|
+
|
|
106
|
+
--shadow-md: 0 2px 8px rgba(0, 0, 0, 0.4);
|
|
107
|
+
--shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.5);
|
|
108
|
+
--shadow-xl: 0 8px 24px rgba(0, 0, 0, 0.6);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* re-point hardcoded light colours at tokens so the dark skin is complete */
|
|
112
|
+
:root[data-theme-mode="dark"] .sidebar-chat-card { background: var(--bg-primary); }
|
|
113
|
+
:root[data-theme-mode="dark"] .sidebar__logo-text { color: var(--text-primary); }
|
|
114
|
+
:root[data-theme-mode="dark"] .sidebar__logo-divider { background: var(--border-light); }
|
|
115
|
+
:root[data-theme-mode="dark"] .sidebar__action-btn { color: var(--text-secondary); }
|
|
116
|
+
:root[data-theme-mode="dark"] .sidebar__action-btn:hover { background: var(--bg-tertiary); }
|
|
117
|
+
:root[data-theme-mode="dark"] .sidebar-toggle-btn {
|
|
118
|
+
background: var(--bg-primary);
|
|
119
|
+
border-color: var(--border-default);
|
|
120
|
+
color: var(--text-primary);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
:root[data-theme-mode="dark"] .option-thumbnail,
|
|
124
|
+
:root[data-theme-mode="dark"] .frame-size-btn {
|
|
125
|
+
background: var(--bg-tertiary);
|
|
126
|
+
border-color: var(--border-default);
|
|
127
|
+
color: var(--text-primary);
|
|
128
|
+
}
|
|
129
|
+
:root[data-theme-mode="dark"] .option-thumbnail:hover,
|
|
130
|
+
:root[data-theme-mode="dark"] .option-thumbnail--selected,
|
|
131
|
+
:root[data-theme-mode="dark"] .frame-size-btn:hover,
|
|
132
|
+
:root[data-theme-mode="dark"] .frame-size-btn--selected {
|
|
133
|
+
background: var(--bg-muted);
|
|
134
|
+
border-color: var(--color-selection);
|
|
135
|
+
}
|
|
136
|
+
:root[data-theme-mode="dark"] .option-thumbnail--disabled:hover {
|
|
137
|
+
background: var(--bg-tertiary);
|
|
138
|
+
border-color: var(--border-default);
|
|
139
|
+
}
|
|
140
|
+
:root[data-theme-mode="dark"] .option-thumbnail__name { color: var(--text-primary); }
|
|
141
|
+
:root[data-theme-mode="dark"] .color-swatch__name { color: var(--text-secondary); }
|
|
142
|
+
:root[data-theme-mode="dark"] .color-swatch--selected .color-swatch__name { color: var(--text-primary); }
|
|
143
|
+
:root[data-theme-mode="dark"] .color-swatch:hover .color-swatch__color { border-color: var(--color-selection); }
|
|
144
|
+
:root[data-theme-mode="dark"] .color-swatch--selected .color-swatch__color {
|
|
145
|
+
border-color: var(--color-selection);
|
|
146
|
+
box-shadow: 0 0 0 2px var(--bg-primary), 0 0 0 4px var(--color-selection);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* ============================================================================
|
|
150
|
+
Each named theme below is a FULL re-skin and is deliberately distinct from
|
|
151
|
+
the others across SIX axes: colour temperature, typography, shape language,
|
|
152
|
+
surface treatment (solid / glass / frosted), density, and sidebar position.
|
|
153
|
+
The base (:root, "Theme 1" / default) is never touched here.
|
|
154
|
+
|
|
155
|
+
There is no "dark theme" / "light theme" category — each is simply its own
|
|
156
|
+
distinct UI. "Theme 1" is the base (:root / default) and is left untouched.
|
|
157
|
+
theme2 → warm editorial NOIR — champagne gold, serif, sharp, right dock
|
|
158
|
+
theme3 → cool NEON GRAPHITE — violet→cyan, glass blur, rounded, glow
|
|
159
|
+
theme4 → soft STUDIO — indigo, clean sans, very round, airy
|
|
160
|
+
theme5 → frosted AQUA GLASS — teal/cyan, translucent frost, pill/compact
|
|
161
|
+
|
|
162
|
+
(data-theme-mode is NOT a user-facing "mode" — it's an internal flag that lets
|
|
163
|
+
a theme built on dark surfaces reuse the shared hardcoded-hex fixes below,
|
|
164
|
+
instead of each such theme re-declaring them. Purely an implementation detail.)
|
|
165
|
+
============================================================================ */
|
|
166
|
+
|
|
167
|
+
/* ========================================================================
|
|
168
|
+
THEME 2 (noir) — warm editorial noir. Champagne-gold on warm near-black,
|
|
169
|
+
serif display headings, sharp hairline cards, dramatic shadow, right dock.
|
|
170
|
+
Inherits the shared dark skin via data-theme-mode="dark", then re-tints it
|
|
171
|
+
WARM and swaps the cool-blue selection for gold.
|
|
172
|
+
======================================================================== */
|
|
173
|
+
:root[data-theme-preset="theme2"] {
|
|
174
|
+
/* warm charcoal surfaces (override the neutral shared-dark greys) */
|
|
175
|
+
--bg-primary: #17130f;
|
|
176
|
+
--bg-secondary: #100c09;
|
|
177
|
+
--bg-tertiary: #221b14;
|
|
178
|
+
--bg-muted: #1b1510;
|
|
179
|
+
--bg-scene: #120e0b;
|
|
180
|
+
--bg-disabled: #241d16;
|
|
181
|
+
|
|
182
|
+
--text-primary: #f6efe2;
|
|
183
|
+
--text-secondary: #c9bda6;
|
|
184
|
+
--text-muted: #9a8f79;
|
|
185
|
+
--text-tertiary: #857b67;
|
|
186
|
+
|
|
187
|
+
--border-default: #2f2820;
|
|
188
|
+
--border-light: #3b3227;
|
|
189
|
+
--border-dark: #4a3f30;
|
|
190
|
+
|
|
191
|
+
/* champagne-gold accent */
|
|
192
|
+
--color-selection: #cba24d;
|
|
193
|
+
--color-selection-rgb: 203, 162, 77;
|
|
194
|
+
--color-selection-light: rgba(203, 162, 77, 0.13);
|
|
195
|
+
--color-selection-medium: rgba(203, 162, 77, 0.26);
|
|
196
|
+
--color-selection-border: rgba(203, 162, 77, 0.55);
|
|
197
|
+
--border-selected: #cba24d;
|
|
198
|
+
--thumbnail-border-hover: #cba24d;
|
|
199
|
+
--thumbnail-border-selected: #cba24d;
|
|
200
|
+
--text-link: #e2c079;
|
|
201
|
+
--icon-color-active: #d9b463;
|
|
202
|
+
--slider-thumb-bg: #cba24d;
|
|
203
|
+
|
|
204
|
+
/* typography — editorial serif headings, quiet sans body */
|
|
205
|
+
--font-family-base: 'Segoe UI', Roboto, system-ui, -apple-system, sans-serif;
|
|
206
|
+
--font-family-heading: 'Playfair Display', Georgia, 'Times New Roman', serif;
|
|
207
|
+
|
|
208
|
+
/* card size — roomier: wider sidebar + larger tiles + bigger gaps */
|
|
209
|
+
--sidebar-width: 344px;
|
|
210
|
+
--thumbnail-gap: 12px;
|
|
211
|
+
--thumbnail-min-width: 84px;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/* cards — sharp corners, gold hairline, deep cinematic shadow */
|
|
215
|
+
:root[data-theme-preset="theme2"] .sidebar--card,
|
|
216
|
+
:root[data-theme-preset="theme2"] .sidebar-chat-card {
|
|
217
|
+
border: 1px solid var(--border-default);
|
|
218
|
+
border-radius: 3px;
|
|
219
|
+
background:
|
|
220
|
+
linear-gradient(180deg, rgba(203, 162, 77, 0.05), rgba(203, 162, 77, 0) 120px),
|
|
221
|
+
var(--bg-primary);
|
|
222
|
+
box-shadow: 0 24px 60px -12px rgba(0, 0, 0, 0.7), inset 0 1px 0 rgba(255, 240, 214, 0.04);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/* section titles — gold, generous tracking, a short gold rule beneath */
|
|
226
|
+
:root[data-theme-preset="theme2"] .sidebar__section-title {
|
|
227
|
+
color: #e2c079;
|
|
228
|
+
font-weight: 500;
|
|
229
|
+
letter-spacing: 2px;
|
|
230
|
+
position: relative;
|
|
231
|
+
padding-bottom: 7px;
|
|
232
|
+
}
|
|
233
|
+
:root[data-theme-preset="theme2"] .sidebar__section-title::after {
|
|
234
|
+
content: '';
|
|
235
|
+
position: absolute;
|
|
236
|
+
left: 0;
|
|
237
|
+
bottom: 0;
|
|
238
|
+
width: 26px;
|
|
239
|
+
height: 1px;
|
|
240
|
+
background: linear-gradient(90deg, #cba24d, rgba(203, 162, 77, 0));
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/* larger option tiles + gold selection glow */
|
|
244
|
+
:root[data-theme-preset="theme2"] .option-thumbnail {
|
|
245
|
+
min-height: 64px;
|
|
246
|
+
padding: 12px 6px;
|
|
247
|
+
border-radius: 3px;
|
|
248
|
+
}
|
|
249
|
+
:root[data-theme-preset="theme2"] .option-thumbnail__name { font-size: var(--font-size-md); }
|
|
250
|
+
:root[data-theme-preset="theme2"] .option-thumbnail--selected {
|
|
251
|
+
box-shadow: 0 0 0 1px var(--color-selection), 0 6px 20px -6px rgba(203, 162, 77, 0.45);
|
|
252
|
+
}
|
|
253
|
+
:root[data-theme-preset="theme2"] .frame-size-btn { padding: 9px 12px; font-size: 12px; border-radius: 3px; }
|
|
254
|
+
:root[data-theme-preset="theme2"] .sidebar-container { font-family: var(--font-family-base); }
|
|
255
|
+
:root[data-theme-preset="theme2"] .sidebar__logo-text {
|
|
256
|
+
font-family: var(--font-family-heading);
|
|
257
|
+
letter-spacing: 0.3px;
|
|
258
|
+
color: #f6efe2;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* sidebar docked right → move sidebar, toggle, and the scene action toolbar
|
|
262
|
+
(2D/fullscreen/refresh) + generate/save buttons to the left so they clear it */
|
|
263
|
+
:root[data-theme-preset="theme2"] .sidebar-container { left: auto; right: 12px; }
|
|
264
|
+
:root[data-theme-preset="theme2"] .main-layout__scene--sidebar-open {
|
|
265
|
+
padding-left: 0;
|
|
266
|
+
padding-right: calc(var(--sidebar-width) + 24px);
|
|
267
|
+
}
|
|
268
|
+
:root[data-theme-preset="theme2"] .sidebar-toggle-btn { left: auto; right: 12px; }
|
|
269
|
+
:root[data-theme-preset="theme2"] .header { right: auto; left: 12px; }
|
|
270
|
+
|
|
271
|
+
/* ========================================================================
|
|
272
|
+
THEME 3 (neon) — neon graphite. Cool blue-black surfaces, a violet→cyan neon
|
|
273
|
+
accent, frosted-glass card, rounded tiles, and a glow on selection.
|
|
274
|
+
Also a good embed dark default. Inherits the shared dark skin, re-tinted
|
|
275
|
+
COOL, with glass + neon layered on top.
|
|
276
|
+
======================================================================== */
|
|
277
|
+
:root[data-theme-preset="theme3"] {
|
|
278
|
+
/* cool graphite surfaces */
|
|
279
|
+
--bg-primary: #12141c;
|
|
280
|
+
--bg-secondary: #0c0e15;
|
|
281
|
+
--bg-tertiary: #1a1e2b;
|
|
282
|
+
--bg-muted: #161a25;
|
|
283
|
+
--bg-scene: #0b0d13;
|
|
284
|
+
--bg-disabled: #1c2130;
|
|
285
|
+
|
|
286
|
+
--text-primary: #eef1fb;
|
|
287
|
+
--text-secondary: #a9b0c8;
|
|
288
|
+
--text-muted: #7b839c;
|
|
289
|
+
|
|
290
|
+
--border-default: #242a3a;
|
|
291
|
+
--border-light: #2c3346;
|
|
292
|
+
--border-dark: #384056;
|
|
293
|
+
|
|
294
|
+
/* electric violet→cyan */
|
|
295
|
+
--color-selection: #8b5cf6;
|
|
296
|
+
--color-selection-rgb: 139, 92, 246;
|
|
297
|
+
--color-selection-light: rgba(139, 92, 246, 0.16);
|
|
298
|
+
--color-selection-medium: rgba(139, 92, 246, 0.3);
|
|
299
|
+
--color-selection-border: rgba(139, 92, 246, 0.6);
|
|
300
|
+
--border-selected: #8b5cf6;
|
|
301
|
+
--thumbnail-border-hover: #22d3ee;
|
|
302
|
+
--thumbnail-border-selected: #8b5cf6;
|
|
303
|
+
--text-link: #22d3ee;
|
|
304
|
+
--icon-color-active: #22d3ee;
|
|
305
|
+
--slider-thumb-bg: #8b5cf6;
|
|
306
|
+
|
|
307
|
+
--font-family-base: 'Segoe UI', system-ui, -apple-system, Roboto, sans-serif;
|
|
308
|
+
--font-family-heading: 'Segoe UI', system-ui, sans-serif;
|
|
309
|
+
|
|
310
|
+
--sidebar-width: 312px;
|
|
311
|
+
--thumbnail-gap: 10px;
|
|
312
|
+
--thumbnail-min-width: 74px;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/* frosted-glass card floating over the scene, rounded, faint neon rim */
|
|
316
|
+
:root[data-theme-preset="theme3"] .sidebar--card,
|
|
317
|
+
:root[data-theme-preset="theme3"] .sidebar-chat-card {
|
|
318
|
+
border-radius: 16px;
|
|
319
|
+
border: 1px solid rgba(139, 92, 246, 0.18);
|
|
320
|
+
background:
|
|
321
|
+
radial-gradient(120% 80% at 100% 0%, rgba(34, 211, 238, 0.08), rgba(34, 211, 238, 0) 60%),
|
|
322
|
+
radial-gradient(120% 80% at 0% 0%, rgba(139, 92, 246, 0.1), rgba(139, 92, 246, 0) 55%),
|
|
323
|
+
rgba(18, 20, 28, 0.72);
|
|
324
|
+
backdrop-filter: blur(20px) saturate(150%);
|
|
325
|
+
-webkit-backdrop-filter: blur(20px) saturate(150%);
|
|
326
|
+
box-shadow: 0 20px 50px -12px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(255, 255, 255, 0.03) inset;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/* section titles — violet→cyan gradient text */
|
|
330
|
+
:root[data-theme-preset="theme3"] .sidebar__section-title {
|
|
331
|
+
background: linear-gradient(90deg, #a78bfa, #22d3ee);
|
|
332
|
+
-webkit-background-clip: text;
|
|
333
|
+
background-clip: text;
|
|
334
|
+
color: transparent;
|
|
335
|
+
-webkit-text-fill-color: transparent;
|
|
336
|
+
letter-spacing: 1.4px;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/* rounded tiles + neon selection glow */
|
|
340
|
+
:root[data-theme-preset="theme3"] .option-thumbnail,
|
|
341
|
+
:root[data-theme-preset="theme3"] .frame-size-btn { border-radius: 12px; }
|
|
342
|
+
:root[data-theme-preset="theme3"] .option-thumbnail--selected,
|
|
343
|
+
:root[data-theme-preset="theme3"] .frame-size-btn--selected {
|
|
344
|
+
border-color: var(--color-selection);
|
|
345
|
+
box-shadow: 0 0 0 1px var(--color-selection), 0 0 18px -2px rgba(139, 92, 246, 0.55);
|
|
346
|
+
}
|
|
347
|
+
:root[data-theme-preset="theme3"] .option-thumbnail:hover,
|
|
348
|
+
:root[data-theme-preset="theme3"] .frame-size-btn:hover {
|
|
349
|
+
box-shadow: 0 0 16px -4px rgba(34, 211, 238, 0.5);
|
|
350
|
+
}
|
|
351
|
+
:root[data-theme-preset="theme3"] .sidebar-toggle-btn {
|
|
352
|
+
border-radius: 12px;
|
|
353
|
+
box-shadow: 0 0 16px -4px rgba(139, 92, 246, 0.5);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/* ========================================================================
|
|
357
|
+
THEME 4 (studio) — soft studio. Pure white, indigo accent, clean sans, very
|
|
358
|
+
rounded cards, soft layered shadows, airy spacing. (Also the embed's light
|
|
359
|
+
id.) A light theme, so it does NOT get data-theme-mode="dark".
|
|
360
|
+
======================================================================== */
|
|
361
|
+
:root[data-theme-preset="theme4"] {
|
|
362
|
+
--bg-primary: #ffffff;
|
|
363
|
+
--bg-secondary: #fbfbfe;
|
|
364
|
+
--bg-tertiary: #f2f2f8;
|
|
365
|
+
--bg-muted: #f6f6fb;
|
|
366
|
+
--bg-scene: #fdfdff;
|
|
367
|
+
--bg-wall: #eceaf4;
|
|
368
|
+
|
|
369
|
+
--color-selection: #4f46e5;
|
|
370
|
+
--color-selection-rgb: 79, 70, 229;
|
|
371
|
+
--color-selection-light: rgba(79, 70, 229, 0.1);
|
|
372
|
+
--color-selection-medium: rgba(79, 70, 229, 0.2);
|
|
373
|
+
--color-selection-border: rgba(79, 70, 229, 0.42);
|
|
374
|
+
--text-link: #4f46e5;
|
|
375
|
+
--border-selected: #4f46e5;
|
|
376
|
+
--border-default: #ececf3;
|
|
377
|
+
--border-light: #f0f0f6;
|
|
378
|
+
--thumbnail-border-hover: #4f46e5;
|
|
379
|
+
--thumbnail-border-selected: #4f46e5;
|
|
380
|
+
--icon-color-active: #4f46e5;
|
|
381
|
+
--slider-thumb-bg: #4f46e5;
|
|
382
|
+
|
|
383
|
+
--font-family-base: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif;
|
|
384
|
+
--font-family-heading: 'Inter', 'Segoe UI', system-ui, sans-serif;
|
|
385
|
+
|
|
386
|
+
/* roomy + airy */
|
|
387
|
+
--sidebar-width: 332px;
|
|
388
|
+
--thumbnail-gap: 12px;
|
|
389
|
+
--thumbnail-min-width: 80px;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/* cards — very rounded, soft multi-layer shadow, hairline */
|
|
393
|
+
:root[data-theme-preset="theme4"] .sidebar--card,
|
|
394
|
+
:root[data-theme-preset="theme4"] .sidebar-chat-card {
|
|
395
|
+
border-radius: 18px;
|
|
396
|
+
border: 1px solid var(--border-default);
|
|
397
|
+
box-shadow: 0 1px 2px rgba(17, 12, 46, 0.04), 0 12px 32px -8px rgba(17, 12, 46, 0.12);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/* section titles — indigo, a soft indigo rule beneath */
|
|
401
|
+
:root[data-theme-preset="theme4"] .sidebar__section-title {
|
|
402
|
+
color: #4f46e5;
|
|
403
|
+
letter-spacing: 1.2px;
|
|
404
|
+
position: relative;
|
|
405
|
+
padding-bottom: 7px;
|
|
406
|
+
}
|
|
407
|
+
:root[data-theme-preset="theme4"] .sidebar__section-title::after {
|
|
408
|
+
content: '';
|
|
409
|
+
position: absolute;
|
|
410
|
+
left: 0;
|
|
411
|
+
bottom: 0;
|
|
412
|
+
width: 24px;
|
|
413
|
+
height: 2px;
|
|
414
|
+
border-radius: 2px;
|
|
415
|
+
background: linear-gradient(90deg, #6366f1, rgba(99, 102, 241, 0));
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/* rounded tiles + soft indigo selection ring */
|
|
419
|
+
:root[data-theme-preset="theme4"] .option-thumbnail,
|
|
420
|
+
:root[data-theme-preset="theme4"] .frame-size-btn { border-radius: 14px; }
|
|
421
|
+
:root[data-theme-preset="theme4"] .option-thumbnail--selected {
|
|
422
|
+
border-color: var(--color-selection);
|
|
423
|
+
background: #fff;
|
|
424
|
+
box-shadow: 0 0 0 3px var(--color-selection-light), 0 8px 20px -8px rgba(79, 70, 229, 0.3);
|
|
425
|
+
}
|
|
426
|
+
:root[data-theme-preset="theme4"] .frame-size-btn--selected { border-color: var(--color-selection); }
|
|
427
|
+
:root[data-theme-preset="theme4"] .option-thumbnail:hover,
|
|
428
|
+
:root[data-theme-preset="theme4"] .frame-size-btn:hover { border-color: var(--color-selection-border); }
|
|
429
|
+
:root[data-theme-preset="theme4"] .sidebar-toggle-btn { border-radius: 14px; }
|
|
430
|
+
|
|
431
|
+
/* ========================================================================
|
|
432
|
+
THEME 5 (aqua) — frosted aqua glass. Teal/cyan gradient accent, translucent
|
|
433
|
+
frosted cards over the scene, pill-round + compact tiles, breezy left inset.
|
|
434
|
+
Distinct from `light` (solid white, indigo) by being colourful + glassy.
|
|
435
|
+
======================================================================== */
|
|
436
|
+
:root[data-theme-preset="theme5"] {
|
|
437
|
+
/* teal/cyan brand + selection, cool-tinted surfaces */
|
|
438
|
+
--color-brand-primary: #0891b2;
|
|
439
|
+
--color-brand-primary-rgb: 8, 145, 178;
|
|
440
|
+
--color-brand-primary-dark: #0e7490;
|
|
441
|
+
--color-brand-primary-light: #22d3ee;
|
|
442
|
+
--color-brand-accent: #06b6d4;
|
|
443
|
+
|
|
444
|
+
--color-selection: #0ea5e9;
|
|
445
|
+
--color-selection-rgb: 14, 165, 233;
|
|
446
|
+
--color-selection-light: rgba(14, 165, 233, 0.12);
|
|
447
|
+
--color-selection-medium: rgba(14, 165, 233, 0.22);
|
|
448
|
+
--color-selection-border: rgba(14, 165, 233, 0.45);
|
|
449
|
+
|
|
450
|
+
--bg-primary: #f6fdff;
|
|
451
|
+
--bg-secondary: #eaf6fa;
|
|
452
|
+
--bg-tertiary: #dcedf2;
|
|
453
|
+
--bg-muted: #e9f4f7;
|
|
454
|
+
--bg-scene: #f2fbfd;
|
|
455
|
+
--bg-wall: #dce9ea;
|
|
456
|
+
|
|
457
|
+
--text-primary: #0c3745;
|
|
458
|
+
--text-secondary: #3f6875;
|
|
459
|
+
--text-muted: #6a8b95;
|
|
460
|
+
--text-link: #0284c7;
|
|
461
|
+
--border-default: #cfe6ec;
|
|
462
|
+
--border-light: #dcedf2;
|
|
463
|
+
--border-selected: #0e7490;
|
|
464
|
+
--thumbnail-border-hover: #0e7490;
|
|
465
|
+
--thumbnail-border-selected: #0e7490;
|
|
466
|
+
--icon-color-active: #0ea5e9;
|
|
467
|
+
--slider-thumb-bg: #0e7490;
|
|
468
|
+
|
|
469
|
+
/* rounder humanist sans */
|
|
470
|
+
--font-family-base: 'Nunito', 'Trebuchet MS', 'Segoe UI', system-ui, sans-serif;
|
|
471
|
+
--font-family-heading: 'Nunito', 'Trebuchet MS', 'Segoe UI', sans-serif;
|
|
472
|
+
|
|
473
|
+
/* compact/denser: narrower sidebar + smaller tiles + tight gaps */
|
|
474
|
+
--sidebar-width: 284px;
|
|
475
|
+
--thumbnail-gap: 7px;
|
|
476
|
+
--thumbnail-min-width: 62px;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
/* frosted translucent cards with a teal-tinted glass shadow + top gradient */
|
|
480
|
+
:root[data-theme-preset="theme5"] .sidebar--card,
|
|
481
|
+
:root[data-theme-preset="theme5"] .sidebar-chat-card {
|
|
482
|
+
border-radius: 20px;
|
|
483
|
+
border: 1px solid rgba(14, 165, 233, 0.18);
|
|
484
|
+
background:
|
|
485
|
+
linear-gradient(160deg, rgba(34, 211, 238, 0.14), rgba(255, 255, 255, 0) 160px),
|
|
486
|
+
rgba(246, 253, 255, 0.78);
|
|
487
|
+
backdrop-filter: blur(16px) saturate(160%);
|
|
488
|
+
-webkit-backdrop-filter: blur(16px) saturate(160%);
|
|
489
|
+
box-shadow: 0 14px 40px -10px rgba(8, 145, 178, 0.28);
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
/* section titles — teal→cyan gradient text */
|
|
493
|
+
:root[data-theme-preset="theme5"] .sidebar__section-title {
|
|
494
|
+
background: linear-gradient(90deg, #0e7490, #22d3ee);
|
|
495
|
+
-webkit-background-clip: text;
|
|
496
|
+
background-clip: text;
|
|
497
|
+
color: transparent;
|
|
498
|
+
-webkit-text-fill-color: transparent;
|
|
499
|
+
font-weight: 800;
|
|
500
|
+
letter-spacing: 0.6px;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
/* smaller, pill-round tiles */
|
|
504
|
+
:root[data-theme-preset="theme5"] .option-thumbnail {
|
|
505
|
+
min-height: 42px;
|
|
506
|
+
padding: 6px 3px;
|
|
507
|
+
border-radius: 16px;
|
|
508
|
+
}
|
|
509
|
+
:root[data-theme-preset="theme5"] .frame-size-btn { padding: 5px 8px; font-size: 9px; border-radius: 999px; }
|
|
510
|
+
:root[data-theme-preset="theme5"] .option-thumbnail__name { font-size: var(--font-size-xs); }
|
|
511
|
+
:root[data-theme-preset="theme5"] .sidebar-container { font-family: var(--font-family-base); }
|
|
512
|
+
:root[data-theme-preset="theme5"] .sidebar-toggle-btn { border-radius: 16px; }
|
|
513
|
+
|
|
514
|
+
/* selected/hover tiles — teal border + soft cyan ring */
|
|
515
|
+
:root[data-theme-preset="theme5"] .option-thumbnail--selected,
|
|
516
|
+
:root[data-theme-preset="theme5"] .frame-size-btn--selected {
|
|
517
|
+
border-color: var(--color-brand-primary-dark);
|
|
518
|
+
box-shadow: 0 0 0 3px var(--color-selection-light);
|
|
519
|
+
}
|
|
520
|
+
:root[data-theme-preset="theme5"] .option-thumbnail:hover,
|
|
521
|
+
:root[data-theme-preset="theme5"] .frame-size-btn:hover,
|
|
522
|
+
:root[data-theme-preset="theme5"] .color-swatch:hover .color-swatch__color {
|
|
523
|
+
border-color: var(--color-brand-primary-dark);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
/* sidebar position — roomier left inset */
|
|
527
|
+
:root[data-theme-preset="theme5"] .sidebar-container { left: 20px; top: 20px; bottom: 20px; }
|
|
528
|
+
:root[data-theme-preset="theme5"] .main-layout__scene--sidebar-open {
|
|
529
|
+
padding-left: calc(var(--sidebar-width) + 40px);
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
}
|