soltana-ui 0.1.0

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 (104) hide show
  1. package/README.md +158 -0
  2. package/dist/config/index.d.ts +3 -0
  3. package/dist/config/index.js +7 -0
  4. package/dist/config/register.d.ts +27 -0
  5. package/dist/config/stylesheet.d.ts +13 -0
  6. package/dist/config/types.d.ts +177 -0
  7. package/dist/config/types.js +7 -0
  8. package/dist/config/validation.d.ts +29 -0
  9. package/dist/config/validation.js +59 -0
  10. package/dist/enhancers/accordion.d.ts +19 -0
  11. package/dist/enhancers/carousel.d.ts +21 -0
  12. package/dist/enhancers/collapsible.d.ts +14 -0
  13. package/dist/enhancers/color-picker.d.ts +20 -0
  14. package/dist/enhancers/combobox.d.ts +17 -0
  15. package/dist/enhancers/context-menu.d.ts +19 -0
  16. package/dist/enhancers/date-picker.d.ts +8 -0
  17. package/dist/enhancers/drawer.d.ts +11 -0
  18. package/dist/enhancers/dropdown.d.ts +17 -0
  19. package/dist/enhancers/hover-card.d.ts +15 -0
  20. package/dist/enhancers/index.d.ts +42 -0
  21. package/dist/enhancers/modal.d.ts +16 -0
  22. package/dist/enhancers/scroll-area.d.ts +14 -0
  23. package/dist/enhancers/tabs.d.ts +26 -0
  24. package/dist/enhancers/test-helpers.d.ts +20 -0
  25. package/dist/enhancers/test-utils.d.ts +10 -0
  26. package/dist/enhancers/toast.d.ts +24 -0
  27. package/dist/enhancers/tooltip.d.ts +15 -0
  28. package/dist/enhancers/tree.d.ts +24 -0
  29. package/dist/enhancers/utils/click-away.d.ts +7 -0
  30. package/dist/enhancers/utils/create-overlay-enhancer.d.ts +14 -0
  31. package/dist/enhancers/utils/focus-trap.d.ts +9 -0
  32. package/dist/enhancers/utils/generate-id.d.ts +6 -0
  33. package/dist/enhancers/utils/keyboard-nav.d.ts +21 -0
  34. package/dist/enhancers/utils/position.d.ts +30 -0
  35. package/dist/fonts/index.d.ts +20 -0
  36. package/dist/index.d.ts +9 -0
  37. package/dist/init.d.ts +16 -0
  38. package/dist/plugins/index.d.ts +2 -0
  39. package/dist/plugins/index.js +1 -0
  40. package/dist/plugins/postcss-soltana-treeshake.d.ts +10 -0
  41. package/dist/plugins/postcss-soltana-treeshake.js +149 -0
  42. package/dist/plugins/types.d.ts +9 -0
  43. package/dist/plugins/types.js +4 -0
  44. package/dist/soltana-ui.css +1 -0
  45. package/dist/soltana-ui.js +1702 -0
  46. package/dist/soltana-ui.umd.cjs +1 -0
  47. package/package.json +90 -0
  48. package/src/styles/_variables.scss +348 -0
  49. package/src/styles/base/_accessibility.scss +146 -0
  50. package/src/styles/base/_index.scss +12 -0
  51. package/src/styles/base/_register.scss +84 -0
  52. package/src/styles/base/_relief-system.scss +53 -0
  53. package/src/styles/base/_scrollbar.scss +40 -0
  54. package/src/styles/base/_transitions.scss +75 -0
  55. package/src/styles/base/_typography.scss +442 -0
  56. package/src/styles/components/_alert-dialogs.scss +75 -0
  57. package/src/styles/components/_badges.scss +215 -0
  58. package/src/styles/components/_buttons.scss +293 -0
  59. package/src/styles/components/_callouts.scss +99 -0
  60. package/src/styles/components/_cards.scss +97 -0
  61. package/src/styles/components/_carousels.scss +108 -0
  62. package/src/styles/components/_closes.scss +63 -0
  63. package/src/styles/components/_code.scss +75 -0
  64. package/src/styles/components/_collapsibles.scss +61 -0
  65. package/src/styles/components/_color-pickers.scss +211 -0
  66. package/src/styles/components/_comboboxes.scss +88 -0
  67. package/src/styles/components/_context-menus.scss +82 -0
  68. package/src/styles/components/_date-pickers.scss +165 -0
  69. package/src/styles/components/_feedback.scss +354 -0
  70. package/src/styles/components/_figures.scss +52 -0
  71. package/src/styles/components/_heros.scss +83 -0
  72. package/src/styles/components/_hover-cards.scss +55 -0
  73. package/src/styles/components/_images.scss +71 -0
  74. package/src/styles/components/_index.scss +41 -0
  75. package/src/styles/components/_indicators.scss +403 -0
  76. package/src/styles/components/_inputs.scss +409 -0
  77. package/src/styles/components/_layouts.scss +139 -0
  78. package/src/styles/components/_lists.scss +135 -0
  79. package/src/styles/components/_menus.scss +195 -0
  80. package/src/styles/components/_navigation.scss +325 -0
  81. package/src/styles/components/_overlays.scss +233 -0
  82. package/src/styles/components/_scroll-areas.scss +53 -0
  83. package/src/styles/components/_segmented-controls.scss +75 -0
  84. package/src/styles/components/_tables.scss +137 -0
  85. package/src/styles/components/_toasts.scss +111 -0
  86. package/src/styles/components/_toggles.scss +57 -0
  87. package/src/styles/components/_trees.scss +123 -0
  88. package/src/styles/decorative/_classical.scss +196 -0
  89. package/src/styles/decorative/_index.scss +7 -0
  90. package/src/styles/finishes/_index.scss +55 -0
  91. package/src/styles/index.scss +30 -0
  92. package/src/styles/reliefs/_index.scss +66 -0
  93. package/src/styles/reliefs/_neumorphic-tables.scss +92 -0
  94. package/src/styles/themes/_dark.scss +130 -0
  95. package/src/styles/themes/_index.scss +3 -0
  96. package/src/styles/themes/_light.scss +122 -0
  97. package/src/styles/themes/_sepia.scss +121 -0
  98. package/src/styles/utilities/_index.scss +13 -0
  99. package/src/styles/utilities/_layout.scss +100 -0
  100. package/src/styles/utilities/_mixins.scss +410 -0
  101. package/src/styles/utilities/_responsive.scss +46 -0
  102. package/src/styles/utilities/_sizing.scss +62 -0
  103. package/src/styles/utilities/_spacing.scss +12 -0
  104. package/src/styles/utilities/_visual.scss +436 -0
@@ -0,0 +1,436 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Visual Utilities
3
+ // ---------------------------------------------------------------------------
4
+ // Colors, backgrounds, borders, shadows, opacity, transitions, transforms,
5
+ // cursor, pointer events, user select, and visibility.
6
+ // ---------------------------------------------------------------------------
7
+
8
+ @use '../variables' as *;
9
+ @use 'mixins' as gen;
10
+
11
+ // ============================================================================
12
+ // BORDER RADIUS
13
+ // ============================================================================
14
+
15
+ @each $key, $val in $radii {
16
+ @if $key == 'default' {
17
+ .rounded {
18
+ border-radius: $val;
19
+ }
20
+ } @else {
21
+ .rounded-#{$key} {
22
+ border-radius: $val;
23
+ }
24
+ }
25
+ }
26
+
27
+ // ============================================================================
28
+ // BORDER
29
+ // ============================================================================
30
+
31
+ .border {
32
+ border: 1px solid var(--border-default);
33
+ }
34
+
35
+ .border-0 {
36
+ border: 0;
37
+ }
38
+
39
+ .border-2 {
40
+ border: 2px solid var(--border-default);
41
+ }
42
+
43
+ .border-t {
44
+ border-top: 1px solid var(--border-default);
45
+ }
46
+
47
+ .border-b {
48
+ border-bottom: 1px solid var(--border-default);
49
+ }
50
+
51
+ .border-l {
52
+ border-left: 1px solid var(--border-default);
53
+ }
54
+
55
+ .border-r {
56
+ border-right: 1px solid var(--border-default);
57
+ }
58
+
59
+ .border-subtle {
60
+ border-color: var(--border-subtle);
61
+ }
62
+
63
+ .border-strong {
64
+ border-color: var(--border-strong);
65
+ }
66
+
67
+ .border-accent {
68
+ border-color: var(--accent-primary);
69
+ }
70
+
71
+ // ============================================================================
72
+ // BACKGROUND COLOR
73
+ // ============================================================================
74
+
75
+ // Semantic surface and state backgrounds
76
+ // Note: .bg-surface-1 through .bg-surface-4 intentionally bypass tier composition
77
+ // by directly exposing raw theme tokens. These utilities do not respond to relief
78
+ // or finish tier changes. Consumers should prefer component-level styling or
79
+ // tier-aware patterns (such as components that consume --relief-bg bridge tokens)
80
+ // for tier-responsive backgrounds. Tier-aware utility alternatives may be added
81
+ // in future versions.
82
+ $bg-semantic: (
83
+ surface: --surface-bg,
84
+ surface-1: --surface-1,
85
+ surface-2: --surface-2,
86
+ surface-3: --surface-3,
87
+ surface-4: --surface-4,
88
+ accent: --accent-primary,
89
+ accent-secondary: --accent-secondary,
90
+ success: --color-success,
91
+ success-subtle: --color-success-subtle,
92
+ warning: --color-warning,
93
+ warning-subtle: --color-warning-subtle,
94
+ error: --color-error,
95
+ error-subtle: --color-error-subtle,
96
+ info: --color-info,
97
+ info-subtle: --color-info-subtle,
98
+ );
99
+
100
+ @each $name, $var in $bg-semantic {
101
+ .bg-#{$name} {
102
+ background-color: var(#{$var});
103
+ }
104
+ }
105
+
106
+ // ============================================================================
107
+ // GRADIENT BACKGROUNDS
108
+ // ============================================================================
109
+
110
+ .bg-gradient-accent {
111
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
112
+ }
113
+
114
+ .bg-fixed {
115
+ background-attachment: fixed;
116
+ }
117
+
118
+ .bg-mesh {
119
+ background-image:
120
+ radial-gradient(
121
+ at 20% 25%,
122
+ color-mix(in srgb, var(--mesh-color-1) 50%, transparent) 0%,
123
+ transparent 55%
124
+ ),
125
+ radial-gradient(
126
+ at 80% 75%,
127
+ color-mix(in srgb, var(--mesh-color-2) 40%, transparent) 0%,
128
+ transparent 55%
129
+ ),
130
+ radial-gradient(
131
+ at 75% 20%,
132
+ color-mix(in srgb, var(--mesh-color-3) 35%, transparent) 0%,
133
+ transparent 45%
134
+ ),
135
+ radial-gradient(
136
+ at 40% 60%,
137
+ color-mix(in srgb, var(--mesh-color-2) 28%, transparent) 0%,
138
+ transparent 65%
139
+ );
140
+ }
141
+
142
+ // ============================================================================
143
+ // OPACITY
144
+ // ============================================================================
145
+
146
+ $opacities: (0, 5, 10, 20, 25, 30, 40, 50, 60, 70, 75, 80, 90, 95, 100);
147
+
148
+ @each $val in $opacities {
149
+ .opacity-#{$val} {
150
+ opacity: calc(#{$val} / 100);
151
+ }
152
+ }
153
+
154
+ // ============================================================================
155
+ // SHADOWS
156
+ // ============================================================================
157
+
158
+ @each $key, $_ in $shadows {
159
+ @if $key == 'default' {
160
+ .shadow {
161
+ box-shadow: var(--shadow-#{$key});
162
+ }
163
+ } @else {
164
+ .shadow-#{$key} {
165
+ box-shadow: var(--shadow-#{$key});
166
+ }
167
+ }
168
+ }
169
+
170
+ // ============================================================================
171
+ // TRANSITION
172
+ // ============================================================================
173
+
174
+ .transition {
175
+ transition-property:
176
+ color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow,
177
+ transform, filter, backdrop-filter;
178
+ transition-timing-function: var(--easing-in-out);
179
+ transition-duration: var(--transition-normal);
180
+ }
181
+
182
+ .transition-all {
183
+ transition-property: all;
184
+ transition-timing-function: var(--easing-in-out);
185
+ transition-duration: var(--transition-normal);
186
+ }
187
+
188
+ .transition-none {
189
+ transition-property: none;
190
+ }
191
+
192
+ .duration-fast {
193
+ transition-duration: var(--transition-fast);
194
+ }
195
+
196
+ .duration-normal {
197
+ transition-duration: var(--transition-normal);
198
+ }
199
+
200
+ .duration-slow {
201
+ transition-duration: var(--transition-slow);
202
+ }
203
+
204
+ .duration-slower {
205
+ transition-duration: var(--transition-slower);
206
+ }
207
+
208
+ .ease-in {
209
+ transition-timing-function: var(--easing-in);
210
+ }
211
+
212
+ .ease-out {
213
+ transition-timing-function: var(--easing-out);
214
+ }
215
+
216
+ .ease-in-out {
217
+ transition-timing-function: var(--easing-in-out);
218
+ }
219
+
220
+ // ============================================================================
221
+ // TRANSFORMS
222
+ // ============================================================================
223
+
224
+ // --- Scale ---
225
+
226
+ $scale-values: (0, 50, 75, 90, 95, 100, 105, 110, 125, 150);
227
+
228
+ @each $val in $scale-values {
229
+ .scale-#{$val} {
230
+ transform: scale(calc(#{$val} / 100));
231
+ }
232
+ }
233
+
234
+ // --- Rotate ---
235
+
236
+ $rotate-values: (0, 1, 2, 3, 6, 12, 45, 90, 180);
237
+
238
+ @each $val in $rotate-values {
239
+ .rotate-#{$val} {
240
+ transform: rotate(#{$val}deg);
241
+ }
242
+
243
+ @if $val != 0 {
244
+ .-rotate-#{$val} {
245
+ transform: rotate(-#{$val}deg);
246
+ }
247
+ }
248
+ }
249
+
250
+ // --- Translate ---
251
+
252
+ @each $step in $space-keys {
253
+ .translate-x-#{$step} {
254
+ transform: translateX(calc(#{$step} * 0.25rem));
255
+ }
256
+
257
+ .translate-y-#{$step} {
258
+ transform: translateY(calc(#{$step} * 0.25rem));
259
+ }
260
+
261
+ @if $step != 0 {
262
+ .-translate-x-#{$step} {
263
+ transform: translateX(calc(#{$step} * -0.25rem));
264
+ }
265
+
266
+ .-translate-y-#{$step} {
267
+ transform: translateY(calc(#{$step} * -0.25rem));
268
+ }
269
+ }
270
+ }
271
+
272
+ // Percentage-based translate
273
+ .translate-x-1\/2 {
274
+ transform: translateX(50%);
275
+ }
276
+
277
+ .translate-y-1\/2 {
278
+ transform: translateY(50%);
279
+ }
280
+
281
+ .translate-x-full {
282
+ transform: translateX(100%);
283
+ }
284
+
285
+ .translate-y-full {
286
+ transform: translateY(100%);
287
+ }
288
+
289
+ .-translate-x-1\/2 {
290
+ transform: translateX(-50%);
291
+ }
292
+
293
+ .-translate-y-1\/2 {
294
+ transform: translateY(-50%);
295
+ }
296
+
297
+ .-translate-x-full {
298
+ transform: translateX(-100%);
299
+ }
300
+
301
+ .-translate-y-full {
302
+ transform: translateY(-100%);
303
+ }
304
+
305
+ // --- Skew ---
306
+
307
+ $skew-values: (1, 2, 3, 6, 12);
308
+
309
+ @each $val in $skew-values {
310
+ .skew-x-#{$val} {
311
+ transform: skewX(#{$val}deg);
312
+ }
313
+
314
+ .skew-y-#{$val} {
315
+ transform: skewY(#{$val}deg);
316
+ }
317
+
318
+ .-skew-x-#{$val} {
319
+ transform: skewX(-#{$val}deg);
320
+ }
321
+
322
+ .-skew-y-#{$val} {
323
+ transform: skewY(-#{$val}deg);
324
+ }
325
+ }
326
+
327
+ // ============================================================================
328
+ // ANIMATIONS
329
+ // ============================================================================
330
+
331
+ @keyframes spin {
332
+ to {
333
+ transform: rotate(360deg);
334
+ }
335
+ }
336
+
337
+ @keyframes ping {
338
+ 75%,
339
+ 100% {
340
+ transform: scale(2);
341
+ opacity: 0;
342
+ }
343
+ }
344
+
345
+ @keyframes pulse {
346
+ 50% {
347
+ opacity: 0.5;
348
+ }
349
+ }
350
+
351
+ @keyframes bounce {
352
+ 0%,
353
+ 100% {
354
+ transform: translateY(-25%);
355
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
356
+ }
357
+
358
+ 50% {
359
+ transform: none;
360
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
361
+ }
362
+ }
363
+
364
+ .animate-spin {
365
+ animation: spin 1s linear infinite;
366
+ }
367
+
368
+ .animate-ping {
369
+ animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
370
+ }
371
+
372
+ .animate-pulse {
373
+ animation: pulse 2s var(--easing-in-out-soft) infinite;
374
+ }
375
+
376
+ .animate-bounce {
377
+ animation: bounce 1s infinite;
378
+ }
379
+
380
+ .animate-none {
381
+ animation: none;
382
+ }
383
+
384
+ // ============================================================================
385
+ // CURSOR
386
+ // ============================================================================
387
+
388
+ .cursor-pointer {
389
+ cursor: pointer;
390
+ }
391
+
392
+ .cursor-default {
393
+ cursor: default;
394
+ }
395
+
396
+ .cursor-not-allowed {
397
+ cursor: not-allowed;
398
+ }
399
+
400
+ .cursor-grab {
401
+ cursor: grab;
402
+ }
403
+
404
+ // ============================================================================
405
+ // POINTER EVENTS
406
+ // ============================================================================
407
+
408
+ .pointer-events-none {
409
+ pointer-events: none;
410
+ }
411
+
412
+ .pointer-events-auto {
413
+ pointer-events: auto;
414
+ }
415
+
416
+ // ============================================================================
417
+ // USER SELECT
418
+ // ============================================================================
419
+
420
+ .select-none {
421
+ user-select: none;
422
+ }
423
+
424
+ .select-text {
425
+ user-select: text;
426
+ }
427
+
428
+ .select-all {
429
+ user-select: all;
430
+ }
431
+
432
+ // ============================================================================
433
+ // VISIBILITY
434
+ // ============================================================================
435
+
436
+ @include gen.generate-visibility;