@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.1.6 → 0.1.7

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 (82) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/index.d.ts +7 -0
  3. package/dist/index.esm.js +18 -1
  4. package/dist/index.js +18 -1
  5. package/dist/setupTests.d.ts +124 -0
  6. package/dist/setupTests.esm.js +122 -0
  7. package/dist/setupTests.js +122 -0
  8. package/dist/styles.css +1 -1
  9. package/package.json +1 -1
  10. package/src/index.css +1046 -0
  11. package/src/index.ts +18 -0
  12. package/src/plugins/theme-css-generator.ts +354 -0
  13. package/src/setupTests.ts +124 -0
  14. package/src/stories/README.md +39 -0
  15. package/src/stories/components/ThemeDebugger.tsx +143 -0
  16. package/src/stories/index.ts +29 -0
  17. package/src/stories/storybook-theme-imports.css +51 -0
  18. package/src/styles/base/fonts.css +30 -0
  19. package/src/styles/base/generated-theme-variables.css +573 -0
  20. package/src/styles/base/index.css +7 -0
  21. package/src/styles/base/reset.css +48 -0
  22. package/src/styles/base/theme.css +1068 -0
  23. package/src/styles/base/typography.css +68 -0
  24. package/src/styles/base/variables.css +5 -0
  25. package/src/styles/components/CLAUDE.md +62 -0
  26. package/src/styles/components/base/badge.css +428 -0
  27. package/src/styles/components/base/button.css +774 -0
  28. package/src/styles/components/base/card.css +601 -0
  29. package/src/styles/components/base/checkbox.css +442 -0
  30. package/src/styles/components/base/index.css +9 -0
  31. package/src/styles/components/base/input.css +887 -0
  32. package/src/styles/components/base/label.css +296 -0
  33. package/src/styles/components/data-display/chart.css +353 -0
  34. package/src/styles/components/data-display/data-grid.css +619 -0
  35. package/src/styles/components/data-display/index.css +9 -0
  36. package/src/styles/components/data-display/list.css +560 -0
  37. package/src/styles/components/data-display/table.css +498 -0
  38. package/src/styles/components/data-display/timeline.css +764 -0
  39. package/src/styles/components/data-display/tree.css +881 -0
  40. package/src/styles/components/feedback/alert.css +358 -0
  41. package/src/styles/components/feedback/index.css +7 -0
  42. package/src/styles/components/feedback/progress.css +435 -0
  43. package/src/styles/components/feedback/skeleton.css +337 -0
  44. package/src/styles/components/feedback/toast.css +564 -0
  45. package/src/styles/components/index.css +17 -0
  46. package/src/styles/components/navigation/breadcrumb.css +465 -0
  47. package/src/styles/components/navigation/index.css +9 -0
  48. package/src/styles/components/navigation/menu.css +572 -0
  49. package/src/styles/components/navigation/pagination.css +635 -0
  50. package/src/styles/components/navigation/sidebar.css +807 -0
  51. package/src/styles/components/navigation/stepper.css +519 -0
  52. package/src/styles/components/navigation/tabs.css +404 -0
  53. package/src/styles/components/overlay/backdrop.css +243 -0
  54. package/src/styles/components/overlay/index.css +8 -0
  55. package/src/styles/components/overlay/modal.css +482 -0
  56. package/src/styles/components/overlay/popover.css +607 -0
  57. package/src/styles/components/overlay/portal.css +213 -0
  58. package/src/styles/components/overlay/tooltip.css +488 -0
  59. package/src/styles/generated-theme-variables.css +573 -0
  60. package/src/styles/index.css +5 -0
  61. package/src/styles/layers/index.css +54 -0
  62. package/src/styles/layers/overrides.css +108 -0
  63. package/src/styles/layers/validation.css +159 -0
  64. package/src/styles/layers/validation.js +310 -0
  65. package/src/styles/themes/default.css +450 -0
  66. package/src/styles/themes/enterprise.css +370 -0
  67. package/src/styles/themes/harvey.css +436 -0
  68. package/src/styles/themes/index.css +4 -0
  69. package/src/styles/themes/stan-design.css +572 -0
  70. package/src/styles/utilities/advanced-transition-system.css +467 -0
  71. package/src/styles/utilities/battery-conscious-animations.css +289 -0
  72. package/src/styles/utilities/enterprise-mobile-experience.css +817 -0
  73. package/src/styles/utilities/hardware-acceleration.css +121 -0
  74. package/src/styles/utilities/index.css +20 -0
  75. package/src/styles/utilities/mobile-skeleton-loading.css +596 -0
  76. package/src/styles/utilities/semantic-input-system.css +451 -0
  77. package/src/styles/utilities/touch-friendly-interface.css +247 -0
  78. package/src/styles/utilities/touch-optimization.css +165 -0
  79. package/src/test-utils/index.ts +7 -0
  80. package/src/test-utils/theme-testing.tsx +219 -0
  81. package/src/testing/test-automation.ts +627 -0
  82. package/src/testing/test-utils.tsx +367 -0
@@ -0,0 +1,296 @@
1
+ /* Label Component Styles */
2
+ /* Using semantic CSS architecture with CSS variables and BEM methodology */
3
+
4
+ /* Label Component CSS Variables */
5
+ :root {
6
+ /* Label Base Variables */
7
+ --label-font-size: var(--cs-fonts-primary-sizes-sm);
8
+ --label-font-weight: var(--cs-fonts-primary-weights-medium);
9
+ --label-line-height: var(--cs-fonts-primary-line-heights-tight);
10
+ --label-letter-spacing: var(--cs-fonts-primary-letter-spacing-normal);
11
+
12
+ /* Label Color Variables */
13
+ --label-color-primary: var(--cs-colors-text-primary);
14
+ --label-color-secondary: var(--cs-colors-text-secondary);
15
+ --label-color-muted: var(--cs-colors-text-muted);
16
+ --label-color-disabled: var(--cs-colors-text-muted);
17
+
18
+ /* Label Spacing Variables */
19
+ --label-padding-y: var(--cs-spacing-scale-xs);
20
+ --label-padding-x: var(--cs-spacing-scale-sm);
21
+ --label-margin-bottom: var(--cs-spacing-scale-xs);
22
+
23
+ /* Label State Variables */
24
+ --label-transition: var(--cs-transitions-properties-colors);
25
+ --label-disabled-opacity: var(--cs-accessibility-disabled-opacity);
26
+ --label-disabled-cursor: var(--cs-accessibility-disabled-cursor);
27
+
28
+ /* Label Focus Variables */
29
+ --label-focus-ring-width: var(--cs-accessibility-focus-ring-width);
30
+ --label-focus-ring-offset: var(--cs-accessibility-focus-ring-offset);
31
+ --label-focus-ring-color: var(--cs-accessibility-focus-ring-color);
32
+ --label-focus-outline-offset: var(--cs-accessibility-outline-offset);
33
+
34
+ /* Label Layout Variables */
35
+ --label-label-spacing: var(--cs-spacing-scale-sm);
36
+ --label-group-spacing: var(--cs-spacing-scale-md);
37
+
38
+ /* Label Container Variables */
39
+ --label-container-width: var(--cs-container-width-medium);
40
+ --label-container-max-width: var(--cs-container-width-full);
41
+ --label-container-width-wide: var(--cs-container-width-large);
42
+ --label-container-width-narrow: var(--cs-container-width-small);
43
+ --label-container-width-xl: var(--cs-container-width-xl);
44
+
45
+ /* Label Form Layout Variables */
46
+ --label-form-layout-width: var(--cs-container-width-large);
47
+ --label-form-layout-max-width: var(--cs-container-width-full);
48
+
49
+ /* Label Accessibility Demo Variables */
50
+ --label-accessibility-demo-width: var(--cs-container-width-medium);
51
+ --label-accessibility-demo-max-width: var(--cs-container-width-full);
52
+
53
+ /* Label Responsive Demo Variables */
54
+ --label-responsive-demo-width: var(--cs-container-width-medium);
55
+ --label-responsive-demo-max-width: var(--cs-container-width-full);
56
+ }
57
+
58
+ /* Base Label Styles */
59
+ .label {
60
+ display: inline-block;
61
+ font-family: var(--cs-fonts-primary-family), var(--cs-fonts-primary-fallbacks);
62
+ font-size: var(--label-font-size);
63
+ font-weight: var(--label-font-weight);
64
+ line-height: var(--label-line-height);
65
+ letter-spacing: var(--label-letter-spacing);
66
+ color: var(--label-color-primary);
67
+ padding: var(--label-padding-y) var(--label-padding-x);
68
+ margin-bottom: var(--label-margin-bottom);
69
+ transition: var(--label-transition);
70
+ cursor: pointer;
71
+ user-select: none;
72
+ }
73
+
74
+ /* Label Size Variants */
75
+ .label--small {
76
+ font-size: var(--cs-fonts-primary-sizes-xs);
77
+ }
78
+
79
+ .label--large {
80
+ font-size: var(--cs-fonts-primary-sizes-md);
81
+ }
82
+
83
+ .label--xl {
84
+ font-size: var(--cs-fonts-primary-sizes-lg);
85
+ }
86
+
87
+ /* Label Color Variants */
88
+ .label--primary {
89
+ color: var(--label-color-primary);
90
+ }
91
+
92
+ .label--secondary {
93
+ color: var(--label-color-secondary);
94
+ }
95
+
96
+ .label--muted {
97
+ color: var(--label-color-muted);
98
+ }
99
+
100
+ /* Label State Styles */
101
+ .label:focus {
102
+ outline: var(--label-focus-ring-width) solid var(--label-focus-ring-color);
103
+ outline-offset: var(--label-focus-ring-offset);
104
+ }
105
+
106
+ .label:focus:not(:focus-visible) {
107
+ outline: none;
108
+ }
109
+
110
+ /* Peer State Handling */
111
+ .label:has(+ *:disabled) {
112
+ color: var(--label-color-disabled);
113
+ cursor: var(--label-disabled-cursor);
114
+ opacity: var(--label-disabled-opacity);
115
+ }
116
+
117
+ /* Label with Required Indicator */
118
+ .label--required::after {
119
+ content: " *";
120
+ color: var(--cs-colors-semantic-error);
121
+ font-weight: var(--cs-fonts-primary-weights-semibold);
122
+ }
123
+
124
+ /* Label in Form Context */
125
+ .label--form {
126
+ display: block;
127
+ width: var(--label-container-width);
128
+ max-width: var(--label-container-max-width);
129
+ }
130
+
131
+ /* Label Group Layout */
132
+ .label-group {
133
+ display: flex;
134
+ flex-direction: column;
135
+ gap: var(--label-group-spacing);
136
+ }
137
+
138
+ .label-group--horizontal {
139
+ flex-direction: row;
140
+ align-items: center;
141
+ gap: var(--label-label-spacing);
142
+ }
143
+
144
+ /* Label with Input Layout */
145
+ .label-input-group {
146
+ display: flex;
147
+ flex-direction: column;
148
+ gap: var(--label-label-spacing);
149
+ }
150
+
151
+ .label-input-group--horizontal {
152
+ flex-direction: row;
153
+ align-items: center;
154
+ gap: var(--label-label-spacing);
155
+ }
156
+
157
+ /* Label with Checkbox Layout */
158
+ .label-checkbox-group {
159
+ display: flex;
160
+ align-items: center;
161
+ gap: var(--label-label-spacing);
162
+ }
163
+
164
+ /* Responsive Behavior */
165
+ @media (min-width: var(--cs-breakpoints-tablet)) {
166
+ .label-input-group--responsive {
167
+ flex-direction: row;
168
+ align-items: center;
169
+ }
170
+ }
171
+
172
+ @media (min-width: var(--cs-breakpoints-desktop)) {
173
+ .label-input-group--responsive {
174
+ gap: var(--cs-spacing-scale-md);
175
+ }
176
+ }
177
+
178
+ /* Label Container for Stories */
179
+ .label-container {
180
+ width: var(--cs-container-width-medium);
181
+ max-width: var(--cs-container-width-full);
182
+ }
183
+
184
+ .label-container--wide {
185
+ width: var(--cs-container-width-large);
186
+ }
187
+
188
+ .label-container--narrow {
189
+ width: var(--cs-container-width-small);
190
+ }
191
+
192
+ /* Label Form Layout for Stories */
193
+ .label-form-layout {
194
+ display: flex;
195
+ flex-direction: column;
196
+ gap: var(--cs-spacing-scale-md);
197
+ width: var(--cs-container-width-large);
198
+ max-width: var(--cs-container-width-full);
199
+ }
200
+
201
+ /* Label Accessibility Demo */
202
+ .label-accessibility-demo {
203
+ display: flex;
204
+ flex-direction: column;
205
+ gap: var(--cs-spacing-scale-lg);
206
+ width: var(--cs-container-width-medium);
207
+ max-width: var(--cs-container-width-full);
208
+ }
209
+
210
+ /* Label Responsive Demo */
211
+ .label-responsive-demo {
212
+ display: grid;
213
+ grid-template-columns: 1fr;
214
+ gap: var(--cs-spacing-scale-md);
215
+ width: var(--cs-container-width-full);
216
+ max-width: var(--cs-container-width-xl);
217
+ }
218
+
219
+ @media (min-width: var(--cs-breakpoints-tablet)) {
220
+ .label-responsive-demo {
221
+ grid-template-columns: 1fr 1fr;
222
+ }
223
+ }
224
+
225
+ /* Label Styling Variations */
226
+ .label--primary-styled {
227
+ color: var(--cs-colors-primary-600);
228
+ font-weight: var(--cs-fonts-primary-weights-semibold);
229
+ }
230
+
231
+ .label--secondary-styled {
232
+ color: var(--cs-colors-secondary-600);
233
+ font-weight: var(--cs-fonts-primary-weights-medium);
234
+ }
235
+
236
+ .label--accent-styled {
237
+ color: var(--cs-colors-accent);
238
+ font-weight: var(--cs-fonts-primary-weights-bold);
239
+ }
240
+
241
+ /* Label with Icon */
242
+ .label--with-icon {
243
+ display: flex;
244
+ align-items: center;
245
+ gap: var(--cs-spacing-scale-xs);
246
+ }
247
+
248
+ /* Label Error State */
249
+ .label--error {
250
+ color: var(--cs-colors-semantic-error);
251
+ }
252
+
253
+ /* Label Success State */
254
+ .label--success {
255
+ color: var(--cs-colors-semantic-success);
256
+ }
257
+
258
+ /* Label Warning State */
259
+ .label--warning {
260
+ color: var(--cs-colors-semantic-warning);
261
+ }
262
+
263
+ /* Label Info State */
264
+ .label--info {
265
+ color: var(--cs-colors-semantic-info);
266
+ }
267
+
268
+ /* Label Hover Effects */
269
+ .label:hover:not(:has(+ *:disabled)) {
270
+ color: var(--cs-colors-primary-600);
271
+ }
272
+
273
+ /* Label Active State */
274
+ .label:active:not(:has(+ *:disabled)) {
275
+ transform: translateY(1px);
276
+ }
277
+
278
+ /* Label Disabled State */
279
+ .label:has(+ *:disabled) {
280
+ pointer-events: none;
281
+ }
282
+
283
+ /* Label Focus Visible */
284
+ .label:focus-visible {
285
+ outline: var(--label-focus-ring-width) solid var(--label-focus-ring-color);
286
+ outline-offset: var(--label-focus-ring-offset);
287
+ border-radius: var(--cs-border-radius-sm);
288
+ }
289
+
290
+ /* Label Print Styles */
291
+ @media print {
292
+ .label {
293
+ color: var(--cs-print-text-color);
294
+ background: var(--cs-print-background-color);
295
+ }
296
+ }
@@ -0,0 +1,353 @@
1
+ /* Chart Component Styles */
2
+ /* Semantic CSS architecture following BEM methodology */
3
+
4
+ /* ============================================================================ */
5
+ /* CHART CONTAINER */
6
+ /* ============================================================================ */
7
+
8
+ .chart {
9
+ --chart-bg: var(--cs-colors-surface-background);
10
+ --chart-border: var(--cs-colors-surface-border);
11
+ --chart-radius: var(--cs-border-radius-md);
12
+ --chart-shadow: var(--cs-shadows-sm);
13
+ --chart-spacing: var(--cs-spacing-scale-4);
14
+ }
15
+
16
+ .chart__container {
17
+ position: relative;
18
+ background-color: var(--chart-bg);
19
+ border: var(--cs-border-width-normal) solid var(--chart-border);
20
+ border-radius: var(--chart-radius);
21
+ box-shadow: var(--chart-shadow);
22
+ overflow: hidden;
23
+ }
24
+
25
+ /* Chart container sizes */
26
+ .chart__container--sm {
27
+ min-height: var(--cs-spacing-scale-40);
28
+ padding: var(--cs-spacing-scale-3);
29
+ }
30
+
31
+ .chart__container--md {
32
+ min-height: var(--cs-spacing-scale-64);
33
+ padding: var(--chart-spacing);
34
+ }
35
+
36
+ .chart__container--lg {
37
+ min-height: var(--cs-spacing-scale-80);
38
+ padding: var(--cs-spacing-scale-6);
39
+ }
40
+
41
+ /* Chart variants */
42
+ .chart__container--bordered {
43
+ border-width: var(--cs-border-width-thick);
44
+ border-color: var(--cs-colors-primary-500);
45
+ }
46
+
47
+ .chart__container--striped {
48
+ background: repeating-linear-gradient(
49
+ 45deg,
50
+ var(--chart-bg),
51
+ var(--chart-bg) var(--cs-spacing-scale-2-5),
52
+ var(--cs-colors-surface-surface) var(--cs-spacing-scale-2-5),
53
+ var(--cs-colors-surface-surface) var(--cs-spacing-scale-5)
54
+ );
55
+ }
56
+
57
+ /* ============================================================================ */
58
+ /* CHART HEADER */
59
+ /* ============================================================================ */
60
+
61
+ .chart__header {
62
+ display: flex;
63
+ align-items: center;
64
+ justify-content: space-between;
65
+ margin-bottom: var(--chart-spacing);
66
+ padding-bottom: var(--cs-spacing-scale-2);
67
+ border-bottom: var(--cs-border-width-normal) solid var(--cs-colors-surface-divider);
68
+ }
69
+
70
+ .chart__title {
71
+ font-size: var(--cs-fonts-primary-sizes-lg);
72
+ font-weight: var(--cs-fonts-primary-weights-semibold);
73
+ color: var(--cs-colors-text-primary);
74
+ margin: 0;
75
+ }
76
+
77
+ .chart__subtitle {
78
+ font-size: var(--cs-fonts-primary-sizes-sm);
79
+ color: var(--cs-colors-text-secondary);
80
+ margin: var(--cs-spacing-scale-1) 0 0;
81
+ }
82
+
83
+ .chart__actions {
84
+ display: flex;
85
+ align-items: center;
86
+ gap: var(--cs-spacing-scale-2);
87
+ }
88
+
89
+ /* ============================================================================ */
90
+ /* CHART CANVAS */
91
+ /* ============================================================================ */
92
+
93
+ .chart__canvas {
94
+ position: relative;
95
+ width: 100%;
96
+ height: 100%;
97
+ display: flex;
98
+ align-items: center;
99
+ justify-content: center;
100
+ }
101
+
102
+ .chart__canvas canvas {
103
+ max-width: 100%;
104
+ height: auto;
105
+ }
106
+
107
+ /* ============================================================================ */
108
+ /* CHART LEGEND */
109
+ /* ============================================================================ */
110
+
111
+ .chart__legend {
112
+ display: flex;
113
+ flex-wrap: wrap;
114
+ gap: var(--cs-spacing-scale-3);
115
+ margin-top: var(--chart-spacing);
116
+ padding-top: var(--cs-spacing-scale-2);
117
+ border-top: var(--cs-border-width-normal) solid var(--cs-colors-surface-divider);
118
+ }
119
+
120
+ .chart__legend--sm {
121
+ gap: var(--cs-spacing-scale-2);
122
+ font-size: var(--cs-fonts-primary-sizes-xs);
123
+ }
124
+
125
+ .chart__legend--md {
126
+ gap: var(--cs-spacing-scale-3);
127
+ font-size: var(--cs-fonts-primary-sizes-sm);
128
+ }
129
+
130
+ .chart__legend--lg {
131
+ gap: var(--cs-spacing-scale-4);
132
+ font-size: var(--cs-fonts-primary-sizes-base);
133
+ }
134
+
135
+ .chart__legend-item {
136
+ display: flex;
137
+ align-items: center;
138
+ gap: var(--cs-spacing-scale-2);
139
+ cursor: pointer;
140
+ transition: var(--cs-transitions-properties-colors);
141
+ }
142
+
143
+ .chart__legend-item:hover {
144
+ color: var(--cs-colors-primary-600);
145
+ }
146
+
147
+ .chart__legend-item--disabled {
148
+ opacity: 0.5;
149
+ cursor: not-allowed;
150
+ }
151
+
152
+ .chart__legend-color {
153
+ width: var(--cs-spacing-scale-3);
154
+ height: var(--cs-spacing-scale-3);
155
+ border-radius: var(--cs-border-radius-full);
156
+ flex-shrink: 0;
157
+ }
158
+
159
+ .chart__legend-label {
160
+ font-weight: var(--cs-fonts-primary-weights-medium);
161
+ color: var(--cs-colors-text-primary);
162
+ }
163
+
164
+ /* ============================================================================ */
165
+ /* CHART STATES */
166
+ /* ============================================================================ */
167
+
168
+ .chart__loading {
169
+ display: flex;
170
+ align-items: center;
171
+ justify-content: center;
172
+ min-height: var(--cs-spacing-scale-32);
173
+ color: var(--cs-colors-text-secondary);
174
+ }
175
+
176
+ .chart__loading-spinner {
177
+ width: var(--cs-spacing-scale-8);
178
+ height: var(--cs-spacing-scale-8);
179
+ border: var(--cs-border-width-heavy) solid var(--cs-colors-surface-divider);
180
+ border-top: var(--cs-border-width-heavy) solid var(--cs-colors-primary-500);
181
+ border-radius: var(--cs-border-radius-full);
182
+ animation: chart-loading-spin var(--cs-transitions-durations-slow) linear infinite;
183
+ }
184
+
185
+ @keyframes chart-loading-spin {
186
+ 0% { transform: rotate(0deg); }
187
+ 100% { transform: rotate(360deg); }
188
+ }
189
+
190
+ .chart__error {
191
+ display: flex;
192
+ align-items: center;
193
+ justify-content: center;
194
+ min-height: var(--cs-spacing-scale-32);
195
+ color: var(--cs-colors-semantic-error-500);
196
+ text-align: center;
197
+ padding: var(--chart-spacing);
198
+ }
199
+
200
+ .chart__empty {
201
+ display: flex;
202
+ flex-direction: column;
203
+ align-items: center;
204
+ justify-content: center;
205
+ min-height: var(--cs-spacing-scale-32);
206
+ color: var(--cs-colors-text-muted);
207
+ text-align: center;
208
+ padding: var(--chart-spacing);
209
+ }
210
+
211
+ .chart__empty-icon {
212
+ width: var(--cs-spacing-scale-16);
213
+ height: var(--cs-spacing-scale-16);
214
+ margin-bottom: var(--cs-spacing-scale-4);
215
+ opacity: 0.5;
216
+ }
217
+
218
+ /* ============================================================================ */
219
+ /* CHART TOOLTIPS */
220
+ /* ============================================================================ */
221
+
222
+ .chart__tooltip {
223
+ position: absolute;
224
+ background-color: var(--cs-colors-surface-background);
225
+ border: var(--cs-border-width-normal) solid var(--cs-colors-surface-border);
226
+ border-radius: var(--cs-border-radius-md);
227
+ box-shadow: var(--cs-shadows-lg);
228
+ padding: var(--cs-spacing-scale-3);
229
+ font-size: var(--cs-fonts-primary-sizes-sm);
230
+ z-index: 1000;
231
+ pointer-events: none;
232
+ }
233
+
234
+ .chart__tooltip-title {
235
+ font-weight: var(--cs-fonts-primary-weights-semibold);
236
+ color: var(--cs-colors-text-primary);
237
+ margin-bottom: var(--cs-spacing-scale-1);
238
+ }
239
+
240
+ .chart__tooltip-item {
241
+ display: flex;
242
+ align-items: center;
243
+ gap: var(--cs-spacing-scale-2);
244
+ margin-bottom: var(--cs-spacing-scale-1);
245
+ }
246
+
247
+ .chart__tooltip-item:last-child {
248
+ margin-bottom: 0;
249
+ }
250
+
251
+ .chart__tooltip-color {
252
+ width: var(--cs-spacing-scale-2);
253
+ height: var(--cs-spacing-scale-2);
254
+ border-radius: var(--cs-border-radius-full);
255
+ flex-shrink: 0;
256
+ }
257
+
258
+ .chart__tooltip-label {
259
+ color: var(--cs-colors-text-secondary);
260
+ }
261
+
262
+ .chart__tooltip-value {
263
+ font-weight: var(--cs-fonts-primary-weights-semibold);
264
+ color: var(--cs-colors-text-primary);
265
+ margin-left: auto;
266
+ }
267
+
268
+ /* ============================================================================ */
269
+ /* CHART TYPES */
270
+ /* ============================================================================ */
271
+
272
+ .chart--line .chart__canvas {
273
+ min-height: var(--cs-spacing-scale-48);
274
+ }
275
+
276
+ .chart--bar .chart__canvas {
277
+ min-height: var(--cs-spacing-scale-56);
278
+ }
279
+
280
+ .chart--pie .chart__canvas {
281
+ min-height: var(--cs-spacing-scale-64);
282
+ }
283
+
284
+ .chart--doughnut .chart__canvas {
285
+ min-height: var(--cs-spacing-scale-64);
286
+ }
287
+
288
+ .chart--area .chart__canvas {
289
+ min-height: var(--cs-spacing-scale-48);
290
+ }
291
+
292
+ /* ============================================================================ */
293
+ /* RESPONSIVE DESIGN */
294
+ /* ============================================================================ */
295
+
296
+ @media (max-width: 640px) {
297
+ .chart__header {
298
+ flex-direction: column;
299
+ align-items: flex-start;
300
+ gap: var(--cs-spacing-scale-2);
301
+ }
302
+
303
+ .chart__legend {
304
+ flex-direction: column;
305
+ gap: var(--cs-spacing-scale-2);
306
+ }
307
+
308
+ .chart__container--sm {
309
+ min-height: var(--cs-spacing-scale-32);
310
+ padding: var(--cs-spacing-scale-2);
311
+ }
312
+
313
+ .chart__container--md {
314
+ min-height: var(--cs-spacing-scale-48);
315
+ padding: var(--cs-spacing-scale-3);
316
+ }
317
+
318
+ .chart__container--lg {
319
+ min-height: var(--cs-spacing-scale-56);
320
+ padding: var(--chart-spacing);
321
+ }
322
+ }
323
+
324
+ /* ============================================================================ */
325
+ /* ACCESSIBILITY */
326
+ /* ============================================================================ */
327
+
328
+ .chart__container:focus-within {
329
+ outline: var(--cs-border-width-thick) solid var(--cs-colors-interactive-focus);
330
+ outline-offset: var(--cs-spacing-scale-0-5);
331
+ }
332
+
333
+ .chart__legend-item:focus {
334
+ outline: var(--cs-border-width-thick) solid var(--cs-colors-interactive-focus);
335
+ outline-offset: var(--cs-spacing-scale-0-5);
336
+ border-radius: var(--cs-border-radius-sm);
337
+ }
338
+
339
+ /* ============================================================================ */
340
+ /* PRINT STYLES */
341
+ /* ============================================================================ */
342
+
343
+ @media print {
344
+ .chart__container {
345
+ box-shadow: none;
346
+ border: var(--cs-border-width-normal) solid #000;
347
+ }
348
+
349
+ .chart__loading,
350
+ .chart__error {
351
+ display: none;
352
+ }
353
+ }