@neuravision/construct 1.1.3 → 1.1.4

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.
@@ -32,7 +32,7 @@
32
32
  --ct-v2-radius: var(--radius-lg);
33
33
  --ct-v2-canvas-bg: var(--color-bg-muted);
34
34
  --ct-v2-surface-bg: var(--color-bg-canvas);
35
- --ct-v2-surface-shadow: 0 1px 3px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.06);
35
+ --ct-v2-surface-shadow: var(--shadow-xs);
36
36
  --ct-v2-transition-duration: 250ms;
37
37
  --ct-v2-transition-easing: cubic-bezier(0.32, 0.72, 0, 1);
38
38
 
@@ -278,10 +278,16 @@
278
278
  /* Tinted sidebar surface — Slack / Linear / Discord aesthetic. */
279
279
 
280
280
  .ct-app-shell-v2--sidebar-branded > .ct-app-shell-v2__sidebar {
281
- --_branded-hover-bg: color-mix(in srgb, var(--color-slate-0) 8%, transparent);
282
- --_branded-active-bg: color-mix(in srgb, var(--color-slate-0) 12%, transparent);
283
- --_branded-badge-bg: color-mix(in srgb, var(--color-slate-0) 15%, transparent);
284
- background: var(--color-slate-900);
281
+ --_branded-bg: var(--color-slate-900);
282
+ --_branded-border: var(--color-slate-700);
283
+ --_branded-text: var(--color-slate-300);
284
+ --_branded-text-strong: var(--color-slate-0);
285
+ --_branded-text-muted: var(--color-slate-100);
286
+ --_branded-hover-bg: color-mix(in srgb, var(--_branded-text-strong) 8%, transparent);
287
+ --_branded-active-bg: color-mix(in srgb, var(--_branded-text-strong) 12%, transparent);
288
+ --_branded-badge-bg: color-mix(in srgb, var(--_branded-text-strong) 15%, transparent);
289
+
290
+ background: var(--_branded-bg);
285
291
  color: var(--color-text-inverse);
286
292
  box-shadow: none;
287
293
  }
@@ -291,30 +297,30 @@
291
297
  }
292
298
 
293
299
  .ct-app-shell-v2--sidebar-branded .ct-app-shell-v2__sidebar .ct-sidebar__header {
294
- border-bottom-color: var(--color-slate-700);
295
- color: var(--color-slate-0);
300
+ border-bottom-color: var(--_branded-border);
301
+ color: var(--_branded-text-strong);
296
302
  }
297
303
 
298
304
  .ct-app-shell-v2--sidebar-branded .ct-app-shell-v2__sidebar .ct-nav-item {
299
- color: var(--color-slate-300);
305
+ color: var(--_branded-text);
300
306
  }
301
307
 
302
308
  @media (hover: hover) {
303
309
  .ct-app-shell-v2--sidebar-branded .ct-app-shell-v2__sidebar .ct-nav-item:hover {
304
310
  background: var(--_branded-hover-bg);
305
- color: var(--color-slate-0);
311
+ color: var(--_branded-text-strong);
306
312
  }
307
313
  }
308
314
 
309
315
  .ct-app-shell-v2--sidebar-branded .ct-app-shell-v2__sidebar .ct-nav-item--active,
310
316
  .ct-app-shell-v2--sidebar-branded .ct-app-shell-v2__sidebar .ct-nav-item[aria-current='page'] {
311
317
  background: var(--_branded-active-bg);
312
- color: var(--color-slate-0);
318
+ color: var(--_branded-text-strong);
313
319
  }
314
320
 
315
321
  .ct-app-shell-v2--sidebar-branded .ct-app-shell-v2__sidebar .ct-nav-item__badge {
316
322
  background: var(--_branded-badge-bg);
317
- color: var(--color-slate-100);
323
+ color: var(--_branded-text-muted);
318
324
  }
319
325
 
320
326
  .ct-app-shell-v2--sidebar-branded .ct-app-shell-v2__sidebar .ct-nav-item--active .ct-nav-item__badge,
@@ -144,7 +144,7 @@
144
144
 
145
145
  /* Solid + success needs darker green for WCAG AA contrast with inverse text */
146
146
  .ct-banner.ct-banner--solid[data-variant='success'] {
147
- --ct-banner-accent: var(--color-green-700);
147
+ --ct-banner-accent: var(--color-state-success-text);
148
148
  }
149
149
 
150
150
  /* ---- Appearance: Accents ---- */
@@ -88,8 +88,8 @@
88
88
 
89
89
  .ct-button--danger {
90
90
  --ct-button-bg: var(--color-state-danger);
91
- --ct-button-bg-hover: var(--color-red-600);
92
- --ct-button-bg-active: var(--color-red-700);
91
+ --ct-button-bg-hover: color-mix(in srgb, var(--color-state-danger) 85%, black);
92
+ --ct-button-bg-active: color-mix(in srgb, var(--color-state-danger) 70%, black);
93
93
  --ct-button-border: transparent;
94
94
  --ct-button-color: var(--color-text-inverse);
95
95
  }
@@ -98,14 +98,14 @@
98
98
  .ct-chip--info {
99
99
  --ct-chip-bg: var(--color-state-info-surface);
100
100
  --ct-chip-border: var(--color-state-info-border);
101
- --ct-chip-color: var(--color-ocean-700);
101
+ --ct-chip-color: var(--color-state-info-text);
102
102
  --ct-chip-accent: var(--color-state-info);
103
103
  }
104
104
 
105
105
  .ct-chip--success {
106
106
  --ct-chip-bg: var(--color-state-success-surface);
107
107
  --ct-chip-border: var(--color-state-success-border);
108
- --ct-chip-color: var(--color-green-700);
108
+ --ct-chip-color: var(--color-state-success-text);
109
109
  --ct-chip-accent: var(--color-state-success);
110
110
  }
111
111
 
@@ -119,7 +119,7 @@
119
119
  .ct-chip--danger {
120
120
  --ct-chip-bg: var(--color-state-danger-surface);
121
121
  --ct-chip-border: var(--color-state-danger-border);
122
- --ct-chip-color: var(--color-red-700);
122
+ --ct-chip-color: var(--color-state-danger-text);
123
123
  --ct-chip-accent: var(--color-state-danger);
124
124
  }
125
125
 
@@ -163,17 +163,17 @@
163
163
  }
164
164
 
165
165
  .ct-chip--solid.ct-chip--success {
166
- --ct-chip-bg: var(--color-green-700);
167
- --ct-chip-border: var(--color-green-700);
166
+ --ct-chip-bg: var(--color-state-success-text);
167
+ --ct-chip-border: var(--color-state-success-text);
168
168
  --ct-chip-color: var(--color-text-inverse);
169
169
  --ct-chip-accent: var(--color-text-inverse);
170
170
  }
171
171
 
172
172
  .ct-chip--solid.ct-chip--warning {
173
- --ct-chip-bg: var(--color-amber-500);
174
- --ct-chip-border: var(--color-amber-500);
175
- --ct-chip-color: var(--color-amber-900);
176
- --ct-chip-accent: var(--color-amber-900);
173
+ --ct-chip-bg: var(--color-state-warning-text);
174
+ --ct-chip-border: var(--color-state-warning-text);
175
+ --ct-chip-color: var(--color-text-inverse);
176
+ --ct-chip-accent: var(--color-text-inverse);
177
177
  }
178
178
 
179
179
  .ct-chip--solid.ct-chip--danger {
@@ -348,8 +348,7 @@
348
348
  border-top: var(--border-thin) solid var(--color-border-subtle);
349
349
  border-radius: 0 0 var(--radius-md) var(--radius-md);
350
350
  box-shadow: none;
351
- border-left: none;
352
- border-right: none;
351
+ border-inline: none;
353
352
  border-bottom: none;
354
353
  }
355
354
 
@@ -40,6 +40,12 @@
40
40
 
41
41
  /* ── Brand ──────────────────────────────────────────────────────── */
42
42
 
43
+ .ct-navbar__brand-wrapper {
44
+ display: flex;
45
+ align-items: center;
46
+ flex-shrink: 0;
47
+ }
48
+
43
49
  .ct-navbar__brand {
44
50
  display: inline-flex;
45
51
  align-items: center;
@@ -487,24 +493,31 @@
487
493
  /* ── Dark ──────────────────────────────────────────────────────── */
488
494
 
489
495
  .ct-navbar--dark {
490
- --ct-navbar-bg: var(--color-slate-900);
491
- --ct-navbar-border-color: var(--color-slate-800);
492
- color: var(--color-text-inverse);
496
+ --_dark-bg: var(--color-slate-900);
497
+ --_dark-bg-hover: var(--color-slate-800);
498
+ --_dark-border: var(--color-slate-800);
499
+ --_dark-text: var(--color-slate-300);
500
+ --_dark-text-strong: var(--color-text-inverse);
501
+ --_dark-text-muted: var(--color-slate-400);
502
+
503
+ --ct-navbar-bg: var(--_dark-bg);
504
+ --ct-navbar-border-color: var(--_dark-border);
505
+ color: var(--_dark-text-strong);
493
506
  }
494
507
 
495
508
  .ct-navbar--dark .ct-navbar__link {
496
- color: var(--color-slate-300);
509
+ color: var(--_dark-text);
497
510
  }
498
511
 
499
512
  @media (hover: hover) {
500
513
  .ct-navbar--dark .ct-navbar__link:hover {
501
- background: var(--color-slate-800);
502
- color: var(--color-text-inverse);
514
+ background: var(--_dark-bg-hover);
515
+ color: var(--_dark-text-strong);
503
516
  }
504
517
  }
505
518
 
506
519
  .ct-navbar--dark .ct-navbar__link[aria-current='page'] {
507
- color: var(--color-text-inverse);
520
+ color: var(--_dark-text-strong);
508
521
  }
509
522
 
510
523
  .ct-navbar--dark .ct-navbar__link[aria-current='page']::after {
@@ -512,48 +525,62 @@
512
525
  }
513
526
 
514
527
  .ct-navbar--dark .ct-navbar__link-chevron {
515
- color: var(--color-slate-400);
528
+ color: var(--_dark-text-muted);
516
529
  }
517
530
 
518
531
  .ct-navbar--dark .ct-navbar__toggle {
519
- color: var(--color-text-inverse);
532
+ color: var(--_dark-text-strong);
520
533
  }
521
534
 
522
535
  @media (hover: hover) {
523
536
  .ct-navbar--dark .ct-navbar__toggle:hover {
524
- background: var(--color-slate-800);
537
+ background: var(--_dark-bg-hover);
525
538
  }
526
539
  }
527
540
 
528
541
  .ct-navbar--dark .ct-navbar__mobile-menu {
529
- background: var(--color-slate-900);
530
- border-color: var(--color-slate-800);
542
+ background: var(--_dark-bg);
543
+ border-color: var(--_dark-border);
531
544
  }
532
545
 
533
546
  .ct-navbar--dark .ct-navbar__mobile-menu .ct-navbar__link {
534
- color: var(--color-slate-300);
547
+ color: var(--_dark-text);
535
548
  }
536
549
 
537
550
  @media (hover: hover) {
538
551
  .ct-navbar--dark .ct-navbar__mobile-menu .ct-navbar__link:hover {
539
- background: var(--color-slate-800);
540
- color: var(--color-text-inverse);
552
+ background: var(--_dark-bg-hover);
553
+ color: var(--_dark-text-strong);
541
554
  }
542
555
  }
543
556
 
544
557
  .ct-navbar--dark .ct-navbar__mobile-menu .ct-navbar__link[aria-current='page'] {
545
- background: var(--color-slate-800);
546
- color: var(--color-text-inverse);
558
+ background: var(--_dark-bg-hover);
559
+ color: var(--_dark-text-strong);
547
560
  }
548
561
 
549
562
  .ct-navbar--dark .ct-navbar__actions .ct-button {
550
- color: var(--color-text-inverse);
563
+ color: var(--_dark-text-strong);
551
564
  }
552
565
 
553
566
  /* ── Center Nav ────────────────────────────────────────────────── */
554
567
 
568
+ .ct-navbar--center .ct-navbar__brand-wrapper {
569
+ flex: 1;
570
+ }
571
+
555
572
  .ct-navbar--center .ct-navbar__nav {
556
- margin-inline: auto;
573
+ justify-content: center;
574
+ }
575
+
576
+ .ct-navbar--center .ct-navbar__actions {
577
+ flex: 1;
578
+ justify-content: flex-end;
579
+ margin-inline-start: 0;
580
+ }
581
+
582
+ .ct-navbar--center .ct-navbar__spacer {
583
+ display: none;
557
584
  }
558
585
 
559
586
  /* ── Responsive ────────────────────────────────────────────────── */
@@ -16,7 +16,7 @@
16
16
  .ct-table td {
17
17
  padding: var(--space-4) var(--space-5);
18
18
  border-bottom: var(--border-thin) solid var(--color-border-subtle);
19
- text-align: left;
19
+ text-align: start;
20
20
  }
21
21
 
22
22
  .ct-table thead th {
@@ -117,12 +117,12 @@ th[aria-sort='descending'] .ct-table__sort-indicator::after {
117
117
  }
118
118
 
119
119
  .ct-table__cell--numeric {
120
- text-align: right;
120
+ text-align: end;
121
121
  font-variant-numeric: tabular-nums;
122
122
  }
123
123
 
124
124
  .ct-table__cell--actions {
125
- text-align: right;
125
+ text-align: end;
126
126
  white-space: nowrap;
127
127
  }
128
128
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neuravision/construct",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "description": "Construct Design System - Accessible, token-based design system for modern web applications",
5
5
  "license": "MIT",
6
6
  "repository": {