@orion-studios/payload-admin-components 0.1.0 → 0.2.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.
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Orion Studios Admin Theme System
3
+ *
4
+ * Import all theme files and overrides.
5
+ * Usage in payload.config.ts:
6
+ * export default buildConfig({
7
+ * admin: {
8
+ * css: require.resolve('@orion-studios/payload-admin-components/dist/admin.css'),
9
+ * },
10
+ * })
11
+ */
12
+
13
+ /* Default brand colors (overridden by configureAdmin) */
14
+ :root {
15
+ --brand-primary: #3b82f6;
16
+ --brand-secondary: #8b5cf6;
17
+ }
18
+
19
+ /* Theme files */
20
+ @import './themes/light.css';
21
+ @import './themes/dark.css';
22
+ @import './themes/brand-light.css';
23
+ @import './themes/brand-dark.css';
24
+
25
+ /* Payload UI overrides */
26
+ @import './overrides.css';
27
+
28
+ /* Default to light theme when no data-theme attribute is set */
29
+ :root:not([data-theme]) {
30
+ --admin-bg: #ffffff;
31
+ --admin-surface: #f9fafb;
32
+ --admin-surface-elevated: #ffffff;
33
+ --admin-border: #e5e7eb;
34
+ --admin-border-subtle: #f3f4f6;
35
+ --admin-text: #111827;
36
+ --admin-text-secondary: #4b5563;
37
+ --admin-text-muted: #9ca3af;
38
+ --admin-text-inverse: #ffffff;
39
+ --admin-accent: #3b82f6;
40
+ --admin-accent-hover: #2563eb;
41
+ --admin-accent-subtle: #eff6ff;
42
+ --admin-accent-secondary: #8b5cf6;
43
+ --admin-accent-secondary-hover: #7c3aed;
44
+ --admin-accent-secondary-subtle: #f5f3ff;
45
+ --admin-nav-bg: #f8fafc;
46
+ --admin-nav-text: #374151;
47
+ --admin-nav-text-active: #111827;
48
+ --admin-nav-item-hover: #f1f5f9;
49
+ --admin-nav-item-active: #e0e7ff;
50
+ --admin-nav-group-text: #6b7280;
51
+ --admin-nav-border: #e2e8f0;
52
+ --admin-input-bg: #ffffff;
53
+ --admin-input-border: #d1d5db;
54
+ --admin-input-border-focus: var(--admin-accent);
55
+ --admin-input-placeholder: #9ca3af;
56
+ --admin-card-bg: #ffffff;
57
+ --admin-card-border: #e5e7eb;
58
+ --admin-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04);
59
+ --admin-card-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);
60
+ --admin-success: #16a34a;
61
+ --admin-success-bg: #f0fdf4;
62
+ --admin-warning: #d97706;
63
+ --admin-warning-bg: #fffbeb;
64
+ --admin-error: #dc2626;
65
+ --admin-error-bg: #fef2f2;
66
+ --admin-info: #0284c7;
67
+ --admin-info-bg: #f0f9ff;
68
+ --admin-tooltip-bg: #1f2937;
69
+ --admin-tooltip-text: #f9fafb;
70
+ --admin-overlay: rgba(0, 0, 0, 0.3);
71
+ --admin-scrollbar-track: #f1f5f9;
72
+ --admin-scrollbar-thumb: #cbd5e1;
73
+ --admin-scrollbar-thumb-hover: #94a3b8;
74
+ --admin-focus-ring: 0 0 0 2px #eff6ff, 0 0 0 4px #3b82f6;
75
+ --admin-radius-sm: 6px;
76
+ --admin-radius-md: 8px;
77
+ --admin-radius-lg: 12px;
78
+ --admin-radius-xl: 16px;
79
+ --admin-badge-draft-bg: #fef3c7;
80
+ --admin-badge-draft-text: #92400e;
81
+ --admin-badge-published-bg: #dcfce7;
82
+ --admin-badge-published-text: #166534;
83
+ --admin-badge-changed-bg: #dbeafe;
84
+ --admin-badge-changed-text: #1e40af;
85
+ }
@@ -0,0 +1,375 @@
1
+ /**
2
+ * Payload CMS UI Overrides
3
+ * Applies our theme variables to Payload's default admin UI elements
4
+ */
5
+
6
+ /* ============================================================
7
+ Base / Body
8
+ ============================================================ */
9
+ body {
10
+ background-color: var(--admin-bg) !important;
11
+ color: var(--admin-text) !important;
12
+ }
13
+
14
+ /* ============================================================
15
+ Typography
16
+ ============================================================ */
17
+ h1, h2, h3, h4, h5, h6 {
18
+ color: var(--admin-text) !important;
19
+ }
20
+
21
+ /* ============================================================
22
+ Smooth Transitions (selective, not wildcard)
23
+ ============================================================ */
24
+ body,
25
+ .nav,
26
+ .nav__content,
27
+ .nav a,
28
+ .template-default,
29
+ .collection-list,
30
+ .dashboard,
31
+ button,
32
+ input,
33
+ select,
34
+ textarea,
35
+ .field-type,
36
+ .card,
37
+ .popup,
38
+ a {
39
+ transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
40
+ }
41
+
42
+ /* ============================================================
43
+ Sidebar / Navigation
44
+ ============================================================ */
45
+ .nav {
46
+ background-color: var(--admin-nav-bg) !important;
47
+ border-right-color: var(--admin-nav-border) !important;
48
+ }
49
+
50
+ .nav a,
51
+ .nav__link {
52
+ color: var(--admin-nav-text) !important;
53
+ border-radius: var(--admin-radius-sm) !important;
54
+ padding: 8px 12px !important;
55
+ }
56
+
57
+ .nav a:hover,
58
+ .nav__link:hover {
59
+ background-color: var(--admin-nav-item-hover) !important;
60
+ color: var(--admin-nav-text-active) !important;
61
+ }
62
+
63
+ .nav a.active,
64
+ .nav__link.active {
65
+ background-color: var(--admin-nav-item-active) !important;
66
+ color: var(--admin-nav-text-active) !important;
67
+ font-weight: 600 !important;
68
+ }
69
+
70
+ /* Nav group labels (e.g., "Site Design") */
71
+ .nav-group__label,
72
+ .nav__label {
73
+ color: var(--admin-nav-group-text) !important;
74
+ font-size: 11px !important;
75
+ font-weight: 700 !important;
76
+ letter-spacing: 0.05em !important;
77
+ text-transform: uppercase !important;
78
+ padding: 16px 12px 6px !important;
79
+ }
80
+
81
+ /* ============================================================
82
+ Buttons
83
+ ============================================================ */
84
+ button[type="submit"],
85
+ .btn--style-primary {
86
+ background-color: var(--admin-accent) !important;
87
+ border-radius: var(--admin-radius-md) !important;
88
+ border: none !important;
89
+ color: var(--admin-text-inverse) !important;
90
+ font-weight: 600 !important;
91
+ padding: 10px 20px !important;
92
+ }
93
+
94
+ button[type="submit"]:hover,
95
+ .btn--style-primary:hover {
96
+ background-color: var(--admin-accent-hover) !important;
97
+ transform: translateY(-1px);
98
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15) !important;
99
+ }
100
+
101
+ button[type="submit"]:active,
102
+ .btn--style-primary:active {
103
+ transform: translateY(0);
104
+ }
105
+
106
+ .btn--style-secondary {
107
+ background-color: transparent !important;
108
+ border: 1px solid var(--admin-border) !important;
109
+ border-radius: var(--admin-radius-md) !important;
110
+ color: var(--admin-text) !important;
111
+ }
112
+
113
+ .btn--style-secondary:hover {
114
+ background-color: var(--admin-surface) !important;
115
+ border-color: var(--admin-accent) !important;
116
+ color: var(--admin-accent) !important;
117
+ }
118
+
119
+ /* ============================================================
120
+ Form Inputs
121
+ ============================================================ */
122
+ input,
123
+ textarea,
124
+ select,
125
+ .field-type input,
126
+ .field-type textarea,
127
+ .field-type select {
128
+ background-color: var(--admin-input-bg) !important;
129
+ border: 1px solid var(--admin-input-border) !important;
130
+ border-radius: var(--admin-radius-md) !important;
131
+ color: var(--admin-text) !important;
132
+ padding: 10px 14px !important;
133
+ }
134
+
135
+ input:focus,
136
+ textarea:focus,
137
+ select:focus,
138
+ .field-type input:focus,
139
+ .field-type textarea:focus,
140
+ .field-type select:focus {
141
+ border-color: var(--admin-input-border-focus) !important;
142
+ box-shadow: var(--admin-focus-ring) !important;
143
+ outline: none !important;
144
+ }
145
+
146
+ input::placeholder,
147
+ textarea::placeholder {
148
+ color: var(--admin-input-placeholder) !important;
149
+ }
150
+
151
+ /* Field labels */
152
+ .field-type .field-label,
153
+ label {
154
+ color: var(--admin-text-secondary) !important;
155
+ font-weight: 500 !important;
156
+ font-size: 13px !important;
157
+ margin-bottom: 6px !important;
158
+ }
159
+
160
+ /* Field descriptions */
161
+ .field-description {
162
+ color: var(--admin-text-muted) !important;
163
+ font-size: 12px !important;
164
+ }
165
+
166
+ /* ============================================================
167
+ Cards & Panels
168
+ ============================================================ */
169
+ .card,
170
+ .collection-list__card {
171
+ background-color: var(--admin-card-bg) !important;
172
+ border: 1px solid var(--admin-card-border) !important;
173
+ border-radius: var(--admin-radius-lg) !important;
174
+ box-shadow: var(--admin-card-shadow) !important;
175
+ }
176
+
177
+ .card:hover,
178
+ .collection-list__card:hover {
179
+ box-shadow: var(--admin-card-shadow-hover) !important;
180
+ border-color: var(--admin-accent) !important;
181
+ }
182
+
183
+ /* ============================================================
184
+ Collapsible Sections (improved styling)
185
+ ============================================================ */
186
+ .collapsible {
187
+ border: 1px solid var(--admin-border) !important;
188
+ border-radius: var(--admin-radius-lg) !important;
189
+ margin-bottom: 12px !important;
190
+ overflow: hidden;
191
+ }
192
+
193
+ .collapsible__toggle {
194
+ background-color: var(--admin-surface) !important;
195
+ padding: 14px 16px !important;
196
+ border-bottom: 1px solid var(--admin-border-subtle) !important;
197
+ }
198
+
199
+ .collapsible__toggle:hover {
200
+ background-color: var(--admin-nav-item-hover) !important;
201
+ }
202
+
203
+ .collapsible__content {
204
+ padding: 16px !important;
205
+ }
206
+
207
+ /* ============================================================
208
+ Tables / List Views
209
+ ============================================================ */
210
+ .table {
211
+ border-radius: var(--admin-radius-lg) !important;
212
+ overflow: hidden;
213
+ border: 1px solid var(--admin-border) !important;
214
+ }
215
+
216
+ .table th {
217
+ background-color: var(--admin-surface) !important;
218
+ color: var(--admin-text-secondary) !important;
219
+ font-weight: 600 !important;
220
+ font-size: 12px !important;
221
+ text-transform: uppercase !important;
222
+ letter-spacing: 0.04em !important;
223
+ }
224
+
225
+ .table td {
226
+ border-bottom-color: var(--admin-border-subtle) !important;
227
+ }
228
+
229
+ .table tr:hover td {
230
+ background-color: var(--admin-surface) !important;
231
+ }
232
+
233
+ /* ============================================================
234
+ Tabs
235
+ ============================================================ */
236
+ .tabs-field__tabs {
237
+ border-bottom: 2px solid var(--admin-border) !important;
238
+ gap: 4px !important;
239
+ }
240
+
241
+ .tabs-field__tab-button {
242
+ border-radius: var(--admin-radius-sm) var(--admin-radius-sm) 0 0 !important;
243
+ color: var(--admin-text-muted) !important;
244
+ font-weight: 500 !important;
245
+ padding: 10px 16px !important;
246
+ }
247
+
248
+ .tabs-field__tab-button:hover {
249
+ color: var(--admin-text) !important;
250
+ background-color: var(--admin-surface) !important;
251
+ }
252
+
253
+ .tabs-field__tab-button--active {
254
+ color: var(--admin-accent) !important;
255
+ border-bottom: 2px solid var(--admin-accent) !important;
256
+ font-weight: 600 !important;
257
+ }
258
+
259
+ /* ============================================================
260
+ Status Pills / Badges
261
+ ============================================================ */
262
+ .status-pill,
263
+ .pill {
264
+ border-radius: 20px !important;
265
+ font-size: 12px !important;
266
+ font-weight: 600 !important;
267
+ padding: 3px 10px !important;
268
+ }
269
+
270
+ /* ============================================================
271
+ Popups / Modals
272
+ ============================================================ */
273
+ .popup {
274
+ background-color: var(--admin-card-bg) !important;
275
+ border: 1px solid var(--admin-border) !important;
276
+ border-radius: var(--admin-radius-lg) !important;
277
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12) !important;
278
+ }
279
+
280
+ /* ============================================================
281
+ Scrollbars (webkit)
282
+ ============================================================ */
283
+ ::-webkit-scrollbar {
284
+ width: 8px;
285
+ height: 8px;
286
+ }
287
+
288
+ ::-webkit-scrollbar-track {
289
+ background: var(--admin-scrollbar-track);
290
+ }
291
+
292
+ ::-webkit-scrollbar-thumb {
293
+ background: var(--admin-scrollbar-thumb);
294
+ border-radius: 4px;
295
+ }
296
+
297
+ ::-webkit-scrollbar-thumb:hover {
298
+ background: var(--admin-scrollbar-thumb-hover);
299
+ }
300
+
301
+ /* Firefox scrollbar */
302
+ * {
303
+ scrollbar-width: thin;
304
+ scrollbar-color: var(--admin-scrollbar-thumb) var(--admin-scrollbar-track);
305
+ }
306
+
307
+ /* ============================================================
308
+ Main Content Area
309
+ ============================================================ */
310
+ .template-default,
311
+ .template-default__content {
312
+ background-color: var(--admin-bg) !important;
313
+ }
314
+
315
+ /* Document header area */
316
+ .doc-header {
317
+ border-bottom-color: var(--admin-border) !important;
318
+ }
319
+
320
+ /* ============================================================
321
+ Breadcrumbs
322
+ ============================================================ */
323
+ .step-nav a {
324
+ color: var(--admin-text-muted) !important;
325
+ }
326
+
327
+ .step-nav a:hover {
328
+ color: var(--admin-accent) !important;
329
+ }
330
+
331
+ /* ============================================================
332
+ Upload / Dropzone
333
+ ============================================================ */
334
+ .dropzone {
335
+ border: 2px dashed var(--admin-border) !important;
336
+ border-radius: var(--admin-radius-lg) !important;
337
+ background-color: var(--admin-surface) !important;
338
+ }
339
+
340
+ .dropzone:hover,
341
+ .dropzone--dragging {
342
+ border-color: var(--admin-accent) !important;
343
+ background-color: var(--admin-accent-subtle) !important;
344
+ }
345
+
346
+ /* ============================================================
347
+ Rich Text Editor
348
+ ============================================================ */
349
+ .rich-text {
350
+ border: 1px solid var(--admin-input-border) !important;
351
+ border-radius: var(--admin-radius-md) !important;
352
+ }
353
+
354
+ .rich-text:focus-within {
355
+ border-color: var(--admin-input-border-focus) !important;
356
+ box-shadow: var(--admin-focus-ring) !important;
357
+ }
358
+
359
+ /* ============================================================
360
+ Toast / Notifications
361
+ ============================================================ */
362
+ .toast-container .toast {
363
+ border-radius: var(--admin-radius-md) !important;
364
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12) !important;
365
+ }
366
+
367
+ /* ============================================================
368
+ Empty Collection States
369
+ ============================================================ */
370
+ .collection-list--no-results {
371
+ background-color: var(--admin-surface) !important;
372
+ border-radius: var(--admin-radius-lg) !important;
373
+ padding: 48px 24px !important;
374
+ text-align: center;
375
+ }
@@ -0,0 +1,69 @@
1
+ /* Brand Dark Theme - Dark backgrounds with brand color accents */
2
+ /* --brand-primary and --brand-secondary are set by configureAdmin() */
3
+ [data-theme="brand-dark"] {
4
+ --admin-bg: #0f1117;
5
+ --admin-surface: color-mix(in srgb, var(--brand-primary) 5%, #1a1d27);
6
+ --admin-surface-elevated: color-mix(in srgb, var(--brand-primary) 6%, #242836);
7
+ --admin-border: color-mix(in srgb, var(--brand-primary) 12%, #2e3345);
8
+ --admin-border-subtle: color-mix(in srgb, var(--brand-primary) 6%, #1e2231);
9
+
10
+ --admin-text: #f1f5f9;
11
+ --admin-text-secondary: #94a3b8;
12
+ --admin-text-muted: #64748b;
13
+ --admin-text-inverse: #0f1117;
14
+
15
+ --admin-accent: color-mix(in srgb, var(--brand-primary) 70%, #ffffff);
16
+ --admin-accent-hover: color-mix(in srgb, var(--brand-primary) 55%, #ffffff);
17
+ --admin-accent-subtle: color-mix(in srgb, var(--brand-primary) 15%, transparent);
18
+ --admin-accent-secondary: color-mix(in srgb, var(--brand-secondary) 70%, #ffffff);
19
+ --admin-accent-secondary-hover: color-mix(in srgb, var(--brand-secondary) 55%, #ffffff);
20
+ --admin-accent-secondary-subtle: color-mix(in srgb, var(--brand-secondary) 15%, transparent);
21
+
22
+ --admin-nav-bg: color-mix(in srgb, var(--brand-primary) 8%, #141722);
23
+ --admin-nav-text: #94a3b8;
24
+ --admin-nav-text-active: color-mix(in srgb, var(--brand-primary) 60%, #ffffff);
25
+ --admin-nav-item-hover: color-mix(in srgb, var(--brand-primary) 10%, #1e2231);
26
+ --admin-nav-item-active: color-mix(in srgb, var(--brand-primary) 18%, #1a1d27);
27
+ --admin-nav-group-text: color-mix(in srgb, var(--brand-primary) 30%, #64748b);
28
+ --admin-nav-border: color-mix(in srgb, var(--brand-primary) 12%, #2e3345);
29
+
30
+ --admin-input-bg: color-mix(in srgb, var(--brand-primary) 3%, #1a1d27);
31
+ --admin-input-border: color-mix(in srgb, var(--brand-primary) 15%, #2e3345);
32
+ --admin-input-border-focus: var(--admin-accent);
33
+ --admin-input-placeholder: #475569;
34
+
35
+ --admin-card-bg: color-mix(in srgb, var(--brand-primary) 5%, #1a1d27);
36
+ --admin-card-border: color-mix(in srgb, var(--brand-primary) 12%, #2e3345);
37
+ --admin-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.2);
38
+ --admin-card-shadow-hover: 0 4px 12px color-mix(in srgb, var(--brand-primary) 15%, rgba(0, 0, 0, 0.4)), 0 2px 4px rgba(0, 0, 0, 0.3);
39
+
40
+ --admin-success: #4ade80;
41
+ --admin-success-bg: rgba(74, 222, 128, 0.1);
42
+ --admin-warning: #fbbf24;
43
+ --admin-warning-bg: rgba(251, 191, 36, 0.1);
44
+ --admin-error: #f87171;
45
+ --admin-error-bg: rgba(248, 113, 113, 0.1);
46
+ --admin-info: color-mix(in srgb, var(--brand-secondary) 60%, #ffffff);
47
+ --admin-info-bg: color-mix(in srgb, var(--brand-secondary) 10%, transparent);
48
+
49
+ --admin-badge-draft-bg: rgba(251, 191, 36, 0.15);
50
+ --admin-badge-draft-text: #fcd34d;
51
+ --admin-badge-published-bg: rgba(74, 222, 128, 0.15);
52
+ --admin-badge-published-text: #86efac;
53
+ --admin-badge-changed-bg: color-mix(in srgb, var(--brand-secondary) 15%, transparent);
54
+ --admin-badge-changed-text: color-mix(in srgb, var(--brand-secondary) 60%, #ffffff);
55
+
56
+ --admin-tooltip-bg: #f1f5f9;
57
+ --admin-tooltip-text: #1a1d27;
58
+
59
+ --admin-overlay: rgba(0, 0, 0, 0.6);
60
+ --admin-scrollbar-track: color-mix(in srgb, var(--brand-primary) 5%, #1a1d27);
61
+ --admin-scrollbar-thumb: color-mix(in srgb, var(--brand-primary) 20%, #2e3345);
62
+ --admin-scrollbar-thumb-hover: color-mix(in srgb, var(--brand-primary) 30%, #3b4559);
63
+
64
+ --admin-focus-ring: 0 0 0 2px var(--admin-accent-subtle), 0 0 0 4px var(--admin-accent);
65
+ --admin-radius-sm: 6px;
66
+ --admin-radius-md: 8px;
67
+ --admin-radius-lg: 12px;
68
+ --admin-radius-xl: 16px;
69
+ }
@@ -0,0 +1,69 @@
1
+ /* Brand Light Theme - Brand colors on light backgrounds */
2
+ /* --brand-primary and --brand-secondary are set by configureAdmin() */
3
+ [data-theme="brand-light"] {
4
+ --admin-bg: #ffffff;
5
+ --admin-surface: color-mix(in srgb, var(--brand-primary) 3%, #f9fafb);
6
+ --admin-surface-elevated: #ffffff;
7
+ --admin-border: color-mix(in srgb, var(--brand-primary) 12%, #e5e7eb);
8
+ --admin-border-subtle: color-mix(in srgb, var(--brand-primary) 5%, #f3f4f6);
9
+
10
+ --admin-text: #111827;
11
+ --admin-text-secondary: #4b5563;
12
+ --admin-text-muted: #9ca3af;
13
+ --admin-text-inverse: #ffffff;
14
+
15
+ --admin-accent: var(--brand-primary);
16
+ --admin-accent-hover: color-mix(in srgb, var(--brand-primary) 85%, #000000);
17
+ --admin-accent-subtle: color-mix(in srgb, var(--brand-primary) 8%, #ffffff);
18
+ --admin-accent-secondary: var(--brand-secondary);
19
+ --admin-accent-secondary-hover: color-mix(in srgb, var(--brand-secondary) 85%, #000000);
20
+ --admin-accent-secondary-subtle: color-mix(in srgb, var(--brand-secondary) 8%, #ffffff);
21
+
22
+ --admin-nav-bg: color-mix(in srgb, var(--brand-primary) 6%, #f8fafc);
23
+ --admin-nav-text: #374151;
24
+ --admin-nav-text-active: var(--brand-primary);
25
+ --admin-nav-item-hover: color-mix(in srgb, var(--brand-primary) 8%, #f1f5f9);
26
+ --admin-nav-item-active: color-mix(in srgb, var(--brand-primary) 12%, #ffffff);
27
+ --admin-nav-group-text: color-mix(in srgb, var(--brand-primary) 40%, #6b7280);
28
+ --admin-nav-border: color-mix(in srgb, var(--brand-primary) 10%, #e2e8f0);
29
+
30
+ --admin-input-bg: #ffffff;
31
+ --admin-input-border: color-mix(in srgb, var(--brand-primary) 15%, #d1d5db);
32
+ --admin-input-border-focus: var(--brand-primary);
33
+ --admin-input-placeholder: #9ca3af;
34
+
35
+ --admin-card-bg: #ffffff;
36
+ --admin-card-border: color-mix(in srgb, var(--brand-primary) 10%, #e5e7eb);
37
+ --admin-card-shadow: 0 1px 3px color-mix(in srgb, var(--brand-primary) 6%, transparent), 0 1px 2px rgba(0, 0, 0, 0.04);
38
+ --admin-card-shadow-hover: 0 4px 12px color-mix(in srgb, var(--brand-primary) 10%, transparent), 0 2px 4px rgba(0, 0, 0, 0.04);
39
+
40
+ --admin-success: #16a34a;
41
+ --admin-success-bg: #f0fdf4;
42
+ --admin-warning: #d97706;
43
+ --admin-warning-bg: #fffbeb;
44
+ --admin-error: #dc2626;
45
+ --admin-error-bg: #fef2f2;
46
+ --admin-info: var(--brand-secondary);
47
+ --admin-info-bg: color-mix(in srgb, var(--brand-secondary) 8%, #ffffff);
48
+
49
+ --admin-badge-draft-bg: #fef3c7;
50
+ --admin-badge-draft-text: #92400e;
51
+ --admin-badge-published-bg: #dcfce7;
52
+ --admin-badge-published-text: #166534;
53
+ --admin-badge-changed-bg: color-mix(in srgb, var(--brand-secondary) 15%, #ffffff);
54
+ --admin-badge-changed-text: var(--brand-secondary);
55
+
56
+ --admin-tooltip-bg: color-mix(in srgb, var(--brand-primary) 90%, #1f2937);
57
+ --admin-tooltip-text: #f9fafb;
58
+
59
+ --admin-overlay: rgba(0, 0, 0, 0.3);
60
+ --admin-scrollbar-track: color-mix(in srgb, var(--brand-primary) 4%, #f1f5f9);
61
+ --admin-scrollbar-thumb: color-mix(in srgb, var(--brand-primary) 20%, #cbd5e1);
62
+ --admin-scrollbar-thumb-hover: color-mix(in srgb, var(--brand-primary) 30%, #94a3b8);
63
+
64
+ --admin-focus-ring: 0 0 0 2px var(--admin-accent-subtle), 0 0 0 4px var(--admin-accent);
65
+ --admin-radius-sm: 6px;
66
+ --admin-radius-md: 8px;
67
+ --admin-radius-lg: 12px;
68
+ --admin-radius-xl: 16px;
69
+ }
@@ -0,0 +1,68 @@
1
+ /* Dark Theme - Rich dark backgrounds, light text, blue accents */
2
+ [data-theme="dark"] {
3
+ --admin-bg: #0f1117;
4
+ --admin-surface: #1a1d27;
5
+ --admin-surface-elevated: #242836;
6
+ --admin-border: #2e3345;
7
+ --admin-border-subtle: #1e2231;
8
+
9
+ --admin-text: #f1f5f9;
10
+ --admin-text-secondary: #94a3b8;
11
+ --admin-text-muted: #64748b;
12
+ --admin-text-inverse: #0f1117;
13
+
14
+ --admin-accent: #60a5fa;
15
+ --admin-accent-hover: #93bbfd;
16
+ --admin-accent-subtle: rgba(96, 165, 250, 0.12);
17
+ --admin-accent-secondary: #a78bfa;
18
+ --admin-accent-secondary-hover: #c4b5fd;
19
+ --admin-accent-secondary-subtle: rgba(167, 139, 250, 0.12);
20
+
21
+ --admin-nav-bg: #141722;
22
+ --admin-nav-text: #94a3b8;
23
+ --admin-nav-text-active: #f1f5f9;
24
+ --admin-nav-item-hover: #1e2231;
25
+ --admin-nav-item-active: rgba(96, 165, 250, 0.15);
26
+ --admin-nav-group-text: #64748b;
27
+ --admin-nav-border: #2e3345;
28
+
29
+ --admin-input-bg: #1a1d27;
30
+ --admin-input-border: #2e3345;
31
+ --admin-input-border-focus: var(--admin-accent);
32
+ --admin-input-placeholder: #475569;
33
+
34
+ --admin-card-bg: #1a1d27;
35
+ --admin-card-border: #2e3345;
36
+ --admin-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.2);
37
+ --admin-card-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.4), 0 2px 4px rgba(0, 0, 0, 0.3);
38
+
39
+ --admin-success: #4ade80;
40
+ --admin-success-bg: rgba(74, 222, 128, 0.1);
41
+ --admin-warning: #fbbf24;
42
+ --admin-warning-bg: rgba(251, 191, 36, 0.1);
43
+ --admin-error: #f87171;
44
+ --admin-error-bg: rgba(248, 113, 113, 0.1);
45
+ --admin-info: #38bdf8;
46
+ --admin-info-bg: rgba(56, 189, 248, 0.1);
47
+
48
+ --admin-badge-draft-bg: rgba(251, 191, 36, 0.15);
49
+ --admin-badge-draft-text: #fcd34d;
50
+ --admin-badge-published-bg: rgba(74, 222, 128, 0.15);
51
+ --admin-badge-published-text: #86efac;
52
+ --admin-badge-changed-bg: rgba(96, 165, 250, 0.15);
53
+ --admin-badge-changed-text: #93c5fd;
54
+
55
+ --admin-tooltip-bg: #f1f5f9;
56
+ --admin-tooltip-text: #1a1d27;
57
+
58
+ --admin-overlay: rgba(0, 0, 0, 0.6);
59
+ --admin-scrollbar-track: #1a1d27;
60
+ --admin-scrollbar-thumb: #2e3345;
61
+ --admin-scrollbar-thumb-hover: #3b4559;
62
+
63
+ --admin-focus-ring: 0 0 0 2px var(--admin-accent-subtle), 0 0 0 4px var(--admin-accent);
64
+ --admin-radius-sm: 6px;
65
+ --admin-radius-md: 8px;
66
+ --admin-radius-lg: 12px;
67
+ --admin-radius-xl: 16px;
68
+ }