@fest-lib/veela 0.1.19 → 1.0.1

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 (141) hide show
  1. package/dist/veela.js +4 -33
  2. package/package.json +9 -2
  3. package/src/scss/_layers.scss +5 -34
  4. package/src/scss/basic/{misc/_core-layout.scss → _core-layout.scss} +1 -1
  5. package/src/scss/basic/_layers.scss +1 -0
  6. package/src/scss/basic/{misc/_layout.scss → _layout.scss} +15 -15
  7. package/src/scss/basic/{misc/_normalize.scss → _normalize.scss} +5 -103
  8. package/src/scss/basic/{misc/_states.scss → _states.scss} +2 -2
  9. package/src/scss/{core/misc → basic}/_utilities.scss +4 -4
  10. package/src/scss/basic/design/_keyframes.scss +1 -1
  11. package/src/scss/basic/design/_shapes.scss +1 -1
  12. package/src/scss/basic/index.scss +14 -16
  13. package/src/scss/chrome.scss +2 -0
  14. package/src/scss/core/_color-mod.scss +24 -0
  15. package/src/scss/core/{misc/_color-properties.scss → _color-properties.scss} +1 -1
  16. package/src/scss/core/{misc/_tokens.scss → _tokens.scss} +10 -93
  17. package/src/scss/core/index.scss +13 -1
  18. package/src/scss/index.scss +7 -2
  19. package/src/scss/index.ts +1 -1
  20. package/src/scss/{core/interact → interact}/_viewport.scss +1 -1
  21. package/src/scss/interact/index.scss +18 -0
  22. package/src/scss/theme/_effects.scss +60 -0
  23. package/src/scss/theme/index.scss +8 -0
  24. package/src/scss/{advanced/index.ts → theme/loader.ts} +3 -4
  25. package/src/scss/ui/_bar.scss +268 -0
  26. package/src/scss/ui/_buttons.scss +215 -0
  27. package/src/scss/ui/_chrome-mixins.scss +104 -0
  28. package/src/scss/ui/_color.scss +3 -0
  29. package/src/scss/ui/_colorize.scss +5 -0
  30. package/src/scss/{advanced/layout → ui}/_content.scss +0 -1
  31. package/src/scss/ui/_core-layout.scss +4 -0
  32. package/src/scss/ui/_essentials-options.scss +2 -0
  33. package/src/scss/ui/_essentials.scss +707 -0
  34. package/src/scss/ui/_explorer-content.scss +417 -0
  35. package/src/scss/ui/_explorer.scss +274 -0
  36. package/src/scss/ui/_forms-bare-host-elements.scss +25 -0
  37. package/src/scss/ui/_forms-options.scss +2 -0
  38. package/src/scss/ui/_forms.scss +279 -0
  39. package/src/scss/ui/_forms_misc.scss +201 -0
  40. package/src/scss/ui/_gridbox.scss +298 -0
  41. package/src/scss/ui/_home-host.scss +192 -0
  42. package/src/scss/ui/_index.scss +23 -0
  43. package/src/scss/ui/_launcher-typography.scss +31 -0
  44. package/src/scss/ui/_layers.scss +48 -0
  45. package/src/scss/ui/_layout.scss +3 -0
  46. package/src/scss/ui/_markdown.scss +1634 -0
  47. package/src/scss/ui/_modal.scss +309 -0
  48. package/src/scss/ui/_motion.scss +3 -0
  49. package/src/scss/ui/_native-host-button-chrome.scss +31 -0
  50. package/src/scss/ui/_normalize.scss +5 -0
  51. package/src/scss/ui/_orientation-functions.scss +273 -0
  52. package/src/scss/ui/_orientbox.scss +97 -0
  53. package/src/scss/ui/_scrollbar.scss +257 -0
  54. package/src/scss/ui/_shared-overlays.scss +16 -0
  55. package/src/scss/ui/_shared.scss +4 -0
  56. package/src/scss/ui/_sidebar.scss +478 -0
  57. package/src/scss/ui/_speed-dial.scss +47 -0
  58. package/src/scss/ui/_states.scss +4 -0
  59. package/src/scss/ui/_tables.scss +28 -0
  60. package/src/scss/ui/_tabs.scss +405 -0
  61. package/src/scss/ui/_taskbar.scss +215 -0
  62. package/src/scss/ui/_toolbars.scss +167 -0
  63. package/src/scss/ui/_typography.scss +11 -0
  64. package/src/scss/ui/_utils.scss +8 -0
  65. package/src/scss/ui/_viewport.scss +470 -0
  66. package/src/scss/ui/_window-frame.scss +658 -0
  67. package/src/scss/ui/components/app-menu.scss +817 -0
  68. package/src/scss/ui/components/appearance-desktop.scss +14 -0
  69. package/src/scss/ui/components/appearance-mobile.scss +14 -0
  70. package/src/scss/ui/components/calendar/flyout.scss +194 -0
  71. package/src/scss/ui/components/calendar/index.scss +627 -0
  72. package/src/scss/ui/components/explorer-settings.scss +232 -0
  73. package/src/scss/ui/components/file-manager-content.scss +2 -0
  74. package/src/scss/ui/components/file-manager.scss +2 -0
  75. package/src/scss/ui/components/launcher-icon-mask.scss +34 -0
  76. package/src/scss/ui/components/navbar.scss +133 -0
  77. package/src/scss/ui/components/quick-settings.scss +321 -0
  78. package/src/scss/ui/components/scrollframe.scss +58 -0
  79. package/src/scss/ui/components/slider.scss +188 -0
  80. package/src/scss/ui/components/speed-dial.scss +2288 -0
  81. package/src/scss/ui/components/statusbar.scss +255 -0
  82. package/src/scss/ui/components/task.scss +118 -0
  83. package/src/scss/ui/components/taskbar.scss +514 -0
  84. package/src/scss/ui/components/text.scss +241 -0
  85. package/src/scss/ui/components/window.scss +601 -0
  86. package/src/scss/ui/home-host-apply.scss +10 -0
  87. package/src/scss/ui/index.scss +7 -0
  88. package/src/scss/ui/native-controls.scss +17 -0
  89. package/src/scss/advanced/_index.scss +0 -0
  90. package/src/scss/advanced/animation/_motion.scss +0 -323
  91. package/src/scss/advanced/color/_color.scss +0 -328
  92. package/src/scss/advanced/color/_colorize.scss +0 -325
  93. package/src/scss/advanced/design/_design-tokens.scss +0 -118
  94. package/src/scss/advanced/design/_effects.scss +0 -275
  95. package/src/scss/advanced/design/_shadow.scss +0 -359
  96. package/src/scss/advanced/design/_surfaces.scss +0 -76
  97. package/src/scss/advanced/effects/_animations.scss +0 -124
  98. package/src/scss/advanced/effects/_shadows.scss +0 -50
  99. package/src/scss/advanced/font/_typography.scss +0 -601
  100. package/src/scss/advanced/index.scss +0 -11
  101. package/src/scss/advanced/layout/_index.scss +0 -5
  102. package/src/scss/advanced/layout/_normalize.scss +0 -543
  103. package/src/scss/advanced/layout/_shared-overlays.scss +0 -162
  104. package/src/scss/advanced/md3/_md3.scss +0 -506
  105. package/src/scss/advanced/md3/_utils.scss +0 -114
  106. package/src/scss/advanced/misc/_config.scss +0 -119
  107. package/src/scss/advanced/misc/_initials.scss +0 -298
  108. package/src/scss/advanced/misc/_mixins.scss +0 -179
  109. package/src/scss/advanced/misc/_rendering.scss +0 -82
  110. package/src/scss/advanced/misc/_tokens.scss +0 -74
  111. package/src/scss/advanced/theme/_shared.scss +0 -232
  112. package/src/scss/advanced/theme/_states.scss +0 -332
  113. package/src/scss/advanced/theme/_variants.scss +0 -354
  114. package/src/scss/advanced/tokens/_material-color.scss +0 -120
  115. package/src/scss/advanced/tokens/_variables.scss +0 -171
  116. package/src/scss/basic/misc/_index.scss +0 -18
  117. package/src/scss/basic/misc/_mixins.scss +0 -179
  118. package/src/scss/basic/misc/_queries.scss +0 -34
  119. package/src/scss/basic/misc/_tokens.scss +0 -78
  120. package/src/scss/basic/misc/_veela.scss +0 -12
  121. package/src/scss/core/misc/_index.scss +0 -6
  122. /package/src/scss/basic/{misc/_motion.scss → _motion.scss} +0 -0
  123. /package/src/scss/{advanced/misc → basic}/_queries.scss +0 -0
  124. /package/src/scss/basic/{misc/_shared.scss → _shared.scss} +0 -0
  125. /package/src/scss/core/{misc/_config.scss → _config.scss} +0 -0
  126. /package/src/scss/core/{misc/_functions.scss → _functions.scss} +0 -0
  127. /package/src/scss/core/{misc/_icons.scss → _icons.scss} +0 -0
  128. /package/src/scss/core/{misc/_layout.scss → _layout.scss} +0 -0
  129. /package/src/scss/core/{misc/_mixins.scss → _mixins.scss} +0 -0
  130. /package/src/scss/core/{misc/_properties.scss → _properties.scss} +0 -0
  131. /package/src/scss/core/{misc/_utils.scss → _utils.scss} +0 -0
  132. /package/src/scss/{core/interact → interact}/_draggable.scss +0 -0
  133. /package/src/scss/{core/interact → interact}/_position.scss +0 -0
  134. /package/src/scss/{core/interact → interact}/_ps-anchor.scss +0 -0
  135. /package/src/scss/{core/interact → interact}/_ps-centered.scss +0 -0
  136. /package/src/scss/{core/interact → interact}/_ps-cursor.scss +0 -0
  137. /package/src/scss/{core/interact → interact}/_ps-draggable.scss +0 -0
  138. /package/src/scss/{core/interact → interact}/_ps-mechanic.scss +0 -0
  139. /package/src/scss/{core/interact → interact}/_ps-properties.scss +0 -0
  140. /package/src/scss/{core/interact → interact}/_ps-resizable.scss +0 -0
  141. /package/src/scss/{core/interact → interact}/_resizable.scss +0 -0
@@ -1,354 +0,0 @@
1
- @use "veela-lib" as *;
2
-
3
- //
4
- @mixin validation-state($color, $border-opacity: var(--border-opacity-strong), $bg-opacity: 0.04) {
5
- border-color: oklch(from $color l c h / $border-opacity);
6
- background-color: oklch(from $color l c h / $bg-opacity);
7
- }
8
-
9
- //
10
- @mixin validation-warning { @include validation-state(var(--color-warning)); }
11
- @mixin validation-success { @include validation-state(var(--color-success)); }
12
- @mixin validation-error { @include validation-state(var(--color-error)); }
13
-
14
- // Dedicated colorization utility classes
15
- // These classes apply semantic color variants and states to elements
16
- @layer ux-colors {
17
-
18
- // =============================================================================
19
- // INPUT STATE VARIANTS
20
- // =============================================================================
21
-
22
- :where(input, textarea, select) {
23
- // Success state
24
- &.state-success,
25
- &.is-success,
26
- &[data-state="success"] {
27
- --current: var(--color-success);
28
- @include validation-success;
29
- }
30
-
31
- // Warning state
32
- &.state-warning,
33
- &.is-warning,
34
- &[data-state="warning"] {
35
- --current: var(--color-warning);
36
- @include validation-warning;
37
- }
38
-
39
- // Error state
40
- &.state-error,
41
- &.is-error,
42
- &.state-invalid,
43
- &.is-invalid,
44
- &[data-state="error"],
45
- &[data-state="invalid"] {
46
- --current: var(--color-error, var(--color-danger));
47
- @include validation-error;
48
- }
49
-
50
- // Valid state
51
- &.state-valid,
52
- &.is-valid,
53
- &[data-state="valid"] {
54
- --current: var(--color-success);
55
- @include validation-success;
56
- }
57
- }
58
-
59
-
60
- // =============================================================================
61
- // COLOR VARIANT CLASSES
62
- // =============================================================================
63
-
64
- .color-primary { --current: var(--color-primary); }
65
- .color-secondary { --current: var(--color-secondary); }
66
- .color-accent { --current: var(--color-accent); }
67
- .color-success { --current: var(--color-success); }
68
- .color-warning { --current: var(--color-warning); }
69
- .color-danger { --current: var(--color-danger); }
70
- .color-info { --current: var(--color-info); }
71
-
72
- // =============================================================================
73
- // SURFACE COLORIZATION CLASSES
74
- // =============================================================================
75
-
76
- .surface {
77
- @include solid-colorize("&", ("shade": var(--surface-opacity-default), "tint": 0.0, "scope": "selector"));
78
- }
79
-
80
- .surface-subtle {
81
- @include solid-colorize("&", ("shade": var(--surface-opacity-subtle), "tint": 0.0, "scope": "selector"));
82
- }
83
-
84
- .surface-muted {
85
- @include solid-colorize("&", ("shade": var(--surface-opacity-muted), "tint": 0.0, "scope": "selector"));
86
- }
87
-
88
- .surface-emphasis {
89
- @include solid-colorize("&", ("shade": var(--surface-opacity-emphasis), "tint": 0.0, "scope": "selector"));
90
- }
91
-
92
- .surface-strong {
93
- @include solid-colorize("&", ("shade": var(--surface-opacity-strong), "tint": 0.0, "scope": "selector"));
94
- }
95
-
96
- // =============================================================================
97
- // INTERACTIVE SURFACE CLASSES
98
- // =============================================================================
99
-
100
- .surface-interactive {
101
- @include surface-interactive(var(--surface-opacity-default));
102
- }
103
-
104
- .surface-interactive-subtle {
105
- @include surface-interactive(var(--surface-opacity-subtle));
106
- }
107
-
108
- .surface-interactive-emphasis {
109
- @include surface-interactive(var(--surface-opacity-emphasis));
110
- }
111
-
112
-
113
- // =============================================================================
114
- // TEXT COLOR CLASSES
115
- // =============================================================================
116
-
117
- .text-primary {
118
- @include text-color(var(--text-tint-primary));
119
- }
120
-
121
- .text-secondary {
122
- @include text-color(var(--text-tint-secondary));
123
- }
124
-
125
- .text-muted {
126
- @include text-color(var(--text-tint-muted));
127
- }
128
-
129
- .text-disabled {
130
- @include text-color(var(--text-tint-disabled));
131
- opacity: 0.6;
132
- cursor: not-allowed;
133
- }
134
-
135
- // =============================================================================
136
- // VALIDATION STATE CLASSES
137
- // =============================================================================
138
-
139
- .state-success {
140
- --current: var(--color-success);
141
- @include validation-success;
142
- }
143
-
144
- .state-warning {
145
- --current: var(--color-warning);
146
- @include validation-warning;
147
- }
148
-
149
- .state-error {
150
- --current: var(--color-error, var(--color-danger));
151
- @include validation-error;
152
- }
153
-
154
- .state-invalid {
155
- --current: var(--color-error, var(--color-danger));
156
- @include validation-error;
157
- }
158
-
159
- .state-valid {
160
- --current: var(--color-success);
161
- @include validation-success;
162
- }
163
-
164
- // =============================================================================
165
- // COMBINED COLOR + SURFACE CLASSES
166
- // =============================================================================
167
-
168
- @each $color-name, $color-var in (
169
- "primary": var(--color-primary),
170
- "secondary": var(--color-secondary),
171
- "accent": var(--color-accent),
172
- "success": var(--color-success),
173
- "warning": var(--color-warning),
174
- "danger": var(--color-danger),
175
- "info": var(--color-info)
176
- ) {
177
- .#{$color-name}-surface {
178
- --current: #{$color-var};
179
- @include solid-colorize("&", ("shade": var(--surface-opacity-default), "tint": 0.0, "scope": "selector"));
180
- }
181
-
182
- .#{$color-name}-surface-interactive {
183
- --current: #{$color-var};
184
- @include surface-interactive(var(--surface-opacity-default));
185
- }
186
- }
187
-
188
-
189
-
190
- // =============================================================================
191
- // BUTTON MODIFIERS & VARIANTS
192
- // =============================================================================
193
-
194
- :where(button) {
195
- @include button-filled();
196
-
197
- // Palette overrides -------------------------------------------------
198
- &.btn-primary,
199
- &[data-variant="primary"] {
200
- --md-button-bg: var(--md-primary);
201
- --md-button-on: var(--md-on-primary);
202
- --md-button-state-color: var(--md-primary);
203
- --md-button-outline-color: var(--md-primary);
204
- }
205
-
206
- &.btn-secondary,
207
- &[data-variant="secondary"] {
208
- --md-button-bg: var(--md-secondary);
209
- --md-button-on: var(--md-on-secondary);
210
- --md-button-state-color: var(--md-secondary);
211
- --md-button-outline-color: var(--md-secondary);
212
- }
213
-
214
- &.btn-tertiary,
215
- &.btn-accent,
216
- &[data-variant="tertiary"] {
217
- --md-button-bg: var(--md-tertiary);
218
- --md-button-on: var(--md-on-tertiary);
219
- --md-button-state-color: var(--md-tertiary);
220
- --md-button-outline-color: var(--md-tertiary);
221
- }
222
-
223
- &.btn-surface,
224
- &[data-variant="surface"] {
225
- --md-button-bg: var(--md-surface);
226
- --md-button-on: var(--md-on-surface);
227
- --md-button-state-color: var(--md-primary);
228
- --md-button-outline-color: var(--md-outline);
229
- }
230
-
231
- &.btn-success,
232
- &:is(.save, .submit, .confirm) {
233
- --md-button-bg: var(--color-success);
234
- --md-button-on: var(--md-on-surface);
235
- --md-button-state-color: var(--color-success);
236
- --md-button-outline-color: var(--color-success);
237
- }
238
-
239
- &.btn-danger,
240
- &:is(.cancel, .delete, .remove) {
241
- --md-button-bg: var(--color-danger);
242
- --md-button-on: var(--md-on-surface);
243
- --md-button-state-color: var(--color-danger);
244
- --md-button-outline-color: var(--color-danger);
245
- }
246
-
247
- &.btn-warning,
248
- &:is(.warning) {
249
- --md-button-bg: var(--color-warning);
250
- --md-button-on: var(--md-on-surface);
251
- --md-button-state-color: var(--color-warning);
252
- --md-button-outline-color: var(--color-warning);
253
- }
254
-
255
- &.btn-info,
256
- &:is(.info) {
257
- --md-button-bg: var(--color-info);
258
- --md-button-on: var(--md-on-surface);
259
- --md-button-state-color: var(--color-info);
260
- --md-button-outline-color: var(--color-info);
261
- }
262
-
263
- // Variant mixins ----------------------------------------------------
264
- &.btn-filled,
265
- &.filled {
266
- @include button-filled(primary, false);
267
- }
268
-
269
- &.btn-elevated,
270
- &.elevated {
271
- @include button-elevated(primary, false);
272
- }
273
-
274
- &.btn-tonal,
275
- &.tonal {
276
- @include button-tonal(secondary-container, secondary, false);
277
- }
278
-
279
- &.btn-tonal.btn-primary,
280
- &.btn-tonal-primary {
281
- --md-button-bg: var(--md-primary-container);
282
- --md-button-on: var(--md-on-primary-container);
283
- --md-button-state-color: var(--md-primary);
284
- @include button-tonal(primary-container, primary, false);
285
- }
286
-
287
- &.btn-tonal.btn-secondary,
288
- &.btn-tonal-secondary {
289
- --md-button-bg: var(--md-secondary-container);
290
- --md-button-on: var(--md-on-secondary-container);
291
- --md-button-state-color: var(--md-secondary);
292
- @include button-tonal(secondary-container, secondary, false);
293
- }
294
-
295
- &.btn-tonal.btn-tertiary,
296
- &.btn-tonal-tertiary {
297
- --md-button-bg: var(--md-tertiary-container);
298
- --md-button-on: var(--md-on-tertiary-container);
299
- --md-button-state-color: var(--md-tertiary);
300
- @include button-tonal(tertiary-container, tertiary, false);
301
- }
302
-
303
- &.btn-outlined,
304
- &.outlined {
305
- --md-button-on: var(--md-button-on, var(--md-primary));
306
- --md-button-outline-color: var(--md-button-outline-color, var(--md-primary));
307
- --md-button-state-color: var(--md-button-state-color, var(--md-primary));
308
- @include button-outlined(primary, false);
309
- }
310
-
311
- &.btn-outlined.btn-secondary {
312
- --md-button-on: var(--md-secondary);
313
- --md-button-outline-color: var(--md-secondary);
314
- --md-button-state-color: var(--md-secondary);
315
- @include button-outlined(primary, false);
316
- }
317
-
318
- &.btn-outlined.btn-tertiary,
319
- &.btn-outlined.btn-accent {
320
- --md-button-on: var(--md-tertiary);
321
- --md-button-outline-color: var(--md-tertiary);
322
- --md-button-state-color: var(--md-tertiary);
323
- @include button-outlined(primary, false);
324
- }
325
-
326
- &.btn-text,
327
- &.btn-link,
328
- &.btn-ghost,
329
- &.text {
330
- --md-button-on: var(--md-button-on, var(--md-primary));
331
- --md-button-state-color: var(--md-button-state-color, var(--md-primary));
332
- @include button-text(primary, false);
333
- }
334
-
335
- &.btn-text.btn-secondary {
336
- --md-button-on: var(--md-secondary);
337
- --md-button-state-color: var(--md-secondary);
338
- @include button-text(primary, false);
339
- }
340
-
341
- &.btn-text.btn-tertiary,
342
- &.btn-text.btn-accent {
343
- --md-button-on: var(--md-tertiary);
344
- --md-button-state-color: var(--md-tertiary);
345
- @include button-text(primary, false);
346
- }
347
-
348
- &.btn-icon,
349
- &.icon-only {
350
- @include button-icon();
351
- }
352
- }
353
-
354
- }
@@ -1,120 +0,0 @@
1
- @use "veela-lib" as md3;
2
- @use "./function-utils" as func;
3
-
4
- //
5
- @function if-cond($c, $a, $b) { @return #{"if(\
6
- #{$c}: #{$a};\
7
- else: #{$b};\
8
- )"}; }
9
-
10
- //
11
- @include func.make-func("@function --c2h-triple-mix(\
12
- --c2h-a <color>, \
13
- --c2h-b <color>, \
14
- --c2h-c <color>, \
15
- --c2h-factor <number> \
16
- )") {
17
- --c2h-t : clamp(0, var(--c2h-factor, 0), 1);
18
- --c2h-ct: clamp(0, round(nearest, var(--c2h-t), 1), 1);
19
- --c2h-dz: clamp(0, calc(var(--c2h-t) * 2 - 1), 1);
20
- --c2h-lz: clamp(0, calc(var(--c2h-t) * 2 - 0), 1);
21
-
22
- /* */
23
- --c2h-lc: color-mix(in oklch, var(--c2h-a) calc((1 - var(--c2h-u)) * 100%), var(--c2h-b) calc(var(--c2h-u) * 100%));
24
- --c2h-dc: color-mix(in oklch, var(--c2h-b) calc((1 - var(--c2h-u)) * 100%), var(--c2h-c) calc(var(--c2h-u) * 100%));
25
-
26
- /* */
27
- --c2h-u: calc(
28
- var(--c2h-ct) * var(--c2h-dz) +
29
- (1 - var(--c2h-ct)) * var(--c2h-lz)
30
- );
31
- result: color-mix(in oklch,
32
- var(--c2h-lc) calc((1 - var(--c2h-ct)) * 100%),
33
- var(--c2h-dc) calc(var(--c2h-ct) * 100%)
34
- );
35
- }
36
-
37
- //
38
- @include func.make-func("@function --c2h-re-shading(\
39
- --c2h-color <color>, \
40
- --c2h-factor <number>: 0, \
41
- --c2h-theme-type <number>: 2 \
42
- )") {
43
- /* chromatic neutralize (unused) ir chromatic, or make very chromatic if too gray */
44
- --c2h-chromatic-inverse-ls: oklch(from var(--c2h-color) l calc(1 - c) h);
45
- --c2h-chromatic-inverse-ds: oklch(from var(--c2h-color) l calc(1 - c) h);
46
-
47
- /* from light source colors (l > 0.5, not very chromatic) */
48
- --c2h-chromatic-extract-ls: oklch(from var(--c2h-color) l calc(c * 0.5) h); /* most chromatic */
49
- --c2h-chromatic-extract-ds: oklch(from var(--c2h-color) l calc(c * 0.35) h); /* most chromatic */
50
-
51
- /* from dark source colors (l < 0.5, not very chromatic) */
52
- --c2h-lightness-extract-ls: oklch(from var(--c2h-color) 0.99 calc(c * 0.2) h); /* most light */
53
- --c2h-lightness-extract-ds: oklch(from var(--c2h-color) 0.08 calc(c * 0.1) h); /* most light */
54
-
55
- /* */
56
- --c2h-lightness-inverse-ls: oklch(from var(--c2h-color) 0.01 calc(c * 0.2) h); /* most dark */
57
- --c2h-lightness-inverse-ds: oklch(from var(--c2h-color) 0.99 calc(c * 0.1) h); /* most dark (almost black) */
58
-
59
- /* */
60
- --c2h-lightness-extract: sass(if(
61
- style(--c2h-theme-type: 1): var(--c2h-lightness-extract-ds);
62
- style(--c2h-theme-type: 0): var(--c2h-lightness-extract-ls);
63
- else: light-dark(var(--c2h-lightness-extract-ls), var(--c2h-lightness-extract-ds)));
64
- --c2h-chromatic-extract: sass(if(
65
- style(--c2h-theme-type: 1): var(--c2h-chromatic-extract-ds);
66
- style(--c2h-theme-type: 0): var(--c2h-chromatic-extract-ls);
67
- else: light-dark(var(--c2h-chromatic-extract-ls), var(--c2h-chromatic-extract-ds)));
68
- --c2h-lightness-inverse: sass(if(
69
- style(--c2h-theme-type: 1): var(--c2h-lightness-extract-ds);
70
- style(--c2h-theme-type: 0): var(--c2h-lightness-extract-ls);
71
- else: light-dark(var(--c2h-lightness-inverse-ls), var(--c2h-lightness-inverse-ds)));
72
- --c2h-chromatic-inverse: sass(if(
73
- style(--c2h-theme-type: 1): var(--c2h-chromatic-inverse-ds);
74
- style(--c2h-theme-type: 0): var(--c2h-chromatic-inverse-ls);
75
- else: light-dark(var(--c2h-chromatic-inverse-ls), var(--c2h-chromatic-inverse-ds)));
76
-
77
- /* */
78
- result: --c2h-triple-mix(
79
- var(--c2h-lightness-extract),
80
- var(--c2h-chromatic-extract),
81
- var(--c2h-lightness-inverse),
82
- var(--c2h-factor, 0)
83
- );
84
- }
85
-
86
-
87
-
88
- /* */
89
- @include func.make-func("@function --c2-surface(\
90
- --c2-shift <number>: var(--_color-shade, 0), \
91
- --c2-color <color>: var(--current, var(--primary, currentColor)), \
92
- --c2-theme <number>: 2 \
93
- )")
94
- { result: --c2h-re-shading(var(--c2-color, var(--primary, currentColor)), clamp(0, calc(0.02 + var(--c2-shift, 0) * 0.8), 1), var(--c2-theme, 2)); };
95
-
96
- /* */
97
- @include func.make-func("@function --c2-on-surface(\
98
- --c2-shift <number>: var(--_color-tint, 0), \
99
- --c2-color <color>: var(--current, var(--primary, currentColor)), \
100
- --c2-theme <number>: 2 \
101
- )")
102
- { result: --c2h-re-shading(var(--c2-color, var(--primary, currentColor)), clamp(0, calc(0.96 - var(--c2-shift, 0) * 0.8), 1), var(--c2-theme, 2)); };
103
-
104
-
105
-
106
- /* */
107
- @include func.make-func("@function --c2-contrast(\
108
- --c2-shift <number>: var(--_color-shade, 0), \
109
- --c2-color <color>: var(--current, var(--primary, currentColor)), \
110
- --c2-theme <number>: 2 \
111
- )")
112
- { result: --c2h-re-shading(var(--c2-color, var(--primary, currentColor)), clamp(0, calc(0.01 + var(--c2-shift, 0) * 0.6), 1), var(--c2-theme, 2)); };
113
-
114
- /* */
115
- @include func.make-func("@function --c2-on-contrast(\
116
- --c2-shift <number>: var(--_color-tint, 0), \
117
- --c2-color <color>: var(--current, var(--primary, currentColor)), \
118
- --c2-theme <number>: 2 \
119
- )")
120
- { result: --c2h-re-shading(var(--c2-color, var(--primary, currentColor)), clamp(0, calc(1 - var(--c2-shift, 0) * 0.6), 1), var(--c2-theme, 2)); };
@@ -1,171 +0,0 @@
1
- /*
2
- * Filename: _variables.scss
3
- * FullPath: modules/projects/veela.css/src/scss/advanced/tokens/_variables.scss
4
- * Change date and time: 12.30.00_06.08.2026
5
- * Reason for changes: Document canonical SoT for color tokens.
6
- */
7
- /*
8
- * NOTE: Canonical color-token source of truth is `core/misc/_tokens.scss`.
9
- * This file keeps the advanced MD3/C2 mixin DEFINITIONS (`define-palette-tokens`,
10
- * `define-surface-tokens`, `make-md-theme`, `material-color-c2-adapter-remap`)
11
- * because they depend on `veela-lib` and the `--c2-*` color functions in
12
- * `_material-color.scss`. Folding these definitions into `core/misc/_tokens.scss`
13
- * would create a circular `@use` on `veela-lib`. Emission is invoked from here.
14
- */
15
-
16
- @use "veela-lib" as md3;
17
-
18
- // Register core typed properties
19
- @include md3.declare-props();
20
-
21
- // =============================================================================
22
- // MD3 THEME GENERATION (Simplified)
23
- // Reduced property chains for better performance
24
- // =============================================================================
25
-
26
- // Core palette tokens - single source of truth
27
- @mixin define-palette-tokens($suffix: "", $theme-type: 2) {
28
- // Primary palette (simplified chain)
29
- --md-c2-primary#{$suffix}: var(--current, #469);
30
- --md-c2-secondary#{$suffix}: var(--secondary, var(--md-c2-primary#{$suffix}));
31
- --md-c2-tertiary#{$suffix}: var(--tertiary, var(--md-c2-secondary#{$suffix}));
32
- --md-c2-error#{$suffix}: var(--error, oklch(0.62 0.17 23));
33
- --md-c2-neutral#{$suffix}: --c2-surface(0.2, var(--md-c2-primary#{$suffix}), #{$theme-type});
34
-
35
- // Shift values (computed once)
36
- --md-c2-surface-shift#{$suffix}: clamp(0, calc(var(--background-tone-shift, 0) + 0.16), 1);
37
- --md-c2-on-surface-shift#{$suffix}: clamp(0, calc(var(--color-tone-shift, 0) + 0.06), 1);
38
- --md-c2-surface-variant-shift#{$suffix}: clamp(0, calc(var(--background-tone-shift, 0) + 0.34), 1);
39
- --md-c2-outline-shift#{$suffix}: clamp(0, calc(var(--color-tone-shift, 0) + 0.28), 1);
40
- --md-c2-contrast-shift#{$suffix}: clamp(0, calc(0.88 - var(--background-tone-shift, 0) * 0.3), 1);
41
- --md-c2-inverse-primary-shift#{$suffix}: clamp(0, calc(0.7 - var(--background-tone-shift, 0) * 0.2), 1);
42
- }
43
-
44
- // Surface tokens derived from palette
45
- @mixin define-surface-tokens($suffix: "", $theme-type: 2) {
46
- // Primary surfaces
47
- --md-sys-color-primary#{$suffix}: var(--md-c2-primary#{$suffix});
48
- --md-sys-color-on-primary#{$suffix}: --c2-on-contrast(0.02, var(--md-c2-primary#{$suffix}), #{$theme-type});
49
- --md-sys-color-primary-container#{$suffix}: --c2-surface(0.74, var(--md-c2-primary#{$suffix}), #{$theme-type});
50
- --md-sys-color-on-primary-container#{$suffix}: --c2-on-surface(0.26, var(--md-c2-primary#{$suffix}), #{$theme-type});
51
-
52
- // Secondary surfaces
53
- --md-sys-color-secondary#{$suffix}: var(--md-c2-secondary#{$suffix});
54
- --md-sys-color-on-secondary#{$suffix}: --c2-on-contrast(0.02, var(--md-c2-secondary#{$suffix}), #{$theme-type});
55
- --md-sys-color-secondary-container#{$suffix}: --c2-surface(0.68, var(--md-c2-secondary#{$suffix}), #{$theme-type});
56
- --md-sys-color-on-secondary-container#{$suffix}: --c2-on-surface(0.24, var(--md-c2-secondary#{$suffix}), #{$theme-type});
57
-
58
- // Tertiary surfaces
59
- --md-sys-color-tertiary#{$suffix}: var(--md-c2-tertiary#{$suffix});
60
- --md-sys-color-on-tertiary#{$suffix}: --c2-on-contrast(0.02, var(--md-c2-tertiary#{$suffix}), #{$theme-type});
61
- --md-sys-color-tertiary-container#{$suffix}: --c2-surface(0.64, var(--md-c2-tertiary#{$suffix}), #{$theme-type});
62
- --md-sys-color-on-tertiary-container#{$suffix}: --c2-on-surface(0.22, var(--md-c2-tertiary#{$suffix}), #{$theme-type});
63
-
64
- // Error surfaces
65
- --md-sys-color-error#{$suffix}: var(--md-c2-error#{$suffix});
66
- --md-sys-color-on-error#{$suffix}: --c2-on-contrast(0.02, var(--md-c2-error#{$suffix}), #{$theme-type});
67
- --md-sys-color-error-container#{$suffix}: --c2-surface(0.72, var(--md-c2-error#{$suffix}), #{$theme-type});
68
- --md-sys-color-on-error-container#{$suffix}: --c2-on-surface(0.24, var(--md-c2-error#{$suffix}), #{$theme-type});
69
-
70
- // Neutral surfaces
71
- --md-sys-color-surface#{$suffix}: --c2-surface(var(--md-c2-surface-shift#{$suffix}), var(--md-c2-neutral#{$suffix}), #{$theme-type});
72
- --md-sys-color-on-surface#{$suffix}: --c2-on-surface(var(--md-c2-on-surface-shift#{$suffix}), var(--md-c2-neutral#{$suffix}), #{$theme-type});
73
- --md-sys-color-surface-variant#{$suffix}: --c2-surface(var(--md-c2-surface-variant-shift#{$suffix}), var(--md-c2-neutral#{$suffix}), #{$theme-type});
74
- --md-sys-color-on-surface-variant#{$suffix}: --c2-on-surface(clamp(0, calc(var(--md-c2-on-surface-shift#{$suffix}) + 0.14), 1), var(--md-c2-neutral#{$suffix}), #{$theme-type});
75
-
76
- // Outline
77
- --md-sys-color-outline#{$suffix}: color-mix(in oklch, --c2-on-surface(var(--md-c2-outline-shift#{$suffix}), var(--md-c2-neutral#{$suffix}), #{$theme-type}) 58%, transparent);
78
- --md-sys-color-outline-variant#{$suffix}: color-mix(
79
- in oklch,
80
- --c2-on-surface(clamp(0, calc(var(--md-c2-outline-shift#{$suffix}) + 0.1), 1), var(--md-c2-neutral#{$suffix}), #{$theme-type}) 34%,
81
- --c2-surface(var(--md-c2-surface-variant-shift#{$suffix}), var(--md-c2-neutral#{$suffix}), #{$theme-type}) 66%
82
- );
83
-
84
- // Background
85
- --md-sys-color-background#{$suffix}: --c2-surface(var(--background-tone-shift, 0), var(--md-c2-neutral#{$suffix}), #{$theme-type});
86
- --md-sys-color-on-background#{$suffix}: --c2-on-surface(var(--color-tone-shift, 0), var(--md-c2-neutral#{$suffix}), #{$theme-type});
87
-
88
- // Inverse
89
- --md-sys-color-inverse-surface#{$suffix}: --c2-contrast(var(--md-c2-contrast-shift#{$suffix}), var(--md-c2-neutral#{$suffix}), #{$theme-type});
90
- --md-sys-color-inverse-on-surface#{$suffix}: --c2-on-contrast(clamp(0, calc(var(--md-c2-on-surface-shift#{$suffix}) + 0.06), 1), var(--md-c2-neutral#{$suffix}), #{$theme-type});
91
- --md-sys-color-inverse-primary#{$suffix}: --c2-contrast(var(--md-c2-inverse-primary-shift#{$suffix}), var(--md-c2-primary#{$suffix}), #{$theme-type});
92
-
93
- // Misc
94
- --md-sys-color-surface-tint#{$suffix}: var(--md-c2-primary#{$suffix});
95
- --md-sys-color-shadow#{$suffix}: color-mix(in oklch, var(--md-c2-neutral#{$suffix}) 24%, transparent);
96
- --md-sys-color-scrim#{$suffix}: color-mix(in oklch, var(--md-c2-neutral#{$suffix}) 70%, transparent);
97
- }
98
-
99
- // Combined theme mixin
100
- @mixin make-md-theme($suffix: "", $theme-type: 2) {
101
- @include define-palette-tokens($suffix, $theme-type);
102
- @include define-surface-tokens($suffix, $theme-type);
103
- }
104
-
105
- // Adapter for MD3 color functions
106
- @mixin material-color-c2-adapter-remap($selector: ":where(:root, :host, :scope, body, div, section)") {
107
- @at-root {
108
- @layer md3.c2-adapter {
109
- #{$selector} {
110
- @include make-md-theme("", 2);
111
- @include make-md-theme("-dark", 1);
112
- @include make-md-theme("-light", 0);
113
- }
114
- }
115
- }
116
- }
117
-
118
- // =============================================================================
119
- // RUNTIME LAYER
120
- // =============================================================================
121
-
122
- @layer md3.runtime {
123
- // Root-level palette defaults (simplified)
124
- :where(:root, :scope) {
125
- // Core palette (single source - no fallback chains)
126
- --primary: #469;
127
- --secondary: oklch(from var(--current, #469) l calc(c * 0.88) calc(h + 120));
128
- --tertiary: oklch(from var(--current, #469) l calc(c * 0.84) calc(h + 240));
129
- --accent: var(--tertiary);
130
- --current: var(--primary);
131
-
132
- // Color scheme handling
133
- @media(prefers-color-scheme: dark) { color-scheme: dark; }
134
- @media(prefers-color-scheme: light) { color-scheme: light; }
135
-
136
- & { color-scheme: light; & * { color-scheme: light; } }
137
- &:is([data-scheme="dark"], [data-theme="dark"]) { color-scheme: dark only; & * { color-scheme: dark; } }
138
- &:is([data-scheme="light"], [data-theme="light"]) { color-scheme: light only; & * { color-scheme: light; } }
139
- &:is([data-scheme="system"], [data-theme="system"], [data-scheme="auto"], [data-theme="auto"]) {
140
- color-scheme: light dark;
141
- }
142
- }
143
-
144
- // Color modifiers reset
145
- :where(:root, :host, :scope) :where(*) {
146
- --color-shade: 0;
147
- --color-tint: 0;
148
- --color-opacity: 0;
149
- --color-enable-blur: 0;
150
- --_color-shade: var(--color-shade, 0);
151
- --_color-tint: var(--color-tint, 0);
152
- }
153
-
154
- // Host defaults
155
- :host {
156
- --current: var(--primary, transparent);
157
- color-scheme: inherit;
158
- }
159
-
160
- // Export all design tokens
161
- :where(:root, :host, :scope) {
162
- @include material-color-c2-adapter-remap();
163
- @include md3.md3-export-scale-vars();
164
- @include md3.md3-export-density-vars();
165
- @include md3.md3-export-layout-vars();
166
- @include md3.md3-export-motion-vars();
167
- @include md3.md3-export-typography-vars();
168
- @include md3.md3-export-elevation-vars();
169
- @include md3.md3-export-state-vars();
170
- }
171
- }
@@ -1,18 +0,0 @@
1
- // FL.UI Lib - Unified mixin facade
2
- // This file provides a consistent API whether using veela or core mixins
3
- //
4
- // Usage: @use "fl-ui-lib" as m;
5
- //
6
- // This facade can be configured to use:
7
- // - Core mixins (veela-independent)
8
- // - Veela mixins (when veela is available)
9
- // - Custom mixins (your own CSS framework)
10
-
11
- // Core SCSS mixins - Veela-independent fallbacks
12
- // These provide basic implementations that work without veela
13
- // When veela is available, these can be enhanced/overridden
14
-
15
- @forward "./queries";
16
- @forward "./mixins";
17
- @forward "./motion";
18
- @forward "./layout";