@aiaiai-pt/design-system 0.1.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/components/Alert.svelte +100 -0
- package/components/Badge.svelte +108 -0
- package/components/BottomNav.svelte +37 -0
- package/components/BottomNavItem.svelte +121 -0
- package/components/Button.svelte +269 -0
- package/components/Card.svelte +108 -0
- package/components/Checkbox.svelte +138 -0
- package/components/CodeBlock.svelte +187 -0
- package/components/CodeEditor.svelte +221 -0
- package/components/CollapsibleSection.svelte +160 -0
- package/components/Combobox.svelte +396 -0
- package/components/EmptyState.svelte +148 -0
- package/components/FileUpload.svelte +280 -0
- package/components/FileUploadItem.svelte +222 -0
- package/components/Input.svelte +222 -0
- package/components/KeyValue.svelte +79 -0
- package/components/Label.svelte +49 -0
- package/components/List.svelte +70 -0
- package/components/ListItem.svelte +125 -0
- package/components/Menu.svelte +161 -0
- package/components/MenuItem.svelte +120 -0
- package/components/MenuSeparator.svelte +34 -0
- package/components/Modal.svelte +260 -0
- package/components/OptionGrid.svelte +195 -0
- package/components/Panel.svelte +256 -0
- package/components/Popover.svelte +194 -0
- package/components/Progress.svelte +78 -0
- package/components/Select.svelte +182 -0
- package/components/Separator.svelte +47 -0
- package/components/Sidebar.svelte +106 -0
- package/components/SidebarItem.svelte +154 -0
- package/components/SidebarSection.svelte +43 -0
- package/components/Skeleton.svelte +79 -0
- package/components/Status.svelte +104 -0
- package/components/Stepper.svelte +142 -0
- package/components/Tab.svelte +94 -0
- package/components/TabList.svelte +36 -0
- package/components/TabPanel.svelte +45 -0
- package/components/Tabs.svelte +46 -0
- package/components/Tag.svelte +96 -0
- package/components/Textarea.svelte +143 -0
- package/components/Toast.svelte +114 -0
- package/components/Toggle.svelte +132 -0
- package/components/index.js +70 -0
- package/package.json +45 -0
- package/tokens/base.css +175 -0
- package/tokens/components.css +530 -0
- package/tokens/semantic.css +211 -0
- package/tokens/themes/aiaiai.css +53 -0
- package/tokens/themes/bespoke-example.css +148 -0
- package/tokens/themes/branded-example.css +55 -0
- package/tokens/utilities.css +1865 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* aiaiai Design System — Semantic Tokens (semantic.css)
|
|
3
|
+
*
|
|
4
|
+
* Role-based aliases that themes override.
|
|
5
|
+
* These are what components and layouts should reference.
|
|
6
|
+
* Never use --raw-* tokens directly in components.
|
|
7
|
+
*
|
|
8
|
+
* Naming: --{category}-{role}
|
|
9
|
+
* Categories: color, type, space, radius, elevation, duration, easing, grid
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
:root {
|
|
13
|
+
/* ═══════════════════════════════════════════════
|
|
14
|
+
COLOR — Surfaces, Text, Accents, Semantic
|
|
15
|
+
═══════════════════════════════════════════════ */
|
|
16
|
+
|
|
17
|
+
/* Surfaces */
|
|
18
|
+
--color-surface: var(--raw-color-neutral-50);
|
|
19
|
+
--color-surface-secondary: var(--raw-color-neutral-100);
|
|
20
|
+
--color-surface-tertiary: var(--raw-color-neutral-200);
|
|
21
|
+
--color-overlay: rgba(44, 40, 37, 0.5);
|
|
22
|
+
|
|
23
|
+
/* Borders */
|
|
24
|
+
--color-border: var(--raw-color-neutral-300);
|
|
25
|
+
--color-border-strong: var(--raw-color-neutral-400);
|
|
26
|
+
|
|
27
|
+
/* Text */
|
|
28
|
+
--color-text: var(--raw-color-neutral-900);
|
|
29
|
+
--color-text-secondary: var(--raw-color-neutral-600);
|
|
30
|
+
--color-text-muted: var(--raw-color-neutral-500);
|
|
31
|
+
--color-text-on-accent: var(--raw-color-white);
|
|
32
|
+
|
|
33
|
+
/* Accent (orange — creation, focus, primary action) */
|
|
34
|
+
--color-accent: var(--raw-color-orange-500);
|
|
35
|
+
--color-accent-hover: var(--raw-color-orange-600);
|
|
36
|
+
--color-accent-subtle: var(--raw-color-orange-100);
|
|
37
|
+
|
|
38
|
+
/* Destructive (red — danger, errors, deletion) */
|
|
39
|
+
--color-destructive: var(--raw-color-red-600);
|
|
40
|
+
--color-destructive-hover: var(--raw-color-red-700);
|
|
41
|
+
--color-destructive-subtle: var(--raw-color-red-50);
|
|
42
|
+
|
|
43
|
+
/* Success (green — confirmation, positive) */
|
|
44
|
+
--color-success: var(--raw-color-green-600);
|
|
45
|
+
--color-success-subtle: var(--raw-color-green-50);
|
|
46
|
+
|
|
47
|
+
/* Warning (amber — caution, attention) */
|
|
48
|
+
--color-warning: var(--raw-color-amber-600);
|
|
49
|
+
--color-warning-subtle: var(--raw-color-amber-50);
|
|
50
|
+
|
|
51
|
+
/* Info (blue — information, links) */
|
|
52
|
+
--color-info: var(--raw-color-blue-600);
|
|
53
|
+
--color-info-subtle: var(--raw-color-blue-50);
|
|
54
|
+
|
|
55
|
+
/* ═══════════════════════════════════════════════
|
|
56
|
+
TYPOGRAPHY
|
|
57
|
+
═══════════════════════════════════════════════ */
|
|
58
|
+
|
|
59
|
+
/* Font families */
|
|
60
|
+
--font-sans: var(--raw-font-sans);
|
|
61
|
+
--font-mono: var(--raw-font-mono);
|
|
62
|
+
|
|
63
|
+
/* Type scale — categorical */
|
|
64
|
+
--type-display-size: var(--raw-font-size-36);
|
|
65
|
+
--type-display-weight: var(--raw-font-weight-semibold);
|
|
66
|
+
--type-display-leading: var(--raw-line-height-tight);
|
|
67
|
+
--type-display-tracking: var(--raw-tracking-tight);
|
|
68
|
+
--type-display-font: var(--font-sans);
|
|
69
|
+
|
|
70
|
+
--type-heading-lg-size: var(--raw-font-size-24);
|
|
71
|
+
--type-heading-lg-weight: var(--raw-font-weight-medium);
|
|
72
|
+
--type-heading-lg-leading: var(--raw-line-height-snug);
|
|
73
|
+
--type-heading-lg-tracking: var(--raw-tracking-snug);
|
|
74
|
+
--type-heading-lg-font: var(--font-sans);
|
|
75
|
+
|
|
76
|
+
--type-heading-size: var(--raw-font-size-18);
|
|
77
|
+
--type-heading-weight: var(--raw-font-weight-medium);
|
|
78
|
+
--type-heading-leading: var(--raw-line-height-heading);
|
|
79
|
+
--type-heading-tracking: var(--raw-tracking-heading);
|
|
80
|
+
--type-heading-font: var(--font-sans);
|
|
81
|
+
|
|
82
|
+
--type-heading-sm-size: var(--raw-font-size-15);
|
|
83
|
+
--type-heading-sm-weight: var(--raw-font-weight-medium);
|
|
84
|
+
--type-heading-sm-leading: var(--raw-line-height-relaxed);
|
|
85
|
+
--type-heading-sm-tracking: var(--raw-tracking-normal);
|
|
86
|
+
--type-heading-sm-font: var(--font-sans);
|
|
87
|
+
|
|
88
|
+
--type-body-size: var(--raw-font-size-15);
|
|
89
|
+
--type-body-weight: var(--raw-font-weight-regular);
|
|
90
|
+
--type-body-leading: var(--raw-line-height-body);
|
|
91
|
+
--type-body-tracking: var(--raw-tracking-normal);
|
|
92
|
+
--type-body-font: var(--font-sans);
|
|
93
|
+
|
|
94
|
+
--type-body-sm-size: var(--raw-font-size-13);
|
|
95
|
+
--type-body-sm-weight: var(--raw-font-weight-regular);
|
|
96
|
+
--type-body-sm-leading: var(--raw-line-height-body);
|
|
97
|
+
--type-body-sm-tracking: var(--raw-tracking-micro);
|
|
98
|
+
--type-body-sm-font: var(--font-sans);
|
|
99
|
+
|
|
100
|
+
--type-label-size: var(--raw-font-size-12);
|
|
101
|
+
--type-label-weight: var(--raw-font-weight-regular);
|
|
102
|
+
--type-label-leading: var(--raw-line-height-heading);
|
|
103
|
+
--type-label-tracking: var(--raw-tracking-wider);
|
|
104
|
+
--type-label-font: var(--font-mono);
|
|
105
|
+
|
|
106
|
+
--type-data-size: var(--raw-font-size-14);
|
|
107
|
+
--type-data-weight: var(--raw-font-weight-regular);
|
|
108
|
+
--type-data-leading: var(--raw-line-height-relaxed);
|
|
109
|
+
--type-data-tracking: var(--raw-tracking-normal);
|
|
110
|
+
--type-data-font: var(--font-mono);
|
|
111
|
+
|
|
112
|
+
--type-caption-size: var(--raw-font-size-11);
|
|
113
|
+
--type-caption-weight: var(--raw-font-weight-regular);
|
|
114
|
+
--type-caption-leading: var(--raw-line-height-relaxed);
|
|
115
|
+
--type-caption-tracking: var(--raw-tracking-wide);
|
|
116
|
+
--type-caption-font: var(--font-sans);
|
|
117
|
+
|
|
118
|
+
/* ═══════════════════════════════════════════════
|
|
119
|
+
SPACING
|
|
120
|
+
═══════════════════════════════════════════════ */
|
|
121
|
+
|
|
122
|
+
--space-2xs: var(--raw-space-2);
|
|
123
|
+
--space-xs: var(--raw-space-4);
|
|
124
|
+
--space-sm: var(--raw-space-8);
|
|
125
|
+
--space-md: var(--raw-space-16);
|
|
126
|
+
--space-lg: var(--raw-space-24);
|
|
127
|
+
--space-xl: var(--raw-space-32);
|
|
128
|
+
--space-2xl: var(--raw-space-48);
|
|
129
|
+
--space-3xl: var(--raw-space-64);
|
|
130
|
+
--space-4xl: var(--raw-space-96);
|
|
131
|
+
|
|
132
|
+
/* ═══════════════════════════════════════════════
|
|
133
|
+
BORDER WIDTH
|
|
134
|
+
═══════════════════════════════════════════════ */
|
|
135
|
+
|
|
136
|
+
--border-width: var(--raw-border-width-1);
|
|
137
|
+
--border-width-thick: var(--raw-border-width-2);
|
|
138
|
+
|
|
139
|
+
/* ═══════════════════════════════════════════════
|
|
140
|
+
GRID
|
|
141
|
+
═══════════════════════════════════════════════ */
|
|
142
|
+
|
|
143
|
+
--grid-columns: var(--raw-grid-columns);
|
|
144
|
+
--grid-gutter: var(--space-md);
|
|
145
|
+
--grid-margin: var(--space-md);
|
|
146
|
+
--content-width-narrow: var(--raw-content-640);
|
|
147
|
+
--content-width: var(--raw-content-960);
|
|
148
|
+
--content-width-wide: var(--raw-content-1200);
|
|
149
|
+
--content-width-full: var(--raw-content-1440);
|
|
150
|
+
|
|
151
|
+
/* ═══════════════════════════════════════════════
|
|
152
|
+
ELEVATION
|
|
153
|
+
═══════════════════════════════════════════════ */
|
|
154
|
+
|
|
155
|
+
--elevation-border: var(--border-width) solid var(--color-border);
|
|
156
|
+
--elevation-border-strong: var(--border-width) solid
|
|
157
|
+
var(--color-border-strong);
|
|
158
|
+
--elevation-raised: var(--raw-shadow-sm);
|
|
159
|
+
--elevation-overlay: var(--raw-shadow-md);
|
|
160
|
+
|
|
161
|
+
/* ═══════════════════════════════════════════════
|
|
162
|
+
RADIUS
|
|
163
|
+
═══════════════════════════════════════════════ */
|
|
164
|
+
|
|
165
|
+
--radius-sm: var(--raw-radius-2);
|
|
166
|
+
--radius-md: var(--raw-radius-4);
|
|
167
|
+
--radius-lg: var(--raw-radius-8);
|
|
168
|
+
--radius-pill: var(--raw-radius-999);
|
|
169
|
+
--radius-circle: var(--raw-radius-circle);
|
|
170
|
+
|
|
171
|
+
/* ═══════════════════════════════════════════════
|
|
172
|
+
MOTION
|
|
173
|
+
═══════════════════════════════════════════════ */
|
|
174
|
+
|
|
175
|
+
--duration-instant: var(--raw-duration-100);
|
|
176
|
+
--duration-fast: var(--raw-duration-150);
|
|
177
|
+
--duration-normal: var(--raw-duration-250);
|
|
178
|
+
--duration-slow: var(--raw-duration-400);
|
|
179
|
+
--duration-dramatic: var(--raw-duration-600);
|
|
180
|
+
|
|
181
|
+
--easing-default: var(--raw-easing-default);
|
|
182
|
+
--easing-enter: var(--raw-easing-enter);
|
|
183
|
+
--easing-exit: var(--raw-easing-exit);
|
|
184
|
+
--easing-linear: var(--raw-easing-linear);
|
|
185
|
+
|
|
186
|
+
/* ═══════════════════════════════════════════════
|
|
187
|
+
RESPONSIVE OVERRIDES
|
|
188
|
+
═══════════════════════════════════════════════ */
|
|
189
|
+
|
|
190
|
+
/* Content area spacing — mobile defaults */
|
|
191
|
+
--content-padding-x: var(--space-md);
|
|
192
|
+
--content-padding-y: var(--space-lg);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/* ─── Tablet (768px+) ─── */
|
|
196
|
+
@media (min-width: 768px) {
|
|
197
|
+
:root {
|
|
198
|
+
--content-padding-x: var(--space-lg);
|
|
199
|
+
--content-padding-y: var(--space-xl);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/* ─── Desktop (1024px+) ─── */
|
|
204
|
+
@media (min-width: 1024px) {
|
|
205
|
+
:root {
|
|
206
|
+
--grid-gutter: var(--space-lg);
|
|
207
|
+
--grid-margin: var(--space-2xl);
|
|
208
|
+
--content-padding-x: var(--space-xl);
|
|
209
|
+
--content-padding-y: var(--space-2xl);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* aiaiai Design System — Default Theme (aiaiai.css)
|
|
3
|
+
*
|
|
4
|
+
* The canonical aiaiai studio theme.
|
|
5
|
+
* This is applied via [data-theme="aiaiai"] on <html> or as the :root default.
|
|
6
|
+
* All other themes override this baseline.
|
|
7
|
+
*
|
|
8
|
+
* Import order:
|
|
9
|
+
* @import '../base.css';
|
|
10
|
+
* @import '../semantic.css';
|
|
11
|
+
* @import '../components.css';
|
|
12
|
+
* @import './aiaiai.css';
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
[data-theme="aiaiai"],
|
|
16
|
+
:root {
|
|
17
|
+
/*
|
|
18
|
+
* The default theme uses all semantic.css values as-is.
|
|
19
|
+
* This file exists to:
|
|
20
|
+
* 1. Document that the defaults ARE the aiaiai theme
|
|
21
|
+
* 2. Serve as the template for creating new themes
|
|
22
|
+
* 3. Allow runtime theme switching via data-theme attribute
|
|
23
|
+
*
|
|
24
|
+
* If you need to tweak the default aiaiai look, change semantic.css.
|
|
25
|
+
* This file only overrides when the aiaiai theme diverges from
|
|
26
|
+
* the semantic defaults (which it doesn't, by definition).
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/* ─── Studio identity markers ─── */
|
|
30
|
+
/* These are documented here for clarity — they're the values
|
|
31
|
+
that make something "look like aiaiai" */
|
|
32
|
+
|
|
33
|
+
/* Warm paper surface (never clinical white) */
|
|
34
|
+
/* --color-surface: #f7f5f3 (set in semantic.css) */
|
|
35
|
+
|
|
36
|
+
/* Orange accent: creation, focus */
|
|
37
|
+
/* --color-accent: #ff6b35 (set in semantic.css) */
|
|
38
|
+
|
|
39
|
+
/* Warm dark brown text (never pure black) */
|
|
40
|
+
/* --color-text: #2c2825 (set in semantic.css) */
|
|
41
|
+
|
|
42
|
+
/* Borders > shadows (exposed mechanism) */
|
|
43
|
+
/* --elevation-border: 1px solid var(--color-border) (set in semantic.css) */
|
|
44
|
+
|
|
45
|
+
/* Sharp radii (precision instrument) */
|
|
46
|
+
/* --radius-sm: 2px (set in semantic.css) */
|
|
47
|
+
|
|
48
|
+
/* Berkeley Mono for labels and data (the mechanism) */
|
|
49
|
+
/* --font-mono: 'Berkeley Mono', ... (set in semantic.css) */
|
|
50
|
+
|
|
51
|
+
/* Instrument Sans for prose (the Swiss canvas) */
|
|
52
|
+
/* --font-sans: 'Instrument Sans', ... (set in semantic.css) */
|
|
53
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* aiaiai Design System — Tier 2: Bespoke Theme Example
|
|
3
|
+
*
|
|
4
|
+
* Example: A fictional children's learning app "Sprout"
|
|
5
|
+
*
|
|
6
|
+
* Tier 2 rules:
|
|
7
|
+
* - Override 40-80 tokens (full personality shift)
|
|
8
|
+
* - Change: full color palette, typography, surface materials,
|
|
9
|
+
* motion personality, elevation style, radius language
|
|
10
|
+
* - Keep: spacing scale (8px grid), grid structure,
|
|
11
|
+
* accessibility minimums, token naming convention
|
|
12
|
+
*
|
|
13
|
+
* Use case: Client-facing consumer products where aiaiai builds
|
|
14
|
+
* something that doesn't look like aiaiai
|
|
15
|
+
*
|
|
16
|
+
* Apply via: <html data-theme="bespoke-example">
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
[data-theme="bespoke-example"] {
|
|
20
|
+
/* ═══════════════════════════════════════════════
|
|
21
|
+
COLOR — Full palette override (20 tokens)
|
|
22
|
+
═══════════════════════════════════════════════ */
|
|
23
|
+
|
|
24
|
+
/* Surfaces: brighter, more playful */
|
|
25
|
+
--color-surface: #fffdf7;
|
|
26
|
+
--color-surface-secondary: #fef9ec;
|
|
27
|
+
--color-surface-tertiary: #fdf0d5;
|
|
28
|
+
--color-overlay: rgba(60, 40, 10, 0.4);
|
|
29
|
+
|
|
30
|
+
/* Borders: softer */
|
|
31
|
+
--color-border: #f0e4c8;
|
|
32
|
+
--color-border-strong: #dbc89a;
|
|
33
|
+
|
|
34
|
+
/* Text: darker for children's readability */
|
|
35
|
+
--color-text: #2d2006;
|
|
36
|
+
--color-text-secondary: #6b5c3e;
|
|
37
|
+
--color-text-muted: #a09070;
|
|
38
|
+
--color-text-on-accent: #ffffff;
|
|
39
|
+
|
|
40
|
+
/* Accent: playful purple */
|
|
41
|
+
--color-accent: #7c3aed;
|
|
42
|
+
--color-accent-hover: #6d28d9;
|
|
43
|
+
--color-accent-subtle: #f5f3ff;
|
|
44
|
+
|
|
45
|
+
/* Destructive: softer red */
|
|
46
|
+
--color-destructive: #e11d48;
|
|
47
|
+
--color-destructive-hover: #be123c;
|
|
48
|
+
--color-destructive-subtle: #fff1f2;
|
|
49
|
+
|
|
50
|
+
/* Success: brighter green */
|
|
51
|
+
--color-success: #059669;
|
|
52
|
+
--color-success-subtle: #ecfdf5;
|
|
53
|
+
|
|
54
|
+
/* Warning */
|
|
55
|
+
--color-warning: #d97706;
|
|
56
|
+
--color-warning-subtle: #fffbeb;
|
|
57
|
+
|
|
58
|
+
/* Info */
|
|
59
|
+
--color-info: #2563eb;
|
|
60
|
+
--color-info-subtle: #eff6ff;
|
|
61
|
+
|
|
62
|
+
/* ═══════════════════════════════════════════════
|
|
63
|
+
TYPOGRAPHY — Full override (10 tokens)
|
|
64
|
+
═══════════════════════════════════════════════ */
|
|
65
|
+
|
|
66
|
+
/* Different font families entirely */
|
|
67
|
+
--font-sans: "Nunito", "Quicksand", sans-serif;
|
|
68
|
+
--font-mono: "Space Mono", ui-monospace, monospace;
|
|
69
|
+
|
|
70
|
+
/* Slightly larger base sizes for children */
|
|
71
|
+
--type-body-size: var(--raw-font-size-18);
|
|
72
|
+
--type-body-sm-size: var(--raw-font-size-15);
|
|
73
|
+
--type-label-size: var(--raw-font-size-13);
|
|
74
|
+
--type-data-size: var(--raw-font-size-15);
|
|
75
|
+
--type-heading-size: var(--raw-font-size-24);
|
|
76
|
+
--type-heading-lg-size: var(--raw-font-size-36);
|
|
77
|
+
|
|
78
|
+
/* Label uses sans, not mono (less technical feel) */
|
|
79
|
+
--type-label-font: var(--font-sans);
|
|
80
|
+
--type-label-tracking: var(--raw-tracking-loose);
|
|
81
|
+
|
|
82
|
+
/* ═══════════════════════════════════════════════
|
|
83
|
+
ELEVATION — Shadows instead of borders (4 tokens)
|
|
84
|
+
═══════════════════════════════════════════════ */
|
|
85
|
+
|
|
86
|
+
--elevation-border: none;
|
|
87
|
+
--elevation-border-strong: none;
|
|
88
|
+
--elevation-raised:
|
|
89
|
+
0 2px 8px rgba(60, 40, 10, 0.1), 0 1px 3px rgba(60, 40, 10, 0.08);
|
|
90
|
+
--elevation-overlay:
|
|
91
|
+
0 8px 32px rgba(60, 40, 10, 0.15), 0 4px 8px rgba(60, 40, 10, 0.1);
|
|
92
|
+
|
|
93
|
+
/* ═══════════════════════════════════════════════
|
|
94
|
+
RADIUS — Rounded, friendly (5 tokens)
|
|
95
|
+
═══════════════════════════════════════════════ */
|
|
96
|
+
|
|
97
|
+
--radius-sm: 8px;
|
|
98
|
+
--radius-md: 12px;
|
|
99
|
+
--radius-lg: 16px;
|
|
100
|
+
--radius-pill: 999px;
|
|
101
|
+
--radius-circle: 50%;
|
|
102
|
+
|
|
103
|
+
/* ═══════════════════════════════════════════════
|
|
104
|
+
MOTION — Bouncier, more playful (5 tokens)
|
|
105
|
+
═══════════════════════════════════════════════ */
|
|
106
|
+
|
|
107
|
+
--duration-instant: 120ms;
|
|
108
|
+
--duration-fast: 200ms;
|
|
109
|
+
--duration-normal: 350ms;
|
|
110
|
+
--duration-slow: 500ms;
|
|
111
|
+
|
|
112
|
+
/* Springy easing for playful feel */
|
|
113
|
+
--easing-default: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
114
|
+
--easing-enter: cubic-bezier(0.22, 1.2, 0.36, 1);
|
|
115
|
+
|
|
116
|
+
/* ═══════════════════════════════════════════════
|
|
117
|
+
COMPONENTS — Adjusted for new personality (10 tokens)
|
|
118
|
+
═══════════════════════════════════════════════ */
|
|
119
|
+
|
|
120
|
+
/* Buttons: larger, rounder, use sans for labels */
|
|
121
|
+
--button-font: var(--font-sans);
|
|
122
|
+
--button-tracking: var(--raw-tracking-normal);
|
|
123
|
+
--button-radius: var(--radius-md);
|
|
124
|
+
--button-sm-height: 32px;
|
|
125
|
+
--button-md-height: 44px;
|
|
126
|
+
--button-lg-height: 52px;
|
|
127
|
+
|
|
128
|
+
/* Inputs: rounder, softer */
|
|
129
|
+
--input-radius: var(--radius-sm);
|
|
130
|
+
|
|
131
|
+
/* Cards: elevated instead of bordered */
|
|
132
|
+
--card-bordered-border: none;
|
|
133
|
+
--card-bordered-shadow: var(--elevation-raised);
|
|
134
|
+
--card-radius: var(--radius-md);
|
|
135
|
+
|
|
136
|
+
/*
|
|
137
|
+
* What's preserved from the base system:
|
|
138
|
+
* - 8px spacing grid (non-negotiable)
|
|
139
|
+
* - Grid structure and breakpoints
|
|
140
|
+
* - Token naming convention
|
|
141
|
+
* - Accessibility minimums (contrast, touch targets)
|
|
142
|
+
* - Semantic color roles (accent, destructive, success, etc.)
|
|
143
|
+
*
|
|
144
|
+
* Total overrides: ~54 tokens
|
|
145
|
+
* The result is a completely different visual identity
|
|
146
|
+
* that still uses the same structural foundation.
|
|
147
|
+
*/
|
|
148
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* aiaiai Design System — Tier 1: Branded Theme Example
|
|
3
|
+
*
|
|
4
|
+
* Example: A fictional fintech client "Verdant Finance"
|
|
5
|
+
*
|
|
6
|
+
* Tier 1 rules:
|
|
7
|
+
* - Override < 20 semantic tokens
|
|
8
|
+
* - Change: accent color, secondary color, surface tint direction
|
|
9
|
+
* - Keep: typography, spacing, motion, grid, elevation, radius, warmth
|
|
10
|
+
*
|
|
11
|
+
* Use case: Client dashboards, whitelabel products, internal tools
|
|
12
|
+
*
|
|
13
|
+
* Apply via: <html data-theme="branded-example">
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
[data-theme="branded-example"] {
|
|
17
|
+
/* ─── Accent: teal instead of orange (12 tokens) ─── */
|
|
18
|
+
--color-accent: #0d9488;
|
|
19
|
+
--color-accent-hover: #0f766e;
|
|
20
|
+
--color-accent-subtle: #f0fdfa;
|
|
21
|
+
|
|
22
|
+
/* ─── Surface: cooler tint direction ─── */
|
|
23
|
+
--color-surface: #f8faf9;
|
|
24
|
+
--color-surface-secondary: #f0f4f2;
|
|
25
|
+
--color-surface-tertiary: #e4ebe7;
|
|
26
|
+
|
|
27
|
+
/* ─── Borders: slightly cooler ─── */
|
|
28
|
+
--color-border: #d4ddd8;
|
|
29
|
+
--color-border-strong: #a8b8b0;
|
|
30
|
+
|
|
31
|
+
/* ─── Text: still warm, slightly cooled ─── */
|
|
32
|
+
--color-text: #1a2c25;
|
|
33
|
+
--color-text-secondary: #4a6358;
|
|
34
|
+
--color-text-muted: #7a9488;
|
|
35
|
+
|
|
36
|
+
/* ─── Overlay: cool-tinted ─── */
|
|
37
|
+
--color-overlay: rgba(26, 44, 37, 0.5);
|
|
38
|
+
|
|
39
|
+
/* ─── Focus ring follows accent ─── */
|
|
40
|
+
--focus-ring-color: var(--color-accent);
|
|
41
|
+
|
|
42
|
+
/*
|
|
43
|
+
* Everything else stays:
|
|
44
|
+
* - Typography (Instrument Sans + Berkeley Mono)
|
|
45
|
+
* - Spacing scale (8px grid)
|
|
46
|
+
* - Motion language (snappy, functional)
|
|
47
|
+
* - Radius (sharp, precise)
|
|
48
|
+
* - Elevation (borders > shadows)
|
|
49
|
+
* - Component sizing
|
|
50
|
+
*
|
|
51
|
+
* Total overrides: 14 tokens
|
|
52
|
+
* The result still feels like an aiaiai product,
|
|
53
|
+
* but with the client's color identity.
|
|
54
|
+
*/
|
|
55
|
+
}
|