@bergetai/ui 0.7.0 → 0.8.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.
@@ -26,10 +26,10 @@
26
26
 
27
27
  /* ────────────────────────────
28
28
  SANDSTONE — warm stone
29
- 100 = primary text warmth
29
+ Mid-warmth accent. Not a semantic foreground.
30
30
  ──────────────────────────── */
31
31
  --berget-brand-sandstone-50: oklch(96% 0.005 68); /* #F4F1EE */
32
- --berget-brand-sandstone-100: oklch(91% 0.011 68); /* #E7E0D9 · primary text */
32
+ --berget-brand-sandstone-100: oklch(91% 0.011 68); /* #E7E0D9 · Cloud */
33
33
  --berget-brand-sandstone-200: oklch(85% 0.022 68); /* #D8CBBF */
34
34
  --berget-brand-sandstone-300: oklch(76% 0.033 68); /* #C0AE9B */
35
35
  --berget-brand-sandstone-400: oklch(66% 0.043 68); /* #A48E76 */
@@ -75,6 +75,7 @@
75
75
  /* ────────────────────────────
76
76
  MUSCARIA — red (forest floor)
77
77
  500 = brand red #D1392E (pinned)
78
+ Destructive / error only — never a brand accent.
78
79
  ──────────────────────────── */
79
80
  --berget-brand-muscaria-50: oklch(96% 0.02 29); /* #FFEDEA */
80
81
  --berget-brand-muscaria-100: oklch(91% 0.044 29); /* #FED7D1 */
@@ -116,10 +117,9 @@
116
117
  :root {
117
118
  /* ── Surfaces ───────────────────────────────────────────────────── */
118
119
  --berget-background: var(--berget-brand-granite-950); /* Bedrock · page bg */
119
- --berget-foreground: var(--berget-brand-sandstone-100); /* warm white · primary text */
120
+ --berget-foreground: var(--berget-brand-granite-50); /* Peak · primary text */
120
121
  --berget-foreground-alt: color-mix(in oklch, var(--berget-foreground) 80%, transparent);
121
122
  --berget-body-background: color-mix(in oklch, var(--berget-foreground) 80%, transparent);
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);
@@ -129,19 +129,20 @@
129
129
 
130
130
  /* ── Cards / containers ─────────────────────────────────────────── */
131
131
  --berget-card: color-mix(in oklch, var(--berget-brand-granite-900) 40%, transparent);
132
- --berget-card-foreground: var(--berget-brand-sandstone-100);
132
+ --berget-card-foreground: var(--berget-brand-granite-50);
133
133
  --berget-popover: var(--berget-brand-granite-900);
134
- --berget-popover-foreground: var(--berget-brand-sandstone-100);
134
+ --berget-popover-foreground: var(--berget-brand-granite-50);
135
135
  --berget-muted: var(--berget-brand-granite-950);
136
136
  --berget-muted-foreground: color-mix(in oklch, var(--berget-foreground) 80%, transparent);
137
137
 
138
138
  /* ── Surface semantic aliases ────────────────────────────────────── */
139
- --berget-primary: var(--berget-brand-sandstone-100); /* primary CTA / action */
140
- --berget-primary-foreground: var(--berget-foreground);
141
- --berget-primary-hover: var(--berget-brand-granite-950);
142
- --berget-secondary: var(--berget-brand-moss-400); /* moss = action */
139
+ /* Primary action = Moss. Neutral solid = the theme's foreground extreme. */
140
+ --berget-primary: var(--berget-brand-moss-400); /* primary CTA / action */
141
+ --berget-primary-foreground: var(--berget-brand-granite-950);
142
+ --berget-primary-hover: var(--berget-brand-moss-500);
143
+ --berget-secondary: var(--berget-brand-granite-800); /* neutral solid secondary */
143
144
  --berget-secondary-foreground: var(--berget-foreground);
144
- --berget-secondary-hover: color-mix(in oklch, var(--berget-brand-moss-400) 40%, transparent);
145
+ --berget-secondary-hover: color-mix(in oklch, var(--berget-brand-granite-800) 80%, transparent);
145
146
 
146
147
  /* ── Accent ──────────────────────────────────────────────────────── */
147
148
  --berget-accent: var(--berget-brand-moss-300); /* lichen · tertiary accent */
@@ -174,7 +175,7 @@
174
175
  --berget-sidebar: color-mix(in oklch, var(--berget-brand-granite-900) 40%, transparent);
175
176
  --berget-sidebar-foreground: color-mix(in oklch, var(--berget-foreground) 80%, transparent);
176
177
  --berget-sidebar-accent: var(--berget-brand-moss-400);
177
- --berget-sidebar-accent-foreground: var(--berget-brand-sandstone-100);
178
+ --berget-sidebar-accent-foreground: var(--berget-brand-granite-950);
178
179
  --berget-sidebar-border: color-mix(in oklch, var(--berget-foreground) 5%, transparent);
179
180
  --berget-sidebar-ring: var(--berget-brand-moss-300);
180
181
 
@@ -235,27 +236,27 @@
235
236
  --berget-dialog-border: var(--berget-border);
236
237
 
237
238
  /* ── Shiki syntax-highlighting tokens ─────────────────────────────── */
238
- --berget-shiki-foreground: var(--berget-brand-sandstone-100);
239
+ --berget-shiki-foreground: var(--berget-brand-granite-50);
239
240
  --berget-shiki-background: var(--berget-brand-granite-800);
240
241
  --berget-shiki-token-comment: var(--berget-brand-granite-300);
241
242
  --berget-shiki-token-keyword: var(--berget-brand-moss-400);
242
243
  --berget-shiki-token-string: var(--berget-brand-moss-300);
243
244
  --berget-shiki-token-constant: var(--berget-brand-moss-300);
244
245
  --berget-shiki-token-function: var(--berget-brand-fjord-400);
245
- --berget-shiki-token-parameter: var(--berget-brand-sandstone-100);
246
+ --berget-shiki-token-parameter: var(--berget-brand-granite-50);
246
247
  --berget-shiki-token-string-expression: var(--berget-brand-moss-300);
247
- --berget-shiki-token-punctuation: var(--berget-brand-sandstone-100);
248
+ --berget-shiki-token-punctuation: var(--berget-brand-granite-50);
248
249
 
249
250
  /* ── Badge component-scoped tokens ──────────────────────────────── */
250
251
  --berget-badge-default-bg: var(--berget-brand-moss-600);
251
252
  --berget-badge-default-fg: var(--berget-foreground);
252
253
  --berget-badge-active-bg: var(--berget-brand-moss-600);
253
254
  --berget-badge-active-fg: var(--berget-foreground);
254
- --berget-badge-tag-default-bg: var(--berget-primary);
255
+ --berget-badge-tag-default-bg: var(--berget-brand-granite-50);
255
256
  --berget-badge-tag-default-fg: color-mix(in oklch, var(--berget-text-inverse) 80%, transparent);
256
257
  --berget-badge-tag-active-bg: var(--berget-surface-01);
257
258
  --berget-badge-tag-active-fg: var(--berget-foreground);
258
- --berget-badge-tag-ghost-bg: color-mix(in oklch, var(--berget-primary) 30%, transparent);
259
+ --berget-badge-tag-ghost-bg: color-mix(in oklch, var(--berget-brand-granite-50) 30%, transparent);
259
260
  --berget-badge-tag-ghost-fg: var(--berget-foreground);
260
261
 
261
262
  /* ── Switch component-scoped tokens ─────────────────────────────── */
@@ -267,19 +268,21 @@
267
268
  --berget-feature-card-badge-fg: var(--berget-foreground);
268
269
 
269
270
  /* ── Logo tokens ──────────────────────────────────────────────── */
270
- --berget-logo-light: var(--berget-brand-sandstone-100);
271
+ /* The mark is pure white — brighter than body text on purpose. */
272
+ --berget-logo-light: #ffffff;
271
273
  --berget-logo-dark: var(--berget-brand-granite-950);
272
274
 
273
275
  /* ── Section component-scoped tokens ────────────────────────────── */
274
276
  --berget-section-muted-bg: var(--berget-surface-subtlest);
275
277
 
276
278
  /* ── Button component-scoped tokens ─────────────────────────────── */
277
- /* default (sandstone-100 bg, granite-900 text) */
278
- --berget-button-default-bg: var(--berget-brand-sandstone-100);
279
- --berget-button-default-fg: var(--berget-brand-granite-900);
279
+ /* default (granite-50 bg, granite-950 text) */
280
+ --berget-button-default-bg: var(--berget-brand-granite-50);
281
+ --berget-button-default-fg: var(--berget-brand-granite-950);
280
282
  /* primary (moss-400 bg, granite-950 text) */
281
283
  --berget-button-primary-bg: var(--berget-brand-moss-400);
282
284
  --berget-button-primary-fg: var(--berget-brand-granite-950);
285
+ --berget-button-primary-hover: var(--berget-brand-moss-500);
283
286
 
284
287
  /* destructive (muscaria-400 bg, granite-950 text) */
285
288
  --berget-button-destructive-bg: var(--berget-brand-muscaria-400);
@@ -349,8 +352,8 @@
349
352
 
350
353
  /* ── Chart ──────────────────────────────────────────────────────── */
351
354
  --berget-chart-1: var(--berget-brand-chanterelle-300);
352
- --berget-chart-2: var(--berget-brand-moss-400);
353
- --berget-chart-3: var(--berget-brand-moss-400);
355
+ --berget-chart-2: var(--berget-brand-fjord-400);
356
+ --berget-chart-3: var(--berget-brand-moss-300);
354
357
  --berget-chart-4: var(--berget-brand-moss-600);
355
358
  --berget-chart-5: var(--berget-brand-fjord-700);
356
359
 
@@ -381,29 +384,28 @@
381
384
  --berget-foreground: var(--berget-brand-granite-950);
382
385
  --berget-foreground-alt: color-mix(in oklch, var(--berget-foreground) 80%, transparent);
383
386
  --berget-body-background: color-mix(in oklch, var(--berget-foreground) 80%, transparent);
384
- --berget-mid-alt: var(--berget-brand-sandstone-50);
385
387
 
386
388
  /* ── Core surface + text aliases ────────────────────────────────── */
387
389
  --berget-surface-01: var(--berget-brand-granite-100);
388
390
  --berget-surface-02: var(--berget-brand-granite-200);
389
391
  --berget-surface-subtlest: color-mix(in oklch, var(--berget-brand-granite-950) 5%, transparent);
390
- --berget-text-inverse: var(--berget-brand-sandstone-100);
392
+ --berget-text-inverse: var(--berget-brand-granite-50);
391
393
 
392
394
  /* ── Cards / containers ─────────────────────────────────────────── */
393
395
  --berget-card: color-mix(in oklch, var(--berget-brand-granite-100) 40%, transparent);
394
396
  --berget-card-foreground: var(--berget-brand-granite-950);
395
397
  --berget-popover: var(--berget-brand-granite-100);
396
398
  --berget-popover-foreground: var(--berget-brand-granite-950);
397
- --berget-muted: var(--berget-brand-sandstone-100);
399
+ --berget-muted: var(--berget-brand-granite-100);
398
400
  --berget-muted-foreground: color-mix(in oklch, var(--berget-brand-granite-950) 70%, transparent);
399
401
 
400
402
  /* ── Surface semantic aliases ────────────────────────────────────── */
401
- --berget-primary: var(--berget-brand-granite-950);
402
- --berget-primary-foreground: var(--berget-brand-sandstone-100);
403
- --berget-primary-hover: var(--berget-brand-sandstone-50);
404
- --berget-secondary: var(--berget-brand-moss-400);
405
- --berget-secondary-foreground: var(--berget-brand-sandstone-100);
406
- --berget-secondary-hover: color-mix(in oklch, var(--berget-brand-moss-400) 40%, transparent);
403
+ --berget-primary: var(--berget-brand-moss-400); /* primary CTA / action */
404
+ --berget-primary-foreground: var(--berget-brand-granite-950);
405
+ --berget-primary-hover: var(--berget-brand-moss-500);
406
+ --berget-secondary: var(--berget-brand-granite-200); /* neutral solid secondary */
407
+ --berget-secondary-foreground: var(--berget-brand-granite-950);
408
+ --berget-secondary-hover: color-mix(in oklch, var(--berget-brand-granite-200) 80%, transparent);
407
409
 
408
410
  /* ── Accent ──────────────────────────────────────────────────────── */
409
411
  --berget-accent: var(--berget-brand-moss-300);
@@ -440,7 +442,7 @@
440
442
  transparent
441
443
  );
442
444
  --berget-sidebar-accent: var(--berget-brand-moss-400);
443
- --berget-sidebar-accent-foreground: var(--berget-brand-sandstone-100);
445
+ --berget-sidebar-accent-foreground: var(--berget-brand-granite-950);
444
446
  --berget-sidebar-border: color-mix(in oklch, var(--berget-brand-granite-950) 5%, transparent);
445
447
  --berget-sidebar-ring: var(--berget-brand-moss-300);
446
448
 
@@ -525,11 +527,15 @@
525
527
  --berget-badge-default-fg: var(--berget-foreground);
526
528
  --berget-badge-active-bg: var(--berget-brand-moss-500);
527
529
  --berget-badge-active-fg: var(--berget-foreground);
528
- --berget-badge-tag-default-bg: var(--berget-primary);
530
+ --berget-badge-tag-default-bg: var(--berget-brand-granite-950);
529
531
  --berget-badge-tag-default-fg: color-mix(in oklch, var(--berget-text-inverse) 80%, transparent);
530
532
  --berget-badge-tag-active-bg: var(--berget-surface-01);
531
533
  --berget-badge-tag-active-fg: var(--berget-foreground);
532
- --berget-badge-tag-ghost-bg: color-mix(in oklch, var(--berget-primary) 30%, transparent);
534
+ --berget-badge-tag-ghost-bg: color-mix(
535
+ in oklch,
536
+ var(--berget-brand-granite-950) 30%,
537
+ transparent
538
+ );
533
539
  --berget-badge-tag-ghost-fg: var(--berget-foreground);
534
540
 
535
541
  /* ── Switch component-scoped tokens ─────────────────────────────── */
@@ -542,16 +548,17 @@
542
548
 
543
549
  /* ── Logo tokens ──────────────────────────────────────────────── */
544
550
  --berget-logo-light: var(--berget-brand-granite-950);
545
- --berget-logo-dark: var(--berget-brand-sandstone-100);
551
+ --berget-logo-dark: #ffffff;
546
552
 
547
553
  /* ── Section component-scoped tokens ────────────────────────────── */
548
554
  --berget-section-muted-bg: var(--berget-surface-subtlest);
549
555
 
550
556
  /* ── Button component-scoped tokens ─────────────────────────────── */
551
- --berget-button-default-bg: var(--berget-brand-granite-900);
552
- --berget-button-default-fg: var(--berget-brand-sandstone-100);
557
+ --berget-button-default-bg: var(--berget-brand-granite-950);
558
+ --berget-button-default-fg: var(--berget-brand-granite-50);
553
559
  --berget-button-primary-bg: var(--berget-brand-moss-400);
554
560
  --berget-button-primary-fg: var(--berget-brand-granite-950);
561
+ --berget-button-primary-hover: var(--berget-brand-moss-500);
555
562
 
556
563
  --berget-button-destructive-bg: var(--berget-brand-muscaria-400);
557
564
  --berget-button-destructive-fg: var(--berget-brand-granite-950);
@@ -645,37 +652,37 @@
645
652
  @layer base {
646
653
  :root {
647
654
  --background: var(--berget-brand-granite-950); /* Bedrock */
648
- --foreground: var(--berget-brand-sandstone-100); /* warm primary text */
649
- --primary: var(--berget-brand-sandstone-100); /* warm text (surfaces) */
655
+ --foreground: var(--berget-brand-granite-50); /* Peak · primary text */
656
+ --primary: var(--berget-brand-moss-400); /* Moss · primary action */
650
657
  --primary-foreground: var(--berget-brand-granite-950);
651
- --secondary: var(--berget-brand-moss-400); /* moss action */
652
- --secondary-foreground: var(--berget-brand-sandstone-100);
658
+ --secondary: var(--berget-brand-granite-800); /* neutral solid */
659
+ --secondary-foreground: var(--berget-brand-granite-50);
653
660
  --accent: var(--berget-brand-moss-300); /* lichen */
654
661
  --accent-foreground: var(--berget-brand-granite-900);
655
662
  --muted: var(--berget-brand-granite-950);
656
- --muted-foreground: var(--berget-brand-sandstone-100);
663
+ --muted-foreground: var(--berget-brand-granite-50);
657
664
  --card: var(--berget-brand-granite-900); /* Slate */
658
- --card-foreground: var(--berget-brand-sandstone-100);
665
+ --card-foreground: var(--berget-brand-granite-50);
659
666
  --popover: var(--berget-brand-granite-900);
660
- --popover-foreground: var(--berget-brand-sandstone-100);
667
+ --popover-foreground: var(--berget-brand-granite-50);
661
668
  --input: var(--berget-brand-granite-700);
662
669
  --border: var(--berget-brand-granite-700);
663
670
  --ring: var(--berget-brand-moss-300); /* Lichen */
664
671
  --destructive: var(--berget-brand-muscaria-400);
665
- --destructive-foreground: var(--berget-brand-sandstone-100);
672
+ --destructive-foreground: var(--berget-brand-granite-50);
666
673
  --radius: 0.5rem;
667
674
  }
668
675
 
669
676
  [data-theme='light'] {
670
677
  --background: var(--berget-brand-granite-50);
671
678
  --foreground: var(--berget-brand-granite-950);
672
- --primary: var(--berget-brand-granite-950);
673
- --primary-foreground: var(--berget-brand-sandstone-100);
674
- --secondary: var(--berget-brand-moss-400);
675
- --secondary-foreground: var(--berget-brand-sandstone-100);
679
+ --primary: var(--berget-brand-moss-400); /* Moss · primary action */
680
+ --primary-foreground: var(--berget-brand-granite-950);
681
+ --secondary: var(--berget-brand-granite-200); /* neutral solid */
682
+ --secondary-foreground: var(--berget-brand-granite-950);
676
683
  --accent: var(--berget-brand-moss-300);
677
684
  --accent-foreground: var(--berget-brand-granite-900);
678
- --muted: var(--berget-brand-sandstone-100);
685
+ --muted: var(--berget-brand-granite-100);
679
686
  --muted-foreground: var(--berget-brand-granite-950);
680
687
  --card: var(--berget-brand-granite-100);
681
688
  --card-foreground: var(--berget-brand-granite-950);
@@ -685,7 +692,7 @@
685
692
  --border: var(--berget-brand-granite-300);
686
693
  --ring: var(--berget-brand-moss-300);
687
694
  --destructive: var(--berget-brand-muscaria-500);
688
- --destructive-foreground: var(--berget-brand-sandstone-100);
695
+ --destructive-foreground: var(--berget-brand-granite-50);
689
696
  }
690
697
 
691
698
  body {
@@ -770,53 +777,6 @@
770
777
  --font-size-feature-description: 16px;
771
778
  --line-height-feature-description: 24px;
772
779
 
773
- /* Float animations for GrainyGradientBackground */
774
- --animate-float-slow: float-slow 20s ease-in-out infinite;
775
- --animate-float-medium: float-medium 14s ease-in-out infinite;
776
- --animate-float-fast: float-fast 8s ease-in-out infinite;
777
-
778
- /* Gradient tokens */
779
- --bg-image-gradient-fjord-slate: linear-gradient(
780
- to right,
781
- var(--berget-brand-fjord-700),
782
- var(--berget-brand-granite-900)
783
- );
784
- --bg-image-gradient-slate-night: linear-gradient(
785
- to right,
786
- var(--berget-brand-granite-900),
787
- var(--berget-brand-granite-950)
788
- );
789
- --bg-image-gradient-spruce-fjord: linear-gradient(
790
- to right,
791
- var(--berget-brand-moss-600),
792
- var(--berget-brand-fjord-700)
793
- );
794
- --bg-image-gradient-spruce-slate: linear-gradient(
795
- to right,
796
- var(--berget-brand-moss-600),
797
- var(--berget-brand-granite-900)
798
- );
799
- --bg-image-gradient-spruce-night: linear-gradient(
800
- to right,
801
- var(--berget-brand-moss-600),
802
- var(--berget-brand-granite-950)
803
- );
804
- --bg-image-gradient-moss-lichen: linear-gradient(
805
- to right,
806
- var(--berget-brand-moss-400),
807
- var(--berget-brand-moss-300)
808
- );
809
- --bg-image-gradient-moss-spruce: linear-gradient(
810
- to right,
811
- var(--berget-brand-moss-400),
812
- var(--berget-brand-moss-600)
813
- );
814
- --bg-image-gradient-lichen-sandstone: linear-gradient(
815
- to right,
816
- var(--berget-brand-moss-300),
817
- var(--berget-brand-sandstone-100)
818
- );
819
-
820
780
  /* Full Granite scale (11 step) */
821
781
  --color-berget-brand-granite-50: oklch(96% 0.004 70);
822
782
  --color-berget-brand-granite-100: oklch(91% 0.005 70);
@@ -902,7 +862,6 @@
902
862
  --color-berget-foreground: var(--berget-foreground);
903
863
  --color-berget-foreground-alt: var(--berget-foreground-alt);
904
864
  --color-berget-body-background: var(--berget-body-background);
905
- --color-berget-mid-alt: var(--berget-mid-alt);
906
865
  --color-berget-card: var(--berget-card);
907
866
  --color-berget-card-foreground: var(--berget-card-foreground);
908
867
  --color-berget-popover: var(--berget-popover);
@@ -970,6 +929,7 @@
970
929
  --color-berget-button-default-fg: var(--berget-button-default-fg);
971
930
  --color-berget-button-primary-bg: var(--berget-button-primary-bg);
972
931
  --color-berget-button-primary-fg: var(--berget-button-primary-fg);
932
+ --color-berget-button-primary-hover: var(--berget-button-primary-hover);
973
933
 
974
934
  --color-berget-button-destructive-bg: var(--berget-button-destructive-bg);
975
935
  --color-berget-button-destructive-fg: var(--berget-button-destructive-fg);
@@ -1164,54 +1124,6 @@
1164
1124
  --spacing-gutter: var(--spacing-fluid-lg);
1165
1125
  }
1166
1126
 
1167
- @keyframes float-slow {
1168
- 0%,
1169
- 100% {
1170
- transform: translateY(0) translateX(0);
1171
- }
1172
- 33% {
1173
- transform: translateY(-8px) translateX(4px);
1174
- }
1175
- 66% {
1176
- transform: translateY(4px) translateX(-6px);
1177
- }
1178
- }
1179
-
1180
- @keyframes float-medium {
1181
- 0%,
1182
- 100% {
1183
- transform: translateY(0) translateX(0);
1184
- }
1185
- 25% {
1186
- transform: translateY(-12px) translateX(6px);
1187
- }
1188
- 50% {
1189
- transform: translateY(6px) translateX(-8px);
1190
- }
1191
- 75% {
1192
- transform: translateY(-4px) translateX(10px);
1193
- }
1194
- }
1195
-
1196
- @keyframes float-fast {
1197
- 0%,
1198
- 100% {
1199
- transform: translateY(0) translateX(0);
1200
- }
1201
- 20% {
1202
- transform: translateY(-10px) translateX(8px);
1203
- }
1204
- 40% {
1205
- transform: translateY(8px) translateX(-6px);
1206
- }
1207
- 60% {
1208
- transform: translateY(-6px) translateX(12px);
1209
- }
1210
- 80% {
1211
- transform: translateY(4px) translateX(-10px);
1212
- }
1213
- }
1214
-
1215
1127
  @keyframes fadeIn {
1216
1128
  from {
1217
1129
  opacity: 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bergetai/ui",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Berget Design System - Scandinavian-inspired design system with console aesthetic",
5
5
  "type": "module",
6
6
  "license": "MIT",