@neuravision/construct 1.1.3 → 1.1.5

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.
@@ -95,11 +95,11 @@
95
95
  .ct-accordion--bordered .ct-accordion__item {
96
96
  border: var(--border-thin) solid var(--ct-accordion-border);
97
97
  border-radius: var(--radius-md);
98
- margin-bottom: var(--space-2);
98
+ margin-block-end: var(--space-2);
99
99
  }
100
100
 
101
101
  .ct-accordion--bordered .ct-accordion__item:last-child {
102
- margin-bottom: 0;
102
+ margin-block-end: 0;
103
103
  border-bottom: var(--border-thin) solid var(--ct-accordion-border);
104
104
  }
105
105
 
@@ -122,3 +122,17 @@
122
122
  transition: none;
123
123
  }
124
124
  }
125
+
126
+ @media (forced-colors: active) {
127
+ .ct-accordion__trigger {
128
+ border: 1px solid transparent;
129
+ }
130
+
131
+ .ct-accordion__trigger:focus-visible {
132
+ outline: 2px solid LinkText;
133
+ }
134
+
135
+ .ct-accordion__icon {
136
+ forced-color-adjust: auto;
137
+ }
138
+ }
@@ -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
  }
@@ -36,6 +36,7 @@
36
36
  --ct-chip-font-size: var(--font-size-xs);
37
37
  --ct-chip-line-height: var(--line-height-xs);
38
38
  --ct-chip-remove-size: var(--icon-sm);
39
+ --ct-chip-gap: var(--space-1);
39
40
  }
40
41
 
41
42
  .ct-chip--lg {
@@ -44,6 +45,7 @@
44
45
  --ct-chip-font-size: var(--font-size-md);
45
46
  --ct-chip-line-height: var(--line-height-md);
46
47
  --ct-chip-remove-size: var(--icon-xl);
48
+ --ct-chip-gap: var(--space-3);
47
49
  }
48
50
 
49
51
  /* ── Interactive state ───────────────────────────────────────── */
@@ -98,14 +100,14 @@
98
100
  .ct-chip--info {
99
101
  --ct-chip-bg: var(--color-state-info-surface);
100
102
  --ct-chip-border: var(--color-state-info-border);
101
- --ct-chip-color: var(--color-ocean-700);
103
+ --ct-chip-color: var(--color-state-info-text);
102
104
  --ct-chip-accent: var(--color-state-info);
103
105
  }
104
106
 
105
107
  .ct-chip--success {
106
108
  --ct-chip-bg: var(--color-state-success-surface);
107
109
  --ct-chip-border: var(--color-state-success-border);
108
- --ct-chip-color: var(--color-green-700);
110
+ --ct-chip-color: var(--color-state-success-text);
109
111
  --ct-chip-accent: var(--color-state-success);
110
112
  }
111
113
 
@@ -119,7 +121,7 @@
119
121
  .ct-chip--danger {
120
122
  --ct-chip-bg: var(--color-state-danger-surface);
121
123
  --ct-chip-border: var(--color-state-danger-border);
122
- --ct-chip-color: var(--color-red-700);
124
+ --ct-chip-color: var(--color-state-danger-text);
123
125
  --ct-chip-accent: var(--color-state-danger);
124
126
  }
125
127
 
@@ -163,17 +165,17 @@
163
165
  }
164
166
 
165
167
  .ct-chip--solid.ct-chip--success {
166
- --ct-chip-bg: var(--color-green-700);
167
- --ct-chip-border: var(--color-green-700);
168
+ --ct-chip-bg: var(--color-state-success-text);
169
+ --ct-chip-border: var(--color-state-success-text);
168
170
  --ct-chip-color: var(--color-text-inverse);
169
171
  --ct-chip-accent: var(--color-text-inverse);
170
172
  }
171
173
 
172
174
  .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);
175
+ --ct-chip-bg: var(--color-state-warning-text);
176
+ --ct-chip-border: var(--color-state-warning-text);
177
+ --ct-chip-color: var(--color-text-inverse);
178
+ --ct-chip-accent: var(--color-text-inverse);
177
179
  }
178
180
 
179
181
  .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
 
@@ -1,5 +1,5 @@
1
1
  .ct-input--with-icon {
2
- padding-left: calc(var(--space-8) + var(--space-4));
2
+ padding-inline-start: calc(var(--space-8) + var(--space-4));
3
3
  }
4
4
 
5
5
  .ct-input-wrap {
@@ -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.5",
4
4
  "description": "Construct Design System - Accessible, token-based design system for modern web applications",
5
5
  "license": "MIT",
6
6
  "repository": {