@hellboy/ds 0.1.2

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 (137) hide show
  1. package/README.md +111 -0
  2. package/dist/index.css +3699 -0
  3. package/dist/index.css.map +1 -0
  4. package/dist/index.d.mts +1087 -0
  5. package/dist/index.d.ts +1087 -0
  6. package/dist/index.js +3391 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/index.mjs +3287 -0
  9. package/dist/index.mjs.map +1 -0
  10. package/dist/theme.css +55 -0
  11. package/hellboy-ds-0.1.2.tgz +0 -0
  12. package/package.json +42 -0
  13. package/src/components/badge/Badge.tsx +29 -0
  14. package/src/components/badge/index.ts +1 -0
  15. package/src/components/banner/Banner.tsx +48 -0
  16. package/src/components/banner/banner.css +44 -0
  17. package/src/components/banner/index.ts +1 -0
  18. package/src/components/button/button.tsx +127 -0
  19. package/src/components/button/index.ts +1 -0
  20. package/src/components/card/card.tsx +57 -0
  21. package/src/components/card/index.ts +1 -0
  22. package/src/components/checkbox/Checkbox.tsx +98 -0
  23. package/src/components/checkbox/index.ts +1 -0
  24. package/src/components/code-block/code-block.tsx +44 -0
  25. package/src/components/code-block/index.ts +1 -0
  26. package/src/components/color-control/color-control.tsx +322 -0
  27. package/src/components/color-control/index.ts +1 -0
  28. package/src/components/drag-handle/DragHandle.tsx +78 -0
  29. package/src/components/drag-handle/index.ts +1 -0
  30. package/src/components/drawer/drawer.tsx +82 -0
  31. package/src/components/drawer/index.ts +1 -0
  32. package/src/components/floating-bar/floating-bar.tsx +52 -0
  33. package/src/components/floating-bar/index.ts +2 -0
  34. package/src/components/footer/footer.tsx +28 -0
  35. package/src/components/footer/index.ts +1 -0
  36. package/src/components/grid/Grid.tsx +53 -0
  37. package/src/components/grid/index.ts +1 -0
  38. package/src/components/header/header.tsx +57 -0
  39. package/src/components/header/index.ts +1 -0
  40. package/src/components/icons/icons.tsx +44 -0
  41. package/src/components/icons/index.ts +1 -0
  42. package/src/components/index.ts +29 -0
  43. package/src/components/input/DatePicker.tsx +133 -0
  44. package/src/components/input/Input.tsx +220 -0
  45. package/src/components/input/InputDate.tsx +10 -0
  46. package/src/components/input/InputDateTime.tsx +10 -0
  47. package/src/components/input/InputEmail.tsx +10 -0
  48. package/src/components/input/InputField.tsx +137 -0
  49. package/src/components/input/InputNumber.tsx +10 -0
  50. package/src/components/input/InputPassword.tsx +10 -0
  51. package/src/components/input/InputSearch.tsx +10 -0
  52. package/src/components/input/InputTel.tsx +10 -0
  53. package/src/components/input/InputText.tsx +10 -0
  54. package/src/components/input/InputTime.tsx +10 -0
  55. package/src/components/input/InputUrl.tsx +10 -0
  56. package/src/components/input/TimePicker.tsx +151 -0
  57. package/src/components/input/index.ts +11 -0
  58. package/src/components/layout/Layout.tsx +244 -0
  59. package/src/components/layout/index.ts +1 -0
  60. package/src/components/list/List.tsx +159 -0
  61. package/src/components/list/index.ts +1 -0
  62. package/src/components/navbar/MenuCategory.tsx +20 -0
  63. package/src/components/navbar/MenuGroup.tsx +288 -0
  64. package/src/components/navbar/MenuItem.tsx +65 -0
  65. package/src/components/navbar/Navbar.tsx +23 -0
  66. package/src/components/navbar/index.ts +4 -0
  67. package/src/components/page/index.ts +1 -0
  68. package/src/components/page/page.tsx +46 -0
  69. package/src/components/page-index/PageIndex.tsx +275 -0
  70. package/src/components/page-index/index.ts +1 -0
  71. package/src/components/popover/index.ts +1 -0
  72. package/src/components/popover/popover.tsx +199 -0
  73. package/src/components/radio/Radio.tsx +176 -0
  74. package/src/components/radio/index.ts +1 -0
  75. package/src/components/section/index.ts +1 -0
  76. package/src/components/section/section.tsx +66 -0
  77. package/src/components/select/Select.tsx +212 -0
  78. package/src/components/select/index.ts +1 -0
  79. package/src/components/slider/Slider.tsx +267 -0
  80. package/src/components/slider/index.ts +1 -0
  81. package/src/components/switch/index.ts +1 -0
  82. package/src/components/switch/switch.tsx +99 -0
  83. package/src/components/table/Table.tsx +147 -0
  84. package/src/components/table/index.ts +1 -0
  85. package/src/components/theme-control/index.ts +1 -0
  86. package/src/components/theme-control/theme-control.tsx +78 -0
  87. package/src/components/tooltip/index.ts +1 -0
  88. package/src/components/tooltip/tooltip.tsx +207 -0
  89. package/src/contexts/NavbarTooltipContext.tsx +48 -0
  90. package/src/contexts/index.ts +1 -0
  91. package/src/foundations/motion.md +136 -0
  92. package/src/index.ts +40 -0
  93. package/src/style/_shared/field.css +69 -0
  94. package/src/style/components/badge/badge.css +74 -0
  95. package/src/style/components/button/button.css +244 -0
  96. package/src/style/components/card/card.css +69 -0
  97. package/src/style/components/checkbox.css +142 -0
  98. package/src/style/components/code-block/code-block.css +34 -0
  99. package/src/style/components/color-control/color-control.css +126 -0
  100. package/src/style/components/drag-handle/drag-handle.css +68 -0
  101. package/src/style/components/drawer/drawer.css +210 -0
  102. package/src/style/components/floating-bar/floating-bar.css +39 -0
  103. package/src/style/components/footer/footer.css +108 -0
  104. package/src/style/components/grid/grid.css +33 -0
  105. package/src/style/components/header/header.css +44 -0
  106. package/src/style/components/icons/icons.css +44 -0
  107. package/src/style/components/input/input.css +393 -0
  108. package/src/style/components/layout/layout.css +205 -0
  109. package/src/style/components/list/list.css +140 -0
  110. package/src/style/components/navbar/navbar.css +342 -0
  111. package/src/style/components/page/page.css +46 -0
  112. package/src/style/components/page-index/page-index.css +158 -0
  113. package/src/style/components/popover/popover.css +44 -0
  114. package/src/style/components/radio.css +178 -0
  115. package/src/style/components/section/section.css +67 -0
  116. package/src/style/components/select/select.css +143 -0
  117. package/src/style/components/slider/slider.css +159 -0
  118. package/src/style/components/switch/switch.css +267 -0
  119. package/src/style/components/table/table.css +108 -0
  120. package/src/style/components/theme-control/theme-control.css +35 -0
  121. package/src/style/components/tooltip/tooltip.css +52 -0
  122. package/src/style/foundations/global.css +316 -0
  123. package/src/style/foundations/motion.css +164 -0
  124. package/src/style/foundations/spacing.css +51 -0
  125. package/src/style/foundations/typography.css +39 -0
  126. package/src/style/foundations/z-index.css +81 -0
  127. package/src/style/modes/dark.css +146 -0
  128. package/src/style/modes/light.css +147 -0
  129. package/src/style/semantic.css +52 -0
  130. package/src/style/styles.css +51 -0
  131. package/src/style/themes/theme.json +37 -0
  132. package/src/utils/README.md +305 -0
  133. package/src/utils/USER_PREFERENCES.md +558 -0
  134. package/src/utils/theme.ts +127 -0
  135. package/src/utils/user-preferences.ts +577 -0
  136. package/tsconfig.json +25 -0
  137. package/tsup.config.ts +52 -0
@@ -0,0 +1,316 @@
1
+ /**
2
+ * Global Foundations
3
+ * Base styles, resets, and global utilities
4
+ */
5
+
6
+ /* CSS Reset */
7
+ * {
8
+ margin: 0;
9
+ padding: 0;
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ /* HTML & Body */
14
+ html {
15
+ font-size: 16px;
16
+ -webkit-font-smoothing: antialiased;
17
+ -moz-osx-font-smoothing: grayscale;
18
+ }
19
+
20
+ body {
21
+ font-family: var(--font-family-base);
22
+ font-size: var(--font-size-base);
23
+ line-height: var(--line-height-normal);
24
+ color: var(--color-text-primary);
25
+ background-color: var(--color-bg-2);
26
+ font-weight: var(--font-weight-normal);
27
+ }
28
+
29
+ /* Headings */
30
+ h1, h2, h3, h4, h5, h6 {
31
+ font-family: var(--font-family-heading);
32
+ font-weight: var(--font-weight-semibold);
33
+ line-height: var(--line-height-tight);
34
+ color: var(--color-text-primary);
35
+ margin: 0 0 var(--spacing-2) 0;
36
+ }
37
+
38
+ h1 { font-size: var(--font-size-4xl); }
39
+ h2 { font-size: var(--font-size-3xl); }
40
+ h3 { font-size: var(--font-size-2xl); }
41
+ h4 { font-size: var(--font-size-xl); }
42
+ h5 { font-size: var(--font-size-lg); }
43
+ h6 { font-size: var(--font-size-base); }
44
+
45
+ /* Lists */
46
+ ul, ol {
47
+ margin: var(--spacing-4) 0 var(--spacing-4) var(--spacing-6);
48
+ padding: 0;
49
+ }
50
+ li {
51
+ margin-bottom: var(--spacing-2);
52
+ }
53
+
54
+ /* Form Elements */
55
+ button {
56
+ border: none;
57
+ cursor: pointer;
58
+ font-family: inherit;
59
+ font-size: inherit;
60
+ }
61
+
62
+ input,
63
+ textarea,
64
+ select {
65
+ font-family: inherit;
66
+ font-size: inherit;
67
+ }
68
+
69
+ /* Links */
70
+ a {
71
+ color: var(--color-primary);
72
+ text-decoration: none;
73
+ transition: var(--motion-transition-color);
74
+ }
75
+
76
+ a:hover {
77
+ color: var(--color-primary-dark);
78
+ }
79
+
80
+ /* Action links - for important navigation links */
81
+ a.link-action {
82
+ color: var(--color-foreground-2);
83
+ font-weight: 400;
84
+ transition: var(--motion-transition-color);
85
+ border-bottom: 2px solid var(--color-accent);
86
+ }
87
+
88
+ a.link-action:hover {
89
+ color: var(--color-on-primary);
90
+ background-color: var(--color-accent);
91
+ }
92
+
93
+ /* Inline code */
94
+ code.inline-code {
95
+ background-color: var(--color-bg-2);
96
+ padding: 0.2rem 0.4rem;
97
+ border-radius: 4px;
98
+ font-family: var(--font-family-mono);
99
+ font-size: 0.875em;
100
+ }
101
+
102
+ /* ===== MOTION & ANIMATIONS ===== */
103
+
104
+ /* Motion Tokens */
105
+ :root {
106
+ --motion-duration-fast: 0.15s;
107
+ --motion-duration-base: 0.2s;
108
+ --motion-duration-slow: 0.3s;
109
+ --motion-duration-slower: 0.5s;
110
+
111
+ --motion-easing-standard: cubic-bezier(0.4, 0.0, 0.2, 1);
112
+ --motion-easing-decelerate: cubic-bezier(0.0, 0.0, 0.2, 1);
113
+ --motion-easing-accelerate: cubic-bezier(0.4, 0.0, 1, 1);
114
+ --motion-easing-sharp: cubic-bezier(0.4, 0.0, 0.6, 1);
115
+
116
+ --motion-transition-fast: var(--motion-duration-fast) var(--motion-easing-standard);
117
+ --motion-transition-base: var(--motion-duration-base) var(--motion-easing-standard);
118
+ --motion-transition-slow: var(--motion-duration-slow) var(--motion-easing-standard);
119
+
120
+ --motion-transition-color: color var(--motion-transition-base);
121
+ --motion-transition-background: background-color var(--motion-transition-base);
122
+ --motion-transition-transform: transform var(--motion-transition-base);
123
+ --motion-transition-opacity: opacity var(--motion-transition-base);
124
+ }
125
+
126
+ /* Reduced Motion Support */
127
+ @media (prefers-reduced-motion: reduce) {
128
+ :root {
129
+ --motion-duration-fast: 0.01s;
130
+ --motion-duration-base: 0.01s;
131
+ --motion-duration-slow: 0.01s;
132
+ --motion-duration-slower: 0.01s;
133
+ }
134
+ }
135
+
136
+ /* Keyframe Animations */
137
+ @keyframes slide-in-right {
138
+ from {
139
+ transform: translateX(100%);
140
+ }
141
+ to {
142
+ transform: translateX(0);
143
+ }
144
+ }
145
+
146
+ @keyframes slide-out-right {
147
+ from {
148
+ transform: translateX(0);
149
+ }
150
+ to {
151
+ transform: translateX(100%);
152
+ }
153
+ }
154
+
155
+ @keyframes slide-in-left {
156
+ from {
157
+ transform: translateX(-100%);
158
+ }
159
+ to {
160
+ transform: translateX(0);
161
+ }
162
+ }
163
+
164
+ @keyframes slide-out-left {
165
+ from {
166
+ transform: translateX(0);
167
+ }
168
+ to {
169
+ transform: translateX(-100%);
170
+ }
171
+ }
172
+
173
+ @keyframes slide-in-top {
174
+ from {
175
+ transform: translateY(-100%);
176
+ }
177
+ to {
178
+ transform: translateY(0);
179
+ }
180
+ }
181
+
182
+ @keyframes slide-out-top {
183
+ from {
184
+ transform: translateY(0);
185
+ }
186
+ to {
187
+ transform: translateY(-100%);
188
+ }
189
+ }
190
+
191
+ @keyframes slide-in-bottom {
192
+ from {
193
+ transform: translateY(100%);
194
+ }
195
+ to {
196
+ transform: translateY(0);
197
+ }
198
+ }
199
+
200
+ @keyframes slide-out-bottom {
201
+ from {
202
+ transform: translateY(0);
203
+ }
204
+ to {
205
+ transform: translateY(100%);
206
+ }
207
+ }
208
+
209
+ @keyframes scale-in {
210
+ from {
211
+ transform: scale(0.8);
212
+ opacity: 0;
213
+ }
214
+ to {
215
+ transform: scale(1);
216
+ opacity: 1;
217
+ }
218
+ }
219
+
220
+ @keyframes scale-out {
221
+ from {
222
+ transform: scale(1);
223
+ opacity: 1;
224
+ }
225
+ to {
226
+ transform: scale(0.8);
227
+ opacity: 0;
228
+ }
229
+ }
230
+
231
+ /* CSS Variables for Keyframes */
232
+ :root {
233
+ --motion-keyframes-slide-in-right: slide-in-right var(--motion-duration-slower) var(--motion-easing-decelerate);
234
+ --motion-keyframes-slide-out-right: slide-out-right var(--motion-duration-slow) var(--motion-easing-accelerate);
235
+ --motion-keyframes-slide-in-left: slide-in-left var(--motion-duration-slower) var(--motion-easing-decelerate);
236
+ --motion-keyframes-slide-out-left: slide-out-left var(--motion-duration-slow) var(--motion-easing-accelerate);
237
+ --motion-keyframes-slide-in-top: slide-in-top var(--motion-duration-slower) var(--motion-easing-decelerate);
238
+ --motion-keyframes-slide-out-top: slide-out-top var(--motion-duration-slow) var(--motion-easing-accelerate);
239
+ --motion-keyframes-slide-in-bottom: slide-in-bottom var(--motion-duration-slower) var(--motion-easing-decelerate);
240
+ --motion-keyframes-slide-out-bottom: slide-out-bottom var(--motion-duration-slow) var(--motion-easing-accelerate);
241
+ --motion-keyframes-scale-in: scale-in var(--motion-duration-slow) var(--motion-easing-decelerate);
242
+ --motion-keyframes-scale-out: scale-out var(--motion-duration-base) var(--motion-easing-accelerate);
243
+ }
244
+
245
+ /* Text Colors */
246
+ .text-primary { color: var(--color-text-primary); }
247
+ .text-secondary { color: var(--color-text-secondary); }
248
+ .text-tertiary { color: var(--color-text-tertiary); }
249
+
250
+ /* Text Sizes */
251
+ .text-xs { font-size: var(--font-size-xs); }
252
+ .text-sm { font-size: var(--font-size-sm); }
253
+ .text-base { font-size: var(--font-size-base); }
254
+ .text-lg { font-size: var(--font-size-lg); }
255
+ .text-xl { font-size: var(--font-size-xl); }
256
+
257
+ /* Font Weights */
258
+ .font-normal { font-weight: var(--font-weight-normal); }
259
+ .font-medium { font-weight: var(--font-weight-medium); }
260
+ .font-semibold { font-weight: var(--font-weight-semibold); }
261
+ .font-bold { font-weight: var(--font-weight-bold); }
262
+
263
+ /* Margins */
264
+ .m-0 { margin: 0; }
265
+ .mb-1 { margin-bottom: 0.25rem; }
266
+ .mb-2 { margin-bottom: 0.5rem; }
267
+ .mb-3 { margin-bottom: 0.75rem; }
268
+ .mb-4 { margin-bottom: 1rem; }
269
+ .mt-1 { margin-top: 0.25rem; }
270
+ .mt-2 { margin-top: 0.5rem; }
271
+ .mt-3 { margin-top: 0.75rem; }
272
+ .mt-4 { margin-top: 1rem; }
273
+
274
+ /* Text Alignment */
275
+ .text-center { text-align: center; }
276
+
277
+ /* Demo styles */
278
+ .demo-content {
279
+ margin: 1rem 0;
280
+ padding: 1rem;
281
+ background-color: var(--color-surface-variant);
282
+ border-radius: 4px;
283
+ border: 1px solid var(--color-outline);
284
+ }
285
+
286
+ /* Custom Scrollbars */
287
+ ::-webkit-scrollbar {
288
+ width: 12px;
289
+ height: 12px;
290
+ }
291
+
292
+ ::-webkit-scrollbar-track {
293
+ background: var(--color-bg-1);
294
+ border-radius: 6px;
295
+ }
296
+
297
+ ::-webkit-scrollbar-thumb {
298
+ background: rgba(0, 0, 0, 0.3);
299
+ border-radius: 6px;
300
+ border: 2px solid var(--color-bg-1);
301
+ transition: background-color 0.2s ease;
302
+ }
303
+
304
+ ::-webkit-scrollbar-thumb:hover {
305
+ background: rgba(0, 0, 0, 1);
306
+ }
307
+
308
+ ::-webkit-scrollbar-corner {
309
+ background: var(--color-bg-1);
310
+ }
311
+
312
+ /* Firefox scrollbar */
313
+ * {
314
+ scrollbar-width: thin;
315
+ scrollbar-color: rgba(0, 0, 0, 0.3) var(--color-bg-2);
316
+ }
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Motion & Animation Tokens
3
+ * Consistent timing, easing, and animation patterns
4
+ */
5
+
6
+ :root {
7
+ /* ===== DURATION TOKENS ===== */
8
+ /* Fast interactions (hover states, button feedback) */
9
+ --motion-duration-fast: 0.15s;
10
+ --motion-duration-base: 0.2s;
11
+ --motion-duration-slow: 0.3s;
12
+ --motion-duration-slower: 0.5s;
13
+
14
+ /* ===== EASING FUNCTIONS ===== */
15
+ /* Standard easing for most UI interactions */
16
+ --motion-easing-standard: cubic-bezier(0.4, 0.0, 0.2, 1);
17
+ /* Decelerating easing for elements entering the screen */
18
+ --motion-easing-decelerate: cubic-bezier(0.0, 0.0, 0.2, 1);
19
+ /* Accelerating easing for elements leaving the screen */
20
+ --motion-easing-accelerate: cubic-bezier(0.4, 0.0, 1, 1);
21
+ /* Sharp easing for emphasized interactions */
22
+ --motion-easing-sharp: cubic-bezier(0.4, 0.0, 0.6, 1);
23
+
24
+ /* ===== COMBINED TRANSITIONS ===== */
25
+ --motion-transition-fast: var(--motion-duration-fast) var(--motion-easing-standard);
26
+ --motion-transition-base: var(--motion-duration-base) var(--motion-easing-standard);
27
+ --motion-transition-slow: var(--motion-duration-slow) var(--motion-easing-standard);
28
+ --motion-transition-slower: var(--motion-duration-slower) var(--motion-easing-standard);
29
+
30
+ /* ===== SPECIFIC TRANSITIONS ===== */
31
+ /* Color transitions */
32
+ --motion-transition-color: color var(--motion-transition-base);
33
+ --motion-transition-background: background-color var(--motion-transition-base);
34
+
35
+ /* Transform transitions */
36
+ --motion-transition-transform: transform var(--motion-transition-base);
37
+ --motion-transition-scale: transform var(--motion-transition-fast);
38
+
39
+ /* Opacity transitions */
40
+ --motion-transition-opacity: opacity var(--motion-transition-base);
41
+ --motion-transition-fade-in: opacity var(--motion-duration-base) var(--motion-easing-decelerate);
42
+ --motion-transition-fade-out: opacity var(--motion-duration-base) var(--motion-easing-accelerate);
43
+
44
+ /* Border transitions */
45
+ --motion-transition-border: border-color var(--motion-transition-base);
46
+
47
+ /* Shadow transitions */
48
+ --motion-transition-shadow: box-shadow var(--motion-transition-base);
49
+
50
+ /* ===== HOVER STATE TRANSITIONS (No easing on entry, easing on exit) ===== */
51
+ /* Use these for hover/active states to show immediate response */
52
+ /* Entry (hover/active) is instant (linear), exit goes back with easing */
53
+ --motion-easing-linear: linear;
54
+
55
+ /* Color transitions for hover states */
56
+ --motion-transition-color-hover-in: color var(--motion-duration-fast) var(--motion-easing-linear);
57
+ --motion-transition-color-hover-out: color var(--motion-duration-fast) var(--motion-easing-accelerate);
58
+
59
+ /* Background transitions for hover states */
60
+ --motion-transition-background-hover-in: background-color var(--motion-duration-fast) var(--motion-easing-linear);
61
+ --motion-transition-background-hover-out: background-color var(--motion-duration-fast) var(--motion-easing-accelerate);
62
+
63
+ /* Combined hover transitions */
64
+ --motion-transition-hover-in: color var(--motion-duration-fast) var(--motion-easing-linear), background-color var(--motion-duration-fast) var(--motion-easing-linear), box-shadow var(--motion-duration-fast) var(--motion-easing-linear), outline var(--motion-duration-fast) var(--motion-easing-accelerate);
65
+ --motion-transition-hover-out: color var(--motion-duration-fast) var(--motion-easing-accelerate), background-color var(--motion-duration-fast) var(--motion-easing-accelerate), box-shadow var(--motion-duration-fast) var(--motion-easing-accelerate), outline var(--motion-duration-fast) var(--motion-easing-accelerate);
66
+
67
+ /* ===== ANIMATION KEYFRAMES ===== */
68
+ /* Fade animations */
69
+ --motion-keyframes-fade-in: fadeIn 0.2s ease-out;
70
+ --motion-keyframes-fade-out: fadeOut 0.2s ease-in;
71
+
72
+ /* Slide animations */
73
+ --motion-keyframes-slide-in-right: slideInRight 0.3s ease-out;
74
+ --motion-keyframes-slide-out-right: slideOutRight 0.3s ease-in;
75
+ --motion-keyframes-slide-in-left: slideInLeft 0.3s ease-out;
76
+ --motion-keyframes-slide-out-left: slideOutLeft 0.3s ease-in;
77
+ --motion-keyframes-slide-in-top: slideInTop 0.3s ease-out;
78
+ --motion-keyframes-slide-out-top: slideOutTop 0.3s ease-in;
79
+ --motion-keyframes-slide-in-bottom: slideInBottom 0.3s ease-out;
80
+ --motion-keyframes-slide-out-bottom: slideOutBottom 0.3s ease-in;
81
+
82
+ /* Scale animations */
83
+ --motion-keyframes-scale-in: scaleIn 0.2s ease-out;
84
+ --motion-keyframes-scale-out: scaleOut 0.2s ease-in;
85
+ }
86
+
87
+ /* ===== KEYFRAME DEFINITIONS ===== */
88
+ @keyframes fadeIn {
89
+ from { opacity: 0; }
90
+ to { opacity: 1; }
91
+ }
92
+
93
+ @keyframes fadeOut {
94
+ from { opacity: 1; }
95
+ to { opacity: 0; }
96
+ }
97
+
98
+ @keyframes slideInRight {
99
+ from { transform: translateX(100%); }
100
+ to { transform: translateX(0); }
101
+ }
102
+
103
+ @keyframes slideOutRight {
104
+ from { transform: translateX(0); }
105
+ to { transform: translateX(100%); }
106
+ }
107
+
108
+ @keyframes slideInLeft {
109
+ from { transform: translateX(-100%); }
110
+ to { transform: translateX(0); }
111
+ }
112
+
113
+ @keyframes slideOutLeft {
114
+ from { transform: translateX(0); }
115
+ to { transform: translateX(-100%); }
116
+ }
117
+
118
+ @keyframes slideInTop {
119
+ from { transform: translateY(-100%); }
120
+ to { transform: translateY(0); }
121
+ }
122
+
123
+ @keyframes slideOutTop {
124
+ from { transform: translateY(0); }
125
+ to { transform: translateY(-100%); }
126
+ }
127
+
128
+ @keyframes slideInBottom {
129
+ from { transform: translateY(100%); }
130
+ to { transform: translateY(0); }
131
+ }
132
+
133
+ @keyframes slideOutBottom {
134
+ from { transform: translateY(0); }
135
+ to { transform: translateY(100%); }
136
+ }
137
+
138
+ @keyframes scaleIn {
139
+ from { transform: scale(0.95); opacity: 0; }
140
+ to { transform: scale(1); opacity: 1; }
141
+ }
142
+
143
+ @keyframes scaleOut {
144
+ from { transform: scale(1); opacity: 1; }
145
+ to { transform: scale(0.95); opacity: 0; }
146
+ }
147
+
148
+ /* ===== MOTION PREFERENCES ===== */
149
+ @media (prefers-reduced-motion: reduce) {
150
+ :root {
151
+ --motion-duration-fast: 0.01s;
152
+ --motion-duration-base: 0.01s;
153
+ --motion-duration-slow: 0.01s;
154
+ --motion-duration-slower: 0.01s;
155
+ }
156
+
157
+ *,
158
+ *::before,
159
+ *::after {
160
+ animation-duration: 0.01ms ;
161
+ animation-iteration-count: 1 ;
162
+ transition-duration: 0.01ms ;
163
+ }
164
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Spacing Tokens
3
+ * Spacing scale, border radius, and transitions
4
+ */
5
+
6
+ :root {
7
+ /* ===== SPACING SCALE ===== */
8
+ --spacing-0: 0px;
9
+ --spacing-1: 4px;
10
+ --spacing-2: 8px;
11
+ --spacing-3: 12px;
12
+ --spacing-4: 16px;
13
+ --spacing-5: 20px;
14
+ --spacing-6: 24px;
15
+ --spacing-7: 28px;
16
+ --spacing-8: 32px;
17
+ --spacing-9: 36px;
18
+ --spacing-10: 40px;
19
+ --spacing-11: 44px;
20
+ --spacing-12: 48px;
21
+ --spacing-14: 56px;
22
+ --spacing-16: 64px;
23
+ --spacing-20: 80px;
24
+ --spacing-24: 96px;
25
+ --spacing-28: 112px;
26
+ --spacing-32: 128px;
27
+ --spacing-36: 144px;
28
+ --spacing-40: 160px;
29
+ --spacing-44: 176px;
30
+ --spacing-48: 192px;
31
+ --spacing-52: 208px;
32
+ --spacing-56: 224px;
33
+ --spacing-60: 240px;
34
+ --spacing-64: 256px;
35
+ --spacing-72: 288px;
36
+ --spacing-80: 320px;
37
+ --spacing-96: 384px;
38
+
39
+ /* ===== BORDER RADIUS ===== */
40
+ --radius-sm: 4px;
41
+ --radius-base: 6px;
42
+ --radius-md: 8px;
43
+ --radius-lg: 12px;
44
+ --radius-xl: 16px;
45
+ --radius-full: 9999px;
46
+
47
+ /* ===== TRANSITIONS ===== */
48
+ --transition-fast: 0.15s ease-in-out;
49
+ --transition-base: 0.2s ease-in-out;
50
+ --transition-slow: 0.3s ease-in-out;
51
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Typography Tokens
3
+ * Font families, sizes, weights, line heights, and letter spacing
4
+ */
5
+
6
+ :root {
7
+ /* ===== FONT FAMILIES ===== */
8
+ --font-family-base: 'Rubik', sans-serif;
9
+ --font-family-heading: 'Signika', sans-serif;
10
+ --font-family-mono: 'Fira Code', 'Courier New', monospace;
11
+
12
+ /* ===== FONT SIZES ===== */
13
+ --font-size-xs: 12px;
14
+ --font-size-sm: 14px;
15
+ --font-size-base: 16px;
16
+ --font-size-md: 16px;
17
+ --font-size-lg: 18px;
18
+ --font-size-xl: 20px;
19
+ --font-size-2xl: 24px;
20
+ --font-size-3xl: 30px;
21
+ --font-size-4xl: 36px;
22
+
23
+ /* ===== FONT WEIGHTS ===== */
24
+ --font-weight-light: 200;
25
+ --font-weight-normal: 300;
26
+ --font-weight-medium: 500;
27
+ --font-weight-semibold: 600;
28
+ --font-weight-bold: 700;
29
+
30
+ /* ===== LINE HEIGHTS ===== */
31
+ --line-height-tight: 1.2;
32
+ --line-height-normal: 1.5;
33
+ --line-height-relaxed: 1.75;
34
+
35
+ /* ===== LETTER SPACING ===== */
36
+ --letter-spacing-tight: -0.02em;
37
+ --letter-spacing-normal: 0;
38
+ --letter-spacing-wide: 0.02em;
39
+ }
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Z-Index Layering System
3
+ *
4
+ * Organized z-index values for different UI layers.
5
+ * Each range is defined to prevent conflicts and maintain clear hierarchy.
6
+ *
7
+ * Ranges:
8
+ * - Base: 1-99 (interactive elements, hover states)
9
+ * - Floating: 100-999 (floating elements like tooltips, badges)
10
+ * - Popover: 1000-1999 (dropdowns, popovers, menus)
11
+ * - Modal: 2000-2999 (modals, dialogs, drawers)
12
+ * - Notification: 3000-3999 (toasts, notifications)
13
+ * - Fixed: 4000-4999 (fixed headers, footers, sticky elements)
14
+ * - Overlay: 5000+ (full-page overlays, backdrops)
15
+ */
16
+
17
+ :root {
18
+ /* ============================================
19
+ Base Layer (1-99)
20
+ Interactive elements, shadows, subtle overlays
21
+ ============================================ */
22
+ --z-base: 1;
23
+ --z-dropdown-shadow: 5;
24
+ --z-hover-state: 10;
25
+ --z-focus-ring: 15;
26
+
27
+ /* ============================================
28
+ Floating Layer (100-999)
29
+ Floating elements that appear above content
30
+ ============================================ */
31
+ --z-floating-base: 100;
32
+ --z-tooltip: 150;
33
+ --z-badge: 120;
34
+ --z-floating-action: 180;
35
+
36
+ /* ============================================
37
+ Popover Layer (1000-1999)
38
+ Dropdowns, context menus, select dropdowns, popovers
39
+ ============================================ */
40
+ --z-popover-base: 1000;
41
+ --z-select-dropdown: 1050;
42
+ --z-popover: 1100;
43
+ --z-context-menu: 1150;
44
+ --z-date-picker: 1200;
45
+ --z-time-picker: 1200;
46
+
47
+ /* ============================================
48
+ Modal Layer (2000-2999)
49
+ Modals, dialogs, drawers, lightboxes
50
+ ============================================ */
51
+ --z-modal-base: 2000;
52
+ --z-drawer: 2100;
53
+ --z-dialog: 2200;
54
+ --z-lightbox: 2300;
55
+
56
+ /* ============================================
57
+ Notification Layer (3000-3999)
58
+ Toasts, notifications, alerts
59
+ ============================================ */
60
+ --z-notification-base: 3000;
61
+ --z-toast: 3100;
62
+ --z-alert: 3200;
63
+ --z-banner: 3300;
64
+
65
+ /* ============================================
66
+ Fixed Layer (4000-4999)
67
+ Fixed positioned elements (headers, footers, sticky)
68
+ ============================================ */
69
+ --z-fixed-base: 4000;
70
+ --z-sticky-header: 4100;
71
+ --z-sticky-footer: 4100;
72
+ --z-fixed-nav: 4200;
73
+
74
+ /* ============================================
75
+ Overlay Layer (5000+)
76
+ Full-page overlays, backdrops
77
+ ============================================ */
78
+ --z-overlay-base: 5000;
79
+ --z-modal-backdrop: 5100;
80
+ --z-drawer-backdrop: 5100;
81
+ }