@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,482 @@
1
+ /* Modal Component Styles */
2
+ /* Semantic CSS architecture following BEM methodology */
3
+
4
+ /* ============================================================================ */
5
+ /* MODAL BASE */
6
+ /* ============================================================================ */
7
+
8
+ .modal {
9
+ --modal-border-radius: var(--cs-border-radius-xl);
10
+ --modal-shadow: var(--cs-shadows-lg);
11
+ --modal-max-width: calc(var(--cs-spacing-scale-6xl) * 2.667);
12
+ --modal-min-height: auto;
13
+ --modal-transition: var(--cs-transitions-properties-all);
14
+ --modal-background: var(--cs-colors-surface-background);
15
+ --modal-border: var(--cs-border-width-normal) solid var(--cs-colors-border);
16
+ }
17
+
18
+ .modal__overlay {
19
+ position: fixed;
20
+ top: 0;
21
+ left: 0;
22
+ right: 0;
23
+ bottom: 0;
24
+ z-index: var(--cs-z-index-modal);
25
+ display: flex;
26
+ align-items: center;
27
+ justify-content: center;
28
+ padding: var(--cs-spacing-scale-4);
29
+ }
30
+
31
+ .modal__container {
32
+ position: relative;
33
+ width: 100%;
34
+ max-width: var(--modal-max-width);
35
+ min-height: var(--modal-min-height);
36
+ background-color: var(--modal-background);
37
+ border: var(--modal-border);
38
+ border-radius: var(--modal-border-radius);
39
+ box-shadow: var(--modal-shadow);
40
+ display: flex;
41
+ flex-direction: column;
42
+ overflow: hidden;
43
+ transform: scale(1);
44
+ transition: var(--modal-transition);
45
+ }
46
+
47
+ /* ============================================================================ */
48
+ /* MODAL SIZES */
49
+ /* ============================================================================ */
50
+
51
+ .modal__container--size-sm {
52
+ --modal-max-width: calc(var(--cs-spacing-scale-6xl) * 2);
53
+ }
54
+
55
+ .modal__container--size-md {
56
+ --modal-max-width: calc(var(--cs-spacing-scale-6xl) * 2.667);
57
+ }
58
+
59
+ .modal__container--size-lg {
60
+ --modal-max-width: calc(var(--cs-spacing-scale-6xl) * 4);
61
+ }
62
+
63
+ .modal__container--size-xl {
64
+ --modal-max-width: calc(var(--cs-spacing-scale-6xl) * 5.333);
65
+ }
66
+
67
+ .modal__container--size-full {
68
+ --modal-max-width: calc(100vw - var(--cs-spacing-scale-8));
69
+ --modal-min-height: calc(100vh - var(--cs-spacing-scale-8));
70
+ }
71
+
72
+ /* ============================================================================ */
73
+ /* MODAL VARIANTS */
74
+ /* ============================================================================ */
75
+
76
+ .modal__container--variant-default {
77
+ /* Uses base modal styles - no overrides needed */
78
+ }
79
+
80
+ .modal__container--variant-borderless {
81
+ border: none;
82
+ }
83
+
84
+ .modal__container--variant-elevated {
85
+ --modal-shadow: var(--cs-shadows-2xl);
86
+ }
87
+
88
+ .modal__container--variant-centered {
89
+ margin: auto;
90
+ }
91
+
92
+ /* ============================================================================ */
93
+ /* MODAL HEADER */
94
+ /* ============================================================================ */
95
+
96
+ .modal__header {
97
+ display: flex;
98
+ align-items: center;
99
+ justify-content: space-between;
100
+ padding: var(--cs-spacing-scale-6);
101
+ border-bottom: var(--cs-borders-subtle);
102
+ background-color: var(--cs-colors-background-secondary);
103
+ flex-shrink: 0;
104
+ }
105
+
106
+ .modal__header--borderless {
107
+ border-bottom: none;
108
+ }
109
+
110
+ .modal__header--no-padding {
111
+ padding: 0;
112
+ }
113
+
114
+ .modal__title {
115
+ font-size: var(--cs-typography-font-size-lg);
116
+ font-weight: var(--cs-typography-font-weight-semibold);
117
+ line-height: var(--cs-typography-line-height-tight);
118
+ color: var(--cs-colors-text-primary);
119
+ margin: 0;
120
+ flex: 1;
121
+ }
122
+
123
+ .modal__close {
124
+ display: flex;
125
+ align-items: center;
126
+ justify-content: center;
127
+ width: var(--cs-spacing-scale-8);
128
+ height: var(--cs-spacing-scale-8);
129
+ border: none;
130
+ background: none;
131
+ color: var(--cs-colors-text-secondary);
132
+ cursor: pointer;
133
+ border-radius: var(--cs-border-radius-scale-2);
134
+ transition: var(--modal-transition);
135
+ flex-shrink: 0;
136
+ margin-left: var(--cs-spacing-scale-3);
137
+ }
138
+
139
+ .modal__close:hover {
140
+ background-color: var(--cs-colors-background-hover);
141
+ color: var(--cs-colors-text-primary);
142
+ }
143
+
144
+ .modal__close:focus {
145
+ outline: var(--cs-border-width-thick) solid var(--cs-colors-primary-500);
146
+ outline-offset: var(--cs-spacing-scale-0-5);
147
+ }
148
+
149
+ .modal__close:active {
150
+ background-color: var(--cs-colors-background-active);
151
+ }
152
+
153
+ /* ============================================================================ */
154
+ /* MODAL BODY */
155
+ /* ============================================================================ */
156
+
157
+ .modal__body {
158
+ flex: 1;
159
+ padding: var(--cs-spacing-scale-6);
160
+ overflow-y: auto;
161
+ color: var(--cs-colors-text-primary);
162
+ line-height: var(--cs-typography-line-height-relaxed);
163
+ }
164
+
165
+ .modal__body--no-padding {
166
+ padding: 0;
167
+ }
168
+
169
+ .modal__body--compact {
170
+ padding: var(--cs-spacing-scale-4);
171
+ }
172
+
173
+ .modal__body--spacious {
174
+ padding: var(--cs-spacing-scale-8);
175
+ }
176
+
177
+ .modal__body--scrollable {
178
+ max-height: var(--cs-viewport-height-3-5);
179
+ overflow-y: auto;
180
+ }
181
+
182
+ /* ============================================================================ */
183
+ /* MODAL FOOTER */
184
+ /* ============================================================================ */
185
+
186
+ .modal__footer {
187
+ display: flex;
188
+ align-items: center;
189
+ justify-content: flex-end;
190
+ gap: var(--cs-spacing-scale-3);
191
+ padding: var(--cs-spacing-scale-6);
192
+ border-top: var(--cs-borders-subtle);
193
+ background-color: var(--cs-colors-background-secondary);
194
+ flex-shrink: 0;
195
+ }
196
+
197
+ .modal__footer--borderless {
198
+ border-top: none;
199
+ }
200
+
201
+ .modal__footer--no-padding {
202
+ padding: 0;
203
+ }
204
+
205
+ .modal__footer--center {
206
+ justify-content: center;
207
+ }
208
+
209
+ .modal__footer--space-between {
210
+ justify-content: space-between;
211
+ }
212
+
213
+ .modal__footer--start {
214
+ justify-content: flex-start;
215
+ }
216
+
217
+ /* ============================================================================ */
218
+ /* MODAL ANIMATIONS */
219
+ /* ============================================================================ */
220
+
221
+ .modal__container--enter {
222
+ animation: modal-slide-in var(--cs-transitions-durations-normal) ease-out;
223
+ }
224
+
225
+ .modal__container--exit {
226
+ animation: modal-slide-out var(--cs-transitions-durations-normal) ease-in;
227
+ }
228
+
229
+ .modal__container--fade-enter {
230
+ animation: modal-fade-in var(--cs-transitions-durations-normal) ease-out;
231
+ }
232
+
233
+ .modal__container--fade-exit {
234
+ animation: modal-fade-out var(--cs-transitions-durations-normal) ease-in;
235
+ }
236
+
237
+ .modal__container--scale-enter {
238
+ animation: modal-scale-in var(--cs-transitions-durations-normal) ease-out;
239
+ }
240
+
241
+ .modal__container--scale-exit {
242
+ animation: modal-scale-out var(--cs-transitions-durations-normal) ease-in;
243
+ }
244
+
245
+ @keyframes modal-slide-in {
246
+ from {
247
+ transform: translateY(calc(-1 * var(--cs-spacing-scale-5)));
248
+ opacity: 0;
249
+ }
250
+ to {
251
+ transform: translateY(0);
252
+ opacity: 1;
253
+ }
254
+ }
255
+
256
+ @keyframes modal-slide-out {
257
+ from {
258
+ transform: translateY(0);
259
+ opacity: 1;
260
+ }
261
+ to {
262
+ transform: translateY(calc(-1 * var(--cs-spacing-scale-5)));
263
+ opacity: 0;
264
+ }
265
+ }
266
+
267
+ @keyframes modal-fade-in {
268
+ from {
269
+ opacity: 0;
270
+ }
271
+ to {
272
+ opacity: 1;
273
+ }
274
+ }
275
+
276
+ @keyframes modal-fade-out {
277
+ from {
278
+ opacity: 1;
279
+ }
280
+ to {
281
+ opacity: 0;
282
+ }
283
+ }
284
+
285
+ @keyframes modal-scale-in {
286
+ from {
287
+ transform: scale(var(--cs-scale-95));
288
+ opacity: 0;
289
+ }
290
+ to {
291
+ transform: scale(1);
292
+ opacity: 1;
293
+ }
294
+ }
295
+
296
+ @keyframes modal-scale-out {
297
+ from {
298
+ transform: scale(1);
299
+ opacity: 1;
300
+ }
301
+ to {
302
+ transform: scale(var(--cs-scale-95));
303
+ opacity: 0;
304
+ }
305
+ }
306
+
307
+ /* ============================================================================ */
308
+ /* RESPONSIVE DESIGN */
309
+ /* ============================================================================ */
310
+
311
+ @media (max-width: 640px) {
312
+ .modal__overlay {
313
+ padding: var(--cs-spacing-scale-2);
314
+ align-items: flex-end;
315
+ }
316
+
317
+ .modal__container {
318
+ max-width: 100%;
319
+ max-height: var(--cs-viewport-height-9-10);
320
+ margin: 0;
321
+ border-radius: var(--cs-border-radius-scale-3) var(--cs-border-radius-scale-3) 0 0;
322
+ }
323
+
324
+ .modal__container--size-full {
325
+ --modal-max-width: 100%;
326
+ --modal-min-height: var(--cs-viewport-height-9-10);
327
+ border-radius: 0;
328
+ }
329
+
330
+ .modal__header,
331
+ .modal__body,
332
+ .modal__footer {
333
+ padding: var(--cs-spacing-scale-4);
334
+ }
335
+
336
+ .modal__body--scrollable {
337
+ max-height: var(--cs-viewport-height-1-2);
338
+ }
339
+ }
340
+
341
+ @media (max-width: 480px) {
342
+ .modal__overlay {
343
+ padding: 0;
344
+ }
345
+
346
+ .modal__container {
347
+ min-height: var(--cs-viewport-height-full);
348
+ border-radius: 0;
349
+ }
350
+
351
+ .modal__header {
352
+ padding: var(--cs-spacing-scale-4) var(--cs-spacing-scale-4) var(--cs-spacing-scale-3);
353
+ }
354
+
355
+ .modal__body {
356
+ padding: var(--cs-spacing-scale-4);
357
+ }
358
+
359
+ .modal__footer {
360
+ padding: var(--cs-spacing-scale-3) var(--cs-spacing-scale-4) var(--cs-spacing-scale-4);
361
+ }
362
+ }
363
+
364
+ /* ============================================================================ */
365
+ /* ACCESSIBILITY */
366
+ /* ============================================================================ */
367
+
368
+ .modal__container[role="dialog"] {
369
+ /* Ensure modal is properly announced to screen readers */
370
+ /* Role attribute provides semantic meaning for assistive technologies */
371
+ }
372
+
373
+ .modal__container:focus {
374
+ outline: none;
375
+ }
376
+
377
+ .modal__overlay[data-focus-trap] {
378
+ /* Focus trap is active - contains keyboard navigation within modal */
379
+ /* This selector ensures proper focus management for accessibility */
380
+ }
381
+
382
+ /* High contrast mode support */
383
+ @media (prefers-contrast: high) {
384
+ .modal__container {
385
+ border: var(--cs-border-width-thick) solid;
386
+ }
387
+
388
+ .modal__header,
389
+ .modal__footer {
390
+ border-color: currentColor;
391
+ }
392
+ }
393
+
394
+ /* Reduced motion support */
395
+ @media (prefers-reduced-motion: reduce) {
396
+ .modal__container {
397
+ transition: none;
398
+ }
399
+
400
+ .modal__container--enter,
401
+ .modal__container--exit,
402
+ .modal__container--fade-enter,
403
+ .modal__container--fade-exit,
404
+ .modal__container--scale-enter,
405
+ .modal__container--scale-exit {
406
+ animation: none;
407
+ }
408
+ }
409
+
410
+ /* ============================================================================ */
411
+ /* THEME INTEGRATION */
412
+ /* ============================================================================ */
413
+
414
+ .modal__container--theme-dark {
415
+ --modal-background: var(--cs-colors-gray-800);
416
+ --modal-border: var(--cs-borders-dark);
417
+ color: var(--cs-colors-white);
418
+ }
419
+
420
+ .modal__container--theme-dark .modal__header,
421
+ .modal__container--theme-dark .modal__footer {
422
+ background-color: var(--cs-colors-gray-900);
423
+ border-color: var(--cs-colors-gray-700);
424
+ }
425
+
426
+ .modal__container--theme-dark .modal__title {
427
+ color: var(--cs-colors-white);
428
+ }
429
+
430
+ .modal__container--theme-dark .modal__close {
431
+ color: var(--cs-colors-gray-400);
432
+ }
433
+
434
+ .modal__container--theme-dark .modal__close:hover {
435
+ background-color: var(--cs-colors-gray-700);
436
+ color: var(--cs-colors-white);
437
+ }
438
+
439
+ /* ============================================================================ */
440
+ /* FOCUS MANAGEMENT */
441
+ /* ============================================================================ */
442
+
443
+ .modal__focus-trap {
444
+ /* Invisible element for focus trapping */
445
+ position: absolute;
446
+ top: 0;
447
+ left: 0;
448
+ width: var(--cs-spacing-scale-0-25);
449
+ height: var(--cs-spacing-scale-0-25);
450
+ overflow: hidden;
451
+ clip: rect(0, 0, 0, 0);
452
+ white-space: nowrap;
453
+ border: 0;
454
+ }
455
+
456
+ .modal__container--focus-visible {
457
+ outline: var(--cs-border-width-thick) solid var(--cs-colors-primary-500);
458
+ outline-offset: var(--cs-spacing-scale-0-5);
459
+ }
460
+
461
+ /* ============================================================================ */
462
+ /* LOADING STATE */
463
+ /* ============================================================================ */
464
+
465
+ .modal__container--loading {
466
+ pointer-events: none;
467
+ opacity: var(--cs-opacity-70);
468
+ }
469
+
470
+ .modal__container--loading::after {
471
+ content: '';
472
+ position: absolute;
473
+ top: 0;
474
+ left: 0;
475
+ right: 0;
476
+ bottom: 0;
477
+ background: var(--cs-colors-white-alpha-80);
478
+ display: flex;
479
+ align-items: center;
480
+ justify-content: center;
481
+ z-index: 1;
482
+ }