@dbcdk/react-components 0.0.12 → 0.0.14

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.
Files changed (76) hide show
  1. package/dist/components/accordion/Accordion.d.ts +2 -2
  2. package/dist/components/accordion/Accordion.js +34 -41
  3. package/dist/components/accordion/Accordion.module.css +13 -72
  4. package/dist/components/accordion/components/AccordionRow.d.ts +10 -0
  5. package/dist/components/accordion/components/AccordionRow.js +51 -0
  6. package/dist/components/accordion/components/AccordionRow.module.css +82 -0
  7. package/dist/components/breadcrumbs/Breadcrumbs.module.css +0 -1
  8. package/dist/components/button/Button.module.css +7 -7
  9. package/dist/components/card/Card.d.ts +9 -18
  10. package/dist/components/card/Card.js +34 -23
  11. package/dist/components/card/Card.module.css +22 -87
  12. package/dist/components/card/components/CardMeta.d.ts +15 -0
  13. package/dist/components/card/components/CardMeta.js +20 -0
  14. package/dist/components/card/components/CardMeta.module.css +51 -0
  15. package/dist/components/card-container/CardContainer.js +1 -1
  16. package/dist/components/card-container/CardContainer.module.css +3 -1
  17. package/dist/components/chip/Chip.module.css +7 -2
  18. package/dist/components/datetime-picker/DateTimePicker.d.ts +33 -8
  19. package/dist/components/datetime-picker/DateTimePicker.js +119 -78
  20. package/dist/components/datetime-picker/DateTimePicker.module.css +2 -0
  21. package/dist/components/datetime-picker/dateTimeHelpers.d.ts +15 -3
  22. package/dist/components/datetime-picker/dateTimeHelpers.js +137 -23
  23. package/dist/components/filter-field/FilterField.js +21 -6
  24. package/dist/components/filter-field/FilterField.module.css +5 -5
  25. package/dist/components/forms/form-select/FormSelect.d.ts +35 -0
  26. package/dist/components/forms/form-select/FormSelect.js +86 -0
  27. package/dist/components/forms/form-select/FormSelect.module.css +236 -0
  28. package/dist/components/forms/input/Input.d.ts +0 -3
  29. package/dist/components/forms/input/Input.js +0 -3
  30. package/dist/components/forms/input/Input.module.css +7 -7
  31. package/dist/components/forms/radio-buttons/RadioButtons.module.css +1 -0
  32. package/dist/components/forms/select/Select.js +55 -16
  33. package/dist/components/interval-select/IntervalSelect.d.ts +9 -2
  34. package/dist/components/interval-select/IntervalSelect.js +21 -6
  35. package/dist/components/menu/Menu.d.ts +11 -14
  36. package/dist/components/menu/Menu.js +18 -33
  37. package/dist/components/menu/Menu.module.css +2 -2
  38. package/dist/components/overlay/modal/Modal.module.css +2 -1
  39. package/dist/components/overlay/modal/provider/ModalProvider.js +1 -3
  40. package/dist/components/overlay/side-panel/SidePanel.js +1 -1
  41. package/dist/components/overlay/side-panel/SidePanel.module.css +1 -1
  42. package/dist/components/page-layout/PageLayout.d.ts +16 -4
  43. package/dist/components/page-layout/PageLayout.js +57 -28
  44. package/dist/components/page-layout/PageLayout.module.css +153 -33
  45. package/dist/components/popover/Popover.d.ts +17 -4
  46. package/dist/components/popover/Popover.js +147 -65
  47. package/dist/components/popover/Popover.module.css +5 -0
  48. package/dist/components/split-pane/SplitPane.d.ts +10 -24
  49. package/dist/components/split-pane/SplitPane.js +83 -54
  50. package/dist/components/split-pane/SplitPane.module.css +11 -6
  51. package/dist/components/split-pane/provider/SplitPaneContext.js +5 -11
  52. package/dist/components/sticky-footer-layout/StickyFooterLayout.d.ts +3 -8
  53. package/dist/components/sticky-footer-layout/StickyFooterLayout.js +57 -20
  54. package/dist/components/table/Table.d.ts +3 -8
  55. package/dist/components/table/Table.js +37 -76
  56. package/dist/components/table/Table.module.css +45 -42
  57. package/dist/components/table/{tanstack.d.ts → TanstackTable.d.ts} +5 -12
  58. package/dist/components/table/TanstackTable.js +84 -0
  59. package/dist/components/table/components/column-resizer/ColumnResizer.js +1 -1
  60. package/dist/components/table/components/column-resizer/ColumnResizer.module.css +17 -7
  61. package/dist/components/table/table.utils.d.ts +17 -0
  62. package/dist/components/table/table.utils.js +61 -0
  63. package/dist/components/table/tanstackTable.utils.d.ts +22 -0
  64. package/dist/components/table/tanstackTable.utils.js +104 -0
  65. package/dist/components/tabs/Tabs.d.ts +35 -12
  66. package/dist/components/tabs/Tabs.js +114 -26
  67. package/dist/components/tabs/Tabs.module.css +158 -71
  68. package/dist/index.d.ts +1 -1
  69. package/dist/index.js +1 -1
  70. package/dist/src/styles/styles.css +0 -1
  71. package/dist/styles/styles.css +0 -1
  72. package/dist/styles/themes/dbc/base.css +136 -0
  73. package/dist/styles/themes/dbc/dark.css +39 -202
  74. package/dist/styles/themes/dbc/light.css +17 -174
  75. package/package.json +4 -4
  76. package/dist/components/table/tanstack.js +0 -214
@@ -1,9 +1,13 @@
1
1
  html[data-theme='dark'] {
2
+ /* ==========================================================================
3
+ * PRIMITIVES
4
+ * ======================================================================= */
5
+
2
6
  /* Brand blues */
3
7
  --dbc-blue-500: #3b82f6;
4
8
  --dbc-blue-600: #2563eb;
5
9
  --dbc-blue-400: #60a5fa;
6
- --dbc-blue-300: #93c5fd; /* used for focus ring */
10
+ --dbc-blue-300: #93c5fd;
7
11
  --dbc-blue-100: #0b1f3b;
8
12
  --dbc-blue-150: #102a4d;
9
13
 
@@ -43,19 +47,14 @@ html[data-theme='dark'] {
43
47
  --dbc-info-300: #38bdf8;
44
48
 
45
49
  /* ==========================================================================
46
- * SEMANTIC COLORS (HUE-AGNOSTIC – COMPONENTS USE THESE)
50
+ * SEMANTIC COLORS
47
51
  * ======================================================================= */
48
52
 
49
- /* === Brand & accents === */
50
53
  --color-brand: var(--dbc-blue-500);
51
54
  --color-brand-hover: var(--dbc-blue-600);
52
55
  --color-brand-strong: var(--dbc-blue-600);
53
56
 
54
- --color-accent-1: var(--dbc-pink-500);
55
- --color-accent-2: var(--dbc-gray-500);
56
- --color-accent-3: var(--dbc-info-500);
57
-
58
- /* === Backgrounds & surfaces === */
57
+ /* Backgrounds & surfaces */
59
58
  --color-bg-page: #111827;
60
59
  --color-bg-surface: #111827;
61
60
  --color-bg-surface-subtle: rgba(255, 255, 255, 0.05);
@@ -64,110 +63,86 @@ html[data-theme='dark'] {
64
63
  --color-bg-contextual: #0b1220;
65
64
  --color-bg-contextual-subtle: #0f172a;
66
65
 
67
- --color-bg-accent-1: rgba(244, 114, 182, 0.14);
68
- --color-bg-accent-2: rgba(156, 163, 175, 0.1);
69
-
70
66
  /* Interaction backgrounds */
71
67
  --color-bg-hover-subtle: var(--opac-bg-light);
72
68
  --color-bg-pressed-subtle: var(--opac-bg-default);
73
69
 
74
70
  /* Selected */
75
- --color-bg-selected: rgba(59, 130, 246, 0.22);
76
- --color-bg-selected-hover: rgba(59, 130, 246, 0.3);
71
+ --color-bg-selected: var(--dbc-blue-100);
72
+ --color-bg-selected-hover: var(--dbc-blue-150);
77
73
 
78
74
  --color-neutral: var(--dbc-neutral-200);
79
- --color-neutral-fg: var(--dbc-neutral-900);
80
- --color-neutral-strong: var(--dbc-neutral-600);
81
- --color-neutral-strong-fg: #111827;
82
-
83
- /* === Borders === */
84
- --color-border-subtle: #374151;
85
- --color-border-default: #374151;
86
- --color-border-strong: #4b5563;
87
- --color-border-selected: var(--color-brand);
88
75
 
89
- /* Border widths */
90
- --border-width-hairline: 1px;
91
- --border-width-thin: 1px;
92
- --border-width-medium: 2px;
93
- --border-width-thick: 4px;
76
+ /* Borders (mirror light’s alpha approach, but with white) */
77
+ --color-border-subtle: rgba(255, 255, 255, 0.12);
78
+ --color-border-default: rgba(255, 255, 255, 0.12);
79
+ --color-border-strong: rgba(255, 255, 255, 0.24);
80
+ --color-border-selected: var(--color-brand);
94
81
 
95
- /* === Text / foreground === */
82
+ /* Text */
96
83
  --color-fg-default: var(--dbc-neutral-900);
97
84
  --color-fg-muted: var(--dbc-neutral-700);
98
85
  --color-fg-subtle: var(--dbc-neutral-600);
99
86
 
100
87
  --color-fg-on-strong: #111827;
101
88
  --color-fg-on-brand: #111827;
102
- --color-fg-on-accent-1: var(--color-fg-default);
103
- --color-fg-on-accent-2: var(--color-fg-default);
104
89
 
105
- /* === Links === */
106
- --color-link: #93c5fd;
90
+ /* Links */
91
+ --color-link: var(--dbc-blue-300);
107
92
  --color-link-hover: #bfdbfe;
108
- --color-link-visited: #a78bfa;
109
93
 
110
- /* === Status / severity === */
94
+ /* Status */
111
95
  --color-status-success: var(--dbc-green-500);
112
- --color-status-success-bg: rgba(34, 197, 94, 0.14);
96
+ --color-status-success-bg: var(--dbc-green-100);
113
97
  --color-status-success-border: var(--dbc-green-300);
114
98
  --color-status-success-fg: var(--dbc-green-700);
115
99
 
116
100
  --color-status-warning: var(--dbc-amber-700);
117
- --color-status-warning-bg: rgba(251, 191, 36, 0.16);
101
+ --color-status-warning-bg: var(--dbc-amber-100);
118
102
  --color-status-warning-border: var(--dbc-amber-400);
119
103
  --color-status-warning-fg: var(--dbc-amber-800);
120
104
 
121
105
  --color-status-error: var(--dbc-red-600);
122
- --color-status-error-bg: rgba(248, 113, 113, 0.14);
106
+ --color-status-error-bg: var(--dbc-red-100);
123
107
  --color-status-error-border: var(--dbc-red-300);
124
108
  --color-status-error-fg: var(--dbc-red-800);
125
109
 
126
110
  --color-status-info: var(--dbc-info-500);
127
- --color-status-info-bg: rgba(56, 189, 248, 0.14);
111
+ --color-status-info-bg: var(--dbc-info-100);
128
112
  --color-status-info-border: var(--dbc-info-300);
129
113
  --color-status-info-fg: var(--dbc-info-700);
130
114
 
131
- /* === Disabled === */
115
+ /* Disabled */
132
116
  --color-disabled-bg: var(--dbc-neutral-100);
133
117
  --color-disabled-fg: #6b7280;
134
118
  --color-disabled-border: var(--dbc-neutral-200);
135
119
 
136
- /* === Focus === */
120
+ /* Focus */
137
121
  --color-focus-ring: var(--dbc-blue-300);
138
122
  --focus-ring: 0 0 0 3px rgba(59, 130, 246, 0.35);
139
123
 
140
124
  /* ==========================================================================
141
- * OPTIONAL COMPONENT-LEVEL TOKENS
125
+ * COMPONENT-LEVEL TOKENS (THEME-DEPENDENT COLORS)
142
126
  * ======================================================================= */
143
127
 
144
128
  /* Cards */
145
129
  --card-bg-default: var(--color-bg-surface);
146
130
  --card-bg-subtle: var(--color-bg-surface-subtle);
147
131
  --card-bg-strong: var(--color-bg-surface-strong);
148
- --card-bg-accent-1: var(--color-bg-accent-1);
149
- --card-bg-accent-2: var(--color-bg-accent-2);
150
132
 
151
133
  --card-fg-default: var(--color-fg-default);
152
134
  --card-fg-on-strong: var(--color-fg-on-strong);
153
- --card-fg-on-accent-1: var(--color-fg-on-accent-1);
154
- --card-fg-on-accent-2: var(--color-fg-on-accent-2);
155
135
 
156
136
  /* Buttons */
157
137
  --button-bg-primary: var(--color-brand);
158
138
  --button-bg-primary-hover: var(--color-brand-hover);
159
139
  --button-fg-primary: var(--color-fg-on-brand);
160
140
 
161
- --button-bg-secondary: var(--color-bg-surface);
162
- --button-bg-secondary-hover: var(--color-bg-hover-subtle);
163
- --button-border-secondary: var(--color-border-default);
164
- --button-fg-secondary: var(--color-fg-default);
165
-
166
141
  /* ==========================================================================
167
- * NON-COLOR SYSTEM TOKENS
142
+ * THEME-SPECIFIC NON-COLOR TOKENS (VISUAL EFFECTS)
168
143
  * ======================================================================= */
169
144
 
170
- /* Opacities (dark) */
145
+ /* Opacities */
171
146
  --opac-bg-light: rgba(255, 255, 255, 0.05);
172
147
  --opac-bg-default: rgba(255, 255, 255, 0.1);
173
148
  --opac-bg-dark: rgba(255, 255, 255, 0.15);
@@ -176,134 +151,14 @@ html[data-theme='dark'] {
176
151
  --opac-bg-default-invert: rgba(0, 0, 0, 0.1);
177
152
  --opac-bg-dark-invert: rgba(0, 0, 0, 0.15);
178
153
 
179
- /* ===== Spacing & Layout ===== */
180
- --spacing-2xs: 2px;
181
- --spacing-xxs: 4px;
182
- --spacing-xs: 8px;
183
- --spacing-sm: 12px;
184
- --spacing-md: 16px;
185
- --spacing-lg: 24px;
186
- --spacing-xl: 32px;
187
- --spacing-2xl: 48px;
188
- --spacing-3xl: 64px;
189
- --spacing-4xl: 96px;
190
-
191
- --gutter-sm: 12px;
192
- --gutter-md: 16px;
193
- --gutter-lg: 24px;
194
-
195
- /* Breakpoints & Containers */
196
- --bp-xs: 480px;
197
- --bp-sm: 640px;
198
- --bp-md: 768px;
199
- --bp-lg: 1024px;
200
- --bp-xl: 1280px;
201
-
202
- --container-xs: 480px;
203
- --container-sm: 640px;
204
- --container-md: 768px;
205
- --container-lg: 1024px;
206
- --container-xl: 1280px;
207
-
208
- /* ===== Sizing ===== */
209
- --icon-size-sm: 16px;
210
- --icon-size-md: 20px;
211
- --icon-size-lg: 24px;
212
-
213
- --component-size-xs: 20px;
214
- --component-size-sm: 30px;
215
- --component-size-md: 36px;
216
- --component-size-lg: 44px;
217
- --component-size-xl: 435px;
218
- --sidebar-width: 180px;
219
-
220
- /* Control paddings */
221
- --control-padding-x: 12px;
222
- --control-padding-y: 8px;
223
-
224
- /* Border Radius */
225
- --border-radius-none: 0;
226
- --border-radius-default: 0.25rem;
227
- --border-radius-rounded: 2rem;
228
- --border-radius-round: 50%;
229
- --border-radius-sm: 0.125rem;
230
- --border-radius-md: 0.375rem;
231
- --border-radius-lg: 0.5rem;
232
- --border-radius-xl: 0.75rem;
233
-
234
- /* Density */
235
- --density-compact: -2px;
236
- --density-comfortable: 0px;
237
- --density-spacious: 4px;
238
-
239
- /* Typography */
240
- --text-max-width: 65ch;
241
- --font-family:
242
- Roboto, Inter, ui-sans-serif, system-ui, 'Segoe UI', 'Helvetica Neue', Arial,
243
- 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', sans-serif;
244
-
245
- --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;
246
-
247
- --font-size-xs: 12px;
248
- --font-size-sm: 14px;
249
- --font-size-md: 16px;
250
- --font-size-lg: 18px;
251
- --font-size-xl: 24px;
252
- --font-size-2xl: 30px;
253
-
254
- --font-size-fluid-sm: clamp(14px, 1.2vw, 16px);
255
- --font-size-fluid-lg: clamp(18px, 1.6vw, 22px);
256
-
257
- --font-weight-default: 400;
258
- --font-weight-medium: 500;
259
- --font-weight-semibold: 600;
260
- --font-weight-bold: 700;
261
- --font-weight-extrabold: 800;
262
-
263
- --line-height-tight: 1.25;
264
- --line-height-normal: 1.5;
265
- --line-height-relaxed: 1.75;
266
-
267
- --letter-spacing-tight: -0.01em;
268
- --letter-spacing-normal: 0;
269
- --letter-spacing-wide: 0.02em;
270
-
271
- --nav-link-transform: none;
272
- --breadcrumb-transform: none;
273
- --tab-label-transform: none;
274
-
275
- /* Motion */
276
- --transition-fast: 150ms;
277
- --transition-normal: 250ms;
278
- --transition-slow: 400ms;
279
-
280
- --ease-standard: cubic-bezier(0.2, 0, 0.2, 1);
281
- --ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
282
- --ease-decelerate: cubic-bezier(0, 0, 0.2, 1);
283
- --ease-accelerate: cubic-bezier(0.4, 0, 1, 1);
284
-
285
- /* Elevation & Overlay */
286
- --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
287
- --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);
288
- --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
289
- --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
290
- --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.1);
291
-
292
- --overlay-scrim: rgba(0, 0, 0, 0.5);
293
- --backdrop-blur: 8px;
294
-
295
- /* Layers */
296
- --z-base: 0;
297
- --z-dropdown: 1000;
298
- --z-sticky: 1100;
299
- --z-banner: 1150;
300
- --z-modal: 1200;
301
- --z-drawer: 1250;
302
- --z-popover: 1300;
303
- --z-tooltip: 1400;
304
- --z-toast: 1500;
305
-
306
- /* Data viz */
154
+ /* Shadows (stronger for dark surfaces) */
155
+ --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.2);
156
+ --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.35);
157
+ --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.32);
158
+ --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.4);
159
+ --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.45);
160
+
161
+ /* Data viz (invert sequential so it reads on dark bg) */
307
162
  --viz-cat-1: #2563eb;
308
163
  --viz-cat-2: #16a34a;
309
164
  --viz-cat-3: #f59e0b;
@@ -311,31 +166,13 @@ html[data-theme='dark'] {
311
166
  --viz-cat-5: #8b5cf6;
312
167
  --viz-cat-6: #14b8a6;
313
168
 
314
- --viz-seq-start: #dbeafe;
315
- --viz-seq-mid: #60a5fa;
316
- --viz-seq-end: #1d4ed8;
169
+ --viz-seq-start: #1e3a8a;
170
+ --viz-seq-mid: #3b82f6;
171
+ --viz-seq-end: #93c5fd;
317
172
 
318
- /* Skeletons & loaders */
173
+ /* Skeletons */
319
174
  --skeleton-base: #374151;
320
175
  --skeleton-pulse: #4b5563;
321
- --spinner-size: 16px;
322
- --spinner-stroke: 2px;
323
-
324
- /* Logical spacing */
325
- --space-inline-sm: 8px;
326
- }
327
-
328
- /* Reduced motion */
329
- @media (prefers-reduced-motion: reduce) {
330
- :root[data-theme='dark'] {
331
- --transition-fast: 1ms;
332
- --transition-normal: 1ms;
333
- --transition-slow: 1ms;
334
- }
335
- :root[data-theme='dark'] * {
336
- animation: none !important;
337
- transition-duration: 1ms !important;
338
- }
339
176
  }
340
177
 
341
178
  /* High-contrast variant */
@@ -1,13 +1,13 @@
1
1
  html[data-theme='light'] {
2
2
  /* ==========================================================================
3
- * PRIMITIVES (DBC)
3
+ * PRIMITIVES (THEME-DEPENDENT)
4
4
  * ======================================================================= */
5
5
 
6
6
  /* Brand blues */
7
7
  --dbc-blue-500: #0c3ee3;
8
8
  --dbc-blue-600: #0932b6;
9
9
  --dbc-blue-400: #3b6ff5;
10
- --dbc-blue-300: #7ea5ff; /* used for focus ring */
10
+ --dbc-blue-300: #7ea5ff;
11
11
  --dbc-blue-100: #e8edfd;
12
12
  --dbc-blue-150: #dce5fc;
13
13
 
@@ -47,15 +47,14 @@ html[data-theme='light'] {
47
47
  --dbc-info-300: #38bdf8;
48
48
 
49
49
  /* ==========================================================================
50
- * SEMANTIC COLORS (HUE-AGNOSTIC – COMPONENTS USE THESE)
50
+ * SEMANTIC COLORS (THEME-DEPENDENT)
51
51
  * ======================================================================= */
52
52
 
53
- /* === Brand & accents === */
54
53
  --color-brand: var(--dbc-blue-500);
55
54
  --color-brand-hover: var(--dbc-blue-600);
56
- --color-brand-strong: var(--dbc-blue-600); /* same as hover for this theme */
55
+ --color-brand-strong: var(--dbc-blue-600);
57
56
 
58
- /* === Backgrounds & surfaces === */
57
+ /* Backgrounds & surfaces */
59
58
  --color-bg-page: #ffffff;
60
59
  --color-bg-surface: #ffffff;
61
60
  --color-bg-surface-subtle: rgba(0, 0, 0, 0.02);
@@ -73,23 +72,14 @@ html[data-theme='light'] {
73
72
  --color-bg-selected-hover: var(--dbc-blue-150);
74
73
 
75
74
  --color-neutral: var(--dbc-neutral-200);
76
- --color-neutral-fg: #000000;
77
- --color-neutral-strong: var(--dbc-neutral-600);
78
- --color-neutral-strong-fg: #ffffff;
79
- /* === Borders === */
80
75
 
76
+ /* Borders */
81
77
  --color-border-subtle: rgba(0, 0, 0, 0.12);
82
78
  --color-border-default: rgba(0, 0, 0, 0.12);
83
79
  --color-border-strong: rgba(0, 0, 0, 0.24);
84
80
  --color-border-selected: var(--color-brand);
85
81
 
86
- /* Border widths */
87
- --border-width-thin: 1px;
88
- --border-width-medium: 2px;
89
- --border-width-thick: 4px;
90
-
91
- /* === Text / foreground === */
92
-
82
+ /* Text */
93
83
  --color-fg-default: var(--dbc-neutral-900);
94
84
  --color-fg-muted: var(--dbc-neutral-700);
95
85
  --color-fg-subtle: var(--dbc-neutral-600);
@@ -97,14 +87,11 @@ html[data-theme='light'] {
97
87
  --color-fg-on-strong: #ffffff;
98
88
  --color-fg-on-brand: #ffffff;
99
89
 
100
- /* === Links === */
101
-
90
+ /* Links */
102
91
  --color-link: var(--dbc-blue-500);
103
92
  --color-link-hover: var(--dbc-blue-600);
104
- --color-link-visited: #5b3ee3;
105
-
106
- /* === Status / severity === */
107
93
 
94
+ /* Status */
108
95
  --color-status-success: var(--dbc-green-500);
109
96
  --color-status-success-bg: var(--dbc-green-100);
110
97
  --color-status-success-border: var(--dbc-green-300);
@@ -125,19 +112,17 @@ html[data-theme='light'] {
125
112
  --color-status-info-border: var(--dbc-info-300);
126
113
  --color-status-info-fg: var(--dbc-info-700);
127
114
 
128
- /* === Disabled === */
129
-
115
+ /* Disabled */
130
116
  --color-disabled-bg: var(--dbc-neutral-100);
131
117
  --color-disabled-fg: #9ca3af;
132
118
  --color-disabled-border: var(--dbc-neutral-200);
133
119
 
134
- /* === Focus === */
135
-
120
+ /* Focus */
136
121
  --color-focus-ring: var(--dbc-blue-300);
137
122
  --focus-ring: 0 0 0 3px rgba(12, 62, 227, 0.25);
138
123
 
139
124
  /* ==========================================================================
140
- * OPTIONAL COMPONENT-LEVEL TOKENS
125
+ * COMPONENT-LEVEL TOKENS (THEME-DEPENDENT COLORS)
141
126
  * ======================================================================= */
142
127
 
143
128
  /* Cards */
@@ -147,8 +132,6 @@ html[data-theme='light'] {
147
132
 
148
133
  --card-fg-default: var(--color-fg-default);
149
134
  --card-fg-on-strong: var(--color-fg-on-strong);
150
- --card-fg-on-accent-1: var(--color-fg-on-accent-1);
151
- --card-fg-on-accent-2: var(--color-fg-on-accent-2);
152
135
 
153
136
  /* Buttons */
154
137
  --button-bg-primary: var(--color-brand);
@@ -156,10 +139,10 @@ html[data-theme='light'] {
156
139
  --button-fg-primary: var(--color-fg-on-brand);
157
140
 
158
141
  /* ==========================================================================
159
- * NON-COLOR SYSTEM TOKENS
142
+ * THEME-SPECIFIC NON-COLOR TOKENS (VISUAL EFFECTS)
160
143
  * ======================================================================= */
161
144
 
162
- /* Opacities (light) */
145
+ /* Opacities */
163
146
  --opac-bg-light: rgba(0, 0, 0, 0.025);
164
147
  --opac-bg-default: rgba(0, 0, 0, 0.05);
165
148
  --opac-bg-dark: rgba(0, 0, 0, 0.1);
@@ -168,135 +151,13 @@ html[data-theme='light'] {
168
151
  --opac-bg-default-invert: rgba(255, 255, 255, 0.05);
169
152
  --opac-bg-dark-invert: rgba(255, 255, 255, 0.1);
170
153
 
171
- /* ===== Spacing & Layout ===== */
172
- --spacing-2xs: 2px;
173
- --spacing-xxs: 4px;
174
- --spacing-xs: 8px;
175
- --spacing-sm: 12px;
176
- --spacing-md: 16px;
177
- --spacing-lg: 24px;
178
- --spacing-xl: 32px;
179
- --spacing-2xl: 48px;
180
- --spacing-3xl: 64px;
181
- --spacing-4xl: 96px;
182
-
183
- --gutter-sm: 12px;
184
- --gutter-md: 16px;
185
- --gutter-lg: 24px;
186
-
187
- /* Breakpoints & Containers */
188
- --bp-xs: 480px;
189
- --bp-sm: 640px;
190
- --bp-md: 768px;
191
- --bp-lg: 1024px;
192
- --bp-xl: 1280px;
193
-
194
- --container-xs: 480px;
195
- --container-sm: 640px;
196
- --container-md: 768px;
197
- --container-lg: 1024px;
198
- --container-xl: 1280px;
199
-
200
- /* ===== Sizing ===== */
201
- --icon-size-sm: 16px;
202
- --icon-size-md: 20px;
203
- --icon-size-lg: 24px;
204
-
205
- --component-size-xxs: 12px;
206
- --component-size-xs: 20px;
207
- --component-size-sm: 30px;
208
- --component-size-md: 36px;
209
- --component-size-lg: 44px;
210
- --component-size-xl: 435px;
211
- --sidebar-width: 180px;
212
-
213
- /* Control paddings */
214
- --control-padding-x: 12px;
215
- --control-padding-y: 8px;
216
-
217
- /* Border Radius */
218
- --border-radius-none: 0;
219
- --border-radius-default: 0.25rem;
220
- --border-radius-rounded: 2rem;
221
- --border-radius-round: 50%;
222
- --border-radius-sm: 0.125rem;
223
- --border-radius-md: 0.375rem;
224
- --border-radius-lg: 0.5rem;
225
- --border-radius-xl: 0.75rem;
226
-
227
- /* Density */
228
- --density-compact: -2px;
229
- --density-comfortable: 0px;
230
- --density-spacious: 4px;
231
-
232
- /* Typography */
233
- --text-max-width: 65ch;
234
- --font-family:
235
- Roboto, Inter, ui-sans-serif, system-ui, 'Segoe UI', 'Helvetica Neue', Arial,
236
- 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', sans-serif;
237
-
238
- --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;
239
-
240
- --font-size-xs: 12px;
241
- --font-size-sm: 14px;
242
- --font-size-md: 16px;
243
- --font-size-lg: 18px;
244
- --font-size-xl: 24px;
245
- --font-size-2xl: 30px;
246
-
247
- --font-size-fluid-sm: clamp(14px, 1.2vw, 16px);
248
- --font-size-fluid-lg: clamp(18px, 1.6vw, 22px);
249
-
250
- --font-weight-default: 400;
251
- --font-weight-medium: 500;
252
- --font-weight-semibold: 600;
253
- --font-weight-bold: 700;
254
- --font-weight-extrabold: 800;
255
-
256
- --line-height-tight: 1.25;
257
- --line-height-normal: 1.5;
258
- --line-height-relaxed: 1.75;
259
-
260
- --letter-spacing-tight: -0.01em;
261
- --letter-spacing-normal: 0;
262
- --letter-spacing-wide: 0.02em;
263
-
264
- --nav-link-transform: none;
265
- --breadcrumb-transform: none;
266
- --tab-label-transform: none;
267
-
268
- /* Motion */
269
- --transition-fast: 150ms;
270
- --transition-normal: 250ms;
271
- --transition-slow: 400ms;
272
-
273
- --ease-standard: cubic-bezier(0.2, 0, 0.2, 1);
274
- --ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
275
- --ease-decelerate: cubic-bezier(0, 0, 0.2, 1);
276
- --ease-accelerate: cubic-bezier(0.4, 0, 1, 1);
277
-
278
- /* Elevation & Overlay */
154
+ /* Shadows */
279
155
  --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
280
156
  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);
281
157
  --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.08);
282
158
  --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
283
159
  --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.1);
284
160
 
285
- --overlay-scrim: rgba(0, 0, 0, 0.5);
286
- --backdrop-blur: 8px;
287
-
288
- /* Layers */
289
- --z-base: 0;
290
- --z-backdrop: 1245;
291
- --z-dropdown: 1000;
292
- --z-sticky: 1100;
293
- --z-banner: 1150;
294
- --z-modal: 1200;
295
- --z-drawer: 1250;
296
- --z-popover: 1300;
297
- --z-tooltip: 1400;
298
- --z-toast: 1500;
299
-
300
161
  /* Data viz */
301
162
  --viz-cat-1: #2563eb;
302
163
  --viz-cat-2: #16a34a;
@@ -309,30 +170,12 @@ html[data-theme='light'] {
309
170
  --viz-seq-mid: #60a5fa;
310
171
  --viz-seq-end: #1d4ed8;
311
172
 
312
- /* Skeletons & loaders */
173
+ /* Skeletons */
313
174
  --skeleton-base: #e5e7eb;
314
175
  --skeleton-pulse: #f3f4f6;
315
- --spinner-size: 16px;
316
- --spinner-stroke: 2px;
317
-
318
- /* Logical spacing */
319
- --space-inline-sm: 8px;
320
- }
321
-
322
- /* Reduced motion */
323
- @media (prefers-reduced-motion: reduce) {
324
- :root {
325
- --transition-fast: 1ms;
326
- --transition-normal: 1ms;
327
- --transition-slow: 1ms;
328
- }
329
- * {
330
- animation: none !important;
331
- transition-duration: 1ms !important;
332
- }
333
176
  }
334
177
 
335
- /* High-contrast variant */
178
+ /* High-contrast variant (theme override) */
336
179
  :root[data-contrast='high'] {
337
180
  --color-border-subtle: #4b5563;
338
181
  --color-border-default: #374151;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dbcdk/react-components",
3
- "version": "0.0.12",
3
+ "version": "0.0.14",
4
4
  "description": "Reusable React components for DBC projects",
5
5
  "license": "ISC",
6
6
  "author": "",
@@ -63,9 +63,9 @@
63
63
  },
64
64
  "peerDependencies": {
65
65
  "@tanstack/react-table": "^8.21.3",
66
- "lucide-react": "^0.543.0",
67
- "react": "^19.2.0 || ^19.0.0",
68
- "react-dom": "^19.2.0 || ^19.0.0"
66
+ "lucide-react": ">=0.543.0 <1",
67
+ "react": "^19.0.0",
68
+ "react-dom": "^19.0.0"
69
69
  },
70
70
  "peerDependenciesMeta": {
71
71
  "@tanstack/react-table": {