@dbcdk/react-components 0.0.10 → 0.0.13

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 (106) 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 +15 -6
  10. package/dist/components/card/Card.js +39 -13
  11. package/dist/components/card/Card.module.css +22 -28
  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/circle/Circle.d.ts +2 -1
  19. package/dist/components/circle/Circle.js +2 -2
  20. package/dist/components/circle/Circle.module.css +6 -2
  21. package/dist/components/code-block/CodeBlock.js +1 -1
  22. package/dist/components/code-block/CodeBlock.module.css +30 -17
  23. package/dist/components/copy-button/CopyButton.d.ts +1 -0
  24. package/dist/components/copy-button/CopyButton.js +10 -2
  25. package/dist/components/datetime-picker/DateTimePicker.d.ts +33 -8
  26. package/dist/components/datetime-picker/DateTimePicker.js +119 -78
  27. package/dist/components/datetime-picker/DateTimePicker.module.css +2 -0
  28. package/dist/components/datetime-picker/dateTimeHelpers.d.ts +15 -3
  29. package/dist/components/datetime-picker/dateTimeHelpers.js +137 -23
  30. package/dist/components/filter-field/FilterField.js +16 -11
  31. package/dist/components/filter-field/FilterField.module.css +137 -16
  32. package/dist/components/forms/checkbox/Checkbox.d.ts +2 -2
  33. package/dist/components/forms/checkbox-group/CheckboxGroup.js +1 -1
  34. package/dist/components/forms/checkbox-group/CheckboxGroup.module.css +1 -1
  35. package/dist/components/forms/form-select/FormSelect.d.ts +35 -0
  36. package/dist/components/forms/form-select/FormSelect.js +86 -0
  37. package/dist/components/forms/form-select/FormSelect.module.css +236 -0
  38. package/dist/components/forms/input/Input.d.ts +0 -3
  39. package/dist/components/forms/input/Input.js +1 -4
  40. package/dist/components/forms/input/Input.module.css +8 -7
  41. package/dist/components/forms/input-container/InputContainer.module.css +1 -1
  42. package/dist/components/forms/radio-buttons/RadioButtons.module.css +1 -0
  43. package/dist/components/forms/select/Select.js +55 -16
  44. package/dist/components/hyperlink/Hyperlink.d.ts +19 -7
  45. package/dist/components/hyperlink/Hyperlink.js +35 -11
  46. package/dist/components/hyperlink/Hyperlink.module.css +50 -2
  47. package/dist/components/interval-select/IntervalSelect.d.ts +9 -2
  48. package/dist/components/interval-select/IntervalSelect.js +21 -6
  49. package/dist/components/menu/Menu.d.ts +29 -0
  50. package/dist/components/menu/Menu.js +61 -16
  51. package/dist/components/menu/Menu.module.css +73 -5
  52. package/dist/components/overlay/modal/Modal.module.css +4 -3
  53. package/dist/components/overlay/modal/provider/ModalProvider.js +1 -3
  54. package/dist/components/overlay/side-panel/SidePanel.js +18 -1
  55. package/dist/components/overlay/side-panel/SidePanel.module.css +1 -3
  56. package/dist/components/overlay/tooltip/useTooltipTrigger.js +4 -2
  57. package/dist/components/page-layout/PageLayout.d.ts +16 -4
  58. package/dist/components/page-layout/PageLayout.js +57 -28
  59. package/dist/components/page-layout/PageLayout.module.css +153 -33
  60. package/dist/components/popover/Popover.d.ts +17 -4
  61. package/dist/components/popover/Popover.js +147 -65
  62. package/dist/components/popover/Popover.module.css +5 -0
  63. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.js +22 -18
  64. package/dist/components/sidebar/providers/SidebarProvider.d.ts +4 -1
  65. package/dist/components/sidebar/providers/SidebarProvider.js +66 -18
  66. package/dist/components/split-button/SplitButton.d.ts +1 -1
  67. package/dist/components/split-button/SplitButton.js +3 -1
  68. package/dist/components/split-button/SplitButton.module.css +4 -4
  69. package/dist/components/split-pane/SplitPane.d.ts +10 -24
  70. package/dist/components/split-pane/SplitPane.js +83 -54
  71. package/dist/components/split-pane/SplitPane.module.css +11 -6
  72. package/dist/components/split-pane/provider/SplitPaneContext.js +5 -11
  73. package/dist/components/state-page/StatePage.module.css +1 -1
  74. package/dist/components/sticky-footer-layout/StickyFooterLayout.d.ts +3 -8
  75. package/dist/components/sticky-footer-layout/StickyFooterLayout.js +57 -20
  76. package/dist/components/table/Table.d.ts +8 -8
  77. package/dist/components/table/Table.js +37 -79
  78. package/dist/components/table/Table.module.css +62 -46
  79. package/dist/components/table/{tanstack.d.ts → TanstackTable.d.ts} +7 -3
  80. package/dist/components/table/TanstackTable.js +84 -0
  81. package/dist/components/table/components/column-resizer/ColumnResizer.js +1 -1
  82. package/dist/components/table/components/column-resizer/ColumnResizer.module.css +17 -7
  83. package/dist/components/table/components/table-settings/TableSettings.d.ts +13 -3
  84. package/dist/components/table/components/table-settings/TableSettings.js +55 -4
  85. package/dist/components/table/table.utils.d.ts +17 -0
  86. package/dist/components/table/table.utils.js +61 -0
  87. package/dist/components/table/tanstackTable.utils.d.ts +22 -0
  88. package/dist/components/table/tanstackTable.utils.js +104 -0
  89. package/dist/components/tabs/Tabs.d.ts +35 -12
  90. package/dist/components/tabs/Tabs.js +114 -26
  91. package/dist/components/tabs/Tabs.module.css +158 -71
  92. package/dist/hooks/useTableSettings.d.ts +23 -4
  93. package/dist/hooks/useTableSettings.js +64 -17
  94. package/dist/index.d.ts +1 -1
  95. package/dist/index.js +1 -1
  96. package/dist/src/styles/styles.css +38 -23
  97. package/dist/styles/animation.d.ts +5 -0
  98. package/dist/styles/animation.js +5 -0
  99. package/dist/styles/styles.css +38 -23
  100. package/dist/styles/themes/dbc/base.css +136 -0
  101. package/dist/styles/themes/dbc/dark.css +39 -202
  102. package/dist/styles/themes/dbc/light.css +17 -174
  103. package/dist/utils/localStorage.utils.d.ts +19 -0
  104. package/dist/utils/localStorage.utils.js +78 -0
  105. package/package.json +4 -4
  106. package/dist/components/table/tanstack.js +0 -162
@@ -29,7 +29,6 @@
29
29
  body {
30
30
  color: var(--color-fg-default);
31
31
  background-color: var(--color-bg-page);
32
- --density: var(--density-comfortable);
33
32
  font-size: var(--font-size-sm);
34
33
  margin: 0;
35
34
  }
@@ -61,34 +60,50 @@ body.dbc-app {
61
60
 
62
61
  .dbc-table {
63
62
  --card-label-width: 260px;
63
+
64
64
  border-collapse: collapse;
65
65
  font-size: var(--font-size-sm);
66
66
  line-height: var(--line-height-normal);
67
- tr + tr th,
68
- tr + tr td {
69
- padding-block: var(--spacing-xxs);
70
- }
67
+ }
71
68
 
72
- th {
73
- white-space: nowrap;
74
- color: var(--color-fg-subtle);
75
- font-weight: var(--font-weight-default);
76
- padding-right: var(--spacing-lg);
77
- vertical-align: top;
78
- text-align: left;
79
- }
69
+ .dbc-table tr + tr th,
70
+ .dbc-table tr + tr td {
71
+ padding-block: var(--spacing-xxs);
72
+ }
80
73
 
81
- td {
82
- color: var(--color-fg-default);
83
- vertical-align: top;
84
- min-width: 0;
85
- }
74
+ /* LABELS (th) → match .metaLabel */
75
+ .dbc-table th {
76
+ white-space: nowrap;
77
+ text-align: left;
78
+ vertical-align: top;
79
+ max-width: var(--card-label-width);
80
+ overflow: hidden;
81
+ text-overflow: ellipsis;
82
+ font-size: var(--font-size-xs);
83
+ color: var(--color-fg-subtle);
84
+ letter-spacing: var(--letter-spacing-wide);
85
+ text-transform: uppercase;
86
+ font-weight: var(--font-weight-default);
87
+ padding-right: var(--spacing-lg);
88
+ }
86
89
 
87
- th {
88
- max-width: var(--card-label-width);
89
- overflow: hidden;
90
- text-overflow: ellipsis;
91
- }
90
+ /* VALUES (td) → match .metaValue */
91
+ .dbc-table td {
92
+ vertical-align: top;
93
+ min-width: 0;
94
+
95
+ margin: 0; /* harmless on td, keeps parity with metaValue */
96
+ font-size: var(--font-size-sm);
97
+ color: var(--color-fg-default);
98
+ font-weight: var(--font-weight-medium);
99
+
100
+ word-break: break-word;
101
+ }
102
+
103
+ /* Optional: baseline alignment closer to metaRow */
104
+ .dbc-table th,
105
+ .dbc-table td {
106
+ vertical-align: baseline;
92
107
  }
93
108
 
94
109
  .dbc-full-width {
@@ -0,0 +1,5 @@
1
+ export declare const MOTION_MS: {
2
+ readonly panelSlide: 300;
3
+ readonly modal: 200;
4
+ readonly tooltipOpen: 300;
5
+ };
@@ -0,0 +1,5 @@
1
+ export const MOTION_MS = {
2
+ panelSlide: 300,
3
+ modal: 200,
4
+ tooltipOpen: 300,
5
+ };
@@ -29,7 +29,6 @@
29
29
  body {
30
30
  color: var(--color-fg-default);
31
31
  background-color: var(--color-bg-page);
32
- --density: var(--density-comfortable);
33
32
  font-size: var(--font-size-sm);
34
33
  margin: 0;
35
34
  }
@@ -61,34 +60,50 @@ body.dbc-app {
61
60
 
62
61
  .dbc-table {
63
62
  --card-label-width: 260px;
63
+
64
64
  border-collapse: collapse;
65
65
  font-size: var(--font-size-sm);
66
66
  line-height: var(--line-height-normal);
67
- tr + tr th,
68
- tr + tr td {
69
- padding-block: var(--spacing-xxs);
70
- }
67
+ }
71
68
 
72
- th {
73
- white-space: nowrap;
74
- color: var(--color-fg-subtle);
75
- font-weight: var(--font-weight-default);
76
- padding-right: var(--spacing-lg);
77
- vertical-align: top;
78
- text-align: left;
79
- }
69
+ .dbc-table tr + tr th,
70
+ .dbc-table tr + tr td {
71
+ padding-block: var(--spacing-xxs);
72
+ }
80
73
 
81
- td {
82
- color: var(--color-fg-default);
83
- vertical-align: top;
84
- min-width: 0;
85
- }
74
+ /* LABELS (th) → match .metaLabel */
75
+ .dbc-table th {
76
+ white-space: nowrap;
77
+ text-align: left;
78
+ vertical-align: top;
79
+ max-width: var(--card-label-width);
80
+ overflow: hidden;
81
+ text-overflow: ellipsis;
82
+ font-size: var(--font-size-xs);
83
+ color: var(--color-fg-subtle);
84
+ letter-spacing: var(--letter-spacing-wide);
85
+ text-transform: uppercase;
86
+ font-weight: var(--font-weight-default);
87
+ padding-right: var(--spacing-lg);
88
+ }
86
89
 
87
- th {
88
- max-width: var(--card-label-width);
89
- overflow: hidden;
90
- text-overflow: ellipsis;
91
- }
90
+ /* VALUES (td) → match .metaValue */
91
+ .dbc-table td {
92
+ vertical-align: top;
93
+ min-width: 0;
94
+
95
+ margin: 0; /* harmless on td, keeps parity with metaValue */
96
+ font-size: var(--font-size-sm);
97
+ color: var(--color-fg-default);
98
+ font-weight: var(--font-weight-medium);
99
+
100
+ word-break: break-word;
101
+ }
102
+
103
+ /* Optional: baseline alignment closer to metaRow */
104
+ .dbc-table th,
105
+ .dbc-table td {
106
+ vertical-align: baseline;
92
107
  }
93
108
 
94
109
  .dbc-full-width {
@@ -0,0 +1,136 @@
1
+ :root {
2
+ /* ==========================================================================
3
+ * NON-COLOR SYSTEM TOKENS (SHARED)
4
+ * ======================================================================= */
5
+
6
+ /* Border widths */
7
+ --border-width-thin: 1px;
8
+ --border-width-medium: 2px;
9
+ --border-width-thick: 4px;
10
+
11
+ /* ===== Spacing & Layout ===== */
12
+ --spacing-2xs: 2px;
13
+ --spacing-xxs: 4px;
14
+ --spacing-xs: 8px;
15
+ --spacing-sm: 12px;
16
+ --spacing-md: 16px;
17
+ --spacing-lg: 24px;
18
+ --spacing-xl: 32px;
19
+ --spacing-2xl: 48px;
20
+ --spacing-3xl: 64px;
21
+ --spacing-4xl: 96px;
22
+
23
+ /* Breakpoints & Containers */
24
+ --bp-xs: 480px;
25
+ --bp-sm: 640px;
26
+ --bp-md: 768px;
27
+ --bp-lg: 1024px;
28
+ --bp-xl: 1280px;
29
+
30
+ --container-xs: 480px;
31
+ --container-sm: 640px;
32
+ --container-md: 768px;
33
+ --container-lg: 1024px;
34
+ --container-xl: 1280px;
35
+
36
+ /* ===== Sizing ===== */
37
+ --icon-size-sm: 16px;
38
+ --icon-size-md: 20px;
39
+ --icon-size-lg: 24px;
40
+
41
+ --component-size-xxs: 12px;
42
+ --component-size-xs: 20px;
43
+ --component-size-sm: 30px;
44
+ --component-size-md: 36px;
45
+ --component-size-lg: 44px;
46
+ --component-size-xl: 435px;
47
+ --sidebar-width: 180px;
48
+
49
+ /* Border Radius */
50
+ --border-radius-none: 0px;
51
+ --border-radius-default: 4px;
52
+ --border-radius-rounded: 32px;
53
+ --border-radius-round: 50%;
54
+ --border-radius-sm: 2px;
55
+ --border-radius-md: 6px;
56
+ --border-radius-lg: 8px;
57
+ --border-radius-xl: 12px;
58
+
59
+ /* Typography */
60
+ --text-max-width: 65ch;
61
+
62
+ --font-family:
63
+ Roboto, Inter, ui-sans-serif, system-ui, 'Segoe UI', 'Helvetica Neue', Arial,
64
+ 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', sans-serif;
65
+
66
+ --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;
67
+
68
+ --font-size-xs: 12px;
69
+ --font-size-sm: 14px;
70
+ --font-size-md: 16px;
71
+ --font-size-lg: 18px;
72
+ --font-size-xl: 24px;
73
+ --font-size-2xl: 30px;
74
+
75
+ --font-weight-default: 400;
76
+ --font-weight-medium: 500;
77
+ --font-weight-semibold: 600;
78
+ --font-weight-bold: 700;
79
+ --font-weight-extrabold: 800;
80
+
81
+ --line-height-tight: 1.25;
82
+ --line-height-normal: 1.5;
83
+ --line-height-relaxed: 1.75;
84
+
85
+ --letter-spacing-tight: -0.01em;
86
+ --letter-spacing-normal: 0;
87
+ --letter-spacing-wide: 0.02em;
88
+
89
+ /* Motion */
90
+ --transition-fast: 150ms;
91
+ --transition-normal: 250ms;
92
+ --transition-slow: 400ms;
93
+
94
+ --ease-standard: cubic-bezier(0.2, 0, 0.2, 1);
95
+ --ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
96
+ --ease-decelerate: cubic-bezier(0, 0, 0.2, 1);
97
+ --ease-accelerate: cubic-bezier(0.4, 0, 1, 1);
98
+
99
+ /* Elevation & Overlay */
100
+ --overlay-scrim: rgba(0, 0, 0, 0.5);
101
+ --backdrop-blur: 8px;
102
+
103
+ /* Layers */
104
+ --z-base: 0;
105
+
106
+ --z-dropdown: 1000;
107
+ --z-sticky: 1100;
108
+ --z-banner: 1150;
109
+ --z-backdrop-drawer: 1145;
110
+ --z-drawer: 1200;
111
+ --z-backdrop-modal: 1245;
112
+ --z-modal: 1250;
113
+ --z-popover: 1300;
114
+ --z-tooltip: 1400;
115
+ --z-toast: 1500;
116
+
117
+ /* Skeletons & loaders (structure shared; colors overridden per theme if desired) */
118
+ --spinner-size: 16px;
119
+ --spinner-stroke: 2px;
120
+
121
+ /* Logical spacing */
122
+ --space-inline-sm: 8px;
123
+ }
124
+
125
+ /* Reduced motion (shared) */
126
+ @media (prefers-reduced-motion: reduce) {
127
+ :root {
128
+ --transition-fast: 1ms;
129
+ --transition-normal: 1ms;
130
+ --transition-slow: 1ms;
131
+ }
132
+ * {
133
+ animation: none !important;
134
+ transition-duration: 1ms !important;
135
+ }
136
+ }
@@ -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 */