zeus-css 1.0.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 (105) hide show
  1. package/README.md +81 -0
  2. package/bin/init.js +89 -0
  3. package/dist/zeus.css +8456 -0
  4. package/dist/zeus.min.css +1 -0
  5. package/package.json +44 -0
  6. package/scss/.stylelintrc.json +41 -0
  7. package/scss/API.md +168 -0
  8. package/scss/CHANGELOG.md +281 -0
  9. package/scss/LICENSE +21 -0
  10. package/scss/README.md +160 -0
  11. package/scss/cheatsheet.md +249 -0
  12. package/scss/dist/zeus.css +8465 -0
  13. package/scss/dist/zeus.css.map +1 -0
  14. package/scss/dist/zeus.min.css +1 -0
  15. package/scss/dist/zeus.min.css.map +1 -0
  16. package/scss/foundation/core/_api.scss +10 -0
  17. package/scss/foundation/core/_design.scss +33 -0
  18. package/scss/foundation/core/_engine.scss +18 -0
  19. package/scss/foundation/core/buttons/variants.scss +72 -0
  20. package/scss/foundation/core/design/_design-system.scss +41 -0
  21. package/scss/foundation/core/design/_validate.scss +114 -0
  22. package/scss/foundation/core/design/borders/border-line.scss +29 -0
  23. package/scss/foundation/core/design/borders/border-radius.scss +31 -0
  24. package/scss/foundation/core/design/buttons/sizes.scss +32 -0
  25. package/scss/foundation/core/design/colors/_color-derivation.scss +80 -0
  26. package/scss/foundation/core/design/colors/base-colors.scss +31 -0
  27. package/scss/foundation/core/design/colors/semantic-colors.scss +130 -0
  28. package/scss/foundation/core/design/core/basic.scss +40 -0
  29. package/scss/foundation/core/design/dimensions/sizes.scss +29 -0
  30. package/scss/foundation/core/design/dimensions/spaces.scss +42 -0
  31. package/scss/foundation/core/design/effects/_z-index.scss +30 -0
  32. package/scss/foundation/core/design/effects/shadows.scss +65 -0
  33. package/scss/foundation/core/design/layout/grid.scss +86 -0
  34. package/scss/foundation/core/design/typography/typography.scss +435 -0
  35. package/scss/foundation/core/engine/_fluid-core.scss +54 -0
  36. package/scss/foundation/core/engine/animations.scss +91 -0
  37. package/scss/foundation/core/engine/buttons.scss +226 -0
  38. package/scss/foundation/core/engine/color-api.scss +37 -0
  39. package/scss/foundation/core/engine/helpers.scss +39 -0
  40. package/scss/foundation/core/engine/layout.scss +156 -0
  41. package/scss/foundation/core/engine/responsive.scss +67 -0
  42. package/scss/foundation/core/engine/shadows.scss +186 -0
  43. package/scss/foundation/core/engine/shortcuts.scss +30 -0
  44. package/scss/foundation/core/engine/sizing.scss +49 -0
  45. package/scss/foundation/core/engine/theme-builder.scss +83 -0
  46. package/scss/foundation/core/engine/typographics.scss +44 -0
  47. package/scss/foundation/core/engine/typography-calc.scss +71 -0
  48. package/scss/foundation/foundation.scss +29 -0
  49. package/scss/foundation/views/_render.scss +13 -0
  50. package/scss/foundation/views/components/_alert.scss +103 -0
  51. package/scss/foundation/views/components/_avatar.scss +84 -0
  52. package/scss/foundation/views/components/_badge.scss +100 -0
  53. package/scss/foundation/views/components/_breadcrumb.scss +70 -0
  54. package/scss/foundation/views/components/_card.scss +117 -0
  55. package/scss/foundation/views/components/_dropdown.scss +123 -0
  56. package/scss/foundation/views/components/_form.scss +209 -0
  57. package/scss/foundation/views/components/_index.scss +20 -0
  58. package/scss/foundation/views/components/_modal.scss +138 -0
  59. package/scss/foundation/views/components/_pagination.scss +82 -0
  60. package/scss/foundation/views/components/_skeleton.scss +69 -0
  61. package/scss/foundation/views/components/_table.scss +94 -0
  62. package/scss/foundation/views/components/_tabs.scss +96 -0
  63. package/scss/foundation/views/components/_toast.scss +139 -0
  64. package/scss/foundation/views/components/_tooltip.scss +100 -0
  65. package/scss/foundation/views/patterns/_hero.scss +121 -0
  66. package/scss/foundation/views/patterns/_index.scss +8 -0
  67. package/scss/foundation/views/patterns/_sidebar-layout.scss +83 -0
  68. package/scss/foundation/views/render/_layer-order.scss +11 -0
  69. package/scss/foundation/views/render/classes/_animations.scss +233 -0
  70. package/scss/foundation/views/render/classes/_aspect-ratio.scss +17 -0
  71. package/scss/foundation/views/render/classes/_borders.scss +31 -0
  72. package/scss/foundation/views/render/classes/_buttons.scss +40 -0
  73. package/scss/foundation/views/render/classes/_colors.scss +83 -0
  74. package/scss/foundation/views/render/classes/_compounds.scss +103 -0
  75. package/scss/foundation/views/render/classes/_containers.scss +20 -0
  76. package/scss/foundation/views/render/classes/_misc-utils.scss +51 -0
  77. package/scss/foundation/views/render/classes/_position.scss +56 -0
  78. package/scss/foundation/views/render/classes/_sections.scss +30 -0
  79. package/scss/foundation/views/render/classes/_shadows.scss +198 -0
  80. package/scss/foundation/views/render/classes/_sizes.scss +39 -0
  81. package/scss/foundation/views/render/classes/_sizing-utils.scss +53 -0
  82. package/scss/foundation/views/render/classes/_spacing.scss +91 -0
  83. package/scss/foundation/views/render/classes/_state-variants.scss +47 -0
  84. package/scss/foundation/views/render/classes/_typography.scss +32 -0
  85. package/scss/foundation/views/render/classes/_utilities.scss +103 -0
  86. package/scss/foundation/views/render/classes/_z-index.scss +22 -0
  87. package/scss/foundation/views/render/classes/flexbox.scss +56 -0
  88. package/scss/foundation/views/render/classes/grid.scss +195 -0
  89. package/scss/foundation/views/render/classes.scss +116 -0
  90. package/scss/foundation/views/render/html-body.scss +54 -0
  91. package/scss/foundation/views/render/property-registration.scss +77 -0
  92. package/scss/foundation/views/render/reset.scss +147 -0
  93. package/scss/foundation/views/render/root-generator.scss +166 -0
  94. package/scss/foundation/views/render/root.scss +19 -0
  95. package/scss/foundation/views/render/typography.scss +129 -0
  96. package/scss/llms.txt +247 -0
  97. package/scss/package.json +89 -0
  98. package/scss/scripts/gen-cheatsheet.mjs +178 -0
  99. package/scss/scripts/gen-tokens.mjs +91 -0
  100. package/scss/scripts/test-compile.mjs +474 -0
  101. package/scss/zeus.config.scss +99 -0
  102. package/scss/zeus.customize.scss +246 -0
  103. package/scss/zeus.scss +17 -0
  104. package/scss/zeus.token.sets.example.scss +176 -0
  105. package/scss/zeus.tokens.json +687 -0
@@ -0,0 +1,198 @@
1
+ // ╔══════════════════════════════════════════════════════════════╗
2
+ // ║ ⚡ Zeus CSS — Shadows ║
3
+ // ║ ║
4
+ // ║ Generates utility classes for shadows based on the framework's design tokens. ║
5
+ // ╚══════════════════════════════════════════════════════════════╝
6
+
7
+ @use "../../../../zeus.config" as config;
8
+ @use "../../../core/design/effects/shadows" as *;
9
+
10
+ @mixin load-shadows($prefix: "") {
11
+ @if config.$zeus-enable-shadow-classes {
12
+
13
+ // -----------------------------------------------------------------------------
14
+ // BASE SHADOW CLASSES
15
+ // -----------------------------------------------------------------------------
16
+
17
+ // No shadow
18
+ .#{$prefix}shadow-none {
19
+ box-shadow: none !important;
20
+ }
21
+
22
+ // Elevation levels
23
+ .#{$prefix}shadow-xs {
24
+ box-shadow: var(--shadow-xs);
25
+ }
26
+
27
+ .#{$prefix}shadow-sm {
28
+ box-shadow: var(--shadow-sm);
29
+ }
30
+
31
+ .#{$prefix}shadow-md {
32
+ box-shadow: var(--shadow-md);
33
+ }
34
+
35
+ .#{$prefix}shadow-lg {
36
+ box-shadow: var(--shadow-lg);
37
+ }
38
+
39
+ .#{$prefix}shadow-xl {
40
+ box-shadow: var(--shadow-xl);
41
+ }
42
+
43
+ .#{$prefix}shadow-2xl {
44
+ box-shadow: var(--shadow-2xl);
45
+ }
46
+
47
+ // -----------------------------------------------------------------------------
48
+ // SEMANTIC SHADOW CLASSES
49
+ // -----------------------------------------------------------------------------
50
+
51
+ .#{$prefix}shadow-primary {
52
+ box-shadow: var(--shadow-primary);
53
+ }
54
+
55
+ .#{$prefix}shadow-secondary {
56
+ box-shadow: var(--shadow-secondary);
57
+ }
58
+
59
+ .#{$prefix}shadow-success {
60
+ box-shadow: var(--shadow-success);
61
+ }
62
+
63
+ .#{$prefix}shadow-warning {
64
+ box-shadow: var(--shadow-warning);
65
+ }
66
+
67
+ .#{$prefix}shadow-danger {
68
+ box-shadow: var(--shadow-danger);
69
+ }
70
+
71
+ .#{$prefix}shadow-info {
72
+ box-shadow: var(--shadow-info);
73
+ }
74
+
75
+ // -----------------------------------------------------------------------------
76
+ // INNER SHADOW CLASSES
77
+ // -----------------------------------------------------------------------------
78
+
79
+ .#{$prefix}shadow-inner {
80
+ box-shadow: var(--shadow-inner);
81
+ }
82
+
83
+ .#{$prefix}shadow-inner-lg {
84
+ box-shadow: var(--shadow-inner-lg);
85
+ }
86
+
87
+ // -----------------------------------------------------------------------------
88
+ // SPECIAL EFFECT CLASSES
89
+ // -----------------------------------------------------------------------------
90
+
91
+ .#{$prefix}shadow-glow {
92
+ box-shadow: var(--shadow-glow);
93
+ }
94
+
95
+ .#{$prefix}shadow-glow-lg {
96
+ box-shadow: var(--shadow-glow-lg);
97
+ }
98
+
99
+ .#{$prefix}shadow-outline {
100
+ box-shadow: var(--shadow-outline);
101
+ }
102
+
103
+ // -----------------------------------------------------------------------------
104
+ // COMPONENT SHADOW CLASSES
105
+ // -----------------------------------------------------------------------------
106
+
107
+ .#{$prefix}shadow-card {
108
+ box-shadow: var(--shadow-card);
109
+ transition: box-shadow 0.3s ease;
110
+
111
+ &:hover {
112
+ box-shadow: var(--shadow-card-hover);
113
+ }
114
+ }
115
+
116
+ .#{$prefix}shadow-card-hover {
117
+ box-shadow: var(--shadow-card-hover);
118
+ }
119
+
120
+ .#{$prefix}shadow-dropdown {
121
+ box-shadow: var(--shadow-dropdown);
122
+ }
123
+
124
+ .#{$prefix}shadow-modal {
125
+ box-shadow: var(--shadow-modal);
126
+ }
127
+
128
+ // -----------------------------------------------------------------------------
129
+ // HOVER VARIANTS
130
+ // -----------------------------------------------------------------------------
131
+
132
+ .hover\:#{$prefix}shadow-xs:hover {
133
+ box-shadow: var(--shadow-xs);
134
+ }
135
+
136
+ .hover\:#{$prefix}shadow-sm:hover {
137
+ box-shadow: var(--shadow-sm);
138
+ }
139
+
140
+ .hover\:#{$prefix}shadow-md:hover {
141
+ box-shadow: var(--shadow-md);
142
+ }
143
+
144
+ .hover\:#{$prefix}shadow-lg:hover {
145
+ box-shadow: var(--shadow-lg);
146
+ }
147
+
148
+ .hover\:#{$prefix}shadow-xl:hover {
149
+ box-shadow: var(--shadow-xl);
150
+ }
151
+
152
+ .hover\:#{$prefix}shadow-2xl:hover {
153
+ box-shadow: var(--shadow-2xl);
154
+ }
155
+
156
+ .hover\:#{$prefix}shadow-none:hover {
157
+ box-shadow: none !important;
158
+ }
159
+
160
+ // -----------------------------------------------------------------------------
161
+ // FOCUS VARIANTS
162
+ // -----------------------------------------------------------------------------
163
+
164
+ // Transparent, not none: invisible in normal rendering (box-shadow is the
165
+ // real affordance) but forced-colors mode paints outlines with a system
166
+ // color regardless of author color, so focus survives box-shadow being
167
+ // stripped entirely under forced-colors.
168
+ .focus\:#{$prefix}shadow-outline:focus-visible {
169
+ box-shadow: var(--shadow-outline);
170
+ outline: 2px solid transparent;
171
+ outline-offset: 2px;
172
+ }
173
+
174
+ .focus\:#{$prefix}shadow-primary:focus-visible {
175
+ box-shadow: var(--shadow-primary);
176
+ outline: 2px solid transparent;
177
+ outline-offset: 2px;
178
+ }
179
+
180
+ // -----------------------------------------------------------------------------
181
+ // TRANSITION HELPERS
182
+ // -----------------------------------------------------------------------------
183
+
184
+ .#{$prefix}shadow-transition {
185
+ transition: box-shadow 0.3s ease;
186
+ }
187
+
188
+ .#{$prefix}shadow-transition-fast {
189
+ transition: box-shadow 0.15s ease;
190
+ }
191
+
192
+ .#{$prefix}shadow-transition-slow {
193
+ transition: box-shadow 0.5s ease;
194
+ }
195
+
196
+ } // end @if zeus-enable-shadow-classes
197
+
198
+ }
@@ -0,0 +1,39 @@
1
+ // ╔══════════════════════════════════════════════════════════════╗
2
+ // ║ ⚡ Zeus CSS — Sizes ║
3
+ // ║ ║
4
+ // ║ Generates utility classes for sizes based on the framework's design tokens. ║
5
+ // ╚══════════════════════════════════════════════════════════════╝
6
+
7
+ @use "sass:map";
8
+ @use "../../../../zeus.config" as config;
9
+
10
+
11
+ @use "../../../core/engine" as *;
12
+ @use "../../../core/design/dimensions/sizes" as sizing-tokens;
13
+
14
+ @mixin load-sizes($prefix: "") {
15
+ $box-sizes: sizing-tokens.$icon-size;
16
+ $box-classes: map.keys($box-sizes);
17
+
18
+ @each $size in $box-classes {
19
+ .#{$prefix}box-#{$size} {
20
+ @include box-size($size);
21
+ }
22
+ }
23
+
24
+ @each $size in $box-classes {
25
+ .#{$prefix}icon-#{$size} {
26
+ @include box-size($size);
27
+ }
28
+ }
29
+
30
+ // @each $size in $element-classes {
31
+ // .element-#{$size} {
32
+ // &,
33
+ // img {
34
+ // @include elementSize($size);
35
+ // }
36
+ // }
37
+ // }
38
+
39
+ }
@@ -0,0 +1,53 @@
1
+ // ╔══════════════════════════════════════════════════════════════╗
2
+ // ║ ⚡ Zeus CSS — Sizing Utils ║
3
+ // ║ ║
4
+ // ║ Generates width/height utility classes. ║
5
+ // ╚══════════════════════════════════════════════════════════════╝
6
+
7
+ // ╔══════════════════════════════════════════════════════════════╗
8
+ // ║ 📐 Width / Height Utilities ║
9
+ // ║ ║
10
+ // ║ min-w-0 in particular matters for flex/grid children: a flex ║
11
+ // ║ item's default min-width is `auto`, which can force it wider ║
12
+ // ║ than its container when it holds unbreakable content (long ║
13
+ // ║ text, a code block) — the exact class of bug fixed in the ║
14
+ // ║ grid utilities via minmax(0, 1fr). min-w-0 is the equivalent ║
15
+ // ║ escape hatch for flex children. ║
16
+ // ╚══════════════════════════════════════════════════════════════╝
17
+
18
+ @mixin load-sizing-utils($prefix: "") {
19
+
20
+ // ── Width ─────────────────────────────────────────────────────
21
+ .#{$prefix}w-auto { width: auto; }
22
+ .#{$prefix}w-full { width: 100%; }
23
+ .#{$prefix}w-screen { width: 100dvw; }
24
+ .#{$prefix}w-fit { width: fit-content; }
25
+ .#{$prefix}w-min { width: min-content; }
26
+ .#{$prefix}w-max { width: max-content; }
27
+
28
+ .#{$prefix}w-1\/2 { width: 50%; }
29
+ .#{$prefix}w-1\/3 { width: 33.3333%; }
30
+ .#{$prefix}w-2\/3 { width: 66.6667%; }
31
+ .#{$prefix}w-1\/4 { width: 25%; }
32
+ .#{$prefix}w-3\/4 { width: 75%; }
33
+
34
+ .#{$prefix}min-w-0 { min-width: 0; }
35
+ .#{$prefix}min-w-full { min-width: 100%; }
36
+ .#{$prefix}max-w-none { max-width: none; }
37
+ .#{$prefix}max-w-full { max-width: 100%; }
38
+
39
+ // ── Height ────────────────────────────────────────────────────
40
+ .#{$prefix}h-auto { height: auto; }
41
+ .#{$prefix}h-full { height: 100%; }
42
+ .#{$prefix}h-screen { height: 100dvh; }
43
+ .#{$prefix}h-fit { height: fit-content; }
44
+ .#{$prefix}h-min { height: min-content; }
45
+ .#{$prefix}h-max { height: max-content; }
46
+
47
+ .#{$prefix}min-h-0 { min-height: 0; }
48
+ .#{$prefix}min-h-full { min-height: 100%; }
49
+ .#{$prefix}min-h-screen { min-height: 100dvh; }
50
+ .#{$prefix}max-h-none { max-height: none; }
51
+ .#{$prefix}max-h-full { max-height: 100%; }
52
+
53
+ }
@@ -0,0 +1,91 @@
1
+ // ╔══════════════════════════════════════════════════════════════╗
2
+ // ║ ⚡ Zeus CSS — Spacing ║
3
+ // ║ ║
4
+ // ║ Generates utility classes for spacing based on the framework's design tokens. ║
5
+ // ╚══════════════════════════════════════════════════════════════╝
6
+
7
+ @use "sass:map";
8
+ @use "../../../../zeus.config" as config;
9
+
10
+ @use "../../../core/engine" as *;
11
+ @use "../../../core/design/dimensions/spaces" as spacing-tokens;
12
+
13
+ // ╔══════════════════════════════════════════════════════════════╗
14
+ // ║ 📐 Spacing Utility Classes ║
15
+ // ║ ║
16
+ // ║ Auto-generated from $space token map. ║
17
+ // ║ padding-{dir}-{size}, margin-{dir}-{size}, gap-{dir}-{size} ║
18
+ // ╚══════════════════════════════════════════════════════════════╝
19
+
20
+ @mixin load-spacing($prefix: "") {
21
+ $spacing-sizes: map.keys(spacing-tokens.$space);
22
+
23
+ // ── Padding & Margin ─────────────────────────────────────────
24
+ // Directions: null (all sides), top, right, bottom, left, inline, block
25
+ $spacing-properties: ("padding", "margin");
26
+ $spacing-directions: (
27
+ null,
28
+ "top",
29
+ "right",
30
+ "bottom",
31
+ "left",
32
+ "inline",
33
+ "block"
34
+ );
35
+
36
+ @each $property in $spacing-properties {
37
+ @each $size in $spacing-sizes {
38
+ @each $direction in $spacing-directions {
39
+ @if $direction {
40
+ .#{$prefix}#{$property}-#{$direction}-#{$size} {
41
+ @if $property == "padding" {
42
+ @include padding($size, $direction);
43
+ } @else {
44
+ @include margin($size, $direction);
45
+ }
46
+ }
47
+ } @else {
48
+ .#{$prefix}#{$property}-#{$size} {
49
+ @if $property == "padding" {
50
+ @include padding($size);
51
+ } @else {
52
+ @include margin($size);
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+
60
+ // ── Gap ──────────────────────────────────────────────────────
61
+ // gap() mixin accepts: null (all), "x" / "column" (column-gap),
62
+ // "y" / "row" (row-gap)
63
+ // Does NOT support top/right/bottom/left — separate loop required.
64
+ //
65
+ // Generated classes:
66
+ // .gap-sm → gap: clamp(...)
67
+ // .gap-x-lg → column-gap: clamp(...)
68
+ // .gap-y-2xl → row-gap: clamp(...)
69
+
70
+ $gap-directions: (
71
+ null, // .gap-{size} → gap (all)
72
+ "x", // .gap-x-{size} → column-gap
73
+ "y", // .gap-y-{size} → row-gap
74
+ );
75
+
76
+ @each $size in $spacing-sizes {
77
+ @each $dir in $gap-directions {
78
+ @if $dir {
79
+ .#{$prefix}gap-#{$dir}-#{$size} {
80
+ @include gap($size, $dir);
81
+ }
82
+ } @else {
83
+ .#{$prefix}gap-#{$size} {
84
+ @include gap($size);
85
+ }
86
+ }
87
+ }
88
+ }
89
+
90
+ }
91
+
@@ -0,0 +1,47 @@
1
+ // ╔══════════════════════════════════════════════════════════════╗
2
+ // ║ ⚡ Zeus CSS — State Variants ║
3
+ // ║ ║
4
+ // ║ Generates hover:/focus: variants for color utilities. ║
5
+ // ╚══════════════════════════════════════════════════════════════╝
6
+
7
+ @use "../../../../zeus.config" as config;
8
+
9
+ // ╔══════════════════════════════════════════════════════════════╗
10
+ // ║ 🎯 hover:/focus: state variants — colors & borders only ║
11
+ // ║ ║
12
+ // ║ Deliberately NOT generalized to every utility family (sizing,║
13
+ // ║ spacing, shadows already have their own dedicated hover ║
14
+ // ║ variants). Also deliberately excludes the bg-{name}-{step} ║
15
+ // ║ opacity variants in _colors.scss — 17 colors × 13 steps × 2 ║
16
+ // ║ states would add ~440 rarely-used selectors for one color ║
17
+ // ║ family alone. Base bg-*/color-*/border-color-* only: ║
18
+ // ║ 17 colors × 3 properties × 2 states ≈ 100 selectors. ║
19
+ // ╚══════════════════════════════════════════════════════════════╝
20
+
21
+ @mixin load-state-variants($prefix: "") {
22
+ @if config.$zeus-enable-color-utilities {
23
+
24
+ @each $name, $value in config.$zeus-colors {
25
+ .hover\:#{$prefix}bg-#{$name}:hover {
26
+ background-color: var(--color-#{$name});
27
+ }
28
+ .hover\:#{$prefix}color-#{$name}:hover {
29
+ color: var(--color-#{$name});
30
+ }
31
+ .hover\:#{$prefix}border-color-#{$name}:hover {
32
+ border-color: var(--color-#{$name});
33
+ }
34
+
35
+ .focus\:#{$prefix}bg-#{$name}:focus-visible {
36
+ background-color: var(--color-#{$name});
37
+ }
38
+ .focus\:#{$prefix}color-#{$name}:focus-visible {
39
+ color: var(--color-#{$name});
40
+ }
41
+ .focus\:#{$prefix}border-color-#{$name}:focus-visible {
42
+ border-color: var(--color-#{$name});
43
+ }
44
+ }
45
+
46
+ } // end @if zeus-enable-color-utilities
47
+ }
@@ -0,0 +1,32 @@
1
+ // ╔══════════════════════════════════════════════════════════════╗
2
+ // ║ ⚡ Zeus CSS — Typography ║
3
+ // ║ ║
4
+ // ║ Generates utility classes for typography based on the framework's design tokens. ║
5
+ // ╚══════════════════════════════════════════════════════════════╝
6
+
7
+ @use "sass:map";
8
+ @use "../../../../zeus.config" as config;
9
+
10
+
11
+ @use "../../../core/engine" as *;
12
+ @use "../../../core/design/typography/typography" as typo-tokens;
13
+
14
+ @mixin load-typography($prefix: "") {
15
+ $typo-classes: map.keys(typo-tokens.$typography);
16
+
17
+ // font sizes
18
+ @each $type in $typo-classes {
19
+ .#{$prefix}text-#{$type} {
20
+ @include text($type);
21
+ }
22
+ }
23
+
24
+ // font weights
25
+ @for $i from 1 through 9 {
26
+ $w: $i * 100;
27
+ .#{$prefix}text-#{$w} {
28
+ font-weight: #{$w} !important;
29
+ }
30
+ }
31
+
32
+ }
@@ -0,0 +1,103 @@
1
+ // ╔══════════════════════════════════════════════════════════════╗
2
+ // ║ ⚡ Zeus CSS — Utilities ║
3
+ // ║ ║
4
+ // ║ Generates utility classes for utilities based on the framework's design tokens. ║
5
+ // ╚══════════════════════════════════════════════════════════════╝
6
+
7
+ @use "../../../../zeus.config" as config;
8
+ @use "../../../core/engine/responsive" as *;
9
+
10
+ @mixin load-utilities($prefix: "") {
11
+ .#{$prefix}w-unset {
12
+ width: unset !important;
13
+ }
14
+ .#{$prefix}h-unset {
15
+ height: unset !important;
16
+ }
17
+
18
+ // Opt-in horizontal overflow clipping — apply to <html>/<body> or any
19
+ // container that genuinely needs it. Not global by default: it masks real
20
+ // layout overflow bugs and can interfere with position: sticky.
21
+ .#{$prefix}no-overflow-x {
22
+ max-width: 100vw;
23
+ overflow-x: hidden;
24
+ }
25
+
26
+ :where(.#{$prefix}highlight) {
27
+ :is(strong, b, em, i) {
28
+ font-weight: inherit;
29
+ font-style: normal;
30
+ color: var(--color-primary);
31
+ }
32
+ }
33
+
34
+ // Was ":where(.zeus-article), :where(.article)" — a redundant synonym pair
35
+ // for the same selector. Renamed 25.07: .article is now the single name.
36
+ :where(.#{$prefix}article) {
37
+ > p:last-child {
38
+ margin-bottom: 0;
39
+ }
40
+
41
+ a {
42
+ color: var(--color-primary);
43
+ text-decoration: underline;
44
+ text-underline-offset: 0.15em;
45
+
46
+ &:hover {
47
+ color: var(--color-primary-light);
48
+ }
49
+ }
50
+
51
+ > * + * {
52
+ margin-top: var(--space-md);
53
+ }
54
+ }
55
+
56
+ // Visibility classes
57
+ @if config.$zeus-enable-responsive-classes {
58
+
59
+ .#{$prefix}hidden-desktops {
60
+ @include screen-above(lg) {
61
+ display: none !important;
62
+ }
63
+ }
64
+
65
+ .#{$prefix}hidden-tablets {
66
+ @include screen-between(md, lg) {
67
+ display: none !important;
68
+ }
69
+ }
70
+
71
+ .#{$prefix}hidden-tablets-desktops {
72
+ @include screen-above(md) {
73
+ display: none !important;
74
+ }
75
+ }
76
+
77
+ .#{$prefix}hidden-mobiles {
78
+ @include screen-below(md) {
79
+ display: none !important;
80
+ }
81
+ }
82
+
83
+ .#{$prefix}hidden-devices {
84
+ @include screen-below(lg) {
85
+ display: none !important;
86
+ }
87
+ }
88
+
89
+ .#{$prefix}hidden-upto-ml {
90
+ @include screen-below(ml) {
91
+ display: none !important;
92
+ }
93
+ }
94
+
95
+ .#{$prefix}hidden-from-ml {
96
+ @include screen-above(ml) {
97
+ display: none !important;
98
+ }
99
+ }
100
+
101
+ }
102
+
103
+ }
@@ -0,0 +1,22 @@
1
+ // ╔══════════════════════════════════════════════════════════════╗
2
+ // ║ ⚡ Zeus CSS — Z-Index ║
3
+ // ║ ║
4
+ // ║ Generates utility classes for the stacking-order scale. ║
5
+ // ╚══════════════════════════════════════════════════════════════╝
6
+
7
+ @use "sass:map";
8
+ @use "../../../core/design/effects/z-index" as z-tokens;
9
+
10
+ // Named ".layer-*" (not ".z-*") deliberately — the "z-" prefix is already
11
+ // the framework's BEM component namespace (.z-card, .z-modal, .z-field, …);
12
+ // reusing it here would collide with component class names.
13
+ @mixin load-z-index($prefix: "") {
14
+ $z-names: map.keys(z-tokens.$z-index);
15
+
16
+ @each $name in $z-names {
17
+ .#{$prefix}layer-#{$name} {
18
+ z-index: var(--z-#{$name});
19
+ }
20
+ }
21
+
22
+ }
@@ -0,0 +1,56 @@
1
+ // ╔══════════════════════════════════════════════════════════════╗
2
+ // ║ ⚡ Zeus CSS — Flexbox ║
3
+ // ║ ║
4
+ // ║ Generates utility classes for flexbox based on the framework's design tokens. ║
5
+ // ╚══════════════════════════════════════════════════════════════╝
6
+
7
+ @use "sass:map";
8
+ @use "../../../../zeus.config" as config;
9
+
10
+ @mixin load-flexbox($prefix: "") {
11
+ .#{$prefix}flex {
12
+ display: flex;
13
+ }
14
+ .#{$prefix}flex-row {
15
+ display: flex;
16
+ flex-direction: row;
17
+ }
18
+ .#{$prefix}flex-wrap {
19
+ display: flex;
20
+ flex-wrap: wrap;
21
+ }
22
+ .#{$prefix}flex-column {
23
+ display: flex;
24
+ flex-direction: column;
25
+ }
26
+ .#{$prefix}flex-center {
27
+ display: flex;
28
+ align-items: center;
29
+ justify-content: center;
30
+ }
31
+ .#{$prefix}flex-space-between {
32
+ display: flex;
33
+ justify-content: space-between;
34
+ }
35
+
36
+ // Display helpers
37
+ .#{$prefix}d-none {
38
+ display: none !important;
39
+ }
40
+ .#{$prefix}d-block {
41
+ display: block;
42
+ }
43
+ .#{$prefix}d-inline-block {
44
+ display: inline-block;
45
+ }
46
+
47
+ // Alignment helpers
48
+ .#{$prefix}align-center { align-items: center; }
49
+ .#{$prefix}align-start { align-items: flex-start; }
50
+ .#{$prefix}align-end { align-items: flex-end; }
51
+ .#{$prefix}justify-center { justify-content: center; }
52
+ .#{$prefix}justify-start { justify-content: flex-start; }
53
+ .#{$prefix}justify-end { justify-content: flex-end; }
54
+ .#{$prefix}justify-between { justify-content: space-between; }
55
+ .#{$prefix}justify-around { justify-content: space-around; }
56
+ }