@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,213 @@
1
+ /* Portal Component Styles */
2
+ /* Semantic CSS architecture following BEM methodology */
3
+
4
+ /* ============================================================================ */
5
+ /* PORTAL BASE */
6
+ /* ============================================================================ */
7
+
8
+ .portal {
9
+ /* Portal is a container for rendering content outside the DOM hierarchy */
10
+ /* It typically doesn't need visual styling, but we define it for consistency */
11
+ }
12
+
13
+ .portal__container {
14
+ position: relative;
15
+ z-index: var(--cs-z-index-portal, 1000);
16
+ }
17
+
18
+ /* ============================================================================ */
19
+ /* PORTAL VARIANTS */
20
+ /* ============================================================================ */
21
+
22
+ .portal__container--modal {
23
+ z-index: var(--cs-z-index-modal, 1000);
24
+ }
25
+
26
+ .portal__container--popover {
27
+ z-index: var(--cs-z-index-popover, 1020);
28
+ }
29
+
30
+ .portal__container--tooltip {
31
+ z-index: var(--cs-z-index-tooltip, 1030);
32
+ }
33
+
34
+ .portal__container--toast {
35
+ z-index: var(--cs-z-index-toast, 1040);
36
+ }
37
+
38
+ .portal__container--dropdown {
39
+ z-index: var(--cs-z-index-dropdown, 1010);
40
+ }
41
+
42
+ /* ============================================================================ */
43
+ /* PORTAL POSITIONING */
44
+ /* ============================================================================ */
45
+
46
+ .portal__container--fixed {
47
+ position: fixed;
48
+ top: 0;
49
+ left: 0;
50
+ width: 100%;
51
+ height: 100%;
52
+ pointer-events: none;
53
+ }
54
+
55
+ .portal__container--absolute {
56
+ position: absolute;
57
+ }
58
+
59
+ .portal__container--relative {
60
+ position: relative;
61
+ }
62
+
63
+ /* ============================================================================ */
64
+ /* PORTAL CONTENT */
65
+ /* ============================================================================ */
66
+
67
+ .portal__content {
68
+ pointer-events: auto;
69
+ }
70
+
71
+ .portal__content--no-events {
72
+ pointer-events: none;
73
+ }
74
+
75
+ .portal__content--auto-events {
76
+ pointer-events: auto;
77
+ }
78
+
79
+ /* ============================================================================ */
80
+ /* PORTAL ANIMATIONS */
81
+ /* ============================================================================ */
82
+
83
+ .portal__container--enter {
84
+ animation: portal-enter 200ms ease-out;
85
+ }
86
+
87
+ .portal__container--exit {
88
+ animation: portal-exit 200ms ease-in;
89
+ }
90
+
91
+ @keyframes portal-enter {
92
+ from {
93
+ opacity: 0;
94
+ }
95
+ to {
96
+ opacity: 1;
97
+ }
98
+ }
99
+
100
+ @keyframes portal-exit {
101
+ from {
102
+ opacity: 1;
103
+ }
104
+ to {
105
+ opacity: 0;
106
+ }
107
+ }
108
+
109
+ /* ============================================================================ */
110
+ /* ACCESSIBILITY */
111
+ /* ============================================================================ */
112
+
113
+ .portal__container[aria-hidden="true"] {
114
+ /* Hidden from screen readers */
115
+ visibility: hidden;
116
+ }
117
+
118
+ .portal__container[aria-hidden="false"] {
119
+ /* Visible to screen readers */
120
+ visibility: visible;
121
+ }
122
+
123
+ /* ============================================================================ */
124
+ /* REDUCED MOTION SUPPORT */
125
+ /* ============================================================================ */
126
+
127
+ @media (prefers-reduced-motion: reduce) {
128
+ .portal__container--enter,
129
+ .portal__container--exit {
130
+ animation: none;
131
+ }
132
+ }
133
+
134
+ /* ============================================================================ */
135
+ /* DEBUG HELPERS */
136
+ /* ============================================================================ */
137
+
138
+ .portal__container--debug {
139
+ outline: 2px dashed #ff0000;
140
+ background-color: rgba(255, 0, 0, 0.1);
141
+ }
142
+
143
+ .portal__container--debug::before {
144
+ content: 'Portal';
145
+ position: absolute;
146
+ top: 0;
147
+ left: 0;
148
+ background: #ff0000;
149
+ color: white;
150
+ padding: 2px 6px;
151
+ font-size: 10px;
152
+ font-family: monospace;
153
+ z-index: 9999;
154
+ }
155
+
156
+ /* ============================================================================ */
157
+ /* FOCUS MANAGEMENT */
158
+ /* ============================================================================ */
159
+
160
+ .portal__focus-guard {
161
+ position: fixed;
162
+ top: -1px;
163
+ left: -1px;
164
+ width: 1px;
165
+ height: 1px;
166
+ overflow: hidden;
167
+ clip: rect(0, 0, 0, 0);
168
+ white-space: nowrap;
169
+ border: 0;
170
+ opacity: 0;
171
+ pointer-events: none;
172
+ }
173
+
174
+ .portal__focus-guard:focus {
175
+ outline: none;
176
+ }
177
+
178
+ /* ============================================================================ */
179
+ /* PERFORMANCE OPTIMIZATIONS */
180
+ /* ============================================================================ */
181
+
182
+ .portal__container--gpu-accelerated {
183
+ transform: translateZ(0);
184
+ backface-visibility: hidden;
185
+ perspective: 1000px;
186
+ }
187
+
188
+ .portal__container--will-change {
189
+ will-change: transform, opacity;
190
+ }
191
+
192
+ /* ============================================================================ */
193
+ /* INTERACTION HELPERS */
194
+ /* ============================================================================ */
195
+
196
+ .portal__backdrop {
197
+ position: fixed;
198
+ top: 0;
199
+ left: 0;
200
+ right: 0;
201
+ bottom: 0;
202
+ background: transparent;
203
+ pointer-events: auto;
204
+ }
205
+
206
+ .portal__backdrop--blocking {
207
+ pointer-events: auto;
208
+ cursor: pointer;
209
+ }
210
+
211
+ .portal__backdrop--non-blocking {
212
+ pointer-events: none;
213
+ }
@@ -0,0 +1,488 @@
1
+ /* Tooltip Component Styles */
2
+ /* Semantic CSS architecture following BEM methodology */
3
+
4
+ /* ============================================================================ */
5
+ /* TOOLTIP BASE */
6
+ /* ============================================================================ */
7
+
8
+ .tooltip {
9
+ --tooltip-border-radius: var(--cs-border-radius-scale-2);
10
+ --tooltip-shadow: var(--cs-shadows-md);
11
+ --tooltip-background: var(--cs-colors-gray-900);
12
+ --tooltip-color: var(--cs-colors-white);
13
+ --tooltip-border: none;
14
+ --tooltip-transition: var(--cs-transitions-all);
15
+ --tooltip-z-index: var(--cs-z-index-tooltip);
16
+ --tooltip-arrow-size: var(--cs-spacing-scale-sm);
17
+ --tooltip-offset: var(--cs-spacing-scale-sm);
18
+ --tooltip-max-width: calc(var(--cs-spacing-scale-6xl) * 2.667);
19
+ --tooltip-font-size: var(--cs-typography-font-size-sm);
20
+ --tooltip-line-height: var(--cs-typography-line-height-tight);
21
+ --tooltip-padding: var(--cs-spacing-scale-2) var(--cs-spacing-scale-3);
22
+ }
23
+
24
+ .tooltip__trigger {
25
+ display: inline-block;
26
+ cursor: help;
27
+ }
28
+
29
+ .tooltip__content {
30
+ position: absolute;
31
+ z-index: var(--tooltip-z-index);
32
+ background-color: var(--tooltip-background);
33
+ color: var(--tooltip-color);
34
+ border: var(--tooltip-border);
35
+ border-radius: var(--tooltip-border-radius);
36
+ box-shadow: var(--tooltip-shadow);
37
+ padding: var(--tooltip-padding);
38
+ font-size: var(--tooltip-font-size);
39
+ line-height: var(--tooltip-line-height);
40
+ max-width: var(--tooltip-max-width);
41
+ word-wrap: break-word;
42
+ transform-origin: var(--tooltip-transform-origin, center);
43
+ transition: var(--tooltip-transition);
44
+ pointer-events: none;
45
+ white-space: nowrap;
46
+ }
47
+
48
+ /* ============================================================================ */
49
+ /* TOOLTIP SIZES */
50
+ /* ============================================================================ */
51
+
52
+ .tooltip__content--size-sm {
53
+ --tooltip-max-width: var(--cs-spacing-scale-50);
54
+ --tooltip-font-size: var(--cs-typography-font-size-xs);
55
+ --tooltip-padding: var(--cs-spacing-scale-1) var(--cs-spacing-scale-2);
56
+ }
57
+
58
+ .tooltip__content--size-md {
59
+ --tooltip-max-width: calc(var(--cs-spacing-scale-6xl) * 2.667);
60
+ --tooltip-font-size: var(--cs-typography-font-size-sm);
61
+ --tooltip-padding: var(--cs-spacing-scale-2) var(--cs-spacing-scale-3);
62
+ }
63
+
64
+ .tooltip__content--size-lg {
65
+ --tooltip-max-width: var(--cs-spacing-scale-120);
66
+ --tooltip-font-size: var(--cs-typography-font-size-base);
67
+ --tooltip-padding: var(--cs-spacing-scale-3) var(--cs-spacing-scale-4);
68
+ white-space: normal;
69
+ }
70
+
71
+ /* ============================================================================ */
72
+ /* TOOLTIP VARIANTS */
73
+ /* ============================================================================ */
74
+
75
+ .tooltip__content--variant-default {
76
+ --tooltip-background: var(--cs-colors-gray-900);
77
+ --tooltip-color: var(--cs-colors-white);
78
+ }
79
+
80
+ .tooltip__content--variant-filled {
81
+ --tooltip-background: var(--cs-colors-gray-800);
82
+ --tooltip-color: var(--cs-colors-white);
83
+ --tooltip-border: var(--cs-border-width-normal) solid var(--cs-colors-gray-700);
84
+ }
85
+
86
+ .tooltip__content--variant-outlined {
87
+ --tooltip-background: var(--cs-colors-background-primary);
88
+ --tooltip-color: var(--cs-colors-text-primary);
89
+ --tooltip-border: var(--cs-border-width-normal) solid var(--cs-colors-gray-300);
90
+ --tooltip-shadow: var(--cs-shadows-lg);
91
+ }
92
+
93
+ .tooltip__content--variant-light {
94
+ --tooltip-background: var(--cs-colors-background-primary);
95
+ --tooltip-color: var(--cs-colors-text-primary);
96
+ --tooltip-border: var(--cs-border-width-normal) solid var(--cs-colors-gray-200);
97
+ }
98
+
99
+ /* ============================================================================ */
100
+ /* TOOLTIP POSITIONING */
101
+ /* ============================================================================ */
102
+
103
+ .tooltip__content--position-top {
104
+ --tooltip-transform-origin: bottom center;
105
+ margin-bottom: var(--tooltip-offset);
106
+ }
107
+
108
+ .tooltip__content--position-top-start {
109
+ --tooltip-transform-origin: bottom left;
110
+ margin-bottom: var(--tooltip-offset);
111
+ }
112
+
113
+ .tooltip__content--position-top-end {
114
+ --tooltip-transform-origin: bottom right;
115
+ margin-bottom: var(--tooltip-offset);
116
+ }
117
+
118
+ .tooltip__content--position-bottom {
119
+ --tooltip-transform-origin: top center;
120
+ margin-top: var(--tooltip-offset);
121
+ }
122
+
123
+ .tooltip__content--position-bottom-start {
124
+ --tooltip-transform-origin: top left;
125
+ margin-top: var(--tooltip-offset);
126
+ }
127
+
128
+ .tooltip__content--position-bottom-end {
129
+ --tooltip-transform-origin: top right;
130
+ margin-top: var(--tooltip-offset);
131
+ }
132
+
133
+ .tooltip__content--position-left {
134
+ --tooltip-transform-origin: center right;
135
+ margin-right: var(--tooltip-offset);
136
+ }
137
+
138
+ .tooltip__content--position-left-start {
139
+ --tooltip-transform-origin: top right;
140
+ margin-right: var(--tooltip-offset);
141
+ }
142
+
143
+ .tooltip__content--position-left-end {
144
+ --tooltip-transform-origin: bottom right;
145
+ margin-right: var(--tooltip-offset);
146
+ }
147
+
148
+ .tooltip__content--position-right {
149
+ --tooltip-transform-origin: center left;
150
+ margin-left: var(--tooltip-offset);
151
+ }
152
+
153
+ .tooltip__content--position-right-start {
154
+ --tooltip-transform-origin: top left;
155
+ margin-left: var(--tooltip-offset);
156
+ }
157
+
158
+ .tooltip__content--position-right-end {
159
+ --tooltip-transform-origin: bottom left;
160
+ margin-left: var(--tooltip-offset);
161
+ }
162
+
163
+ /* ============================================================================ */
164
+ /* TOOLTIP ARROW */
165
+ /* ============================================================================ */
166
+
167
+ .tooltip__arrow {
168
+ position: absolute;
169
+ width: 0;
170
+ height: 0;
171
+ border-style: solid;
172
+ pointer-events: none;
173
+ }
174
+
175
+ .tooltip__content--position-top .tooltip__arrow {
176
+ bottom: calc(-1 * var(--tooltip-arrow-size));
177
+ left: var(--cs-percentage-50);
178
+ transform: translateX(calc(-1 * var(--cs-percentage-50)));
179
+ border-left: var(--tooltip-arrow-size) solid transparent;
180
+ border-right: var(--tooltip-arrow-size) solid transparent;
181
+ border-top: var(--tooltip-arrow-size) solid var(--tooltip-background);
182
+ }
183
+
184
+ .tooltip__content--position-top-start .tooltip__arrow {
185
+ bottom: calc(-1 * var(--tooltip-arrow-size));
186
+ left: var(--cs-spacing-scale-3);
187
+ border-left: var(--tooltip-arrow-size) solid transparent;
188
+ border-right: var(--tooltip-arrow-size) solid transparent;
189
+ border-top: var(--tooltip-arrow-size) solid var(--tooltip-background);
190
+ }
191
+
192
+ .tooltip__content--position-top-end .tooltip__arrow {
193
+ bottom: calc(-1 * var(--tooltip-arrow-size));
194
+ right: var(--cs-spacing-scale-3);
195
+ border-left: var(--tooltip-arrow-size) solid transparent;
196
+ border-right: var(--tooltip-arrow-size) solid transparent;
197
+ border-top: var(--tooltip-arrow-size) solid var(--tooltip-background);
198
+ }
199
+
200
+ .tooltip__content--position-bottom .tooltip__arrow {
201
+ top: calc(-1 * var(--tooltip-arrow-size));
202
+ left: var(--cs-percentage-50);
203
+ transform: translateX(calc(-1 * var(--cs-percentage-50)));
204
+ border-left: var(--tooltip-arrow-size) solid transparent;
205
+ border-right: var(--tooltip-arrow-size) solid transparent;
206
+ border-bottom: var(--tooltip-arrow-size) solid var(--tooltip-background);
207
+ }
208
+
209
+ .tooltip__content--position-bottom-start .tooltip__arrow {
210
+ top: calc(-1 * var(--tooltip-arrow-size));
211
+ left: var(--cs-spacing-scale-3);
212
+ border-left: var(--tooltip-arrow-size) solid transparent;
213
+ border-right: var(--tooltip-arrow-size) solid transparent;
214
+ border-bottom: var(--tooltip-arrow-size) solid var(--tooltip-background);
215
+ }
216
+
217
+ .tooltip__content--position-bottom-end .tooltip__arrow {
218
+ top: calc(-1 * var(--tooltip-arrow-size));
219
+ right: var(--cs-spacing-scale-3);
220
+ border-left: var(--tooltip-arrow-size) solid transparent;
221
+ border-right: var(--tooltip-arrow-size) solid transparent;
222
+ border-bottom: var(--tooltip-arrow-size) solid var(--tooltip-background);
223
+ }
224
+
225
+ .tooltip__content--position-left .tooltip__arrow {
226
+ right: calc(-1 * var(--tooltip-arrow-size));
227
+ top: var(--cs-percentage-50);
228
+ transform: translateY(calc(-1 * var(--cs-percentage-50)));
229
+ border-top: var(--tooltip-arrow-size) solid transparent;
230
+ border-bottom: var(--tooltip-arrow-size) solid transparent;
231
+ border-left: var(--tooltip-arrow-size) solid var(--tooltip-background);
232
+ }
233
+
234
+ .tooltip__content--position-left-start .tooltip__arrow {
235
+ right: calc(-1 * var(--tooltip-arrow-size));
236
+ top: var(--cs-spacing-scale-3);
237
+ border-top: var(--tooltip-arrow-size) solid transparent;
238
+ border-bottom: var(--tooltip-arrow-size) solid transparent;
239
+ border-left: var(--tooltip-arrow-size) solid var(--tooltip-background);
240
+ }
241
+
242
+ .tooltip__content--position-left-end .tooltip__arrow {
243
+ right: calc(-1 * var(--tooltip-arrow-size));
244
+ bottom: var(--cs-spacing-scale-3);
245
+ border-top: var(--tooltip-arrow-size) solid transparent;
246
+ border-bottom: var(--tooltip-arrow-size) solid transparent;
247
+ border-left: var(--tooltip-arrow-size) solid var(--tooltip-background);
248
+ }
249
+
250
+ .tooltip__content--position-right .tooltip__arrow {
251
+ left: calc(-1 * var(--tooltip-arrow-size));
252
+ top: var(--cs-percentage-50);
253
+ transform: translateY(calc(-1 * var(--cs-percentage-50)));
254
+ border-top: var(--tooltip-arrow-size) solid transparent;
255
+ border-bottom: var(--tooltip-arrow-size) solid transparent;
256
+ border-right: var(--tooltip-arrow-size) solid var(--tooltip-background);
257
+ }
258
+
259
+ .tooltip__content--position-right-start .tooltip__arrow {
260
+ left: calc(-1 * var(--tooltip-arrow-size));
261
+ top: var(--cs-spacing-scale-3);
262
+ border-top: var(--tooltip-arrow-size) solid transparent;
263
+ border-bottom: var(--tooltip-arrow-size) solid transparent;
264
+ border-right: var(--tooltip-arrow-size) solid var(--tooltip-background);
265
+ }
266
+
267
+ .tooltip__content--position-right-end .tooltip__arrow {
268
+ left: calc(-1 * var(--tooltip-arrow-size));
269
+ bottom: var(--cs-spacing-scale-3);
270
+ border-top: var(--tooltip-arrow-size) solid transparent;
271
+ border-bottom: var(--tooltip-arrow-size) solid transparent;
272
+ border-right: var(--tooltip-arrow-size) solid var(--tooltip-background);
273
+ }
274
+
275
+ /* ============================================================================ */
276
+ /* TOOLTIP ANIMATIONS */
277
+ /* ============================================================================ */
278
+
279
+ .tooltip__content--enter {
280
+ animation: tooltip-fade-in var(--cs-transitions-durations-fast) ease-out;
281
+ }
282
+
283
+ .tooltip__content--exit {
284
+ animation: tooltip-fade-out var(--cs-transitions-durations-fast) ease-in;
285
+ }
286
+
287
+ .tooltip__content--slide-enter {
288
+ animation: tooltip-slide-in var(--cs-transitions-durations-fast) ease-out;
289
+ }
290
+
291
+ .tooltip__content--slide-exit {
292
+ animation: tooltip-slide-out var(--cs-transitions-durations-fast) ease-in;
293
+ }
294
+
295
+ .tooltip__content--scale-enter {
296
+ animation: tooltip-scale-in var(--cs-transitions-durations-fast) ease-out;
297
+ }
298
+
299
+ .tooltip__content--scale-exit {
300
+ animation: tooltip-scale-out var(--cs-transitions-durations-fast) ease-in;
301
+ }
302
+
303
+ @keyframes tooltip-fade-in {
304
+ from {
305
+ opacity: 0;
306
+ }
307
+ to {
308
+ opacity: 1;
309
+ }
310
+ }
311
+
312
+ @keyframes tooltip-fade-out {
313
+ from {
314
+ opacity: 1;
315
+ }
316
+ to {
317
+ opacity: 0;
318
+ }
319
+ }
320
+
321
+ @keyframes tooltip-slide-in {
322
+ from {
323
+ opacity: 0;
324
+ transform: var(--tooltip-slide-from, translateY(calc(-1 * var(--cs-spacing-scale-1))));
325
+ }
326
+ to {
327
+ opacity: 1;
328
+ transform: translateY(0);
329
+ }
330
+ }
331
+
332
+ @keyframes tooltip-slide-out {
333
+ from {
334
+ opacity: 1;
335
+ transform: translateY(0);
336
+ }
337
+ to {
338
+ opacity: 0;
339
+ transform: var(--tooltip-slide-to, translateY(calc(-1 * var(--cs-spacing-scale-1))));
340
+ }
341
+ }
342
+
343
+ @keyframes tooltip-scale-in {
344
+ from {
345
+ opacity: 0;
346
+ transform: scale(var(--cs-scale-95));
347
+ }
348
+ to {
349
+ opacity: 1;
350
+ transform: scale(1);
351
+ }
352
+ }
353
+
354
+ @keyframes tooltip-scale-out {
355
+ from {
356
+ opacity: 1;
357
+ transform: scale(1);
358
+ }
359
+ to {
360
+ opacity: 0;
361
+ transform: scale(var(--cs-scale-95));
362
+ }
363
+ }
364
+
365
+ /* ============================================================================ */
366
+ /* RESPONSIVE DESIGN */
367
+ /* ============================================================================ */
368
+
369
+ @media (max-width: 640px) {
370
+ .tooltip__content {
371
+ --tooltip-max-width: calc(100vw - var(--cs-spacing-scale-4));
372
+ --tooltip-font-size: var(--cs-typography-font-size-xs);
373
+ --tooltip-padding: var(--cs-spacing-scale-1) var(--cs-spacing-scale-2);
374
+ white-space: normal;
375
+ }
376
+
377
+ .tooltip__content--size-lg {
378
+ --tooltip-max-width: calc(100vw - var(--cs-spacing-scale-2));
379
+ }
380
+ }
381
+
382
+ @media (max-width: 480px) {
383
+ .tooltip__content {
384
+ --tooltip-max-width: calc(100vw - var(--cs-spacing-scale-2));
385
+ }
386
+ }
387
+
388
+ /* ============================================================================ */
389
+ /* ACCESSIBILITY */
390
+ /* ============================================================================ */
391
+
392
+ .tooltip__content[role="tooltip"] {
393
+ /* Ensure tooltip is properly announced to screen readers */
394
+ }
395
+
396
+ .tooltip__trigger[aria-describedby] {
397
+ /* Trigger has associated tooltip */
398
+ }
399
+
400
+ .tooltip__trigger:focus-visible {
401
+ outline: var(--cs-border-width-thick) solid var(--cs-colors-primary-500);
402
+ outline-offset: var(--cs-spacing-scale-0-5);
403
+ border-radius: var(--cs-border-radius-scale-1);
404
+ }
405
+
406
+ /* High contrast mode support */
407
+ @media (prefers-contrast: high) {
408
+ .tooltip__content {
409
+ border: var(--cs-border-width-normal) solid;
410
+ }
411
+ }
412
+
413
+ /* Reduced motion support */
414
+ @media (prefers-reduced-motion: reduce) {
415
+ .tooltip__content {
416
+ transition: none;
417
+ }
418
+
419
+ .tooltip__content--enter,
420
+ .tooltip__content--exit,
421
+ .tooltip__content--slide-enter,
422
+ .tooltip__content--slide-exit,
423
+ .tooltip__content--scale-enter,
424
+ .tooltip__content--scale-exit {
425
+ animation: none;
426
+ }
427
+ }
428
+
429
+ /* ============================================================================ */
430
+ /* INTERACTION STATES */
431
+ /* ============================================================================ */
432
+
433
+ .tooltip__trigger--disabled {
434
+ pointer-events: none;
435
+ opacity: var(--cs-opacity-50);
436
+ }
437
+
438
+ .tooltip__content--no-pointer-events {
439
+ pointer-events: none;
440
+ }
441
+
442
+ .tooltip__content--interactive {
443
+ pointer-events: auto;
444
+ cursor: default;
445
+ }
446
+
447
+ /* ============================================================================ */
448
+ /* TOOLTIP CONTENT WRAPPER */
449
+ /* ============================================================================ */
450
+
451
+ .tooltip__wrapper {
452
+ display: inline-block;
453
+ }
454
+
455
+ .tooltip__wrapper--block {
456
+ display: block;
457
+ }
458
+
459
+ .tooltip__wrapper--inline {
460
+ display: inline;
461
+ }
462
+
463
+ .tooltip__wrapper--inline-block {
464
+ display: inline-block;
465
+ }
466
+
467
+ /* ============================================================================ */
468
+ /* SPECIAL CASES */
469
+ /* ============================================================================ */
470
+
471
+ .tooltip__content--multiline {
472
+ white-space: normal;
473
+ text-align: left;
474
+ }
475
+
476
+ .tooltip__content--nowrap {
477
+ white-space: nowrap;
478
+ }
479
+
480
+ .tooltip__content--pre {
481
+ white-space: pre;
482
+ font-family: var(--cs-typography-font-family-mono);
483
+ }
484
+
485
+ .tooltip__content--pre-wrap {
486
+ white-space: pre-wrap;
487
+ font-family: var(--cs-typography-font-family-mono);
488
+ }