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.
- package/README.md +81 -0
- package/bin/init.js +89 -0
- package/dist/zeus.css +8456 -0
- package/dist/zeus.min.css +1 -0
- package/package.json +44 -0
- package/scss/.stylelintrc.json +41 -0
- package/scss/API.md +168 -0
- package/scss/CHANGELOG.md +281 -0
- package/scss/LICENSE +21 -0
- package/scss/README.md +160 -0
- package/scss/cheatsheet.md +249 -0
- package/scss/dist/zeus.css +8465 -0
- package/scss/dist/zeus.css.map +1 -0
- package/scss/dist/zeus.min.css +1 -0
- package/scss/dist/zeus.min.css.map +1 -0
- package/scss/foundation/core/_api.scss +10 -0
- package/scss/foundation/core/_design.scss +33 -0
- package/scss/foundation/core/_engine.scss +18 -0
- package/scss/foundation/core/buttons/variants.scss +72 -0
- package/scss/foundation/core/design/_design-system.scss +41 -0
- package/scss/foundation/core/design/_validate.scss +114 -0
- package/scss/foundation/core/design/borders/border-line.scss +29 -0
- package/scss/foundation/core/design/borders/border-radius.scss +31 -0
- package/scss/foundation/core/design/buttons/sizes.scss +32 -0
- package/scss/foundation/core/design/colors/_color-derivation.scss +80 -0
- package/scss/foundation/core/design/colors/base-colors.scss +31 -0
- package/scss/foundation/core/design/colors/semantic-colors.scss +130 -0
- package/scss/foundation/core/design/core/basic.scss +40 -0
- package/scss/foundation/core/design/dimensions/sizes.scss +29 -0
- package/scss/foundation/core/design/dimensions/spaces.scss +42 -0
- package/scss/foundation/core/design/effects/_z-index.scss +30 -0
- package/scss/foundation/core/design/effects/shadows.scss +65 -0
- package/scss/foundation/core/design/layout/grid.scss +86 -0
- package/scss/foundation/core/design/typography/typography.scss +435 -0
- package/scss/foundation/core/engine/_fluid-core.scss +54 -0
- package/scss/foundation/core/engine/animations.scss +91 -0
- package/scss/foundation/core/engine/buttons.scss +226 -0
- package/scss/foundation/core/engine/color-api.scss +37 -0
- package/scss/foundation/core/engine/helpers.scss +39 -0
- package/scss/foundation/core/engine/layout.scss +156 -0
- package/scss/foundation/core/engine/responsive.scss +67 -0
- package/scss/foundation/core/engine/shadows.scss +186 -0
- package/scss/foundation/core/engine/shortcuts.scss +30 -0
- package/scss/foundation/core/engine/sizing.scss +49 -0
- package/scss/foundation/core/engine/theme-builder.scss +83 -0
- package/scss/foundation/core/engine/typographics.scss +44 -0
- package/scss/foundation/core/engine/typography-calc.scss +71 -0
- package/scss/foundation/foundation.scss +29 -0
- package/scss/foundation/views/_render.scss +13 -0
- package/scss/foundation/views/components/_alert.scss +103 -0
- package/scss/foundation/views/components/_avatar.scss +84 -0
- package/scss/foundation/views/components/_badge.scss +100 -0
- package/scss/foundation/views/components/_breadcrumb.scss +70 -0
- package/scss/foundation/views/components/_card.scss +117 -0
- package/scss/foundation/views/components/_dropdown.scss +123 -0
- package/scss/foundation/views/components/_form.scss +209 -0
- package/scss/foundation/views/components/_index.scss +20 -0
- package/scss/foundation/views/components/_modal.scss +138 -0
- package/scss/foundation/views/components/_pagination.scss +82 -0
- package/scss/foundation/views/components/_skeleton.scss +69 -0
- package/scss/foundation/views/components/_table.scss +94 -0
- package/scss/foundation/views/components/_tabs.scss +96 -0
- package/scss/foundation/views/components/_toast.scss +139 -0
- package/scss/foundation/views/components/_tooltip.scss +100 -0
- package/scss/foundation/views/patterns/_hero.scss +121 -0
- package/scss/foundation/views/patterns/_index.scss +8 -0
- package/scss/foundation/views/patterns/_sidebar-layout.scss +83 -0
- package/scss/foundation/views/render/_layer-order.scss +11 -0
- package/scss/foundation/views/render/classes/_animations.scss +233 -0
- package/scss/foundation/views/render/classes/_aspect-ratio.scss +17 -0
- package/scss/foundation/views/render/classes/_borders.scss +31 -0
- package/scss/foundation/views/render/classes/_buttons.scss +40 -0
- package/scss/foundation/views/render/classes/_colors.scss +83 -0
- package/scss/foundation/views/render/classes/_compounds.scss +103 -0
- package/scss/foundation/views/render/classes/_containers.scss +20 -0
- package/scss/foundation/views/render/classes/_misc-utils.scss +51 -0
- package/scss/foundation/views/render/classes/_position.scss +56 -0
- package/scss/foundation/views/render/classes/_sections.scss +30 -0
- package/scss/foundation/views/render/classes/_shadows.scss +198 -0
- package/scss/foundation/views/render/classes/_sizes.scss +39 -0
- package/scss/foundation/views/render/classes/_sizing-utils.scss +53 -0
- package/scss/foundation/views/render/classes/_spacing.scss +91 -0
- package/scss/foundation/views/render/classes/_state-variants.scss +47 -0
- package/scss/foundation/views/render/classes/_typography.scss +32 -0
- package/scss/foundation/views/render/classes/_utilities.scss +103 -0
- package/scss/foundation/views/render/classes/_z-index.scss +22 -0
- package/scss/foundation/views/render/classes/flexbox.scss +56 -0
- package/scss/foundation/views/render/classes/grid.scss +195 -0
- package/scss/foundation/views/render/classes.scss +116 -0
- package/scss/foundation/views/render/html-body.scss +54 -0
- package/scss/foundation/views/render/property-registration.scss +77 -0
- package/scss/foundation/views/render/reset.scss +147 -0
- package/scss/foundation/views/render/root-generator.scss +166 -0
- package/scss/foundation/views/render/root.scss +19 -0
- package/scss/foundation/views/render/typography.scss +129 -0
- package/scss/llms.txt +247 -0
- package/scss/package.json +89 -0
- package/scss/scripts/gen-cheatsheet.mjs +178 -0
- package/scss/scripts/gen-tokens.mjs +91 -0
- package/scss/scripts/test-compile.mjs +474 -0
- package/scss/zeus.config.scss +99 -0
- package/scss/zeus.customize.scss +246 -0
- package/scss/zeus.scss +17 -0
- package/scss/zeus.token.sets.example.scss +176 -0
- 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
|
+
}
|