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,42 @@
|
|
|
1
|
+
// ╔══════════════════════════════════════════════════════════════╗
|
|
2
|
+
// ║ ⚡ Zeus CSS — Spaces ║
|
|
3
|
+
// ║ ║
|
|
4
|
+
// ║ Design tokens and configuration for spaces. ║
|
|
5
|
+
// ╚══════════════════════════════════════════════════════════════╝
|
|
6
|
+
|
|
7
|
+
@use "sass:map";
|
|
8
|
+
@use "../../../../zeus.config" as config;
|
|
9
|
+
@use "../_validate" as validate;
|
|
10
|
+
|
|
11
|
+
// ╔══════════════════════════════════════════════════════════╗
|
|
12
|
+
// ║ 📐 SPACING TOKENS — Edit values here
|
|
13
|
+
// ║
|
|
14
|
+
// ║ Format: "name": (floor: N, ceil: N)
|
|
15
|
+
// ║ • min = mobile size (px, unitless number)
|
|
16
|
+
// ║ • max = desktop size (px, unitless number)
|
|
17
|
+
// ║ • Always fluid — clamp() by default
|
|
18
|
+
// ║
|
|
19
|
+
// ║ Output CSS variable: --space-{name}
|
|
20
|
+
// ╚══════════════════════════════════════════════════════════╝
|
|
21
|
+
|
|
22
|
+
// ── Defaults ─────────────────────────────────────────────────
|
|
23
|
+
$_space-defaults: (
|
|
24
|
+
"0": (floor: 0, ceil: 0),
|
|
25
|
+
"4xs": (floor: 1, ceil: 2),
|
|
26
|
+
"3xs": (floor: 2, ceil: 4),
|
|
27
|
+
"2xs": (floor: 4, ceil: 6),
|
|
28
|
+
"xs": (floor: 6, ceil: 8),
|
|
29
|
+
"sm": (floor: 8, ceil: 12),
|
|
30
|
+
"md": (floor: 12, ceil: 16),
|
|
31
|
+
"lg": (floor: 16, ceil: 24),
|
|
32
|
+
"xl": (floor: 24, ceil: 32),
|
|
33
|
+
"2xl": (floor: 32, ceil: 48),
|
|
34
|
+
"3xl": (floor: 48, ceil: 64),
|
|
35
|
+
"4xl": (floor: 64, ceil: 96),
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
// ── Developer can set $space BEFORE @use to override specific keys ──
|
|
39
|
+
$space: map.deep-merge($_space-defaults, config.$zeus-space);
|
|
40
|
+
@include validate.validate-all-responsive("space", $space);
|
|
41
|
+
|
|
42
|
+
// spaces can be used in padding, margin, gap, etc. throughout the design system.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// ╔══════════════════════════════════════════════════════════════╗
|
|
2
|
+
// ║ ⚡ Zeus CSS — Z-Index ║
|
|
3
|
+
// ║ ║
|
|
4
|
+
// ║ Design tokens and configuration for the stacking scale. ║
|
|
5
|
+
// ╚══════════════════════════════════════════════════════════════╝
|
|
6
|
+
|
|
7
|
+
@use "sass:map";
|
|
8
|
+
@use "../../../../zeus.config" as config;
|
|
9
|
+
|
|
10
|
+
// ╔══════════════════════════════════════════════════════════╗
|
|
11
|
+
// ║ 🧱 Z-INDEX SCALE ║
|
|
12
|
+
// ║ ║
|
|
13
|
+
// ║ Format: "name": N (unitless integer) ║
|
|
14
|
+
// ║ Output CSS variable: --z-{name} ║
|
|
15
|
+
// ╚══════════════════════════════════════════════════════════╝
|
|
16
|
+
|
|
17
|
+
// ── Defaults ─────────────────────────────────────────────────
|
|
18
|
+
$_z-index-defaults: (
|
|
19
|
+
"base": 0,
|
|
20
|
+
"dropdown": 100,
|
|
21
|
+
"sticky": 200,
|
|
22
|
+
"overlay": 900,
|
|
23
|
+
"modal-backdrop": 999,
|
|
24
|
+
"modal": 1000,
|
|
25
|
+
"toast": 1100,
|
|
26
|
+
"tooltip": 1200,
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
// ── Developer Override ──
|
|
30
|
+
$z-index: map.merge($_z-index-defaults, config.$zeus-z-index);
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// ╔══════════════════════════════════════════════════════════════╗
|
|
2
|
+
// ║ ⚡ Zeus CSS — Shadows ║
|
|
3
|
+
// ║ ║
|
|
4
|
+
// ║ Design tokens and configuration for shadows. ║
|
|
5
|
+
// ╚══════════════════════════════════════════════════════════════╝
|
|
6
|
+
|
|
7
|
+
@use "sass:map";
|
|
8
|
+
@use "../../../../zeus.config" as config;
|
|
9
|
+
|
|
10
|
+
// ╔══════════════════════════════════════════════════════════╗
|
|
11
|
+
// ║ ☁️ SHADOW TOKENS
|
|
12
|
+
// ║
|
|
13
|
+
// ║ Format: "name": shadow-value
|
|
14
|
+
// ║ Output CSS variable: --shadow-{name}
|
|
15
|
+
// ╚══════════════════════════════════════════════════════════╝
|
|
16
|
+
|
|
17
|
+
// ── Defaults ─────────────────────────────────────────────────
|
|
18
|
+
$_shadows-defaults: (
|
|
19
|
+
"none": none,
|
|
20
|
+
|
|
21
|
+
// Elevation
|
|
22
|
+
"xs": (0px 1px 2px 0px rgb(132 132 132 / 43%)),
|
|
23
|
+
"sm": (0px 1px 3px 0px rgb(132 132 132 / 43%), 0px 1px 2px -1px rgb(132 132 132 / 43%)),
|
|
24
|
+
"md": (0px 4px 6px -1px rgb(132 132 132 / 43%), 0px 2px 4px -2px rgb(132 132 132 / 43%)),
|
|
25
|
+
"lg": (0px 10px 15px -3px rgb(132 132 132 / 43%), 0px 4px 6px -4px rgb(132 132 132 / 43%)),
|
|
26
|
+
"xl": (0px 20px 25px -5px rgb(132 132 132 / 43%), 0px 8px 10px -6px rgb(132 132 132 / 43%)),
|
|
27
|
+
"2xl": (0px 25px 50px -12px rgba(0, 0, 0, 0.25)),
|
|
28
|
+
|
|
29
|
+
// Semantic (Glows for colored elements) — derived from the brand's own
|
|
30
|
+
// CSS custom properties at runtime, via OKLCH relative-color syntax, so
|
|
31
|
+
// changing $zeus-colors also re-colors these shadows automatically
|
|
32
|
+
// instead of leaving them locked to a hardcoded blue/purple.
|
|
33
|
+
"primary": (0px 4px 12px 0px oklch(from var(--color-primary) l c h / 0.3)),
|
|
34
|
+
"secondary": (0px 4px 12px 0px oklch(from var(--color-secondary) l c h / 0.3)),
|
|
35
|
+
"success": (0px 4px 12px 0px rgba(34, 197, 94, 0.3)),
|
|
36
|
+
"warning": (0px 4px 12px 0px rgba(251, 146, 60, 0.3)),
|
|
37
|
+
"danger": (0px 4px 12px 0px rgba(239, 68, 68, 0.3)),
|
|
38
|
+
"info": (0px 4px 12px 0px rgba(14, 165, 233, 0.3)),
|
|
39
|
+
|
|
40
|
+
// Inner
|
|
41
|
+
"inner": (inset 0px 2px 4px 0px rgba(0, 0, 0, 0.06)),
|
|
42
|
+
"inner-lg": (inset 0px 4px 8px 0px rgb(132 132 132 / 43%)),
|
|
43
|
+
|
|
44
|
+
// Special effects — same brand-derivation rationale as above
|
|
45
|
+
"glow": (0px 0px 20px 0px oklch(from var(--color-primary) l c h / 0.5)),
|
|
46
|
+
"glow-lg": (0px 0px 40px 0px oklch(from var(--color-primary) l c h / 0.6)),
|
|
47
|
+
"outline": (0px 0px 0px 3px oklch(from var(--color-primary) l c h / 0.5)),
|
|
48
|
+
|
|
49
|
+
// Component specific recommendations
|
|
50
|
+
"card": (0px 2px 8px 0px rgba(0,0,0,0.08), 0px 1px 2px 0px rgba(0,0,0,0.06)),
|
|
51
|
+
"card-hover": (0px 8px 24px 0px rgba(0,0,0,0.12), 0px 2px 6px 0px rgba(0,0,0,0.08)),
|
|
52
|
+
"dropdown": (0px 10px 40px 0px rgba(0,0,0,0.15), 0px 2px 8px 0px rgb(132 132 132 / 43%)),
|
|
53
|
+
"modal": (0px 20px 60px 0px rgba(0,0,0,0.3), 0px 4px 16px 0px rgba(0,0,0,0.2)),
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
// ── Developer Override ──
|
|
57
|
+
$shadows: map.merge($_shadows-defaults, config.$zeus-shadows);
|
|
58
|
+
|
|
59
|
+
// -----------------------------------------------------------------------------
|
|
60
|
+
// HELPER FUNCTION
|
|
61
|
+
// -----------------------------------------------------------------------------
|
|
62
|
+
|
|
63
|
+
@function shadow($key) {
|
|
64
|
+
@return map.get($shadows, $key);
|
|
65
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// ╔══════════════════════════════════════════════════════════════╗
|
|
2
|
+
// ║ ⚡ Zeus CSS — Grid ║
|
|
3
|
+
// ║ ║
|
|
4
|
+
// ║ Design tokens and configuration for grid. ║
|
|
5
|
+
// ╚══════════════════════════════════════════════════════════════╝
|
|
6
|
+
|
|
7
|
+
@use "sass:map";
|
|
8
|
+
@use "../../../../zeus.config" as config;
|
|
9
|
+
@use "../_validate" as validate;
|
|
10
|
+
|
|
11
|
+
// ============================================================
|
|
12
|
+
// ZEUS GRID — Layout Tokens
|
|
13
|
+
// ============================================================
|
|
14
|
+
|
|
15
|
+
$outer-max-width: config.$zeus-outer-max-width !default;
|
|
16
|
+
|
|
17
|
+
// ─── Breakpoints ─────────────────────────────────────────────
|
|
18
|
+
$_breakpoints-base-defaults: (
|
|
19
|
+
xs: 0,
|
|
20
|
+
sm: 576px,
|
|
21
|
+
md: 768px,
|
|
22
|
+
ml: 1024px,
|
|
23
|
+
lg: 1280px,
|
|
24
|
+
xl: 1920px,
|
|
25
|
+
xxl: $outer-max-width,
|
|
26
|
+
);
|
|
27
|
+
$_breakpoints-defaults: map.merge($_breakpoints-base-defaults, config.$zeus-breakpoints);
|
|
28
|
+
$_breakpoints-defaults: map.merge(
|
|
29
|
+
$_breakpoints-defaults,
|
|
30
|
+
(
|
|
31
|
+
xxl: map.get(config.$zeus-breakpoints, xxl) or $outer-max-width,
|
|
32
|
+
)
|
|
33
|
+
);
|
|
34
|
+
$breakpoints: () !default;
|
|
35
|
+
$breakpoints: map.merge($_breakpoints-defaults, $breakpoints);
|
|
36
|
+
|
|
37
|
+
// ─── Column gap tokens (fluid: min → max) ────────────────────
|
|
38
|
+
// Format: (floor: N, ceil: N) — unitless px numbers, resolved by useclamp-sizing() at :root
|
|
39
|
+
// Output CSS vars: --col-gap-xs, --col-gap-sm, --col-gap-md, --col-gap-lg, --col-gap-xl, --col-gap-xxl
|
|
40
|
+
$_column-gaps-base-defaults: (
|
|
41
|
+
xs: (
|
|
42
|
+
floor: 12,
|
|
43
|
+
ceil: 16,
|
|
44
|
+
),
|
|
45
|
+
sm: (
|
|
46
|
+
floor: 16,
|
|
47
|
+
ceil: 20,
|
|
48
|
+
),
|
|
49
|
+
md: (
|
|
50
|
+
floor: 20,
|
|
51
|
+
ceil: 28,
|
|
52
|
+
),
|
|
53
|
+
lg: (
|
|
54
|
+
floor: 28,
|
|
55
|
+
ceil: 40,
|
|
56
|
+
),
|
|
57
|
+
xl: (
|
|
58
|
+
floor: 36,
|
|
59
|
+
ceil: 48,
|
|
60
|
+
),
|
|
61
|
+
xxl: (
|
|
62
|
+
floor: 40,
|
|
63
|
+
ceil: 64,
|
|
64
|
+
),
|
|
65
|
+
);
|
|
66
|
+
$_column-gaps-defaults: map.deep-merge($_column-gaps-base-defaults, config.$zeus-column-gaps);
|
|
67
|
+
$column-gaps: () !default;
|
|
68
|
+
$column-gaps: map.deep-merge($_column-gaps-defaults, $column-gaps);
|
|
69
|
+
@include validate.validate-all-responsive("column-gaps", $column-gaps);
|
|
70
|
+
|
|
71
|
+
// ─── Container outer padding — fluid ─────────────────────────
|
|
72
|
+
// Format: (floor: N, ceil: N) — unitless px numbers
|
|
73
|
+
// Output CSS var: --padding-outer
|
|
74
|
+
// floor = mobile minimum, ceil = wide desktop maximum
|
|
75
|
+
|
|
76
|
+
// Based on useclamp-sizing() which defaults to the $container-bounds range
|
|
77
|
+
// (320px–2560px, see core/design/core/basic.scss).
|
|
78
|
+
// floor: 16 -> 16px padding at the 320px container floor (small mobile)
|
|
79
|
+
// ceil: 128 -> 128px padding at the 2560px container ceiling (ultra-wide desktop)
|
|
80
|
+
$_outer-padding-base-defaults: (
|
|
81
|
+
floor: 16,
|
|
82
|
+
ceil: 64,
|
|
83
|
+
);
|
|
84
|
+
$_outer-padding-defaults: map.merge($_outer-padding-base-defaults, config.$zeus-outer-padding);
|
|
85
|
+
$outer-padding: () !default;
|
|
86
|
+
$outer-padding: map.merge($_outer-padding-defaults, $outer-padding);
|
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
// ╔══════════════════════════════════════════════════════════════╗
|
|
2
|
+
// ║ ⚡ Zeus CSS — Typography ║
|
|
3
|
+
// ║ ║
|
|
4
|
+
// ║ Design tokens and configuration for typography. ║
|
|
5
|
+
// ╚══════════════════════════════════════════════════════════════╝
|
|
6
|
+
|
|
7
|
+
@use "sass:map";
|
|
8
|
+
@use "../../../../zeus.config" as config;
|
|
9
|
+
@use "../_validate" as validate;
|
|
10
|
+
|
|
11
|
+
// ╔══════════════════════════════════════════════════════════╗
|
|
12
|
+
// ║ 🔤 FONT FAMILY — declared once here
|
|
13
|
+
// ║ Inter for all roles · JetBrains Mono for code
|
|
14
|
+
// ╚══════════════════════════════════════════════════════════╝
|
|
15
|
+
$_inter: (
|
|
16
|
+
"Inter",
|
|
17
|
+
-apple-system,
|
|
18
|
+
BlinkMacSystemFont,
|
|
19
|
+
"Segoe UI",
|
|
20
|
+
system-ui,
|
|
21
|
+
sans-serif
|
|
22
|
+
);
|
|
23
|
+
$_mono: (
|
|
24
|
+
"JetBrains Mono",
|
|
25
|
+
"Fira Code",
|
|
26
|
+
"Cascadia Code",
|
|
27
|
+
"Courier New",
|
|
28
|
+
monospace
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
$_font-family-defaults: (
|
|
32
|
+
"primary": $_inter,
|
|
33
|
+
"secondary": $_inter,
|
|
34
|
+
"tertiary": $_inter,
|
|
35
|
+
"code": $_mono,
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
// ── Developer Override ──
|
|
39
|
+
$font-family: map.deep-merge($_font-family-defaults, config.$zeus-font-family);
|
|
40
|
+
|
|
41
|
+
// ╔══════════════════════════════════════════════════════════╗
|
|
42
|
+
// ║ 🔤 TYPOGRAPHY TOKENS — Edit values here
|
|
43
|
+
// ║
|
|
44
|
+
// ║ Each variant has:
|
|
45
|
+
// ║ family = key from $font-family map above
|
|
46
|
+
// ║ size = (floor: N, ceil: N) ← always fluid (clamp)
|
|
47
|
+
// ║ lh = line-height (unitless ratio)
|
|
48
|
+
// ║ ls = letter-spacing (em, 0 = none)
|
|
49
|
+
// ║ weight = font-weight (100-900)
|
|
50
|
+
// ║
|
|
51
|
+
// ║ Output CSS variable: --text-{name}
|
|
52
|
+
// ╚══════════════════════════════════════════════════════════╝
|
|
53
|
+
|
|
54
|
+
// ── Defaults ─────────────────────────────────────────────────
|
|
55
|
+
$_typography-defaults: (
|
|
56
|
+
// ── Display styles ──────────────────────────────────────
|
|
57
|
+
"display-xl": (family: "primary",
|
|
58
|
+
size: (floor: 56,
|
|
59
|
+
ceil: 96,
|
|
60
|
+
),
|
|
61
|
+
lh: 1.1,
|
|
62
|
+
ls: -0.02,
|
|
63
|
+
weight: 800,
|
|
64
|
+
role: "heading",
|
|
65
|
+
),
|
|
66
|
+
"display-lg": (family: "primary",
|
|
67
|
+
size: (floor: 48,
|
|
68
|
+
ceil: 80,
|
|
69
|
+
),
|
|
70
|
+
lh: 1.1,
|
|
71
|
+
ls: -0.02,
|
|
72
|
+
weight: 800,
|
|
73
|
+
role: "heading",
|
|
74
|
+
),
|
|
75
|
+
"display-md": (family: "primary",
|
|
76
|
+
size: (floor: 40,
|
|
77
|
+
ceil: 64,
|
|
78
|
+
),
|
|
79
|
+
lh: 1.15,
|
|
80
|
+
ls: -0.01,
|
|
81
|
+
weight: 700,
|
|
82
|
+
role: "heading",
|
|
83
|
+
),
|
|
84
|
+
// ── Typographic Heading Levels ─────────────────────────
|
|
85
|
+
"h1": (family: "primary",
|
|
86
|
+
size: (floor: 36,
|
|
87
|
+
ceil: 52,
|
|
88
|
+
),
|
|
89
|
+
lh: 1.2,
|
|
90
|
+
ls: -0.01,
|
|
91
|
+
weight: 700,
|
|
92
|
+
role: "heading",
|
|
93
|
+
),
|
|
94
|
+
"h1-light": (family: "primary",
|
|
95
|
+
size: (floor: 36,
|
|
96
|
+
ceil: 52,
|
|
97
|
+
),
|
|
98
|
+
lh: 1.2,
|
|
99
|
+
ls: -0.01,
|
|
100
|
+
weight: 300,
|
|
101
|
+
role: "heading",
|
|
102
|
+
),
|
|
103
|
+
"h2": (family: "primary",
|
|
104
|
+
size: (floor: 30,
|
|
105
|
+
ceil: 44,
|
|
106
|
+
),
|
|
107
|
+
lh: 1.2,
|
|
108
|
+
ls: -0.01,
|
|
109
|
+
weight: 600,
|
|
110
|
+
role: "heading",
|
|
111
|
+
),
|
|
112
|
+
"h2-light": (family: "primary",
|
|
113
|
+
size: (floor: 30,
|
|
114
|
+
ceil: 44,
|
|
115
|
+
),
|
|
116
|
+
lh: 1.2,
|
|
117
|
+
ls: -0.01,
|
|
118
|
+
weight: 300,
|
|
119
|
+
role: "heading",
|
|
120
|
+
),
|
|
121
|
+
"h3": (family: "primary",
|
|
122
|
+
size: (floor: 26,
|
|
123
|
+
ceil: 40,
|
|
124
|
+
),
|
|
125
|
+
lh: 1.25,
|
|
126
|
+
ls: 0,
|
|
127
|
+
weight: 600,
|
|
128
|
+
role: "heading",
|
|
129
|
+
),
|
|
130
|
+
"h3-light": (family: "primary",
|
|
131
|
+
size: (floor: 26,
|
|
132
|
+
ceil: 40,
|
|
133
|
+
),
|
|
134
|
+
lh: 1.25,
|
|
135
|
+
ls: 0,
|
|
136
|
+
weight: 300,
|
|
137
|
+
role: "heading",
|
|
138
|
+
),
|
|
139
|
+
"h4": (family: "primary",
|
|
140
|
+
size: (floor: 24,
|
|
141
|
+
ceil: 32,
|
|
142
|
+
),
|
|
143
|
+
lh: 1.3,
|
|
144
|
+
ls: 0,
|
|
145
|
+
weight: 600,
|
|
146
|
+
role: "heading",
|
|
147
|
+
),
|
|
148
|
+
"h4-light": (family: "primary",
|
|
149
|
+
size: (floor: 24,
|
|
150
|
+
ceil: 32,
|
|
151
|
+
),
|
|
152
|
+
lh: 1.3,
|
|
153
|
+
ls: 0,
|
|
154
|
+
weight: 300,
|
|
155
|
+
role: "heading",
|
|
156
|
+
),
|
|
157
|
+
"h5": (family: "primary",
|
|
158
|
+
size: (floor: 20,
|
|
159
|
+
ceil: 24,
|
|
160
|
+
),
|
|
161
|
+
lh: 1.4,
|
|
162
|
+
ls: 0,
|
|
163
|
+
weight: 500,
|
|
164
|
+
role: "heading",
|
|
165
|
+
),
|
|
166
|
+
"h5-light": (family: "primary",
|
|
167
|
+
size: (floor: 20,
|
|
168
|
+
ceil: 24,
|
|
169
|
+
),
|
|
170
|
+
lh: 1.4,
|
|
171
|
+
ls: 0,
|
|
172
|
+
weight: 300,
|
|
173
|
+
role: "heading",
|
|
174
|
+
),
|
|
175
|
+
"h6": (family: "primary",
|
|
176
|
+
size: (floor: 18,
|
|
177
|
+
ceil: 20,
|
|
178
|
+
),
|
|
179
|
+
lh: 1.4,
|
|
180
|
+
ls: 0,
|
|
181
|
+
weight: 500,
|
|
182
|
+
role: "heading",
|
|
183
|
+
),
|
|
184
|
+
"h6-light": (family: "primary",
|
|
185
|
+
size: (floor: 18,
|
|
186
|
+
ceil: 20,
|
|
187
|
+
),
|
|
188
|
+
lh: 1.4,
|
|
189
|
+
ls: 0,
|
|
190
|
+
weight: 300,
|
|
191
|
+
role: "heading",
|
|
192
|
+
),
|
|
193
|
+
// ── Body text ───────────────────────────────────────────
|
|
194
|
+
"body-xl": (family: "primary",
|
|
195
|
+
size: (floor: 20,
|
|
196
|
+
ceil: 24,
|
|
197
|
+
),
|
|
198
|
+
lh: 1.6,
|
|
199
|
+
ls: 0,
|
|
200
|
+
weight: 400,
|
|
201
|
+
role: "body",
|
|
202
|
+
),
|
|
203
|
+
"body-lg": (family: "primary",
|
|
204
|
+
size: (floor: 18,
|
|
205
|
+
ceil: 20,
|
|
206
|
+
),
|
|
207
|
+
lh: 1.6,
|
|
208
|
+
ls: 0,
|
|
209
|
+
weight: 400,
|
|
210
|
+
role: "body",
|
|
211
|
+
),
|
|
212
|
+
"body": (family: "primary",
|
|
213
|
+
size: (floor: 16,
|
|
214
|
+
ceil: 18,
|
|
215
|
+
),
|
|
216
|
+
lh: 1.6,
|
|
217
|
+
ls: 0,
|
|
218
|
+
weight: 400,
|
|
219
|
+
role: "body",
|
|
220
|
+
),
|
|
221
|
+
"body-md": (family: "primary",
|
|
222
|
+
size: (floor: 16,
|
|
223
|
+
ceil: 18,
|
|
224
|
+
),
|
|
225
|
+
lh: 1.6,
|
|
226
|
+
ls: 0,
|
|
227
|
+
weight: 400,
|
|
228
|
+
role: "body",
|
|
229
|
+
),
|
|
230
|
+
"body-bold": (family: "primary",
|
|
231
|
+
size: (floor: 16,
|
|
232
|
+
ceil: 18,
|
|
233
|
+
),
|
|
234
|
+
lh: 1.6,
|
|
235
|
+
ls: 0,
|
|
236
|
+
weight: 700,
|
|
237
|
+
role: "body",
|
|
238
|
+
),
|
|
239
|
+
"body-md-bold": (family: "primary",
|
|
240
|
+
size: (floor: 16,
|
|
241
|
+
ceil: 18,
|
|
242
|
+
),
|
|
243
|
+
lh: 1.6,
|
|
244
|
+
ls: 0,
|
|
245
|
+
weight: 700,
|
|
246
|
+
role: "body",
|
|
247
|
+
),
|
|
248
|
+
"body-semibold": (family: "primary",
|
|
249
|
+
size: (floor: 16,
|
|
250
|
+
ceil: 18,
|
|
251
|
+
),
|
|
252
|
+
lh: 1.6,
|
|
253
|
+
ls: 0,
|
|
254
|
+
weight: 600,
|
|
255
|
+
role: "body",
|
|
256
|
+
),
|
|
257
|
+
"body-md-semibold": (family: "primary",
|
|
258
|
+
size: (floor: 16,
|
|
259
|
+
ceil: 18,
|
|
260
|
+
),
|
|
261
|
+
lh: 1.6,
|
|
262
|
+
ls: 0,
|
|
263
|
+
weight: 600,
|
|
264
|
+
role: "body",
|
|
265
|
+
),
|
|
266
|
+
"body-medium": (family: "primary",
|
|
267
|
+
size: (floor: 16,
|
|
268
|
+
ceil: 18,
|
|
269
|
+
),
|
|
270
|
+
lh: 1.6,
|
|
271
|
+
ls: 0,
|
|
272
|
+
weight: 500,
|
|
273
|
+
role: "body",
|
|
274
|
+
),
|
|
275
|
+
"body-md-medium": (family: "primary",
|
|
276
|
+
size: (floor: 16,
|
|
277
|
+
ceil: 18,
|
|
278
|
+
),
|
|
279
|
+
lh: 1.6,
|
|
280
|
+
ls: 0,
|
|
281
|
+
weight: 500,
|
|
282
|
+
role: "body",
|
|
283
|
+
),
|
|
284
|
+
"body-sm": (family: "primary",
|
|
285
|
+
size: (floor: 14,
|
|
286
|
+
ceil: 16,
|
|
287
|
+
),
|
|
288
|
+
lh: 1.5,
|
|
289
|
+
ls: 0,
|
|
290
|
+
weight: 400,
|
|
291
|
+
role: "body",
|
|
292
|
+
),
|
|
293
|
+
"body-sm-bold": (family: "primary",
|
|
294
|
+
size: (floor: 14,
|
|
295
|
+
ceil: 16,
|
|
296
|
+
),
|
|
297
|
+
lh: 1.5,
|
|
298
|
+
ls: 0,
|
|
299
|
+
weight: 700,
|
|
300
|
+
role: "body",
|
|
301
|
+
),
|
|
302
|
+
"body-sm-semibold": (family: "primary",
|
|
303
|
+
size: (floor: 14,
|
|
304
|
+
ceil: 16,
|
|
305
|
+
),
|
|
306
|
+
lh: 1.5,
|
|
307
|
+
ls: 0,
|
|
308
|
+
weight: 600,
|
|
309
|
+
role: "body",
|
|
310
|
+
),
|
|
311
|
+
"body-xs": (family: "primary",
|
|
312
|
+
size: (floor: 12,
|
|
313
|
+
ceil: 14,
|
|
314
|
+
),
|
|
315
|
+
lh: 1.5,
|
|
316
|
+
ls: 0,
|
|
317
|
+
weight: 400,
|
|
318
|
+
role: "body",
|
|
319
|
+
),
|
|
320
|
+
// ── UI text ─────────────────────────────────────────────
|
|
321
|
+
"label": (family: "secondary",
|
|
322
|
+
size: (floor: 12,
|
|
323
|
+
ceil: 14,
|
|
324
|
+
),
|
|
325
|
+
lh: 1.4,
|
|
326
|
+
ls: 0.01,
|
|
327
|
+
weight: 500,
|
|
328
|
+
role: "ui",
|
|
329
|
+
),
|
|
330
|
+
"label-bold": (family: "secondary",
|
|
331
|
+
size: (floor: 12,
|
|
332
|
+
ceil: 14,
|
|
333
|
+
),
|
|
334
|
+
lh: 1.4,
|
|
335
|
+
ls: 0.01,
|
|
336
|
+
weight: 700,
|
|
337
|
+
role: "ui",
|
|
338
|
+
),
|
|
339
|
+
"caption": (family: "secondary",
|
|
340
|
+
size: (floor: 11,
|
|
341
|
+
ceil: 12,
|
|
342
|
+
),
|
|
343
|
+
lh: 1.4,
|
|
344
|
+
ls: 0.01,
|
|
345
|
+
weight: 400,
|
|
346
|
+
role: "ui",
|
|
347
|
+
),
|
|
348
|
+
"caption-bold": (family: "secondary",
|
|
349
|
+
size: (floor: 11,
|
|
350
|
+
ceil: 12,
|
|
351
|
+
),
|
|
352
|
+
lh: 1.4,
|
|
353
|
+
ls: 0.01,
|
|
354
|
+
weight: 600,
|
|
355
|
+
role: "ui",
|
|
356
|
+
),
|
|
357
|
+
"overline": (family: "secondary",
|
|
358
|
+
size: (floor: 14,
|
|
359
|
+
ceil: 16,
|
|
360
|
+
),
|
|
361
|
+
lh: 1.3,
|
|
362
|
+
ls: 0.14,
|
|
363
|
+
weight: 600,
|
|
364
|
+
role: "ui",
|
|
365
|
+
),
|
|
366
|
+
// ── Interactive ─────────────────────────────────────────
|
|
367
|
+
"link": (family: "tertiary",
|
|
368
|
+
size: (floor: 15,
|
|
369
|
+
ceil: 16,
|
|
370
|
+
),
|
|
371
|
+
lh: 1.5,
|
|
372
|
+
ls: 0,
|
|
373
|
+
weight: 500,
|
|
374
|
+
role: "interactive",
|
|
375
|
+
),
|
|
376
|
+
"link-bold": (family: "tertiary",
|
|
377
|
+
size: (floor: 15,
|
|
378
|
+
ceil: 16,
|
|
379
|
+
),
|
|
380
|
+
lh: 1.5,
|
|
381
|
+
ls: 0,
|
|
382
|
+
weight: 700,
|
|
383
|
+
role: "interactive",
|
|
384
|
+
),
|
|
385
|
+
"button": (family: "secondary",
|
|
386
|
+
size: (floor: 14,
|
|
387
|
+
ceil: 16,
|
|
388
|
+
),
|
|
389
|
+
lh: 1.2,
|
|
390
|
+
ls: 0.02,
|
|
391
|
+
weight: 600,
|
|
392
|
+
role: "interactive",
|
|
393
|
+
),
|
|
394
|
+
"button-lg": (family: "secondary",
|
|
395
|
+
size: (floor: 16,
|
|
396
|
+
ceil: 18,
|
|
397
|
+
),
|
|
398
|
+
lh: 1.2,
|
|
399
|
+
ls: 0.02,
|
|
400
|
+
weight: 600,
|
|
401
|
+
role: "interactive",
|
|
402
|
+
),
|
|
403
|
+
"button-sm": (family: "secondary",
|
|
404
|
+
size: (floor: 12,
|
|
405
|
+
ceil: 14,
|
|
406
|
+
),
|
|
407
|
+
lh: 1.2,
|
|
408
|
+
ls: 0.02,
|
|
409
|
+
weight: 600,
|
|
410
|
+
role: "interactive",
|
|
411
|
+
),
|
|
412
|
+
// ── Monospaced & Raw Code Blocks ───────────────────────
|
|
413
|
+
"code": (family: "code",
|
|
414
|
+
size: (floor: 14,
|
|
415
|
+
ceil: 16,
|
|
416
|
+
),
|
|
417
|
+
lh: 1.6,
|
|
418
|
+
ls: 0,
|
|
419
|
+
weight: 400,
|
|
420
|
+
role: "code",
|
|
421
|
+
),
|
|
422
|
+
"code-sm": (family: "code",
|
|
423
|
+
size: (floor: 12,
|
|
424
|
+
ceil: 14,
|
|
425
|
+
),
|
|
426
|
+
lh: 1.6,
|
|
427
|
+
ls: 0,
|
|
428
|
+
weight: 400,
|
|
429
|
+
role: "code",
|
|
430
|
+
)
|
|
431
|
+
);
|
|
432
|
+
|
|
433
|
+
// ── Developer Override ──
|
|
434
|
+
$typography: map.deep-merge($_typography-defaults, config.$zeus-typography);
|
|
435
|
+
@include validate.validate-all-typography($typography);
|