@fest-lib/veela 0.1.20 → 1.0.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 (141) hide show
  1. package/dist/veela.js +4 -33
  2. package/package.json +9 -2
  3. package/src/scss/_layers.scss +6 -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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fest-lib/veela",
3
3
  "description": "fest-lib Veela: CSS tokens, --c2 color functions, Agate.UX, SCSS + runtime loaders",
4
- "version": "0.1.20",
4
+ "version": "1.0.2",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "sideEffects": true,
@@ -38,7 +38,13 @@
38
38
  "import": "./dist/veela.js",
39
39
  "default": "./dist/veela.js"
40
40
  },
41
- "./scss/*": "./src/scss/*",
41
+ "./scss": "./src/scss/index.scss",
42
+ "./scss/core": "./src/scss/core/index.scss",
43
+ "./scss/basic": "./src/scss/basic/index.scss",
44
+ "./scss/interact": "./src/scss/interact/index.scss",
45
+ "./scss/ui": "./src/scss/ui/index.scss",
46
+ "./scss/theme": "./src/scss/theme/index.scss",
47
+ "./scss/native-controls": "./src/scss/ui/native-controls.scss",
42
48
  "./package.json": "./package.json",
43
49
  "./dist/index.js": "./dist/veela.js",
44
50
  "./index.js": "./dist/veela.js"
@@ -57,6 +63,7 @@
57
63
  },
58
64
  "scripts": {
59
65
  "test": "npm run test:puppeteer",
66
+ "test:scss-contracts": "node test/scss-contracts.mjs",
60
67
  "test:puppeteer": "node test/puppeteer/run.mjs",
61
68
  "test:browser": "npm run demo",
62
69
  "dev": "vite --host 0.0.0.0",
@@ -1,42 +1,14 @@
1
1
  /*
2
2
  * Filename: _layers.scss
3
3
  * FullPath: modules/projects/veela.css/src/scss/_layers.scss
4
+ * FIND:veela-layers
5
+ * TAG:veela,style-lib
4
6
  * Reason for changes: One cascade-order registry; include view-transitions before overrides.
5
7
  */
6
8
 
7
9
  /*
8
- * INVARIANT: legacy layer names remain in the registry while their consumers
9
- * migrate. New component rules use the `ux-*` names; no host may establish a
10
- * competing layer order by importing a second prelude.
10
+ * INVARIANT: this is the compiled-SCSS cascade-order prelude. Component, view,
11
+ * and shell sheets join one of these layers instead of declaring local preludes.
12
+ * JS wrap/unwrap/order lives in `@fest-lib/style-lib` `layers.ts` (`VEELA_CASCADE_LAYERS`).
11
13
  */
12
- @layer
13
- ux-normalize,
14
- tokens,
15
- ux-tokens,
16
- base,
17
- ux-base,
18
- layout,
19
- ux-layout,
20
- shells,
21
- shell,
22
- views,
23
- view,
24
- viewer,
25
- components,
26
- ux-components,
27
- ux-layer,
28
- ui-icon,
29
- ui-icon-reset,
30
- ux-file-manager,
31
- ux-file-manager-content,
32
- utilities,
33
- ux-utilities,
34
- theme,
35
- ux-theme,
36
- markdown,
37
- essentials,
38
- print,
39
- print-breaks,
40
- view-transitions,
41
- overrides,
42
- ux-overrides;
14
+ @layer tokens, base, layout, components, utilities, theme, overrides, print;
@@ -1,5 +1,5 @@
1
1
  //
2
- @layer ux-agate {
2
+ @layer layout {
3
3
  @media screen {
4
4
  :root, :host, :scope, :where(body) {
5
5
  pointer-events: auto;
@@ -0,0 +1 @@
1
+ @forward "../layers";
@@ -563,9 +563,9 @@ $is-windowed: "@container u2-windowed #{$is-not-wide}";
563
563
  $limit: map.get($map, $size);
564
564
 
565
565
  @if $limit {
566
- @media (max-inline-size: $limit) { @content; }
566
+ @media (max-width: $limit) { @content; }
567
567
  } @else {
568
- @media (max-inline-size: #{$size}) { @content; }
568
+ @media (max-width: #{$size}) { @content; }
569
569
  }
570
570
  }
571
571
 
@@ -580,9 +580,9 @@ $is-windowed: "@container u2-windowed #{$is-not-wide}";
580
580
  $limit: map.get($map, $size);
581
581
 
582
582
  @if $limit {
583
- @media (min-inline-size: $limit) { @content; }
583
+ @media (min-width: $limit) { @content; }
584
584
  } @else {
585
- @media (min-inline-size: #{$size}) { @content; }
585
+ @media (min-width: #{$size}) { @content; }
586
586
  }
587
587
  }
588
588
 
@@ -676,23 +676,23 @@ $is-windowed: "@container u2-windowed #{$is-not-wide}";
676
676
 
677
677
  @mixin media-up($breakpoint) {
678
678
  @if $breakpoint == sm {
679
- @media (min-inline-size: $breakpoint-sm) {
679
+ @media (min-width: $breakpoint-sm) {
680
680
  @content;
681
681
  }
682
682
  } @else if $breakpoint == md {
683
- @media (min-inline-size: $breakpoint-md) {
683
+ @media (min-width: $breakpoint-md) {
684
684
  @content;
685
685
  }
686
686
  } @else if $breakpoint == lg {
687
- @media (min-inline-size: $breakpoint-lg) {
687
+ @media (min-width: $breakpoint-lg) {
688
688
  @content;
689
689
  }
690
690
  } @else if $breakpoint == xl {
691
- @media (min-inline-size: $breakpoint-xl) {
691
+ @media (min-width: $breakpoint-xl) {
692
692
  @content;
693
693
  }
694
694
  } @else if $breakpoint == 2xl {
695
- @media (min-inline-size: $breakpoint-2xl) {
695
+ @media (min-width: $breakpoint-2xl) {
696
696
  @content;
697
697
  }
698
698
  }
@@ -701,30 +701,30 @@ $is-windowed: "@container u2-windowed #{$is-not-wide}";
701
701
  //
702
702
  @mixin media-down($breakpoint) {
703
703
  @if $breakpoint == sm {
704
- @media (max-inline-size: #{$breakpoint-sm - 1px}) {
704
+ @media (max-width: #{$breakpoint-sm - 1px}) {
705
705
  @content;
706
706
  }
707
707
  } @else if $breakpoint == md {
708
- @media (max-inline-size: #{$breakpoint-md - 1px}) {
708
+ @media (max-width: #{$breakpoint-md - 1px}) {
709
709
  @content;
710
710
  }
711
711
  } @else if $breakpoint == lg {
712
- @media (max-inline-size: #{$breakpoint-lg - 1px}) {
712
+ @media (max-width: #{$breakpoint-lg - 1px}) {
713
713
  @content;
714
714
  }
715
715
  } @else if $breakpoint == xl {
716
- @media (max-inline-size: #{$breakpoint-xl - 1px}) {
716
+ @media (max-width: #{$breakpoint-xl - 1px}) {
717
717
  @content;
718
718
  }
719
719
  } @else if $breakpoint == 2xl {
720
- @media (max-inline-size: #{$breakpoint-2xl - 1px}) {
720
+ @media (max-width: #{$breakpoint-2xl - 1px}) {
721
721
  @content;
722
722
  }
723
723
  }
724
724
  }
725
725
 
726
726
  @mixin media-between($min, $max) {
727
- @media (min-inline-size: $min) and (max-inline-size: #{$max - 1px}) {
727
+ @media (min-width: $min) and (max-width: #{$max - 1px}) {
728
728
  @content;
729
729
  }
730
730
  }
@@ -1,111 +1,12 @@
1
1
  /*
2
2
  * Filename: _normalize.scss
3
- * FullPath: modules/projects/fl.ui/src/styles/runtime/basic/misc/_normalize.scss
3
+ * FullPath: modules/projects/veela.css/src/scss/basic/_normalize.scss
4
4
  * Change date and time: 16.25.00_31.07.2026
5
- * Reason for changes: vl-basic palette via --u2-color-mod (token names kept).
5
+ * Reason for changes: Basic consumes the canonical core token emitter.
6
6
  */
7
7
  @use "./shared" as *;
8
- @use "layers";
9
-
10
- // COMPAT: vl-basic may load without veela _tokens.scss — keep function local.
11
- @#{"function --u2-color-mod(--base-color <color>, --index <number> : 550) returns <color>"} {
12
- --i: clamp(0, var(--index), 1000);
13
- --pivot: 550;
14
- --white-distance: clamp(0, calc((var(--pivot) - var(--i)) / var(--pivot)), 1);
15
- --black-distance: clamp(0, calc((var(--i) - var(--pivot)) / (1000 - var(--pivot))), 1);
16
- --to-white: pow(var(--white-distance), 1.15);
17
- --to-black: pow(var(--black-distance), 1.08);
18
- --center-left: clamp(0, calc(var(--i) / var(--pivot)), 1);
19
- --center-right: clamp(0, calc((1000 - var(--i)) / (1000 - var(--pivot))), 1);
20
- --chroma-shape: sqrt(min(var(--center-left), var(--center-right)));
21
- --chroma-scale: calc(0.08 + 0.92 * var(--chroma-shape));
22
- result: oklch(
23
- from var(--base-color)
24
- calc(l + (0.985 - l) * var(--to-white) + (0.16 - l) * var(--to-black))
25
- calc(c * var(--chroma-scale))
26
- h
27
- );
28
- }
29
-
30
- @layer tokens {
31
- :where(:root, html) {
32
- color-scheme: light dark;
33
- dynamic-range-limit: no-limit;
34
- /*
35
- * WHY: vl-basic loads only this runtime sheet; advanced MD3 tokens are not bundled.
36
- * Body/normalize use var(--color-bg) etc. — without defaults, backgrounds stay transparent
37
- * and light-dark() in views never resolves meaningfully.
38
- * Native CSS light-dark() follows the used color-scheme (Theme.ts sets html.style.colorScheme).
39
- */
40
- --color-primary: light-dark(#91b6e3, #2e3a64);
41
- --base-color: var(--color-primary);
42
- --color-bg: light-dark(
43
- --u2-color-mod(var(--base-color), 20),
44
- --u2-color-mod(var(--base-color), 980)
45
- );
46
- --color-text: light-dark(
47
- --u2-color-mod(var(--base-color), 900),
48
- --u2-color-mod(var(--base-color), 100)
49
- );
50
- --color-fg: var(--color-text);
51
- --color-bg-secondary: light-dark(
52
- --u2-color-mod(var(--base-color), 160),
53
- --u2-color-mod(var(--base-color), 840)
54
- );
55
- --color-bg-alt: light-dark(
56
- --u2-color-mod(var(--base-color), 200),
57
- --u2-color-mod(var(--base-color), 880)
58
- );
59
- --color-text-secondary: light-dark(
60
- --u2-color-mod(var(--base-color), 700),
61
- --u2-color-mod(var(--base-color), 280)
62
- );
63
- --color-border: light-dark(
64
- --u2-color-mod(var(--base-color), 300),
65
- --u2-color-mod(var(--base-color), 640)
66
- );
67
- --color-table: light-dark(
68
- --u2-color-mod(var(--base-color), 120),
69
- --u2-color-mod(var(--base-color), 860)
70
- );
71
- --color-link: var(--color-primary);
72
- --color-primary-hover: light-dark(
73
- --u2-color-mod(var(--base-color), 620),
74
- --u2-color-mod(var(--base-color), 480)
75
- );
76
- --color-secondary: light-dark(
77
- --u2-color-mod(var(--base-color), 420),
78
- --u2-color-mod(var(--base-color), 680)
79
- );
80
- --color-outline: light-dark(
81
- --u2-color-mod(var(--base-color), 100),
82
- --u2-color-mod(var(--base-color), 900)
83
- );
84
- --color-outline-variant: light-dark(
85
- --u2-color-mod(var(--base-color), 100),
86
- --u2-color-mod(var(--base-color), 900)
87
- );
88
- --font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
89
- --line-height: 1.5;
90
- --border-radius: 0.5rem;
91
- tab-size: 4;
92
- text-size-adjust: 100%;
93
- interpolate-size: allow-keywords;
94
- font-size-adjust: from-font;
95
- font-optical-sizing: auto;
96
- font-size: 16px;
97
- line-height: 1.5;
98
- min-block-size: 0;
99
- min-inline-size: 0;
100
- padding: 0;
101
- margin: 0;
102
- border: none;
103
- contain: strict;
104
- overflow: hidden;
105
- font-family: var(--font-family, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
106
- @include stretch-viewport;
107
- }
108
- }
8
+ @use "../core/tokens";
9
+ @use "../layers";
109
10
 
110
11
  @layer base {
111
12
  @keyframes bottom-to-top {
@@ -131,6 +32,7 @@
131
32
 
132
33
  :where(html) {
133
34
  -webkit-text-size-adjust: 100%;
35
+ tab-size: 4;
134
36
  font-size-adjust: from-font;
135
37
  font-optical-sizing: auto;
136
38
  -webkit-font-smoothing: antialiased;
@@ -1,7 +1,7 @@
1
1
  @use "./shared" as *;
2
2
 
3
3
  //
4
- @layer ux-existence {
4
+ @layer base {
5
5
  //
6
6
  *[data-hidden]:not([data-hidden="false"]):not([data-opacity-animation]) {
7
7
  &, * {
@@ -104,7 +104,7 @@
104
104
  }
105
105
 
106
106
  //
107
- @layer ux-existence {
107
+ @layer base {
108
108
  //
109
109
  *[data-hidden]:not([data-hidden="false"]):not([data-opacity-animation]) {
110
110
  &, * {
@@ -1,6 +1,6 @@
1
- @use "./mixins" as *;
2
- @use "./functions" as cfg;
3
- @use "../../basic/misc/layout" as ux;
1
+ @use "../core/mixins" as *;
2
+ @use "../core/functions" as cfg;
3
+ @use "./layout" as ux;
4
4
  @use "../interact/position" as *;
5
5
  @use "../interact/ps-anchor" as *;
6
6
  @use "../interact/ps-cursor" as *;
@@ -849,7 +849,7 @@
849
849
  @property --icon-image { syntax: "<image>"; initial-value: linear-gradient(#0000, #0000); inherits: true; };
850
850
 
851
851
  //
852
- @layer ux-classes {
852
+ @layer utilities {
853
853
  @include ux.host-related(".grid-rows", "::slotted(*)") { @include ux.grid-row; }
854
854
  @include ux.host-related(".grid-rows", "*") { @include ux.grid-row; }
855
855
  @include ux.host-context(".grid-rows") {
@@ -1,4 +1,4 @@
1
- @layer animations {
1
+ @layer theme {
2
2
  @mixin rotate-spin($name) {
3
3
  @keyframes #{$name} {
4
4
  from {
@@ -1,7 +1,7 @@
1
1
  //@use "veela-lib" as *;
2
2
 
3
3
  //
4
- @layer ux-shapes {
4
+ @layer components {
5
5
 
6
6
  // ─────────────────────────────────────────────────────────────────────────
7
7
  // Base Shaped Element
@@ -1,19 +1,17 @@
1
- @forward "./misc";
2
- /**
3
- * Veela CSS - Core Runtime
4
- *
5
- * Shared foundation styles for all veela variants.
6
- * This module provides:
7
- * - CSS layer definitions
8
- * - Normalize/reset styles
9
- * - Core layout utilities
10
- * - Base tokens and properties
11
- * - Essential state management
12
- *
13
- * Inherited by: basic, advanced, beercss
1
+ /*
2
+ * Filename: index.scss
3
+ * FullPath: modules/projects/veela.css/src/scss/basic/index.scss
4
+ * Reason for changes: Flatten base styles and remove the legacy misc facade.
14
5
  */
15
6
 
16
- @use "layers" as *;
17
- @use "misc" as *;
18
- @use "design" as *;
7
+ @forward "./motion";
8
+ @forward "./queries";
9
+
10
+ @use "../layers";
11
+ @use "./normalize";
12
+ @use "./core-layout";
13
+ @use "./shared";
14
+ @use "./states";
15
+ @use "./utilities";
16
+ @use "./design";
19
17
 
@@ -0,0 +1,2 @@
1
+ // Chrome barrel. Do not name this `ui.scss` — that loops with `@use "ui"` / `styles/ui`.
2
+ @forward "./ui/index";
@@ -0,0 +1,24 @@
1
+ /*
2
+ * Filename: _color-mod.scss
3
+ * FullPath: modules/projects/veela.css/src/scss/core/_color-mod.scss
4
+ * Reason for changes: Single source for the custom color modulation function.
5
+ */
6
+
7
+ @#{"function --u2-color-mod(--base-color <color>, --index <number> : 550) returns <color>"} {
8
+ --i: clamp(0, var(--index), 1000);
9
+ --pivot: 550;
10
+ --white-distance: clamp(0, calc((var(--pivot) - var(--i)) / var(--pivot)), 1);
11
+ --black-distance: clamp(0, calc((var(--i) - var(--pivot)) / (1000 - var(--pivot))), 1);
12
+ --to-white: pow(var(--white-distance), 1.15);
13
+ --to-black: pow(var(--black-distance), 1.08);
14
+ --center-left: clamp(0, calc(var(--i) / var(--pivot)), 1);
15
+ --center-right: clamp(0, calc((1000 - var(--i)) / (1000 - var(--pivot))), 1);
16
+ --chroma-shape: sqrt(min(var(--center-left), var(--center-right)));
17
+ --chroma-scale: calc(0.08 + 0.92 * var(--chroma-shape));
18
+ result: oklch(
19
+ from var(--base-color)
20
+ calc(l + (0.985 - l) * var(--to-white) + (0.16 - l) * var(--to-black))
21
+ calc(c * var(--chroma-scale))
22
+ h
23
+ );
24
+ }
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Filename: _color-properties.scss
3
- * FullPath: modules/projects/veela.css/src/scss/core/misc/_color-properties.scss
3
+ * FullPath: modules/projects/veela.css/src/scss/core/_color-properties.scss
4
4
  * Change date and time: 15.50.00_22.08.2026
5
5
  * Reason for changes: Seed initial-value is the desktop cyan-blue fallback (#5a9ec8).
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Filename: _tokens.scss
3
- * FullPath: modules/projects/veela.css/src/scss/core/misc/_tokens.scss
3
+ * FullPath: modules/projects/veela.css/src/scss/core/_tokens.scss
4
4
  * Change date and time: 22.30.00_22.08.2026
5
5
  * Reason for changes: Light/dark primary-container so Start plates and chrome ink flip.
6
6
  */
@@ -8,24 +8,16 @@
8
8
  /*
9
9
  * INVARIANT: This is the canonical color-token registry for the full veela bundle.
10
10
  * All color token DEFAULTS live here on `:root, :host, :scope`.
11
- * - `misc/_tokens.scss` is a symlink of this file.
12
- * - `basic/misc/_tokens.scss` and `advanced/misc/_tokens.scss` are intentional
13
- * per-bundle SCSS alias shims (no CSS output) for the lightweight vl-basic / advanced
14
- * bundles; they MUST NOT `@forward` this file (would pull the full `@layer tokens`
15
- * CSS into those bundles and break their size semantics).
16
- * - `basic/misc/_normalize.scss` carries a documented vl-basic fallback palette for
17
- * standalone vl-basic loading (no advanced MD3 tokens bundled).
18
- * - The advanced MD3/C2 system (`advanced/tokens/_variables.scss`, `_color.scss`,
19
- * `_shadow.scss`) keeps its mixin/function definitions in place (depends on
20
- * `veela-lib`); color-token EMISSION for that system is invoked from here where
21
- * safe, otherwise remains in its layer with a pointer comment.
11
+ * - The core entry-point owns every default; basic and theme modules consume it.
12
+ * - Component/shell/view styles may only provide scoped semantic aliases.
22
13
  * - Component/shell/view files keep only context overrides and shadow-DOM
23
14
  * `var(--token, light-dark(...))` fallbacks; they never redefine a canonical default.
24
15
  */
25
16
 
26
17
  @use "./config" as config;
27
18
  @use "./color-properties";
28
- @use "layers";
19
+ @use "./color-mod";
20
+ @use "../layers";
29
21
 
30
22
  // Design tokens: SCSS aliases for CSS custom properties
31
23
  // Keep aliases small and meaningful to encourage reuse
@@ -90,85 +82,6 @@ $scrollbar-tint: var(--scrollbar-tint, 86%);
90
82
  $z-modal-backdrop: var(--z-modal-backdrop);
91
83
  $z-modal: var(--z-modal);
92
84
 
93
- // use native custom CSS function syntax
94
- @#{"function --u2-color-mod(--base-color <color>, --index <number> : 550) returns <color>"} {
95
- /* Ограничиваем индекс */
96
- --i: clamp(0, var(--index), 1000);
97
-
98
- /* Переданный цвет считается оттенком 550 */
99
- --pivot: 550;
100
-
101
- /* Расстояние от базового цвета к белой и чёрной границам */
102
- --white-distance:
103
- clamp(
104
- 0,
105
- calc((var(--pivot) - var(--i)) / var(--pivot)),
106
- 1
107
- );
108
-
109
- --black-distance:
110
- clamp(
111
- 0,
112
- calc(
113
- (var(--i) - var(--pivot)) /
114
- (1000 - var(--pivot))
115
- ),
116
- 1
117
- );
118
-
119
- /*
120
- * Нелинейное изменение светлоты:
121
- * близкие к 550 оттенки меньше отличаются от базового.
122
- */
123
- --to-white: pow(var(--white-distance), 1.15);
124
- --to-black: pow(var(--black-distance), 1.08);
125
-
126
- /*
127
- * Цветность максимальна около 550
128
- * и плавно снижается к обоим краям.
129
- */
130
- --center-left:
131
- clamp(0, calc(var(--i) / var(--pivot)), 1);
132
-
133
- --center-right:
134
- clamp(
135
- 0,
136
- calc(
137
- (1000 - var(--i)) /
138
- (1000 - var(--pivot))
139
- ),
140
- 1
141
- );
142
-
143
- --chroma-shape:
144
- sqrt(min(var(--center-left), var(--center-right)));
145
-
146
- /*
147
- * На краях остаётся 8% исходной цветности:
148
- * получается почти белый/чёрный, но с оттенком base-color.
149
- */
150
- --chroma-scale:
151
- calc(0.08 + 0.92 * var(--chroma-shape));
152
-
153
- result:
154
- oklch(
155
- from var(--base-color)
156
-
157
- /* 98.5% около белого, 16% около чёрного */
158
- calc(
159
- l
160
- + (0.985 - l) * var(--to-white)
161
- + (0.16 - l) * var(--to-black)
162
- )
163
-
164
- calc(c * var(--chroma-scale))
165
-
166
- h
167
- );
168
- }
169
-
170
-
171
-
172
85
  /* ==========================================================================
173
86
  Meta / Declarations
174
87
  ========================================================================== */
@@ -593,6 +506,7 @@ $selectors: $md-roots;
593
506
  --gap-lg: var(--space-lg);
594
507
  --gap-xl: var(--space-xl);
595
508
  --gap-2xl: var(--space-2xl);
509
+ --fl-ui-gap: var(--space-md);
596
510
 
597
511
  /*
598
512
  * Shape scale — M3 Expressive / Android 16–17 (dp≈rem at 16px).
@@ -609,6 +523,8 @@ $selectors: $md-roots;
609
523
  --radius-2xl: 1.75rem;
610
524
  --radius-3xl: 2rem;
611
525
  --radius-full: 9999px;
526
+ --fl-ui-radius: var(--radius-md);
527
+ --border-radius: var(--radius-md);
612
528
  --shape-extra-small: var(--radius-xs);
613
529
  --shape-small: var(--radius-md);
614
530
  --shape-medium: var(--radius-lg);
@@ -660,7 +576,7 @@ $selectors: $md-roots;
660
576
  --ui-explorer-icon-size: 1.5rem;
661
577
  --ui-explorer-icon-track: 2rem;
662
578
  --ui-explorer-action-icon-size: 1.15rem;
663
- --ui-explorer-row-height: 2.875rem;
579
+ --ui-explorer-row-height: 3.25rem;
664
580
  --icon-size-sm: var(--ui-icon-size);
665
581
  --icon-size-md: var(--ui-icon-size);
666
582
  --icon-size-lg: var(--ui-explorer-icon-size);
@@ -685,6 +601,7 @@ $selectors: $md-roots;
685
601
  --leading-tight: 1.2;
686
602
  --leading-normal: 1.5;
687
603
  --leading-relaxed: 1.8;
604
+ --line-height: var(--leading-normal);
688
605
 
689
606
  --ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
690
607
  --ease-expressive: cubic-bezier(0.34, 1.25, 0.64, 1);
@@ -1 +1,13 @@
1
- @forward "misc/index.scss";
1
+ /*
2
+ * Filename: index.scss
3
+ * FullPath: modules/projects/veela.css/src/scss/core/index.scss
4
+ * Reason for changes: Flatten the core SCSS surface behind one canonical entry.
5
+ */
6
+
7
+ @forward "./config";
8
+ @forward "./functions";
9
+ @forward "./mixins";
10
+ @forward "./properties";
11
+ @forward "./tokens";
12
+ @forward "./icons";
13
+ @forward "../interact";
@@ -1,5 +1,10 @@
1
- // Core is canonical for layout helpers that also exist in `basic` (FL fallbacks).
2
- // Hide basic's duplicates so the forwarded surface stays a single definition.
1
+ /*
2
+ * FIND:veela-scss
3
+ * TAG:veela
4
+ * WHY: One style library. Trees: core (tokens/mixins), basic (normalize),
5
+ * interact (via core/interact), ui (chrome; also fl.ui/styles/ui symlink).
6
+ * Do not @forward ./ui here — vl-basic must stay a small foundation bundle.
7
+ */
3
8
  @forward "./core";
4
9
  @forward "./basic" hide
5
10
  aspect-ratio,
package/src/scss/index.ts CHANGED
@@ -43,7 +43,7 @@ let _loadedVariant: VeelaVariant | null = null;
43
43
  // ============================================================================
44
44
 
45
45
  import { loadBasicStyles } from "./basic/index";
46
- import { loadAdvancedStyles } from "./advanced/index";
46
+ import { loadAdvancedStyles } from "./theme/loader";
47
47
 
48
48
  // ============================================================================
49
49
  // UNIFIED LOADER
@@ -1,4 +1,4 @@
1
- @use "../misc/functions" as lg;
1
+ @use "../core/functions" as lg;
2
2
  @use "sass:list";
3
3
  @use "sass:string";
4
4
  @use "sass:meta";
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Filename: index.scss
3
+ * FullPath: modules/projects/veela.css/src/scss/interact/index.scss
4
+ * Reason for changes: Curated public interaction entry-point.
5
+ */
6
+
7
+ @use "../layers";
8
+
9
+ @forward "./position";
10
+ @forward "./viewport";
11
+ @forward "./draggable";
12
+ @forward "./resizable";
13
+ @forward "./ps-anchor";
14
+ @forward "./ps-centered";
15
+ @forward "./ps-cursor";
16
+ @forward "./ps-draggable";
17
+ @forward "./ps-properties";
18
+ @forward "./ps-resizable";