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

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 (70) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.esm.js +11 -2
  4. package/dist/index.js +11 -2
  5. package/dist/styles.css +1 -1
  6. package/package.json +1 -1
  7. package/src/index.css +1046 -0
  8. package/src/index.ts +9 -1
  9. package/src/plugins/theme-css-generator.ts +354 -0
  10. package/src/styles/base/fonts.css +30 -0
  11. package/src/styles/base/generated-theme-variables.css +573 -0
  12. package/src/styles/base/index.css +7 -0
  13. package/src/styles/base/reset.css +48 -0
  14. package/src/styles/base/theme.css +1068 -0
  15. package/src/styles/base/typography.css +68 -0
  16. package/src/styles/base/variables.css +5 -0
  17. package/src/styles/components/CLAUDE.md +62 -0
  18. package/src/styles/components/base/badge.css +428 -0
  19. package/src/styles/components/base/button.css +774 -0
  20. package/src/styles/components/base/card.css +601 -0
  21. package/src/styles/components/base/checkbox.css +442 -0
  22. package/src/styles/components/base/index.css +9 -0
  23. package/src/styles/components/base/input.css +887 -0
  24. package/src/styles/components/base/label.css +296 -0
  25. package/src/styles/components/data-display/chart.css +353 -0
  26. package/src/styles/components/data-display/data-grid.css +619 -0
  27. package/src/styles/components/data-display/index.css +9 -0
  28. package/src/styles/components/data-display/list.css +560 -0
  29. package/src/styles/components/data-display/table.css +498 -0
  30. package/src/styles/components/data-display/timeline.css +764 -0
  31. package/src/styles/components/data-display/tree.css +881 -0
  32. package/src/styles/components/feedback/alert.css +358 -0
  33. package/src/styles/components/feedback/index.css +7 -0
  34. package/src/styles/components/feedback/progress.css +435 -0
  35. package/src/styles/components/feedback/skeleton.css +337 -0
  36. package/src/styles/components/feedback/toast.css +564 -0
  37. package/src/styles/components/index.css +17 -0
  38. package/src/styles/components/navigation/breadcrumb.css +465 -0
  39. package/src/styles/components/navigation/index.css +9 -0
  40. package/src/styles/components/navigation/menu.css +572 -0
  41. package/src/styles/components/navigation/pagination.css +635 -0
  42. package/src/styles/components/navigation/sidebar.css +807 -0
  43. package/src/styles/components/navigation/stepper.css +519 -0
  44. package/src/styles/components/navigation/tabs.css +404 -0
  45. package/src/styles/components/overlay/backdrop.css +243 -0
  46. package/src/styles/components/overlay/index.css +8 -0
  47. package/src/styles/components/overlay/modal.css +482 -0
  48. package/src/styles/components/overlay/popover.css +607 -0
  49. package/src/styles/components/overlay/portal.css +213 -0
  50. package/src/styles/components/overlay/tooltip.css +488 -0
  51. package/src/styles/generated-theme-variables.css +573 -0
  52. package/src/styles/index.css +5 -0
  53. package/src/styles/layers/index.css +54 -0
  54. package/src/styles/layers/overrides.css +108 -0
  55. package/src/styles/layers/validation.css +159 -0
  56. package/src/styles/layers/validation.js +310 -0
  57. package/src/styles/themes/default.css +450 -0
  58. package/src/styles/themes/enterprise.css +370 -0
  59. package/src/styles/themes/harvey.css +436 -0
  60. package/src/styles/themes/index.css +4 -0
  61. package/src/styles/themes/stan-design.css +572 -0
  62. package/src/styles/utilities/advanced-transition-system.css +467 -0
  63. package/src/styles/utilities/battery-conscious-animations.css +289 -0
  64. package/src/styles/utilities/enterprise-mobile-experience.css +817 -0
  65. package/src/styles/utilities/hardware-acceleration.css +121 -0
  66. package/src/styles/utilities/index.css +20 -0
  67. package/src/styles/utilities/mobile-skeleton-loading.css +596 -0
  68. package/src/styles/utilities/semantic-input-system.css +451 -0
  69. package/src/styles/utilities/touch-friendly-interface.css +247 -0
  70. package/src/styles/utilities/touch-optimization.css +165 -0
@@ -0,0 +1,887 @@
1
+ /* Input Component Styles */
2
+ /* Using semantic CSS architecture with CSS variables and BEM methodology */
3
+
4
+ /* Input Component CSS Variables */
5
+ :root {
6
+ /* Input Base Variables */
7
+ --input-height-sm: calc(var(--cs-spacing-scale-2xl) + var(--cs-spacing-scale-sm));
8
+ --input-height-md: calc(var(--cs-spacing-scale-2xl) + var(--cs-spacing-scale-md));
9
+ --input-height-lg: calc(var(--cs-spacing-scale-2xl) + var(--cs-spacing-scale-lg));
10
+ --input-height-xl: calc(var(--cs-spacing-scale-2xl) + var(--cs-spacing-scale-xl));
11
+
12
+ --input-padding-y-sm: var(--cs-spacing-scale-sm);
13
+ --input-padding-x-sm: var(--cs-spacing-scale-md);
14
+ --input-padding-y-md: var(--cs-spacing-scale-md);
15
+ --input-padding-x-md: var(--cs-spacing-scale-lg);
16
+ --input-padding-y-lg: var(--cs-spacing-scale-lg);
17
+ --input-padding-x-lg: var(--cs-spacing-scale-xl);
18
+ --input-padding-y-xl: var(--cs-spacing-scale-xl);
19
+ --input-padding-x-xl: var(--cs-spacing-scale-2xl);
20
+
21
+ --input-font-size-sm: var(--cs-fonts-primary-sizes-sm);
22
+ --input-font-size-md: var(--cs-fonts-primary-sizes-base);
23
+ --input-font-size-lg: var(--cs-fonts-primary-sizes-lg);
24
+ --input-font-size-xl: var(--cs-fonts-primary-sizes-xl);
25
+
26
+ --input-font-weight: var(--cs-fonts-primary-weights-normal);
27
+ --input-line-height: var(--cs-fonts-primary-line-heights-normal);
28
+ --input-border-radius: var(--cs-border-radius-md);
29
+ --input-transition: var(--cs-transitions-properties-colors);
30
+ --input-gap: var(--cs-spacing-scale-sm);
31
+
32
+ /* Input Variant Variables */
33
+ --input-default-background: var(--cs-colors-surface-background);
34
+ --input-default-text: var(--cs-colors-text-primary);
35
+ --input-default-border: var(--cs-colors-border);
36
+ --input-default-placeholder: var(--cs-colors-text-muted);
37
+ --input-default-shadow: var(--cs-shadows-sm);
38
+
39
+ --input-error-background: rgba(var(--cs-colors-semantic-error-rgb), 0.05);
40
+ --input-error-text: var(--cs-colors-text-primary);
41
+ --input-error-border: var(--cs-colors-semantic-error);
42
+ --input-error-placeholder: var(--cs-colors-text-muted);
43
+ --input-error-shadow: var(--cs-shadows-focus-error);
44
+
45
+ --input-success-background: rgba(var(--cs-colors-semantic-success-rgb), 0.05);
46
+ --input-success-text: var(--cs-colors-text-primary);
47
+ --input-success-border: var(--cs-colors-semantic-success);
48
+ --input-success-placeholder: var(--cs-colors-text-muted);
49
+ --input-success-shadow: var(--cs-shadows-focus-success);
50
+
51
+ --input-warning-background: rgba(var(--cs-colors-semantic-warning-rgb), 0.05);
52
+ --input-warning-text: var(--cs-colors-text-primary);
53
+ --input-warning-border: var(--cs-colors-semantic-warning);
54
+ --input-warning-placeholder: var(--cs-colors-text-muted);
55
+ --input-warning-shadow: var(--cs-shadows-focus-warning);
56
+
57
+ --input-loading-background: var(--cs-colors-surface-background);
58
+ --input-loading-text: var(--cs-colors-text-muted);
59
+ --input-loading-border: var(--cs-colors-border);
60
+ --input-loading-placeholder: var(--cs-colors-text-muted);
61
+ --input-loading-shadow: var(--cs-shadows-sm);
62
+
63
+ /* Input State Variables */
64
+ --input-normal-background: var(--input-default-background);
65
+ --input-normal-text: var(--input-default-text);
66
+ --input-normal-border: var(--input-default-border);
67
+ --input-normal-shadow: var(--input-default-shadow);
68
+
69
+ --input-focused-background: var(--cs-colors-surface-background);
70
+ --input-focused-text: var(--cs-colors-text-primary);
71
+ --input-focused-border: var(--cs-colors-primary-500);
72
+ --input-focused-shadow: var(--cs-shadows-focus);
73
+
74
+ --input-disabled-background: var(--cs-colors-interactive-disabled);
75
+ --input-disabled-text: var(--cs-colors-text-muted);
76
+ --input-disabled-border: var(--cs-colors-interactive-disabled);
77
+ --input-disabled-shadow: none;
78
+ --input-disabled-opacity: var(--cs-opacity-60);
79
+ --input-disabled-cursor: not-allowed;
80
+
81
+ --input-readonly-background: var(--cs-colors-surface-surface);
82
+ --input-readonly-text: var(--cs-colors-text-primary);
83
+ --input-readonly-border: var(--cs-colors-border);
84
+ --input-readonly-shadow: var(--cs-shadows-sm);
85
+ --input-readonly-cursor: default;
86
+
87
+ /* Input Interactive State Variables */
88
+ --input-hover-background: var(--cs-colors-surface-background);
89
+ --input-hover-border: var(--cs-colors-primary-400);
90
+ --input-hover-shadow: var(--cs-shadows-md);
91
+
92
+ --input-active-background: var(--cs-colors-surface-background);
93
+ --input-active-border: var(--cs-colors-primary-600);
94
+ --input-active-shadow: var(--cs-shadows-sm);
95
+
96
+ /* Input Focus Variables */
97
+ --input-focus-outline: var(--cs-border-width-focus) solid var(--cs-colors-interactive-focus);
98
+ --input-focus-offset: var(--cs-border-width-focus);
99
+ --input-focus-visible-outline: var(--cs-border-width-focus) solid var(--cs-colors-interactive-focus);
100
+ --input-focus-visible-offset: var(--cs-border-width-focus);
101
+
102
+ /* Input File Variables */
103
+ --input-file-button-background: var(--cs-colors-primary-500);
104
+ --input-file-button-text: var(--cs-colors-text-on-primary);
105
+ --input-file-button-border: var(--cs-colors-primary-500);
106
+ --input-file-button-padding: var(--cs-spacing-scale-sm) var(--cs-spacing-scale-md);
107
+ --input-file-button-font-size: var(--cs-fonts-primary-sizes-sm);
108
+ --input-file-button-font-weight: var(--cs-fonts-primary-weights-medium);
109
+ --input-file-button-border-radius: var(--cs-border-radius-sm);
110
+ --input-file-button-transition: var(--cs-transitions-properties-colors);
111
+
112
+ --input-file-button-hover-background: var(--cs-colors-primary-hover);
113
+ --input-file-button-hover-border: var(--cs-colors-primary-hover);
114
+
115
+ /* Input Responsive Variables */
116
+ --input-mobile-breakpoint: var(--cs-breakpoints-mobile);
117
+ --input-tablet-breakpoint: var(--cs-breakpoints-tablet);
118
+ --input-desktop-breakpoint: var(--cs-breakpoints-desktop);
119
+
120
+ /* Input Showcase Variables */
121
+ --input-showcase-gap: var(--cs-spacing-scale-md);
122
+ --input-variant-showcase-gap: var(--cs-spacing-scale-md);
123
+ --input-size-showcase-gap: var(--cs-spacing-scale-md);
124
+ --input-state-showcase-gap: var(--cs-spacing-scale-md);
125
+ --input-responsive-showcase-gap: var(--cs-spacing-scale-md);
126
+
127
+ --input-showcase-title-size: var(--cs-fonts-primary-sizes-lg);
128
+ --input-showcase-title-weight: var(--cs-fonts-primary-weights-semibold);
129
+ --input-showcase-description-size: var(--cs-fonts-primary-sizes-sm);
130
+ --input-showcase-description-color: var(--cs-colors-text-muted);
131
+
132
+ --input-showcase-grid-gap: var(--cs-spacing-scale-sm);
133
+ --input-responsive-grid-gap: var(--cs-spacing-scale-md);
134
+ --input-responsive-grid-max-width: var(--cs-spacing-scale-6xl);
135
+
136
+ /* Input Touch Target Variables */
137
+ --input-touch-target-min: var(--cs-touch-target-min);
138
+ --input-touch-target-small: var(--cs-touch-target-small);
139
+ --input-touch-target-medium: var(--cs-touch-target-medium);
140
+ --input-touch-target-large: calc(var(--cs-spacing-scale-2xl) * 1.6);
141
+ --input-touch-target-extra-large: var(--cs-touch-target-extra-large);
142
+
143
+ /* Input Transform Variables */
144
+ --input-hover-transform-y: calc(-1 * var(--cs-spacing-scale-xs));
145
+ --input-focus-transform-y: calc(-1 * var(--cs-spacing-scale-sm));
146
+
147
+ /* Input Print Style Variables */
148
+ --input-print-border: var(--cs-colors-black);
149
+ --input-print-background: transparent;
150
+ --input-print-text: var(--cs-colors-black);
151
+
152
+ /* Input Animation Variables */
153
+ --input-animation-duration-fast: var(--cs-transitions-durations-fast);
154
+ --input-animation-duration-normal: var(--cs-transitions-durations-slow);
155
+
156
+ /* Input Border Width Variables */
157
+ --input-border-width-thin: var(--cs-border-width-thin);
158
+ --input-border-width-normal: var(--cs-border-width-normal);
159
+ --input-border-width-thick: var(--cs-border-width-focus);
160
+ --input-border-width-focus: var(--cs-border-width-thick);
161
+
162
+ /* Input Line Height Variables */
163
+ --input-line-height-compact: var(--cs-fonts-primary-line-heights-normal);
164
+ }
165
+
166
+ /* Input Base Styles */
167
+ .input {
168
+ position: relative;
169
+ display: block;
170
+ width: var(--cs-percentage-full);
171
+ min-height: var(--input-height-md);
172
+ padding: var(--input-padding-y-md) var(--input-padding-x-md);
173
+ font-family: var(--cs-fonts-primary-family);
174
+ font-size: var(--input-font-size-md);
175
+ font-weight: var(--input-font-weight);
176
+ line-height: var(--input-line-height);
177
+ color: var(--input-normal-text);
178
+ background-color: var(--input-normal-background);
179
+ border: var(--input-border-width-normal) solid var(--input-normal-border);
180
+ border-radius: var(--input-border-radius);
181
+ box-shadow: var(--input-normal-shadow);
182
+ transition: var(--input-transition);
183
+ outline: none;
184
+ box-sizing: border-box;
185
+ -webkit-appearance: none;
186
+ -moz-appearance: none;
187
+ appearance: none;
188
+ }
189
+
190
+ /* Input Focus States */
191
+ .input:focus,
192
+ .input:focus-visible {
193
+ background-color: var(--input-focused-background);
194
+ color: var(--input-focused-text);
195
+ border-color: var(--input-focused-border);
196
+ box-shadow: var(--input-focused-shadow);
197
+ outline: var(--input-focus-outline);
198
+ outline-offset: var(--input-focus-offset);
199
+ }
200
+
201
+ .input:focus-visible {
202
+ outline: var(--input-focus-visible-outline);
203
+ outline-offset: var(--input-focus-visible-offset);
204
+ }
205
+
206
+ /* Input Hover States */
207
+ .input:hover:not(:disabled):not(:readonly) {
208
+ background-color: var(--input-hover-background);
209
+ border-color: var(--input-hover-border);
210
+ box-shadow: var(--input-hover-shadow);
211
+ }
212
+
213
+ /* Input Active States */
214
+ .input:active:not(:disabled):not(:readonly) {
215
+ background-color: var(--input-active-background);
216
+ border-color: var(--input-active-border);
217
+ box-shadow: var(--input-active-shadow);
218
+ }
219
+
220
+ /* Input Disabled State */
221
+ .input:disabled {
222
+ background-color: var(--input-disabled-background);
223
+ color: var(--input-disabled-text);
224
+ border-color: var(--input-disabled-border);
225
+ box-shadow: var(--input-disabled-shadow);
226
+ opacity: var(--input-disabled-opacity);
227
+ cursor: var(--input-disabled-cursor);
228
+ pointer-events: none;
229
+ }
230
+
231
+ /* Input Readonly State */
232
+ .input[readonly] {
233
+ background-color: var(--input-readonly-background);
234
+ color: var(--input-readonly-text);
235
+ border-color: var(--input-readonly-border);
236
+ box-shadow: var(--input-readonly-shadow);
237
+ cursor: var(--input-readonly-cursor);
238
+ }
239
+
240
+ /* Input Placeholder */
241
+ .input::placeholder {
242
+ color: var(--input-default-placeholder);
243
+ opacity: 1;
244
+ }
245
+
246
+ .input:focus::placeholder {
247
+ color: var(--input-focused-text);
248
+ opacity: var(--cs-opacity-70);
249
+ }
250
+
251
+ /* Input Variant Modifiers */
252
+ .input--variant-default {
253
+ background-color: var(--input-default-background);
254
+ color: var(--input-default-text);
255
+ border-color: var(--input-default-border);
256
+ box-shadow: var(--input-default-shadow);
257
+ }
258
+
259
+ .input--variant-error {
260
+ background-color: var(--input-error-background);
261
+ color: var(--input-error-text);
262
+ border-color: var(--input-error-border);
263
+ box-shadow: var(--input-error-shadow);
264
+ }
265
+
266
+ .input--variant-error:focus {
267
+ border-color: var(--input-error-border);
268
+ box-shadow: var(--input-error-shadow);
269
+ }
270
+
271
+ .input--variant-success {
272
+ background-color: var(--input-success-background);
273
+ color: var(--input-success-text);
274
+ border-color: var(--input-success-border);
275
+ box-shadow: var(--input-success-shadow);
276
+ }
277
+
278
+ .input--variant-success:focus {
279
+ border-color: var(--input-success-border);
280
+ box-shadow: var(--input-success-shadow);
281
+ }
282
+
283
+ .input--variant-warning {
284
+ background-color: var(--input-warning-background);
285
+ color: var(--input-warning-text);
286
+ border-color: var(--input-warning-border);
287
+ box-shadow: var(--input-warning-shadow);
288
+ }
289
+
290
+ .input--variant-warning:focus {
291
+ border-color: var(--input-warning-border);
292
+ box-shadow: var(--input-warning-shadow);
293
+ }
294
+
295
+ .input--variant-loading {
296
+ background-color: var(--input-loading-background);
297
+ color: var(--input-loading-text);
298
+ border-color: var(--input-loading-border);
299
+ box-shadow: var(--input-loading-shadow);
300
+ }
301
+
302
+ /* Input Size Modifiers */
303
+ .input--size-sm {
304
+ min-height: var(--input-height-sm);
305
+ padding: var(--input-padding-y-sm) var(--input-padding-x-sm);
306
+ font-size: var(--input-font-size-sm);
307
+ }
308
+
309
+ .input--size-md {
310
+ min-height: var(--input-height-md);
311
+ padding: var(--input-padding-y-md) var(--input-padding-x-md);
312
+ font-size: var(--input-font-size-md);
313
+ }
314
+
315
+ .input--size-lg {
316
+ min-height: var(--input-height-lg);
317
+ padding: var(--input-padding-y-lg) var(--input-padding-x-lg);
318
+ font-size: var(--input-font-size-lg);
319
+ }
320
+
321
+ .input--size-xl {
322
+ min-height: var(--input-height-xl);
323
+ padding: var(--input-padding-y-xl) var(--input-padding-x-xl);
324
+ font-size: var(--input-font-size-xl);
325
+ }
326
+
327
+ /* Input State Modifiers */
328
+ .input--state-normal {
329
+ background-color: var(--input-normal-background);
330
+ color: var(--input-normal-text);
331
+ border-color: var(--input-normal-border);
332
+ box-shadow: var(--input-normal-shadow);
333
+ }
334
+
335
+ .input--state-focused {
336
+ background-color: var(--input-focused-background);
337
+ color: var(--input-focused-text);
338
+ border-color: var(--input-focused-border);
339
+ box-shadow: var(--input-focused-shadow);
340
+ }
341
+
342
+ .input--state-disabled {
343
+ background-color: var(--input-disabled-background);
344
+ color: var(--input-disabled-text);
345
+ border-color: var(--input-disabled-border);
346
+ box-shadow: var(--input-disabled-shadow);
347
+ opacity: var(--input-disabled-opacity);
348
+ cursor: var(--input-disabled-cursor);
349
+ }
350
+
351
+ .input--state-readonly {
352
+ background-color: var(--input-readonly-background);
353
+ color: var(--input-readonly-text);
354
+ border-color: var(--input-readonly-border);
355
+ box-shadow: var(--input-readonly-shadow);
356
+ cursor: var(--input-readonly-cursor);
357
+ }
358
+
359
+ /* Input Type Specific Styles */
360
+ .input[type="file"] {
361
+ padding: var(--input-padding-y-md) var(--input-padding-x-md);
362
+ line-height: var(--input-line-height-compact);
363
+ }
364
+
365
+ .input[type="file"]::-webkit-file-upload-button {
366
+ background-color: var(--input-file-button-background);
367
+ color: var(--input-file-button-text);
368
+ border: var(--input-border-width-normal) solid var(--input-file-button-border);
369
+ padding: var(--input-file-button-padding);
370
+ font-size: var(--input-file-button-font-size);
371
+ font-weight: var(--input-file-button-font-weight);
372
+ border-radius: var(--input-file-button-border-radius);
373
+ transition: var(--input-file-button-transition);
374
+ cursor: pointer;
375
+ margin-right: var(--cs-spacing-scale-md);
376
+ }
377
+
378
+ .input[type="file"]::-webkit-file-upload-button:hover {
379
+ background-color: var(--input-file-button-hover-background);
380
+ border-color: var(--input-file-button-hover-border);
381
+ }
382
+
383
+ .input[type="file"]::-webkit-file-upload-button:active {
384
+ transform: scale(var(--cs-scale-98));
385
+ }
386
+
387
+ .input[type="search"] {
388
+ padding-left: calc(var(--input-padding-x-md) + var(--cs-spacing-scale-lg));
389
+ }
390
+
391
+ .input[type="search"]::-webkit-search-cancel-button {
392
+ -webkit-appearance: none;
393
+ appearance: none;
394
+ height: var(--cs-spacing-scale-lg);
395
+ width: var(--cs-spacing-scale-lg);
396
+ background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23666'><path d='M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z'/></svg>");
397
+ background-size: contain;
398
+ cursor: pointer;
399
+ }
400
+
401
+ /* Input Validation States */
402
+ .input[aria-invalid="true"] {
403
+ border-color: var(--cs-colors-semantic-error);
404
+ background-color: var(--cs-colors-semantic-error-alpha-5);
405
+ }
406
+
407
+ .input[aria-invalid="true"]:focus {
408
+ border-color: var(--cs-colors-semantic-error);
409
+ box-shadow: var(--cs-shadows-focus-error);
410
+ }
411
+
412
+ .input[data-valid="true"] {
413
+ border-color: var(--cs-colors-semantic-success);
414
+ background-color: var(--cs-colors-semantic-success-alpha-5);
415
+ }
416
+
417
+ .input[data-valid="true"]:focus {
418
+ border-color: var(--cs-colors-semantic-success);
419
+ box-shadow: var(--cs-shadows-focus-success);
420
+ }
421
+
422
+ /* Input Loading State */
423
+ .input[data-loading="true"] {
424
+ position: relative;
425
+ color: transparent;
426
+ }
427
+
428
+ .input[data-loading="true"]::after {
429
+ content: '';
430
+ position: absolute;
431
+ top: var(--cs-percentage-50);
432
+ left: var(--cs-percentage-50);
433
+ transform: translate(calc(-1 * var(--cs-percentage-50)), calc(-1 * var(--cs-percentage-50)));
434
+ width: var(--cs-spacing-scale-lg);
435
+ height: var(--cs-spacing-scale-lg);
436
+ border: var(--input-border-width-thick) solid var(--cs-colors-border);
437
+ border-top-color: var(--cs-colors-primary-500);
438
+ border-radius: var(--cs-border-radius-full);
439
+ animation: spin var(--input-animation-duration-normal) linear infinite;
440
+ }
441
+
442
+ @keyframes spin {
443
+ to {
444
+ transform: translate(calc(-1 * var(--cs-percentage-50)), calc(-1 * var(--cs-percentage-50))) rotate(var(--cs-rotation-full));
445
+ }
446
+ }
447
+
448
+ /* Input Responsive Design */
449
+ @media (max-width: 767px) {
450
+ .input {
451
+ min-height: var(--input-touch-target-min);
452
+ padding: var(--cs-spacing-scale-md) var(--cs-spacing-scale-lg);
453
+ font-size: var(--cs-fonts-primary-sizes-base);
454
+ border-radius: var(--cs-border-radius-lg);
455
+ }
456
+
457
+ .input--size-sm {
458
+ min-height: var(--input-touch-target-small);
459
+ padding: var(--cs-spacing-scale-sm) var(--cs-spacing-scale-md);
460
+ }
461
+
462
+ .input--size-lg {
463
+ min-height: var(--input-touch-target-large);
464
+ padding: var(--cs-spacing-scale-lg) var(--cs-spacing-scale-xl);
465
+ }
466
+
467
+ .input--size-xl {
468
+ min-height: var(--input-touch-target-extra-large);
469
+ padding: var(--cs-spacing-scale-xl) var(--cs-spacing-scale-2xl);
470
+ }
471
+ }
472
+
473
+ @media (min-width: 768px) and (max-width: 1023px) {
474
+ .input {
475
+ min-height: var(--input-touch-target-medium);
476
+ padding: var(--input-padding-y-md) var(--input-padding-x-md);
477
+ border-radius: var(--input-border-radius);
478
+ }
479
+ }
480
+
481
+ @media (min-width: 1024px) {
482
+ .input:hover:not(:disabled):not(:readonly) {
483
+ transform: translateY(var(--input-hover-transform-y));
484
+ box-shadow: var(--cs-shadows-md);
485
+ }
486
+
487
+ .input:focus:not(:disabled):not(:readonly) {
488
+ transform: translateY(var(--input-focus-transform-y));
489
+ box-shadow: var(--cs-shadows-lg-primary);
490
+ }
491
+ }
492
+
493
+ /* Input Container Queries */
494
+ @container (max-width: 400px) {
495
+ .input {
496
+ min-height: var(--input-touch-target-min);
497
+ padding: var(--cs-spacing-scale-md) var(--cs-spacing-scale-lg);
498
+ }
499
+ }
500
+
501
+ @container (min-width: 401px) and (max-width: 800px) {
502
+ .input {
503
+ min-height: var(--input-touch-target-medium);
504
+ padding: var(--input-padding-y-md) var(--input-padding-x-md);
505
+ }
506
+ }
507
+
508
+ @container (min-width: 801px) {
509
+ .input {
510
+ min-height: var(--input-height-md);
511
+ padding: var(--input-padding-y-md) var(--input-padding-x-md);
512
+ }
513
+ }
514
+
515
+ /* Input Dark Mode Support */
516
+ @media (prefers-color-scheme: dark) {
517
+ .input {
518
+ background-color: var(--cs-modes-dark-colors-surface-background);
519
+ border-color: var(--cs-modes-dark-colors-surface-border);
520
+ color: var(--cs-modes-dark-colors-text-primary);
521
+ }
522
+
523
+ .input::placeholder {
524
+ color: var(--cs-modes-dark-colors-text-muted);
525
+ }
526
+
527
+ .input:focus {
528
+ border-color: var(--cs-modes-dark-colors-primary-500);
529
+ box-shadow: var(--cs-shadows-focus-dark);
530
+ }
531
+ }
532
+
533
+ /* Input High Contrast Mode Support */
534
+ @media (prefers-contrast: high) {
535
+ .input {
536
+ border-width: var(--input-border-width-thick);
537
+ }
538
+
539
+ .input:focus {
540
+ outline-width: var(--input-border-width-focus);
541
+ outline-offset: var(--input-border-width-normal);
542
+ }
543
+ }
544
+
545
+ /* Input Reduced Motion Support */
546
+ @media (prefers-reduced-motion: reduce) {
547
+ .input {
548
+ transition: none;
549
+ }
550
+
551
+ .input:hover,
552
+ .input:focus,
553
+ .input:active {
554
+ transform: none;
555
+ }
556
+ }
557
+
558
+ /* Input Print Styles */
559
+ @media print {
560
+ .input {
561
+ border: var(--input-border-width-normal) solid var(--input-print-border);
562
+ background: var(--input-print-background);
563
+ color: var(--input-print-text);
564
+ box-shadow: none;
565
+ }
566
+
567
+ .input:focus {
568
+ outline: var(--input-border-width-thick) solid var(--input-print-border);
569
+ outline-offset: var(--input-border-width-thick);
570
+ }
571
+ }
572
+
573
+ /* Input Showcase Styles for Storybook */
574
+ .input-showcase {
575
+ display: flex;
576
+ flex-direction: column;
577
+ gap: var(--input-showcase-gap);
578
+ max-width: 100%;
579
+ }
580
+
581
+ .input-variant-showcase {
582
+ display: flex;
583
+ flex-direction: column;
584
+ gap: var(--input-variant-showcase-gap);
585
+ }
586
+
587
+ .input-variant-section {
588
+ display: flex;
589
+ flex-direction: column;
590
+ gap: var(--cs-spacing-scale-md);
591
+ }
592
+
593
+ .input-variant-title {
594
+ font-size: var(--input-showcase-title-size);
595
+ font-weight: var(--input-showcase-title-weight);
596
+ color: var(--cs-colors-text-primary);
597
+ margin: 0;
598
+ }
599
+
600
+ .input-variant-grid {
601
+ display: grid;
602
+ grid-template-columns: repeat(auto-fit, minmax(var(--cs-spacing-scale-50), 1fr));
603
+ gap: var(--input-showcase-grid-gap);
604
+ }
605
+
606
+ .input-variant-description {
607
+ font-size: var(--input-showcase-description-size);
608
+ color: var(--input-showcase-description-color);
609
+ margin: 0;
610
+ line-height: var(--cs-fonts-primary-line-heights-relaxed);
611
+ }
612
+
613
+ .input-size-showcase {
614
+ display: flex;
615
+ flex-direction: column;
616
+ gap: var(--input-size-showcase-gap);
617
+ }
618
+
619
+ .input-size-section {
620
+ display: flex;
621
+ flex-direction: column;
622
+ gap: var(--cs-spacing-scale-md);
623
+ }
624
+
625
+ .input-size-title {
626
+ font-size: var(--input-showcase-title-size);
627
+ font-weight: var(--input-showcase-title-weight);
628
+ color: var(--cs-colors-text-primary);
629
+ margin: 0;
630
+ }
631
+
632
+ .input-size-grid {
633
+ display: grid;
634
+ grid-template-columns: repeat(auto-fit, minmax(var(--cs-spacing-scale-37-5), 1fr));
635
+ gap: var(--input-showcase-grid-gap);
636
+ }
637
+
638
+ .input-size-description {
639
+ font-size: var(--input-showcase-description-size);
640
+ color: var(--input-showcase-description-color);
641
+ margin: 0;
642
+ line-height: var(--cs-fonts-primary-line-heights-relaxed);
643
+ }
644
+
645
+ .input-state-showcase {
646
+ display: flex;
647
+ flex-direction: column;
648
+ gap: var(--input-state-showcase-gap);
649
+ }
650
+
651
+ .input-state-section {
652
+ display: flex;
653
+ flex-direction: column;
654
+ gap: var(--cs-spacing-scale-md);
655
+ }
656
+
657
+ .input-state-title {
658
+ font-size: var(--input-showcase-title-size);
659
+ font-weight: var(--input-showcase-title-weight);
660
+ color: var(--cs-colors-text-primary);
661
+ margin: 0;
662
+ }
663
+
664
+ .input-state-grid {
665
+ display: grid;
666
+ grid-template-columns: repeat(auto-fit, minmax(var(--cs-spacing-scale-50), 1fr));
667
+ gap: var(--input-showcase-grid-gap);
668
+ }
669
+
670
+ .input-state-description {
671
+ font-size: var(--input-showcase-description-size);
672
+ color: var(--input-showcase-description-color);
673
+ margin: 0;
674
+ line-height: var(--cs-fonts-primary-line-heights-relaxed);
675
+ }
676
+
677
+ .input-responsive-showcase {
678
+ display: flex;
679
+ flex-direction: column;
680
+ gap: var(--input-responsive-showcase-gap);
681
+ }
682
+
683
+ .input-responsive-section {
684
+ display: flex;
685
+ flex-direction: column;
686
+ gap: var(--cs-spacing-scale-md);
687
+ }
688
+
689
+ .input-responsive-title {
690
+ font-size: var(--input-showcase-title-size);
691
+ font-weight: var(--input-showcase-title-weight);
692
+ color: var(--cs-colors-text-primary);
693
+ margin: 0;
694
+ }
695
+
696
+ .input-responsive-description {
697
+ font-size: var(--input-showcase-description-size);
698
+ color: var(--input-showcase-description-color);
699
+ margin: 0;
700
+ line-height: var(--cs-fonts-primary-line-heights-relaxed);
701
+ }
702
+
703
+ .input-responsive-grid {
704
+ display: grid;
705
+ grid-template-columns: 1fr;
706
+ gap: var(--input-responsive-grid-gap);
707
+ max-width: var(--input-responsive-grid-max-width);
708
+ }
709
+
710
+ @media (min-width: 768px) {
711
+ .input-responsive-grid {
712
+ grid-template-columns: 1fr 1fr;
713
+ }
714
+ }
715
+
716
+ @media (min-width: 1024px) {
717
+ .input-responsive-grid {
718
+ grid-template-columns: repeat(3, 1fr);
719
+ }
720
+ }
721
+
722
+ /* Input Form Layout Styles */
723
+ .input-form-layout {
724
+ display: flex;
725
+ flex-direction: column;
726
+ gap: var(--cs-spacing-scale-lg);
727
+ max-width: var(--cs-spacing-scale-100);
728
+ }
729
+
730
+ .input-form-field {
731
+ display: flex;
732
+ flex-direction: column;
733
+ gap: var(--cs-spacing-scale-sm);
734
+ }
735
+
736
+ .input-form-label {
737
+ font-size: var(--cs-fonts-primary-sizes-sm);
738
+ font-weight: var(--cs-fonts-primary-weights-medium);
739
+ color: var(--cs-colors-text-primary);
740
+ }
741
+
742
+ .input-form-helper {
743
+ font-size: var(--cs-fonts-primary-sizes-xs);
744
+ color: var(--cs-colors-text-muted);
745
+ }
746
+
747
+ .input-form-error {
748
+ font-size: var(--cs-fonts-primary-sizes-xs);
749
+ color: var(--cs-colors-semantic-error);
750
+ }
751
+
752
+ /* Input Icon Styles */
753
+ .input-with-icon {
754
+ position: relative;
755
+ }
756
+
757
+ .input-with-icon .input {
758
+ padding-left: calc(var(--input-padding-x-md) + var(--cs-spacing-scale-xl));
759
+ }
760
+
761
+ .input-icon {
762
+ position: absolute;
763
+ left: var(--input-padding-x-md);
764
+ top: var(--cs-percentage-50);
765
+ transform: translateY(calc(-1 * var(--cs-percentage-50)));
766
+ width: var(--cs-spacing-scale-lg);
767
+ height: var(--cs-spacing-scale-lg);
768
+ color: var(--cs-colors-text-muted);
769
+ pointer-events: none;
770
+ z-index: 1;
771
+ }
772
+
773
+ .input:focus + .input-icon {
774
+ color: var(--cs-colors-primary-500);
775
+ }
776
+
777
+ /* Input Group Styles */
778
+ .input-group {
779
+ display: flex;
780
+ flex-direction: column;
781
+ gap: var(--cs-spacing-scale-md);
782
+ }
783
+
784
+ .input-group-row {
785
+ display: flex;
786
+ gap: var(--cs-spacing-scale-md);
787
+ }
788
+
789
+ .input-group-row .input {
790
+ flex: 1;
791
+ }
792
+
793
+ @media (max-width: 767px) {
794
+ .input-group-row {
795
+ flex-direction: column;
796
+ gap: var(--cs-spacing-scale-sm);
797
+ }
798
+
799
+ .input-group-row .input {
800
+ width: var(--cs-percentage-full);
801
+ }
802
+ }
803
+
804
+ /* Input Animation Keyframes */
805
+ @keyframes inputFocus {
806
+ 0% {
807
+ transform: scale(1);
808
+ box-shadow: var(--cs-shadows-focus-start);
809
+ }
810
+ 50% {
811
+ transform: scale(var(--cs-scale-102));
812
+ box-shadow: var(--cs-shadows-focus-mid);
813
+ }
814
+ 100% {
815
+ transform: scale(1);
816
+ box-shadow: var(--cs-shadows-focus-end);
817
+ }
818
+ }
819
+
820
+ @keyframes inputError {
821
+ 0%, 100% {
822
+ transform: translateX(0);
823
+ }
824
+ 25% {
825
+ transform: translateX(calc(-1 * var(--cs-spacing-scale-1)));
826
+ }
827
+ 75% {
828
+ transform: translateX(var(--cs-spacing-scale-1));
829
+ }
830
+ }
831
+
832
+ /* Input Error Animation */
833
+ .input--variant-error:focus {
834
+ animation: inputError var(--input-animation-duration-fast) ease-in-out;
835
+ }
836
+
837
+ /* Input Success Animation */
838
+ .input--variant-success:focus {
839
+ animation: inputFocus var(--input-animation-duration-fast) ease-in-out;
840
+ }
841
+
842
+ /* Input Loading Animation */
843
+ .input--variant-loading::after {
844
+ animation: spin var(--input-animation-duration-normal) linear infinite;
845
+ }
846
+
847
+ /* Input Accessibility Enhancements */
848
+ .input:focus-visible {
849
+ outline: var(--input-focus-visible-outline);
850
+ outline-offset: var(--input-focus-visible-offset);
851
+ }
852
+
853
+ .input[aria-describedby] {
854
+ border-color: var(--cs-colors-primary-500);
855
+ }
856
+
857
+ .input[aria-invalid="true"] {
858
+ border-color: var(--cs-colors-semantic-error);
859
+ }
860
+
861
+ .input[aria-required="true"] {
862
+ border-left: var(--input-border-width-focus) solid var(--cs-colors-primary-500);
863
+ }
864
+
865
+ /* Input Touch Target Optimization */
866
+ @media (pointer: coarse) {
867
+ .input {
868
+ min-height: var(--input-touch-target-min);
869
+ min-width: var(--input-touch-target-min);
870
+ }
871
+
872
+ .input[type="file"]::-webkit-file-upload-button {
873
+ min-height: var(--input-touch-target-min);
874
+ min-width: var(--input-touch-target-min);
875
+ }
876
+ }
877
+
878
+ /* Input High DPI Display Support */
879
+ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
880
+ .input {
881
+ border-width: var(--input-border-width-thin);
882
+ }
883
+
884
+ .input:focus {
885
+ border-width: var(--input-border-width-normal);
886
+ }
887
+ }