@bergetai/ui 0.1.80 → 0.1.82

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.
@@ -117,14 +117,14 @@
117
117
  /* ── Surfaces ───────────────────────────────────────────────────── */
118
118
  --berget-background: var(--berget-brand-granite-950); /* Bedrock · page bg */
119
119
  --berget-foreground: var(--berget-brand-sandstone-100); /* warm white · primary text */
120
- --berget-foreground-alt: color-mix(in oklch, var(--berget-brand-sandstone-100) 80%, transparent);
121
- --berget-body-background: color-mix(in oklch, var(--berget-brand-sandstone-100) 80%, transparent);
120
+ --berget-foreground-alt: color-mix(in oklch, var(--berget-foreground) 80%, transparent);
121
+ --berget-body-background: color-mix(in oklch, var(--berget-foreground) 80%, transparent);
122
122
  --berget-mid-alt: var(--berget-brand-granite-950);
123
123
 
124
124
  /* ── Core surface + text aliases ────────────────────────────────── */
125
125
  --berget-surface-01: var(--berget-brand-granite-900);
126
126
  --berget-surface-02: var(--berget-brand-granite-800);
127
- --berget-surface-subtlest: color-mix(in oklch, var(--berget-brand-sandstone-100) 3%, transparent);
127
+ --berget-surface-subtlest: color-mix(in oklch, var(--berget-foreground) 3%, transparent);
128
128
  --berget-text-inverse: var(--berget-brand-granite-950);
129
129
 
130
130
  /* ── Cards / containers ─────────────────────────────────────────── */
@@ -133,18 +133,14 @@
133
133
  --berget-popover: var(--berget-brand-granite-900);
134
134
  --berget-popover-foreground: var(--berget-brand-sandstone-100);
135
135
  --berget-muted: var(--berget-brand-granite-950);
136
- --berget-muted-foreground: color-mix(
137
- in oklch,
138
- var(--berget-brand-sandstone-100) 80%,
139
- transparent
140
- );
136
+ --berget-muted-foreground: color-mix(in oklch, var(--berget-foreground) 80%, transparent);
141
137
 
142
138
  /* ── Surface semantic aliases ────────────────────────────────────── */
143
139
  --berget-primary: var(--berget-brand-sandstone-100); /* primary CTA / action */
144
- --berget-primary-foreground: var(--berget-brand-sandstone-100);
140
+ --berget-primary-foreground: var(--berget-foreground);
145
141
  --berget-primary-hover: var(--berget-brand-granite-950);
146
142
  --berget-secondary: var(--berget-brand-moss-400); /* moss = action */
147
- --berget-secondary-foreground: var(--berget-brand-sandstone-100);
143
+ --berget-secondary-foreground: var(--berget-foreground);
148
144
  --berget-secondary-hover: color-mix(in oklch, var(--berget-brand-moss-400) 40%, transparent);
149
145
 
150
146
  /* ── Accent ──────────────────────────────────────────────────────── */
@@ -156,12 +152,12 @@
156
152
  /* ── Ghost ───────────────────────────────────────────────────────·─ */
157
153
  --berget-ghost: color-mix(in oklch, var(--berget-brand-granite-900) 40%, transparent);
158
154
  --berget-ghost-hover: color-mix(in oklch, var(--berget-brand-granite-900) 80%, transparent);
159
- --berget-ghost-foreground: var(--berget-brand-sandstone-100);
155
+ --berget-ghost-foreground: var(--berget-foreground);
160
156
 
161
157
  /* ── Outline ────────────────────────────────────────────────────── */
162
158
  --berget-outline: var(--berget-brand-moss-300); /* Lichen */
163
- --berget-outline-hover: color-mix(in oklch, var(--berget-brand-sandstone-100) 5%, transparent);
164
- --berget-outline-active: color-mix(in oklch, var(--berget-brand-sandstone-100) 15%, transparent);
159
+ --berget-outline-hover: color-mix(in oklch, var(--berget-foreground) 5%, transparent);
160
+ --berget-outline-active: color-mix(in oklch, var(--berget-foreground) 15%, transparent);
165
161
 
166
162
  /* ── Borders / inputs ───────────────────────────────────────────── */
167
163
  --berget-border: var(--berget-brand-granite-700);
@@ -176,34 +172,26 @@
176
172
 
177
173
  /* ── Sidebar ────────────────────────────────────────────────────── */
178
174
  --berget-sidebar: color-mix(in oklch, var(--berget-brand-granite-900) 40%, transparent);
179
- --berget-sidebar-foreground: color-mix(
180
- in oklch,
181
- var(--berget-brand-sandstone-100) 80%,
182
- transparent
183
- );
175
+ --berget-sidebar-foreground: color-mix(in oklch, var(--berget-foreground) 80%, transparent);
184
176
  --berget-sidebar-accent: var(--berget-brand-moss-400);
185
177
  --berget-sidebar-accent-foreground: var(--berget-brand-sandstone-100);
186
- --berget-sidebar-border: color-mix(in oklch, var(--berget-brand-sandstone-100) 5%, transparent);
178
+ --berget-sidebar-border: color-mix(in oklch, var(--berget-foreground) 5%, transparent);
187
179
  --berget-sidebar-ring: var(--berget-brand-moss-300);
188
180
 
189
181
  /* ── Utility ──────────────────────────────────────────────────────── */
190
- --berget-backdrop: color-mix(in oklch, var(--berget-brand-granite-900) 80%, transparent);
182
+ --berget-backdrop: color-mix(in oklch, var(--berget-surface-01) 80%, transparent);
191
183
 
192
184
  /* ── Interactive surface tints ──────────────────────────────────── */
193
- --berget-surface-hover: color-mix(in oklch, var(--berget-brand-sandstone-100) 2%, transparent);
194
- --berget-surface-subtle: color-mix(in oklch, var(--berget-brand-sandstone-100) 5%, transparent);
195
- --berget-surface-raised: color-mix(in oklch, var(--berget-brand-sandstone-100) 10%, transparent);
185
+ --berget-surface-hover: color-mix(in oklch, var(--berget-foreground) 2%, transparent);
186
+ --berget-surface-subtle: color-mix(in oklch, var(--berget-foreground) 5%, transparent);
187
+ --berget-surface-raised: color-mix(in oklch, var(--berget-foreground) 10%, transparent);
196
188
 
197
189
  /* ── Subtle borders ──────────────────────────────────────────────── */
198
- --berget-border-subtle: color-mix(in oklch, var(--berget-brand-sandstone-100) 10%, transparent);
199
- --berget-border-interactive: color-mix(
200
- in oklch,
201
- var(--berget-brand-sandstone-100) 20%,
202
- transparent
203
- );
190
+ --berget-border-subtle: color-mix(in oklch, var(--berget-foreground) 10%, transparent);
191
+ --berget-border-interactive: color-mix(in oklch, var(--berget-foreground) 20%, transparent);
204
192
  --berget-border-interactive-elevated: color-mix(
205
193
  in oklch,
206
- var(--berget-brand-sandstone-100) 30%,
194
+ var(--berget-foreground) 30%,
207
195
  transparent
208
196
  );
209
197
 
@@ -216,16 +204,12 @@
216
204
  --berget-form-focus-border: color-mix(in oklch, var(--berget-brand-moss-400) 40%, transparent);
217
205
 
218
206
  /* ── Dark surface hover (for elements on dark backgrounds) ───────── */
219
- --berget-surface-hover-dark: color-mix(
220
- in oklch,
221
- var(--berget-brand-granite-900) 20%,
222
- transparent
223
- );
207
+ --berget-surface-hover-dark: color-mix(in oklch, var(--berget-surface-01) 20%, transparent);
224
208
 
225
209
  /* ── Separator / icon tint ──────────────────────────────────────── */
226
- --berget-separator: color-mix(in oklch, var(--berget-brand-sandstone-100) 10%, transparent);
227
- --berget-separator-subtle: color-mix(in oklch, var(--berget-brand-sandstone-100) 5%, transparent);
228
- --berget-icon-muted: color-mix(in oklch, var(--berget-brand-sandstone-100) 60%, transparent);
210
+ --berget-separator: color-mix(in oklch, var(--berget-foreground) 10%, transparent);
211
+ --berget-separator-subtle: color-mix(in oklch, var(--berget-foreground) 5%, transparent);
212
+ --berget-icon-muted: color-mix(in oklch, var(--berget-foreground) 60%, transparent);
229
213
 
230
214
  /* ── Status ─────────────────────────────────────────────────────── */
231
215
  --berget-info: color-mix(in oklch, var(--berget-brand-fjord-400) 20%, transparent);
@@ -332,6 +316,187 @@
332
316
  --berget-font-mono: 'DM Mono', monospace;
333
317
  }
334
318
 
319
+ /*
320
+ * B.1 Light mode overrides
321
+ *
322
+ * Inverts the semantic palette so the same component code renders
323
+ * correctly without modification. Brand primitives stay unchanged.
324
+ * Only semantic tokens are overridden.
325
+ */
326
+ [data-theme='light'] {
327
+ /* ── Surfaces ───────────────────────────────────────────────────── */
328
+ --berget-background: var(--berget-brand-granite-50);
329
+ --berget-foreground: var(--berget-brand-granite-950);
330
+ --berget-foreground-alt: color-mix(in oklch, var(--berget-foreground) 80%, transparent);
331
+ --berget-body-background: color-mix(in oklch, var(--berget-foreground) 80%, transparent);
332
+ --berget-mid-alt: var(--berget-brand-sandstone-50);
333
+
334
+ /* ── Core surface + text aliases ────────────────────────────────── */
335
+ --berget-surface-01: var(--berget-brand-granite-100);
336
+ --berget-surface-02: var(--berget-brand-granite-200);
337
+ --berget-surface-subtlest: color-mix(in oklch, var(--berget-brand-granite-950) 5%, transparent);
338
+ --berget-text-inverse: var(--berget-brand-sandstone-100);
339
+
340
+ /* ── Cards / containers ─────────────────────────────────────────── */
341
+ --berget-card: color-mix(in oklch, var(--berget-brand-granite-100) 40%, transparent);
342
+ --berget-card-foreground: var(--berget-brand-granite-950);
343
+ --berget-popover: var(--berget-brand-granite-100);
344
+ --berget-popover-foreground: var(--berget-brand-granite-950);
345
+ --berget-muted: var(--berget-brand-sandstone-100);
346
+ --berget-muted-foreground: color-mix(in oklch, var(--berget-brand-granite-950) 70%, transparent);
347
+
348
+ /* ── Surface semantic aliases ────────────────────────────────────── */
349
+ --berget-primary: var(--berget-brand-granite-950);
350
+ --berget-primary-foreground: var(--berget-brand-sandstone-100);
351
+ --berget-primary-hover: var(--berget-brand-sandstone-50);
352
+ --berget-secondary: var(--berget-brand-moss-400);
353
+ --berget-secondary-foreground: var(--berget-brand-sandstone-100);
354
+ --berget-secondary-hover: color-mix(in oklch, var(--berget-brand-moss-400) 40%, transparent);
355
+
356
+ /* ── Accent ──────────────────────────────────────────────────────── */
357
+ --berget-accent: var(--berget-brand-moss-300);
358
+ --berget-accent-foreground: var(--berget-brand-granite-900);
359
+ --berget-accent-2: var(--berget-brand-chanterelle-300);
360
+ --berget-accent-3: var(--berget-brand-fjord-700);
361
+
362
+ /* ── Ghost ───────────────────────────────────────────────────────·─ */
363
+ --berget-ghost: color-mix(in oklch, var(--berget-brand-granite-900) 10%, transparent);
364
+ --berget-ghost-hover: color-mix(in oklch, var(--berget-brand-granite-900) 20%, transparent);
365
+ --berget-ghost-foreground: var(--berget-brand-granite-950);
366
+
367
+ /* ── Outline ────────────────────────────────────────────────────── */
368
+ --berget-outline: var(--berget-brand-moss-500);
369
+ --berget-outline-hover: color-mix(in oklch, var(--berget-brand-granite-950) 5%, transparent);
370
+ --berget-outline-active: color-mix(in oklch, var(--berget-brand-granite-950) 15%, transparent);
371
+
372
+ /* ── Borders / inputs ───────────────────────────────────────────── */
373
+ --berget-border: var(--berget-brand-granite-300);
374
+ --berget-input: var(--berget-brand-granite-300);
375
+ --berget-ring: var(--berget-brand-moss-300);
376
+ --berget-ring-error: var(--berget-brand-muscaria-500);
377
+
378
+ /* ── Destructive ────────────────────────────────────────────────── */
379
+ --berget-destructive: color-mix(in oklch, var(--berget-brand-muscaria-500) 20%, transparent);
380
+ --berget-destructive-border: var(--berget-brand-muscaria-500);
381
+ --berget-destructive-foreground: var(--berget-brand-muscaria-500);
382
+
383
+ /* ── Sidebar ────────────────────────────────────────────────────── */
384
+ --berget-sidebar: color-mix(in oklch, var(--berget-brand-granite-100) 40%, transparent);
385
+ --berget-sidebar-foreground: color-mix(
386
+ in oklch,
387
+ var(--berget-brand-granite-950) 80%,
388
+ transparent
389
+ );
390
+ --berget-sidebar-accent: var(--berget-brand-moss-400);
391
+ --berget-sidebar-accent-foreground: var(--berget-brand-sandstone-100);
392
+ --berget-sidebar-border: color-mix(in oklch, var(--berget-brand-granite-950) 5%, transparent);
393
+ --berget-sidebar-ring: var(--berget-brand-moss-300);
394
+
395
+ /* ── Utility ──────────────────────────────────────────────────────── */
396
+ --berget-backdrop: color-mix(in oklch, var(--berget-brand-granite-100) 80%, transparent);
397
+
398
+ /* ── Interactive surface tints ──────────────────────────────────── */
399
+ --berget-surface-hover: color-mix(in oklch, var(--berget-brand-granite-950) 2%, transparent);
400
+ --berget-surface-subtle: color-mix(in oklch, var(--berget-brand-granite-950) 5%, transparent);
401
+ --berget-surface-raised: color-mix(in oklch, var(--berget-brand-granite-950) 10%, transparent);
402
+
403
+ /* ── Subtle borders ──────────────────────────────────────────────── */
404
+ --berget-border-subtle: color-mix(in oklch, var(--berget-brand-granite-950) 10%, transparent);
405
+ --berget-border-interactive: color-mix(
406
+ in oklch,
407
+ var(--berget-brand-granite-950) 20%,
408
+ transparent
409
+ );
410
+ --berget-border-interactive-elevated: color-mix(
411
+ in oklch,
412
+ var(--berget-brand-granite-950) 30%,
413
+ transparent
414
+ );
415
+
416
+ /* ── Primary tint surfaces (for active/selected/focused states) ───── */
417
+ --berget-primary-tint: color-mix(in oklch, var(--berget-brand-moss-400) 10%, transparent);
418
+ --berget-primary-tint-hover: color-mix(in oklch, var(--berget-brand-moss-400) 20%, transparent);
419
+ --berget-primary-border: color-mix(in oklch, var(--berget-brand-moss-400) 50%, transparent);
420
+
421
+ /* ── Focus-visible ring on form controls ───────────────────────── */
422
+ --berget-form-focus-border: color-mix(in oklch, var(--berget-brand-moss-400) 40%, transparent);
423
+
424
+ /* ── Dark surface hover (for elements on dark backgrounds) ───────── */
425
+ --berget-surface-hover-dark: color-mix(
426
+ in oklch,
427
+ var(--berget-brand-granite-100) 20%,
428
+ transparent
429
+ );
430
+
431
+ /* ── Separator / icon tint ──────────────────────────────────────── */
432
+ --berget-separator: color-mix(in oklch, var(--berget-brand-granite-950) 10%, transparent);
433
+ --berget-separator-subtle: color-mix(in oklch, var(--berget-brand-granite-950) 5%, transparent);
434
+ --berget-icon-muted: color-mix(in oklch, var(--berget-brand-granite-950) 60%, transparent);
435
+
436
+ /* ── Status ─────────────────────────────────────────────────────── */
437
+ --berget-info: color-mix(in oklch, var(--berget-brand-fjord-500) 20%, transparent);
438
+ --berget-info-foreground: var(--berget-brand-fjord-600);
439
+ --berget-info-border: var(--berget-brand-fjord-500);
440
+ --berget-success: color-mix(in oklch, var(--berget-brand-moss-500) 20%, transparent);
441
+ --berget-success-foreground: var(--berget-brand-moss-600);
442
+ --berget-success-border: var(--berget-brand-moss-500);
443
+ --berget-warning: color-mix(in oklch, var(--berget-brand-chanterelle-400) 20%, transparent);
444
+ --berget-warning-foreground: var(--berget-brand-chanterelle-600);
445
+ --berget-warning-border: var(--berget-brand-chanterelle-400);
446
+
447
+ /* ── Card component-scoped tokens ───────────────────────────────── */
448
+ --berget-card-filled-bg: var(--berget-surface-01);
449
+
450
+ /* ── CodeBlock component-scoped tokens ──────────────────────────── */
451
+ --berget-codeblock-bg: var(--berget-surface-01);
452
+ --berget-codeblock-header-bg: color-mix(in oklch, var(--berget-surface-02) 40%, transparent);
453
+
454
+ /* ── Badge component-scoped tokens ──────────────────────────────── */
455
+ --berget-badge-default-bg: var(--berget-brand-moss-500);
456
+ --berget-badge-default-fg: var(--berget-foreground);
457
+ --berget-badge-active-bg: var(--berget-brand-moss-500);
458
+ --berget-badge-active-fg: var(--berget-foreground-alt);
459
+ --berget-badge-tag-default-bg: var(--berget-primary);
460
+ --berget-badge-tag-default-fg: color-mix(in oklch, var(--berget-text-inverse) 80%, transparent);
461
+ --berget-badge-tag-active-bg: var(--berget-surface-01);
462
+ --berget-badge-tag-active-fg: var(--berget-foreground);
463
+ --berget-badge-tag-ghost-bg: color-mix(in oklch, var(--berget-primary) 30%, transparent);
464
+ --berget-badge-tag-ghost-fg: color-mix(in oklch, var(--berget-text-inverse) 60%, transparent);
465
+
466
+ /* ── Switch component-scoped tokens ─────────────────────────────── */
467
+ --berget-switch-primary-checked: var(--berget-brand-moss-400);
468
+ --berget-switch-subtle-checked: var(--berget-brand-moss-300);
469
+
470
+ /* ── FeatureCards component-scoped tokens ─────────────────────── */
471
+ --berget-feature-card-badge-bg: var(--berget-brand-moss-500);
472
+ --berget-feature-card-badge-fg: var(--berget-foreground);
473
+
474
+ /* ── Logo tokens ──────────────────────────────────────────────── */
475
+ --berget-logo-light: var(--berget-brand-granite-950);
476
+ --berget-logo-dark: var(--berget-brand-sandstone-100);
477
+
478
+ /* ── Section component-scoped tokens ────────────────────────────── */
479
+ --berget-section-muted-bg: var(--berget-surface-subtlest);
480
+
481
+ /* ── Button component-scoped tokens ─────────────────────────────── */
482
+ --berget-button-default-bg: var(--berget-brand-granite-900);
483
+ --berget-button-default-fg: var(--berget-brand-sandstone-100);
484
+ --berget-button-primary-bg: var(--berget-brand-moss-400);
485
+ --berget-button-primary-fg: var(--berget-brand-granite-950);
486
+ --berget-button-secondary-bg: var(--berget-brand-moss-300);
487
+ --berget-button-secondary-fg: var(--berget-brand-granite-950);
488
+ --berget-button-destructive-bg: var(--berget-brand-muscaria-500);
489
+ --berget-button-destructive-fg: var(--berget-brand-sandstone-100);
490
+ --berget-button-link-fg: var(--berget-brand-moss-500);
491
+
492
+ /* ── Shadows ─────────────────────────────────────────────────────·─ */
493
+ --berget-shadow-sm: 0 4px 4px color-mix(in oklch, var(--berget-brand-granite-300) 5%, transparent);
494
+ --berget-shadow-md: 0 8px 8px 4px
495
+ color-mix(in oklch, var(--berget-brand-granite-300) 5%, transparent);
496
+ --berget-shadow-lg: 0 8px 12px
497
+ color-mix(in oklch, var(--berget-brand-granite-300) 40%, transparent);
498
+ }
499
+
335
500
  /*
336
501
  * B.2 Tint system
337
502
  *
@@ -354,6 +519,12 @@
354
519
  --berget-tint-hue-error: 29;
355
520
  }
356
521
 
522
+ [data-theme='light'] {
523
+ /* Lighter tinted backgrounds for light mode */
524
+ --berget-tint-l: 92%;
525
+ --berget-tint-border-l: 84%;
526
+ }
527
+
357
528
  /* one rule for any tinted container, whatever the component */
358
529
  .berget-tint {
359
530
  background: oklch(var(--berget-tint-l) var(--berget-tint-c) var(--berget-tint-h));
@@ -419,6 +590,28 @@
419
590
  --radius: 0.5rem;
420
591
  }
421
592
 
593
+ [data-theme='light'] {
594
+ --background: var(--berget-brand-granite-50);
595
+ --foreground: var(--berget-brand-granite-950);
596
+ --primary: var(--berget-brand-granite-950);
597
+ --primary-foreground: var(--berget-brand-sandstone-100);
598
+ --secondary: var(--berget-brand-moss-400);
599
+ --secondary-foreground: var(--berget-brand-sandstone-100);
600
+ --accent: var(--berget-brand-moss-300);
601
+ --accent-foreground: var(--berget-brand-granite-900);
602
+ --muted: var(--berget-brand-sandstone-100);
603
+ --muted-foreground: var(--berget-brand-granite-950);
604
+ --card: var(--berget-brand-granite-100);
605
+ --card-foreground: var(--berget-brand-granite-950);
606
+ --popover: var(--berget-brand-granite-100);
607
+ --popover-foreground: var(--berget-brand-granite-950);
608
+ --input: var(--berget-brand-granite-300);
609
+ --border: var(--berget-brand-granite-300);
610
+ --ring: var(--berget-brand-moss-300);
611
+ --destructive: var(--berget-brand-muscaria-500);
612
+ --destructive-foreground: var(--berget-brand-sandstone-100);
613
+ }
614
+
422
615
  body {
423
616
  color: var(--foreground);
424
617
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bergetai/ui",
3
- "version": "0.1.80",
3
+ "version": "0.1.82",
4
4
  "description": "Berget Design System - Scandinavian-inspired design system with console aesthetic",
5
5
  "type": "module",
6
6
  "license": "MIT",