@eaera-com/eaera-widgets-v2 0.1.80 → 0.1.82
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/dist/components/base/EaeraCollapse.d.ts +7 -1
- package/dist/components/base/EaeraCollapse.mjs +1 -1
- package/dist/components/chunks/EaeraCollapse-DWofxWoM.mjs +1 -0
- package/dist/components/index.mjs +1 -1
- package/dist/design-system/components/_collapse.scss +31 -1
- package/dist/design-system/themes/aurora/layers/_layer1-palettes.scss +0 -29
- package/dist/design-system/themes/aurora/layers/_layer3-tokens.scss +3 -0
- package/dist/design-system/themes/core/layers/_layer1-palettes.scss +0 -29
- package/dist/design-system/themes/core/layers/_layer3-tokens.scss +3 -0
- package/dist/design-system/themes/netr/bridges/_element-plus-bridge.scss +58 -0
- package/dist/design-system/themes/netr/elevation/_elevation-tokens.scss +67 -0
- package/dist/design-system/themes/netr/elevation/_elevation-utils.scss +94 -0
- package/dist/design-system/themes/netr/index.scss +133 -0
- package/dist/design-system/themes/netr/layers/_layer1-palettes.scss +318 -0
- package/dist/design-system/themes/netr/layers/_layer2-alias.scss +250 -0
- package/dist/design-system/themes/netr/layers/_layer3-tokens.scss +242 -0
- package/dist/design-system/themes/netr/themes/_dark-mode.scss +177 -0
- package/dist/design-system/themes/netr/tokens/_border-radius.scss +28 -0
- package/dist/design-system/themes/netr/tokens/_control-height.scss +18 -0
- package/dist/design-system/themes/netr/tokens/_screen-size.scss +10 -0
- package/dist/design-system/themes/netr/tokens/_spacing.scss +29 -0
- package/dist/design-system/themes/netr/typography/_typography-primitives.scss +11 -0
- package/dist/design-system/themes/netr/typography/_typography-semantic.scss +5 -0
- package/dist/design-system/themes/netr/typography/_typography-tokens.scss +185 -0
- package/dist/design-system/themes/netr/typography/_typography-utils.scss +375 -0
- package/dist/eaera-widgets-v2.es.js +46 -41
- package/dist/eaera-widgets-v2.umd.cjs +1 -1
- package/package.json +1 -1
- package/dist/components/chunks/EaeraCollapse-LNaBdM2I.mjs +0 -1
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// DARK MODE TOKEN OVERRIDES
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Source: Figma UI Kit Core — Color Guidance — Dark Component Tokens
|
|
5
|
+
// File: https://www.figma.com/design/HSOs8VcK5CKL8s15AqD42x/UI-KIT-CORE
|
|
6
|
+
// Nodes:
|
|
7
|
+
// action — 40424:8223
|
|
8
|
+
// surface — 40424:8245
|
|
9
|
+
// text — 40424:8258
|
|
10
|
+
// icon — 40424:8271
|
|
11
|
+
// border — 40424:8283
|
|
12
|
+
//
|
|
13
|
+
// Applied when:
|
|
14
|
+
// - html.dark (global preference)
|
|
15
|
+
// - [data-theme="dark"] (attribute-based)
|
|
16
|
+
// - .dark (class-based — used by showcase toggle)
|
|
17
|
+
// ============================================================================
|
|
18
|
+
|
|
19
|
+
html.dark,
|
|
20
|
+
[data-theme='dark'],
|
|
21
|
+
.dark {
|
|
22
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
23
|
+
// ACTION
|
|
24
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
25
|
+
// Primary action — unchanged between light/dark
|
|
26
|
+
--er-action-primary-default: var(--er-primary-600); // primary/600 (same as light)
|
|
27
|
+
--er-action-primary-hover: var(--er-primary-700); // primary/700 (same as light)
|
|
28
|
+
--er-action-primary-pressed: var(--er-primary-800); // primary/800 (same as light)
|
|
29
|
+
|
|
30
|
+
// Primary subtle — raised alpha steps for dark backgrounds
|
|
31
|
+
--er-action-primary-subtle: var(--er-primary-alpha-300); // primary alpha/300
|
|
32
|
+
--er-action-primary-subtle-hover: var(--er-primary-alpha-400); // primary alpha/400
|
|
33
|
+
--er-action-primary-subtle-pressed: var(--er-primary-alpha-500); // primary alpha/500
|
|
34
|
+
|
|
35
|
+
// Neutral action — inverted from dark to light
|
|
36
|
+
--er-action-neutral-default: var(
|
|
37
|
+
--er-neutral-white
|
|
38
|
+
); // neutral/white = #FFFFFF (light: neutral/950)
|
|
39
|
+
--er-action-neutral-hover: var(--er-neutral-100); // neutral/100 = #F4F4F5 (light: neutral/600)
|
|
40
|
+
--er-action-neutral-pressed: var(--er-neutral-300); // neutral/300 = #D4D4D8 (light: neutral/800)
|
|
41
|
+
|
|
42
|
+
// Neutral subtle — black base + elevation (white alpha) overlays
|
|
43
|
+
--er-action-neutral-subtle-default: var(
|
|
44
|
+
--er-neutral-black
|
|
45
|
+
); // neutral/black = #000000 (light: neutral/white)
|
|
46
|
+
--er-action-neutral-subtle-hover: var(
|
|
47
|
+
--er-elevation-50
|
|
48
|
+
); // elevation/50 = #F8F9FB @ 3.92% (light: neutral alpha/50)
|
|
49
|
+
--er-action-neutral-subtle-pressed: var(
|
|
50
|
+
--er-elevation-100
|
|
51
|
+
); // elevation/100 = #F8F9FB @ 7.84% (light: neutral alpha/100)
|
|
52
|
+
|
|
53
|
+
// Danger action
|
|
54
|
+
--er-action-danger-default: var(--er-danger-600); // danger/600 (same as light)
|
|
55
|
+
--er-action-danger-hover: var(--er-danger-700); // danger/700 (same as light)
|
|
56
|
+
--er-action-danger-pressed: var(--er-danger-800); // danger/800 (same as light)
|
|
57
|
+
|
|
58
|
+
// Danger subtle — raised alpha steps for dark backgrounds
|
|
59
|
+
--er-action-danger-subtle-default: var(--er-danger-alpha-300); // danger alpha/300
|
|
60
|
+
--er-action-danger-subtle-hover: var(--er-danger-alpha-400); // danger alpha/400
|
|
61
|
+
--er-action-danger-subtle-pressed: var(--er-danger-alpha-500); // danger alpha/500
|
|
62
|
+
|
|
63
|
+
// Success action — shifted to -600/-700/-800 in dark mode for better contrast (mirrors danger)
|
|
64
|
+
--er-action-success-default: var(--er-success-600); // success/600 = #059669 (light: success/500)
|
|
65
|
+
--er-action-success-hover: var(--er-success-700); // success/700 = #047857 (light: success/600)
|
|
66
|
+
--er-action-success-pressed: var(--er-success-800); // success/800 = #065F46 (light: success/700)
|
|
67
|
+
|
|
68
|
+
// Success subtle — unchanged (alpha-based, works on dark)
|
|
69
|
+
--er-action-success-subtle-default: var(--er-success-alpha-50); // success alpha/50 @ 3.92%
|
|
70
|
+
--er-action-success-subtle-hover: var(--er-success-alpha-100); // success alpha/100 @ 7.84%
|
|
71
|
+
--er-action-success-subtle-pressed: var(--er-success-alpha-200); // success alpha/200 @ 12.16%
|
|
72
|
+
|
|
73
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
74
|
+
// SURFACE
|
|
75
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
76
|
+
--er-surface-page: var(--er-neutral-950); // surface/page = neutral/950 = #09090B
|
|
77
|
+
--er-surface-container: var(--er-neutral-900); // surface/container = neutral/900 = #18181B
|
|
78
|
+
--er-surface-elevated: var(--er-neutral-800); // surface/elevated = neutral/800 = #27272A
|
|
79
|
+
--er-surface-subtle: var(--er-neutral-800); // surface/subtle = neutral/800 = #27272A
|
|
80
|
+
--er-surface-muted: var(--er-neutral-700); // surface/muted = neutral/700 = #3F3F46
|
|
81
|
+
--er-surface-track: var(--er-elevation-100); // surface/track = elevation/50 (unchanged)
|
|
82
|
+
--er-surface-inverse: var(--er-neutral-50); // surface/inverse = neutral/50 = #FAFAFA
|
|
83
|
+
|
|
84
|
+
// Subtle surfaces — unchanged (alpha-based, work on dark)
|
|
85
|
+
--er-surface-neutral-subtle: var(--er-elevation-100); // surface/neutral-subtle = elevation/100 = #F8F9FB @ 7.84%
|
|
86
|
+
--er-surface-brand-subtle: var(--er-primary-alpha-100); // primary alpha/100 (unchanged)
|
|
87
|
+
--er-surface-success-subtle: var(--er-success-alpha-100); // success alpha/100 (unchanged)
|
|
88
|
+
--er-surface-warning-subtle: var(--er-warning-alpha-100); // warning alpha/100 (unchanged)
|
|
89
|
+
--er-surface-danger-subtle: var(--er-danger-alpha-100); // danger alpha/100 (unchanged)
|
|
90
|
+
--er-surface-information-subtle: var(--er-information-alpha-100); // information alpha/100 (unchanged)
|
|
91
|
+
|
|
92
|
+
// Fixed white — never changes between light/dark
|
|
93
|
+
--er-surface-fixed-white: var(--er-neutral-white); // always #FFFFFF
|
|
94
|
+
|
|
95
|
+
// Overlay / loading mask — dark translucent overlay so `.el-loading-mask`
|
|
96
|
+
// (v-loading / ElLoading) no longer washes out to white in dark mode.
|
|
97
|
+
// Maps to neutral/950 = #09090B at 90% (matches light-mode opacity).
|
|
98
|
+
--el-mask-color: rgba(9, 9, 11, 0.9);
|
|
99
|
+
|
|
100
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
101
|
+
// TEXT
|
|
102
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
103
|
+
--er-text-primary: var(--er-elevation-950); // text/primary = elevation/950 = #F8F9FB @ 96.08%
|
|
104
|
+
--er-text-secondary: var(--er-elevation-800); // text/secondary = elevation/800 @ 72.16%
|
|
105
|
+
--er-text-tertiary: var(--er-elevation-600); // text/tertiary = elevation/600 @ 40%
|
|
106
|
+
--er-text-muted: var(--er-elevation-600); // text/muted = elevation/600 @ 40%
|
|
107
|
+
--er-text-inverse: var(--er-neutral-900); // text/inverse = neutral/900 = #18181B
|
|
108
|
+
--er-text-brand: var(--er-primary-default); // primary/default = #F97316 (unchanged)
|
|
109
|
+
--er-text-on-action: var(--er-neutral-50); // neutral/50 = #FAFAFA (unchanged)
|
|
110
|
+
--er-text-success: var(--er-success-default); // success/default = #10B981 (unchanged)
|
|
111
|
+
--er-text-warning: var(--er-warning-default); // warning/default = #F59E0B (unchanged)
|
|
112
|
+
--er-text-danger: var(--er-danger-default); // danger/default = #EF4444 (unchanged)
|
|
113
|
+
--er-text-information: var(--er-information-default); // information/default = #0EA5E9 (unchanged)
|
|
114
|
+
|
|
115
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
116
|
+
// ICON
|
|
117
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
118
|
+
--er-icon-primary: var(--er-elevation-950); // icon/primary = elevation/950
|
|
119
|
+
--er-icon-secondary: var(--er-elevation-800); // icon/secondary = elevation/800
|
|
120
|
+
--er-icon-tertiary: var(--er-elevation-700); // icon/tertiary = elevation/700 @ 56.08%
|
|
121
|
+
--er-icon-muted: var(--er-elevation-600); // icon/muted = elevation/600 @ 40%
|
|
122
|
+
--er-icon-inverse: var(--er-neutral-900); // icon/inverse = neutral/900 = #18181B
|
|
123
|
+
--er-icon-brand: var(--er-primary-default); // primary/default = #F97316 (unchanged)
|
|
124
|
+
--er-icon-on-action: var(--er-neutral-50); // neutral/50 = #FAFAFA (unchanged)
|
|
125
|
+
--er-icon-success: var(--er-success-default); // success/default = #10B981 (unchanged)
|
|
126
|
+
--er-icon-warning: var(--er-warning-default); // warning/default = #F59E0B (unchanged)
|
|
127
|
+
--er-icon-danger: var(--er-danger-default); // danger/default = #EF4444 (unchanged)
|
|
128
|
+
--er-icon-information: var(--er-information-default); // information/default = #0EA5E9 (unchanged)
|
|
129
|
+
|
|
130
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
131
|
+
// BORDER
|
|
132
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
133
|
+
--er-border-default: var(--er-elevation-200); // border/default = elevation/200 = #F8F9FB @ 12.16%
|
|
134
|
+
--er-border-subtle: var(--er-elevation-100); // border/subtle = elevation/100 @ 7.84%
|
|
135
|
+
--er-border-strong: var(--er-elevation-400); // border/strong = elevation/400 @ 23.92%
|
|
136
|
+
--er-border-on-action: var(--er-neutral-50); // neutral/50 = #FAFAFA (unchanged)
|
|
137
|
+
|
|
138
|
+
// Semantic borders — unchanged (alpha-based or solid brand hues)
|
|
139
|
+
--er-border-brand: var(--er-primary-default); // primary/default = #F97316 (unchanged)
|
|
140
|
+
--er-border-brand-subtle: var(--er-primary-alpha-300); // primary alpha/300 @ 20% (unchanged)
|
|
141
|
+
|
|
142
|
+
--er-border-success: var(--er-success-default); // success/default = #10B981 (unchanged)
|
|
143
|
+
--er-border-success-subtle: var(--er-success-alpha-300); // success alpha/300 @ 20% (unchanged)
|
|
144
|
+
|
|
145
|
+
--er-border-warning: var(--er-warning-default); // warning/default = #F59E0B (unchanged)
|
|
146
|
+
--er-border-warning-subtle: var(--er-warning-alpha-300); // warning alpha/300 @ 20% (unchanged)
|
|
147
|
+
|
|
148
|
+
--er-border-danger: var(--er-danger-default); // danger/default = #EF4444 (unchanged)
|
|
149
|
+
--er-border-danger-subtle: var(--er-danger-alpha-300); // danger alpha/300 @ 20% (unchanged)
|
|
150
|
+
|
|
151
|
+
--er-border-information: var(--er-information-default); // information/default = #0EA5E9 (unchanged)
|
|
152
|
+
--er-border-information-subtle: var(--er-information-alpha-300); // information alpha/300 @ 20% (unchanged)
|
|
153
|
+
|
|
154
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
155
|
+
// SHADOW
|
|
156
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
157
|
+
// Ambient shadows (black with varying opacity)
|
|
158
|
+
--er-shadow-ambient-01: rgba(0, 0, 0, 0.16); // 16% (light: 4%)
|
|
159
|
+
--er-shadow-ambient-02: rgba(0, 0, 0, 0.2); // 20% (light: 6%)
|
|
160
|
+
--er-shadow-ambient-03: rgba(0, 0, 0, 0.24); // 24% (light: 8%)
|
|
161
|
+
--er-shadow-ambient-04: rgba(0, 0, 0, 0.28); // 28% (light: 10%)
|
|
162
|
+
--er-shadow-ambient-05: rgba(0, 0, 0, 0.32); // 32% (light: 12%)
|
|
163
|
+
|
|
164
|
+
// Highlight shadows (white with varying opacity)
|
|
165
|
+
--er-shadow-highlight-01: rgba(255, 255, 255, 0.03); // 3% (light: 0%)
|
|
166
|
+
--er-shadow-highlight-02: rgba(255, 255, 255, 0.05); // 5% (light: 0%)
|
|
167
|
+
--er-shadow-highlight-03: rgba(255, 255, 255, 0.07); // 7% (light: 0%)
|
|
168
|
+
|
|
169
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
170
|
+
// COMPONENT-SPECIFIC TOKENS
|
|
171
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
172
|
+
// Segmented control (Figma: component/segmented/*)
|
|
173
|
+
--er-component-segmented-item-hover: var(
|
|
174
|
+
--er-action-neutral-subtle-hover
|
|
175
|
+
); // same as light
|
|
176
|
+
--er-component-segmented-item-active: var(--er-surface-muted); // surface/muted
|
|
177
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// BORDER RADIUS TOKENS
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Source: Figma UI Kit Production - Shape - Corner radius scale
|
|
5
|
+
// Node: 36930:106
|
|
6
|
+
// Version: 1.0.0
|
|
7
|
+
// ============================================================================
|
|
8
|
+
|
|
9
|
+
:root {
|
|
10
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
11
|
+
// CORNER RADIUS SCALE (13 values from Figma)
|
|
12
|
+
// Figma variables: shape/corner/* → SCSS: --er-shape-corner-*
|
|
13
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
14
|
+
|
|
15
|
+
--er-shape-corner-0: 0; // Figma: shape/corner/0 - core 0
|
|
16
|
+
--er-shape-corner-25: 2px; // Figma: shape/corner/25 - core 2
|
|
17
|
+
--er-shape-corner-50: 4px; // Figma: shape/corner/50 - core 4
|
|
18
|
+
--er-shape-corner-75: 6px; // Figma: shape/corner/75 - core 6
|
|
19
|
+
--er-shape-corner-100: 8px; // Figma: shape/corner/100 - core 8
|
|
20
|
+
--er-shape-corner-150: 12px; // Figma: shape/corner/150 - core 12
|
|
21
|
+
--er-shape-corner-200: 16px; // Figma: shape/corner/200 - core 16
|
|
22
|
+
--er-shape-corner-250: 20px; // Figma: shape/corner/250 - core 20
|
|
23
|
+
--er-shape-corner-300: 24px; // Figma: shape/corner/300 - core 24
|
|
24
|
+
--er-shape-corner-350: 28px; // Figma: shape/corner/350 - core 28
|
|
25
|
+
--er-shape-corner-400: 32px; // Figma: shape/corner/400 - core 32
|
|
26
|
+
--er-shape-corner-450: 48px; // Figma: shape/corner/450 - core 48
|
|
27
|
+
--er-shape-corner-full: 1000px; // Figma: shape/corner/full - core 1000, pill/stadium shape (CSS clamps to height/2)
|
|
28
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// CONTROL / COMPONENT HEIGHT TOKENS
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Source: Figma UI Kit Production - Control height scale
|
|
5
|
+
// Values alias the shape/spacing/* scale
|
|
6
|
+
// Version: 1.1.0
|
|
7
|
+
// ============================================================================
|
|
8
|
+
|
|
9
|
+
:root {
|
|
10
|
+
--er-control-height-xxs: var(--er-shape-spacing-200); // 16px - Figma: xxs → shape/spacing/200
|
|
11
|
+
--er-control-height-xs: var(--er-shape-spacing-250); // 20px - Figma: xs → shape/spacing/250
|
|
12
|
+
--er-control-height-sm: var(--er-shape-spacing-300); // 24px - Figma: sm → shape/spacing/300
|
|
13
|
+
--er-control-height-md: var(--er-shape-spacing-400); // 32px - Figma: md → shape/spacing/400
|
|
14
|
+
--er-control-height-lg: var(--er-shape-spacing-500); // 40px - Figma: lg → shape/spacing/500
|
|
15
|
+
--er-control-height-xl: var(--er-shape-spacing-600); // 48px - Figma: xl → shape/spacing/600
|
|
16
|
+
--er-control-height-2xl: var(--er-shape-spacing-800); // 64px - Figma: 2xl → shape/spacing/800
|
|
17
|
+
--er-control-height-3xl: var(--er-shape-spacing-900); // 72px - Figma: 3xl → shape/spacing/900
|
|
18
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
3
|
+
// SHAPE / SPACING SCALE (13 values from Figma)
|
|
4
|
+
// Figma variables: shape/spacing/* → CSS: --er-shape-spacing-*
|
|
5
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
6
|
+
|
|
7
|
+
--er-screen-desktop: 1376px;
|
|
8
|
+
--er-screen-tablet: 744px;
|
|
9
|
+
--er-screen-lg: 393px;
|
|
10
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// SPACING TOKENS (Shape / Spacing)
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Source: Figma UI Kit Production - Shape - Spacing scale
|
|
5
|
+
// Node: (from design tokens) — values follow Figma spacing scale
|
|
6
|
+
// Version: 1.0.0
|
|
7
|
+
// ============================================================================
|
|
8
|
+
|
|
9
|
+
:root {
|
|
10
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
11
|
+
// SHAPE / SPACING SCALE (14 values from Figma)
|
|
12
|
+
// Figma variables: shape/spacing/* → CSS: --er-shape-spacing-*
|
|
13
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
14
|
+
|
|
15
|
+
--er-shape-spacing-50: 4px; // Figma: shape/spacing/50 - core 4
|
|
16
|
+
--er-shape-spacing-75: 6px; // Figma: shape/spacing/75 - core 6
|
|
17
|
+
--er-shape-spacing-100: 8px; // Figma: shape/spacing/100 - core 8
|
|
18
|
+
--er-shape-spacing-150: 12px; // Figma: shape/spacing/150 - core 12
|
|
19
|
+
--er-shape-spacing-200: 16px; // Figma: shape/spacing/200 - core 16
|
|
20
|
+
--er-shape-spacing-250: 20px; // Figma: shape/spacing/250 - core 20
|
|
21
|
+
--er-shape-spacing-300: 24px; // Figma: shape/spacing/300 - core 24
|
|
22
|
+
--er-shape-spacing-400: 32px; // Figma: shape/spacing/400 - core 32
|
|
23
|
+
--er-shape-spacing-450: 36px; // Figma: shape/spacing/450 - core 36
|
|
24
|
+
--er-shape-spacing-500: 40px; // Figma: shape/spacing/500 - core 40
|
|
25
|
+
--er-shape-spacing-600: 48px; // Figma: shape/spacing/600 - core 48
|
|
26
|
+
--er-shape-spacing-700: 56px; // Figma: shape/spacing/700 - core 56
|
|
27
|
+
--er-shape-spacing-800: 64px; // Figma: shape/spacing/800 - core 64
|
|
28
|
+
--er-shape-spacing-900: 72px; // Figma: shape/spacing/900 - core 72
|
|
29
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
// NOTE: Google Fonts (Geist) are loaded via <link> tags in nuxt.config.ts app.head
|
|
2
|
+
// (preconnect + stylesheet) instead of a render-blocking CSS @import.
|
|
3
|
+
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// TYPOGRAPHY TOKENS
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Typography system for clear, scalable, and consistent interfaces
|
|
8
|
+
// Source: Figma UI Kit Production - Typography v1.0.0
|
|
9
|
+
// File: https://www.figma.com/design/I9lA8XsNx4Tmn9d0dysJ2A/UI-KIT---PRODUCT
|
|
10
|
+
// Frame: Typography (36924:101)
|
|
11
|
+
//
|
|
12
|
+
// Font: Geist
|
|
13
|
+
// Naming: typo/{category}-{size}/{property}
|
|
14
|
+
// Categories: dis (Display), head (Headline), title (Title), label (Label), body (Body)
|
|
15
|
+
// Sizes: lg (Large), md (Medium), sm (Small)
|
|
16
|
+
// Properties: font, sz, line-hg, wg, tracking
|
|
17
|
+
// IMPORTANT: Variable names MUST match Figma exactly:
|
|
18
|
+
// - font (NOT family)
|
|
19
|
+
// - sz (NOT size)
|
|
20
|
+
// - line-hg (NOT line-height)
|
|
21
|
+
// - wg (NOT weight)
|
|
22
|
+
// - tracking (NOT letter-spacing)
|
|
23
|
+
// ============================================================================
|
|
24
|
+
|
|
25
|
+
:root {
|
|
26
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
27
|
+
// DISPLAY (Largest text: Hero sections, marketing pages)
|
|
28
|
+
// Frame 36924:291 onwards
|
|
29
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
30
|
+
|
|
31
|
+
// Display Large - 57/64 Regular (Frame 36924:292)
|
|
32
|
+
// typo/dis-lg/{property}
|
|
33
|
+
--er-typo-dis-lg-font: var(--er-font-brand);
|
|
34
|
+
--er-typo-dis-lg-sz: 57px;
|
|
35
|
+
--er-typo-dis-lg-line-hg: 64px;
|
|
36
|
+
--er-typo-dis-lg-wg: var(--er-wg-regular); // Regular
|
|
37
|
+
--er-typo-dis-lg-wg-em: var(--er-wg-semi); // Semi
|
|
38
|
+
--er-typo-dis-lg-tracking: -0.25px;
|
|
39
|
+
|
|
40
|
+
// Display Medium - 45/52 Regular (Frame 36924:299)
|
|
41
|
+
// typo/dis-md/{property}
|
|
42
|
+
--er-typo-dis-md-font: var(--er-font-brand);
|
|
43
|
+
--er-typo-dis-md-sz: 45px;
|
|
44
|
+
--er-typo-dis-md-line-hg: 52px;
|
|
45
|
+
--er-typo-dis-md-wg: var(--er-wg-regular); // Regular
|
|
46
|
+
--er-typo-dis-md-wg-em: var(--er-wg-semi); // Semi
|
|
47
|
+
--er-typo-dis-md-tracking: 0;
|
|
48
|
+
|
|
49
|
+
// Display Small - 36/44 Regular (Frame 36924:306)
|
|
50
|
+
// typo/dis-sm/{property}
|
|
51
|
+
--er-typo-dis-sm-font: var(--er-font-brand);
|
|
52
|
+
--er-typo-dis-sm-sz: 36px;
|
|
53
|
+
--er-typo-dis-sm-line-hg: 44px;
|
|
54
|
+
--er-typo-dis-sm-wg: var(--er-wg-regular); // Regular
|
|
55
|
+
--er-typo-dis-sm-wg-em: var(--er-wg-semi); // Semi
|
|
56
|
+
--er-typo-dis-sm-tracking: 0;
|
|
57
|
+
|
|
58
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
59
|
+
// HEADLINE (Page titles, section headers)
|
|
60
|
+
// Frame 36924:313 onwards
|
|
61
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
62
|
+
|
|
63
|
+
// Headline Large - 32/40 Regular (Frame 36924:313)
|
|
64
|
+
// typo/head-lg/{property}
|
|
65
|
+
--er-typo-head-lg-font: var(--er-font-brand);
|
|
66
|
+
--er-typo-head-lg-sz: 32px;
|
|
67
|
+
--er-typo-head-lg-line-hg: 40px;
|
|
68
|
+
--er-typo-head-lg-wg: var(--er-wg-regular); // Regular
|
|
69
|
+
--er-typo-head-lg-wg-em: var(--er-wg-semi); // Semi
|
|
70
|
+
--er-typo-head-lg-tracking: 0;
|
|
71
|
+
|
|
72
|
+
// Headline Medium - 28/36 Regular (Frame 36924:320)
|
|
73
|
+
// typo/head-md/{property}
|
|
74
|
+
--er-typo-head-md-font: var(--er-font-brand);
|
|
75
|
+
--er-typo-head-md-sz: 28px;
|
|
76
|
+
--er-typo-head-md-line-hg: 36px;
|
|
77
|
+
--er-typo-head-md-wg: var(--er-wg-regular); // Regular
|
|
78
|
+
--er-typo-head-md-wg-em: var(--er-wg-semi); // Semi
|
|
79
|
+
--er-typo-head-md-tracking: 0;
|
|
80
|
+
|
|
81
|
+
// Headline Small - 24/32 Regular (Frame 36924:327)
|
|
82
|
+
// typo/head-sm/{property}
|
|
83
|
+
--er-typo-head-sm-font: var(--er-font-brand);
|
|
84
|
+
--er-typo-head-sm-sz: 24px;
|
|
85
|
+
--er-typo-head-sm-line-hg: 32px;
|
|
86
|
+
--er-typo-head-sm-wg: var(--er-wg-regular); // Regular
|
|
87
|
+
--er-typo-head-sm-wg-em: var(--er-wg-semi); // Semi
|
|
88
|
+
--er-typo-head-sm-tracking: 0;
|
|
89
|
+
|
|
90
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
91
|
+
// TITLE (Card titles, dialog headers, component headings)
|
|
92
|
+
// Frame 36924:334 onwards
|
|
93
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
94
|
+
|
|
95
|
+
// Title Large - 20/28 Regular (Frame 36924:334)
|
|
96
|
+
// typo/title-lg/{property}
|
|
97
|
+
--er-typo-title-lg-font: var(--er-font-brand);
|
|
98
|
+
--er-typo-title-lg-sz: 20px;
|
|
99
|
+
--er-typo-title-lg-line-hg: 28px;
|
|
100
|
+
--er-typo-title-lg-wg: var(--er-wg-semi); // Semi
|
|
101
|
+
--er-typo-title-lg-wg-em: var(--er-wg-bold); // Bold
|
|
102
|
+
--er-typo-title-lg-tracking: 0;
|
|
103
|
+
|
|
104
|
+
// Title Medium - 16/24 Medium (Frame 36924:341)
|
|
105
|
+
// typo/title-md/{property}
|
|
106
|
+
--er-typo-title-md-font: var(--er-font-brand);
|
|
107
|
+
--er-typo-title-md-sz: 16px;
|
|
108
|
+
--er-typo-title-md-line-hg: 24px;
|
|
109
|
+
--er-typo-title-md-wg: var(--er-wg-semi); // Medium
|
|
110
|
+
--er-typo-title-md-wg-em: var(--er-wg-bold); // Semi Bold
|
|
111
|
+
--er-typo-title-md-tracking: 0.15px;
|
|
112
|
+
|
|
113
|
+
// Title Small - 14/20 Medium (Frame 36924:348)
|
|
114
|
+
// typo/title-sm/{property}
|
|
115
|
+
--er-typo-title-sm-font: var(--er-font-brand);
|
|
116
|
+
--er-typo-title-sm-sz: 14px;
|
|
117
|
+
--er-typo-title-sm-line-hg: 20px;
|
|
118
|
+
--er-typo-title-sm-wg: var(--er-wg-semi); // Medium
|
|
119
|
+
--er-typo-title-sm-wg-em: var(--er-wg-bold); // Semi Bold
|
|
120
|
+
--er-typo-title-sm-tracking: 0.1px;
|
|
121
|
+
|
|
122
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
123
|
+
// LABEL (Form labels, button text, badges, chips)
|
|
124
|
+
// Frame 36924:355 onwards
|
|
125
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
126
|
+
|
|
127
|
+
// Label Large - 14/20 Medium (Frame 36924:355)
|
|
128
|
+
// typo/label-lg/{property}
|
|
129
|
+
--er-typo-label-lg-font: var(--er-font-brand);
|
|
130
|
+
--er-typo-label-lg-sz: 14px;
|
|
131
|
+
--er-typo-label-lg-line-hg: 20px;
|
|
132
|
+
--er-typo-label-lg-wg: var(--er-wg-semi); // Medium
|
|
133
|
+
--er-typo-label-lg-wg-em: var(--er-wg-bold); // Semi Bold
|
|
134
|
+
--er-typo-label-lg-tracking: 0.1px;
|
|
135
|
+
|
|
136
|
+
// Label Medium - 12/16 Medium (Frame 36924:362)
|
|
137
|
+
// typo/label-md/{property}
|
|
138
|
+
--er-typo-label-md-font: var(--er-font-brand);
|
|
139
|
+
--er-typo-label-md-sz: 12px;
|
|
140
|
+
--er-typo-label-md-line-hg: 16px;
|
|
141
|
+
--er-typo-label-md-wg: var(--er-wg-semi); // Semi Bold
|
|
142
|
+
--er-typo-label-md-wg-em: var(--er-wg-bold); // Bold
|
|
143
|
+
--er-typo-label-md-tracking: 0.5px;
|
|
144
|
+
|
|
145
|
+
// Label Small - 11/16 Medium (Frame 36924:369)
|
|
146
|
+
// typo/label-sm/{property}
|
|
147
|
+
--er-typo-label-sm-font: var(--er-font-brand);
|
|
148
|
+
--er-typo-label-sm-sz: 11px;
|
|
149
|
+
--er-typo-label-sm-line-hg: 16px;
|
|
150
|
+
--er-typo-label-sm-wg: var(--er-wg-semi); // Medium
|
|
151
|
+
--er-typo-label-sm-wg-em: var(--er-wg-bold); // Semi Bold
|
|
152
|
+
--er-typo-label-sm-tracking: 0.5px;
|
|
153
|
+
|
|
154
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
155
|
+
// BODY (Paragraphs, descriptions, table content)
|
|
156
|
+
// Frame 36924:376 onwards
|
|
157
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
158
|
+
|
|
159
|
+
// Body Large - 16/24 Regular (Frame 36924:376)
|
|
160
|
+
// typo/body-lg/{property}
|
|
161
|
+
--er-typo-body-lg-font: var(--er-font-brand);
|
|
162
|
+
--er-typo-body-lg-sz: 16px;
|
|
163
|
+
--er-typo-body-lg-line-hg: 24px;
|
|
164
|
+
--er-typo-body-lg-wg: var(--er-wg-regular); // Regular
|
|
165
|
+
--er-typo-body-lg-wg-em: var(--er-wg-semi); // Semi
|
|
166
|
+
--er-typo-body-lg-tracking: 0.5px;
|
|
167
|
+
|
|
168
|
+
// Body Medium - 14/20 Regular (Frame 36924:383)
|
|
169
|
+
// typo/body-md/{property}
|
|
170
|
+
--er-typo-body-md-font: var(--er-font-brand);
|
|
171
|
+
--er-typo-body-md-sz: 14px;
|
|
172
|
+
--er-typo-body-md-line-hg: 20px;
|
|
173
|
+
--er-typo-body-md-wg: var(--er-wg-regular); // Regular
|
|
174
|
+
--er-typo-body-md-wg-em: var(--er-wg-semi); // Semi
|
|
175
|
+
--er-typo-body-md-tracking: 0.25px;
|
|
176
|
+
|
|
177
|
+
// Body Small - 12/16 Regular (Frame 36924:390)
|
|
178
|
+
// typo/body-sm/{property}
|
|
179
|
+
--er-typo-body-sm-font: var(--er-font-brand);
|
|
180
|
+
--er-typo-body-sm-sz: 12px;
|
|
181
|
+
--er-typo-body-sm-line-hg: 16px;
|
|
182
|
+
--er-typo-body-sm-wg: var(--er-wg-regular); // Regular
|
|
183
|
+
--er-typo-body-sm-wg-em: var(--er-wg-semi); // Semi
|
|
184
|
+
--er-typo-body-sm-tracking: 0.4px;
|
|
185
|
+
}
|