@teamblind-chorus/ui 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/LICENSE +21 -0
- package/README.md +112 -0
- package/agents/AGENTS.md +143 -0
- package/agents/DESIGN.md +1311 -0
- package/agents/LOVABLE.md +472 -0
- package/agents/anti-patterns.md +533 -0
- package/agents/catalog.md +232 -0
- package/agents/components/avatar-rail/avatar-rail.family.json +46 -0
- package/agents/components/avatar-rail/avatar-rail.md +103 -0
- package/agents/components/avatar-rail/avatar-rail.spec.json +160 -0
- package/agents/components/badge/badge.family.json +45 -0
- package/agents/components/badge/badge.md +10 -0
- package/agents/components/badge/role.md +100 -0
- package/agents/components/badge/role.spec.json +75 -0
- package/agents/components/badge/update.md +132 -0
- package/agents/components/badge/update.spec.json +114 -0
- package/agents/components/banner/banner.family.json +28 -0
- package/agents/components/banner/banner.md +136 -0
- package/agents/components/banner/banner.spec.json +136 -0
- package/agents/components/bottom-sheet/bottom-sheet.family.json +29 -0
- package/agents/components/bottom-sheet/bottom-sheet.md +176 -0
- package/agents/components/bottom-sheet/bottom-sheet.spec.json +168 -0
- package/agents/components/bubble/bubble.family.json +29 -0
- package/agents/components/bubble/bubble.md +134 -0
- package/agents/components/bubble/bubble.spec.json +91 -0
- package/agents/components/button/button.family.json +76 -0
- package/agents/components/button/button.md +31 -0
- package/agents/components/button/check.md +138 -0
- package/agents/components/button/check.spec.json +161 -0
- package/agents/components/button/fab.md +161 -0
- package/agents/components/button/fab.spec.json +106 -0
- package/agents/components/button/icon.md +141 -0
- package/agents/components/button/icon.spec.json +164 -0
- package/agents/components/button/standard.md +219 -0
- package/agents/components/button/standard.spec.json +205 -0
- package/agents/components/button/text.md +186 -0
- package/agents/components/button/text.spec.json +215 -0
- package/agents/components/button/toggle.md +108 -0
- package/agents/components/button/toggle.spec.json +124 -0
- package/agents/components/button/toolbar.md +189 -0
- package/agents/components/button/toolbar.spec.json +109 -0
- package/agents/components/carousel/carousel.family.json +41 -0
- package/agents/components/carousel/carousel.md +40 -0
- package/agents/components/carousel/post.md +148 -0
- package/agents/components/carousel/post.spec.json +229 -0
- package/agents/components/carousel/profile.md +184 -0
- package/agents/components/carousel/profile.spec.json +219 -0
- package/agents/components/chip/chip.family.json +37 -0
- package/agents/components/chip/chip.md +10 -0
- package/agents/components/chip/filter.md +212 -0
- package/agents/components/chip/filter.spec.json +124 -0
- package/agents/components/chip/tag.md +137 -0
- package/agents/components/chip/tag.spec.json +104 -0
- package/agents/components/dialog/dialog.family.json +29 -0
- package/agents/components/dialog/dialog.md +113 -0
- package/agents/components/dialog/dialog.spec.json +156 -0
- package/agents/components/directory-list/directory-list.family.json +46 -0
- package/agents/components/directory-list/directory-list.md +87 -0
- package/agents/components/directory-list/directory-list.spec.json +104 -0
- package/agents/components/divider/divider.family.json +28 -0
- package/agents/components/divider/divider.md +78 -0
- package/agents/components/divider/divider.spec.json +51 -0
- package/agents/components/feed/ad.md +108 -0
- package/agents/components/feed/ad.spec.json +187 -0
- package/agents/components/feed/feed.family.json +48 -0
- package/agents/components/feed/feed.md +30 -0
- package/agents/components/feed/post.md +240 -0
- package/agents/components/feed/post.spec.json +361 -0
- package/agents/components/form-field/form-field.family.json +50 -0
- package/agents/components/form-field/form-field.md +11 -0
- package/agents/components/form-field/input.md +198 -0
- package/agents/components/form-field/input.spec.json +202 -0
- package/agents/components/form-field/search.md +81 -0
- package/agents/components/form-field/search.spec.json +135 -0
- package/agents/components/form-field/select.md +101 -0
- package/agents/components/form-field/select.spec.json +194 -0
- package/agents/components/form-field/textarea.md +89 -0
- package/agents/components/form-field/textarea.spec.json +176 -0
- package/agents/components/header/header.family.json +43 -0
- package/agents/components/header/header.md +18 -0
- package/agents/components/header/main.md +101 -0
- package/agents/components/header/main.spec.json +117 -0
- package/agents/components/header/sub.md +129 -0
- package/agents/components/header/sub.spec.json +81 -0
- package/agents/components/list/accordion.md +183 -0
- package/agents/components/list/accordion.spec.json +201 -0
- package/agents/components/list/entry.md +280 -0
- package/agents/components/list/entry.spec.json +237 -0
- package/agents/components/list/list.family.json +75 -0
- package/agents/components/list/list.md +24 -0
- package/agents/components/list/radio.md +144 -0
- package/agents/components/list/radio.spec.json +186 -0
- package/agents/components/list/standard.md +262 -0
- package/agents/components/list/standard.spec.json +221 -0
- package/agents/components/metadata/compact.md +69 -0
- package/agents/components/metadata/compact.spec.json +69 -0
- package/agents/components/metadata/metadata.family.json +42 -0
- package/agents/components/metadata/metadata.md +26 -0
- package/agents/components/metadata/standard.md +104 -0
- package/agents/components/metadata/standard.spec.json +152 -0
- package/agents/components/nav-card/nav-card.family.json +29 -0
- package/agents/components/nav-card/nav-card.md +179 -0
- package/agents/components/nav-card/nav-card.spec.json +161 -0
- package/agents/components/nav-list/nav-list.family.json +46 -0
- package/agents/components/nav-list/nav-list.md +91 -0
- package/agents/components/nav-list/nav-list.spec.json +107 -0
- package/agents/components/navigation-bar/main.md +201 -0
- package/agents/components/navigation-bar/main.spec.json +109 -0
- package/agents/components/navigation-bar/navigation-bar.family.json +44 -0
- package/agents/components/navigation-bar/navigation-bar.md +21 -0
- package/agents/components/navigation-bar/search.md +96 -0
- package/agents/components/navigation-bar/search.spec.json +142 -0
- package/agents/components/navigation-bar/sub.md +174 -0
- package/agents/components/navigation-bar/sub.spec.json +123 -0
- package/agents/components/page-shell/page-shell.family.json +22 -0
- package/agents/components/page-shell/page-shell.md +51 -0
- package/agents/components/profile-header/profile-header.family.json +29 -0
- package/agents/components/profile-header/profile-header.md +149 -0
- package/agents/components/profile-header/profile-header.spec.json +200 -0
- package/agents/components/progress/progress.family.json +27 -0
- package/agents/components/progress/progress.md +38 -0
- package/agents/components/progress/progress.spec.json +67 -0
- package/agents/components/side-sheet/side-sheet.family.json +30 -0
- package/agents/components/side-sheet/side-sheet.md +154 -0
- package/agents/components/side-sheet/side-sheet.spec.json +109 -0
- package/agents/components/skeleton/skeleton.family.json +28 -0
- package/agents/components/skeleton/skeleton.md +123 -0
- package/agents/components/skeleton/skeleton.spec.json +73 -0
- package/agents/components/status-tag/status-tag.family.json +26 -0
- package/agents/components/status-tag/status-tag.md +114 -0
- package/agents/components/status-tag/status-tag.spec.json +69 -0
- package/agents/components/suggestion-list/suggestion-list.family.json +46 -0
- package/agents/components/suggestion-list/suggestion-list.md +91 -0
- package/agents/components/suggestion-list/suggestion-list.spec.json +178 -0
- package/agents/components/switch/switch.family.json +27 -0
- package/agents/components/switch/switch.md +114 -0
- package/agents/components/switch/switch.spec.json +123 -0
- package/agents/components/tab-bar/tab-bar.family.json +27 -0
- package/agents/components/tab-bar/tab-bar.md +178 -0
- package/agents/components/tab-bar/tab-bar.spec.json +184 -0
- package/agents/components/tabs/rounded.md +150 -0
- package/agents/components/tabs/rounded.spec.json +140 -0
- package/agents/components/tabs/segmented.md +114 -0
- package/agents/components/tabs/segmented.spec.json +100 -0
- package/agents/components/tabs/tabs.family.json +59 -0
- package/agents/components/tabs/tabs.md +18 -0
- package/agents/components/tabs/underline.md +147 -0
- package/agents/components/tabs/underline.spec.json +139 -0
- package/agents/components/thumbnail/thumbnail.family.json +28 -0
- package/agents/components/thumbnail/thumbnail.md +152 -0
- package/agents/components/thumbnail/thumbnail.spec.json +172 -0
- package/agents/components/toast/toast.family.json +28 -0
- package/agents/components/toast/toast.md +133 -0
- package/agents/components/toast/toast.spec.json +89 -0
- package/agents/components/tooltip/tooltip.family.json +29 -0
- package/agents/components/tooltip/tooltip.md +139 -0
- package/agents/components/tooltip/tooltip.spec.json +110 -0
- package/agents/compose.md +240 -0
- package/agents/icons.json +831 -0
- package/agents/images.md +66 -0
- package/agents/manifest.json +87 -0
- package/agents/patterns/README.md +59 -0
- package/agents/patterns/actions.md +50 -0
- package/agents/patterns/browsing.md +52 -0
- package/agents/patterns/communications.md +56 -0
- package/agents/patterns/layout.md +72 -0
- package/agents/patterns/modals.md +50 -0
- package/agents/patterns/visual.md +55 -0
- package/agents/reconstruct.md +55 -0
- package/agents/scoped-adoption.md +111 -0
- package/agents/tokens.usage.json +1657 -0
- package/agents/usage.json +422 -0
- package/dist/icons/index.cjs +1332 -0
- package/dist/icons/index.cjs.map +1 -0
- package/dist/icons/index.d.cts +228 -0
- package/dist/icons/index.d.ts +228 -0
- package/dist/icons/index.js +1114 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/index.cjs +5905 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +896 -0
- package/dist/index.d.ts +896 -0
- package/dist/index.js +5847 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.css +5765 -0
- package/eslint/README.md +79 -0
- package/eslint/index.js +78 -0
- package/eslint/rules.js +472 -0
- package/eslint/test.mjs +135 -0
- package/package.json +96 -0
- package/placeholder.png +0 -0
|
@@ -0,0 +1,1657 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "tokens.usage.schema.json",
|
|
3
|
+
"description": "Machine-readable role + usage index for every agent-pickable `sys.*` token. One JSON read replaces grepping the 1300-line DESIGN.md prose. Pair this with `resolved.{light,dark,web}.json` (raw values) and `DESIGN.md` (deep rationale) — this file is the routing layer in between.",
|
|
4
|
+
"generatedFrom": "schema/tokens/build-usage.mjs",
|
|
5
|
+
"pairs": {
|
|
6
|
+
"note": "Color tokens marked with `pairsWith` MUST travel together — `sys.color.<role>Container` is always painted with `sys.color.on<Role>Container` foreground; `sys.color.<role>` is always painted with `sys.color.on<Role>`. Never split the pair."
|
|
7
|
+
},
|
|
8
|
+
"tokens": {
|
|
9
|
+
"sys.borderWidth.hairline": {
|
|
10
|
+
"role": "1px — default edge stroke. Card outline, list-row divider, default control stroke.",
|
|
11
|
+
"usedFor": [
|
|
12
|
+
"card outline (inset box-shadow or ::after overlay)",
|
|
13
|
+
"list-row divider",
|
|
14
|
+
"default form-field rest stroke"
|
|
15
|
+
],
|
|
16
|
+
"notFor": [
|
|
17
|
+
"active-state strokes (use thin)"
|
|
18
|
+
],
|
|
19
|
+
"value": "1px",
|
|
20
|
+
"darkValue": "1px",
|
|
21
|
+
"unit": "px"
|
|
22
|
+
},
|
|
23
|
+
"sys.borderWidth.medium": {
|
|
24
|
+
"role": "3px — medium emphasis stroke.",
|
|
25
|
+
"usedFor": [
|
|
26
|
+
"medium-emphasis decorative stroke"
|
|
27
|
+
],
|
|
28
|
+
"notFor": [
|
|
29
|
+
"control strokes (use hairline/thin)"
|
|
30
|
+
],
|
|
31
|
+
"value": "3px",
|
|
32
|
+
"darkValue": "3px",
|
|
33
|
+
"unit": "px"
|
|
34
|
+
},
|
|
35
|
+
"sys.borderWidth.none": {
|
|
36
|
+
"role": "0px — no stroke.",
|
|
37
|
+
"usedFor": [
|
|
38
|
+
"surfaces without an edge"
|
|
39
|
+
],
|
|
40
|
+
"notFor": [
|
|
41
|
+
"any visible boundary"
|
|
42
|
+
],
|
|
43
|
+
"value": "0px",
|
|
44
|
+
"darkValue": "0px",
|
|
45
|
+
"unit": "px"
|
|
46
|
+
},
|
|
47
|
+
"sys.borderWidth.thick": {
|
|
48
|
+
"role": "4px — thick decorative stroke.",
|
|
49
|
+
"usedFor": [
|
|
50
|
+
"decorative emphasis"
|
|
51
|
+
],
|
|
52
|
+
"notFor": [
|
|
53
|
+
"control strokes"
|
|
54
|
+
],
|
|
55
|
+
"value": "4px",
|
|
56
|
+
"darkValue": "4px",
|
|
57
|
+
"unit": "px"
|
|
58
|
+
},
|
|
59
|
+
"sys.borderWidth.thin": {
|
|
60
|
+
"role": "2px — active or emphasis stroke. Form-field active, focus ring outer.",
|
|
61
|
+
"usedFor": [
|
|
62
|
+
"form-field active stroke",
|
|
63
|
+
"focus ring outer stroke"
|
|
64
|
+
],
|
|
65
|
+
"notFor": [
|
|
66
|
+
"default rest stroke (use hairline)"
|
|
67
|
+
],
|
|
68
|
+
"value": "2px",
|
|
69
|
+
"darkValue": "2px",
|
|
70
|
+
"unit": "px"
|
|
71
|
+
},
|
|
72
|
+
"sys.color.brand": {
|
|
73
|
+
"role": "Blind editorial red — brand accents reserved for editorial / promotional / FAB-style commits. Brand red is an accent marker, never a CTA surface.",
|
|
74
|
+
"usedFor": [
|
|
75
|
+
"FAB fill (the canonical creation commit)",
|
|
76
|
+
"tab-bar Create item fill",
|
|
77
|
+
"hot/new badge accent",
|
|
78
|
+
"active-like editorial tone in the Feed"
|
|
79
|
+
],
|
|
80
|
+
"notFor": [
|
|
81
|
+
"primary inline commits (use primary)",
|
|
82
|
+
"destructive (use error)",
|
|
83
|
+
"general body text",
|
|
84
|
+
"navigation-bar header logo / title",
|
|
85
|
+
"default banner background"
|
|
86
|
+
],
|
|
87
|
+
"pairsWith": "sys.color.onBrand",
|
|
88
|
+
"allowedComponents": [
|
|
89
|
+
"button/fab (the canonical floating creation commit)",
|
|
90
|
+
"tab-bar/item--primary (the Create tab item — single per screen)",
|
|
91
|
+
"badge (HOT / NEW marker)",
|
|
92
|
+
"feed/post (active-like heart tone)",
|
|
93
|
+
"banner/* (promotional accent — only when the banner's role is promotional, not informational)"
|
|
94
|
+
],
|
|
95
|
+
"forbiddenComponents": [
|
|
96
|
+
"button/standard fill (primary commits use sys.color.primary)",
|
|
97
|
+
"navigation-bar/* (header chrome stays on surface — title is onSurface, never brand)",
|
|
98
|
+
"banner fill when banner role is informational (use primaryContainer instead)",
|
|
99
|
+
"card outline (use outlineVariant)",
|
|
100
|
+
"list-row divider (use outlineVariant)",
|
|
101
|
+
"shortcut / quick-action background tile",
|
|
102
|
+
"section heading text color"
|
|
103
|
+
],
|
|
104
|
+
"maxInstancesPerScreen": 3,
|
|
105
|
+
"maxInstancesRationale": "Brand red is a marker — more than 3 instances per screen dilute its meaning. The canonical instances are: the Create entry on tab-bar (1), an active-like state inside a feed item (≤2), an optional promotional banner accent (1).",
|
|
106
|
+
"value": "#d92626",
|
|
107
|
+
"darkValue": "#d92626",
|
|
108
|
+
"unit": "hex"
|
|
109
|
+
},
|
|
110
|
+
"sys.color.brandContainer": {
|
|
111
|
+
"role": "Tinted brand surface — promotional accent without full saturation.",
|
|
112
|
+
"usedFor": [
|
|
113
|
+
"promotional callout background",
|
|
114
|
+
"hot-topic tinted strip"
|
|
115
|
+
],
|
|
116
|
+
"notFor": [
|
|
117
|
+
"primary CTA"
|
|
118
|
+
],
|
|
119
|
+
"pairsWith": "sys.color.onBrandContainer",
|
|
120
|
+
"value": "#faf2f2",
|
|
121
|
+
"darkValue": "#350a0a",
|
|
122
|
+
"unit": "hex"
|
|
123
|
+
},
|
|
124
|
+
"sys.color.elevation": {
|
|
125
|
+
"role": "Elevation shadow color (compose into box-shadow).",
|
|
126
|
+
"usedFor": [
|
|
127
|
+
"box-shadow color in raised/floating/overlay elevations"
|
|
128
|
+
],
|
|
129
|
+
"notFor": [
|
|
130
|
+
"visible fills"
|
|
131
|
+
],
|
|
132
|
+
"value": "#000000",
|
|
133
|
+
"darkValue": "#000000",
|
|
134
|
+
"unit": "hex"
|
|
135
|
+
},
|
|
136
|
+
"sys.color.error": {
|
|
137
|
+
"role": "Red destructive / error commit color — never used for emphasis, only for destructive actions or error states.",
|
|
138
|
+
"usedFor": [
|
|
139
|
+
"destructive button fill",
|
|
140
|
+
"error message text",
|
|
141
|
+
"destructive flavor on Button.standard"
|
|
142
|
+
],
|
|
143
|
+
"notFor": [
|
|
144
|
+
"promotional (use brand)",
|
|
145
|
+
"primary commits (use primary)"
|
|
146
|
+
],
|
|
147
|
+
"pairsWith": "sys.color.onError",
|
|
148
|
+
"allowedComponents": [
|
|
149
|
+
"button/standard (flavor=destructive fill)",
|
|
150
|
+
"form-field (error state stroke + error message text)",
|
|
151
|
+
"dialog / bottom-sheet (destructive primary action label inside the sheet)"
|
|
152
|
+
],
|
|
153
|
+
"forbiddenComponents": [
|
|
154
|
+
"navigation-bar/*",
|
|
155
|
+
"banner fill (use errorContainer when banner role is error notice)",
|
|
156
|
+
"default body text",
|
|
157
|
+
"tab-bar/* (Create item uses brand)",
|
|
158
|
+
"promotional surfaces (use brand)"
|
|
159
|
+
],
|
|
160
|
+
"value": "#b42222",
|
|
161
|
+
"darkValue": "#931a1a",
|
|
162
|
+
"unit": "hex"
|
|
163
|
+
},
|
|
164
|
+
"sys.color.errorContainer": {
|
|
165
|
+
"role": "Tinted-red surface — destructive banner / error notice.",
|
|
166
|
+
"usedFor": [
|
|
167
|
+
"error banner background",
|
|
168
|
+
"destructive callout"
|
|
169
|
+
],
|
|
170
|
+
"notFor": [],
|
|
171
|
+
"pairsWith": "sys.color.onErrorContainer",
|
|
172
|
+
"value": "#f5dbdb",
|
|
173
|
+
"darkValue": "#350a0a",
|
|
174
|
+
"unit": "hex"
|
|
175
|
+
},
|
|
176
|
+
"sys.color.focus": {
|
|
177
|
+
"role": "Focus ring outer stroke color.",
|
|
178
|
+
"usedFor": [
|
|
179
|
+
"::after focus ring outer color (paired with focusInset)"
|
|
180
|
+
],
|
|
181
|
+
"notFor": [
|
|
182
|
+
"body text",
|
|
183
|
+
"interactive fills"
|
|
184
|
+
],
|
|
185
|
+
"value": "#000000",
|
|
186
|
+
"darkValue": "#ffffff",
|
|
187
|
+
"unit": "hex"
|
|
188
|
+
},
|
|
189
|
+
"sys.color.focusInset": {
|
|
190
|
+
"role": "Focus ring inner counter-ring color — paints between the focus stroke and the control.",
|
|
191
|
+
"usedFor": [
|
|
192
|
+
"::after focus ring inner counter-ring"
|
|
193
|
+
],
|
|
194
|
+
"notFor": [
|
|
195
|
+
"body text"
|
|
196
|
+
],
|
|
197
|
+
"value": "#ffffff",
|
|
198
|
+
"darkValue": "#000000",
|
|
199
|
+
"unit": "hex"
|
|
200
|
+
},
|
|
201
|
+
"sys.color.inverseOnSurface": {
|
|
202
|
+
"role": "Foreground on inverseSurface — Toast text.",
|
|
203
|
+
"usedFor": [
|
|
204
|
+
"toast text"
|
|
205
|
+
],
|
|
206
|
+
"notFor": [
|
|
207
|
+
"default body text"
|
|
208
|
+
],
|
|
209
|
+
"value": "#fafafa",
|
|
210
|
+
"darkValue": "#141414",
|
|
211
|
+
"unit": "hex"
|
|
212
|
+
},
|
|
213
|
+
"sys.color.inverseSurface": {
|
|
214
|
+
"role": "Inverse-theme surface — Toast background sits on this.",
|
|
215
|
+
"usedFor": [
|
|
216
|
+
"toast background"
|
|
217
|
+
],
|
|
218
|
+
"notFor": [
|
|
219
|
+
"default page surface"
|
|
220
|
+
],
|
|
221
|
+
"value": "#141414",
|
|
222
|
+
"darkValue": "#fafafa",
|
|
223
|
+
"unit": "hex"
|
|
224
|
+
},
|
|
225
|
+
"sys.color.onBrand": {
|
|
226
|
+
"role": "Foreground on sys.color.brand fills.",
|
|
227
|
+
"usedFor": [
|
|
228
|
+
"icon/label on a brand-filled FAB or banner"
|
|
229
|
+
],
|
|
230
|
+
"notFor": [],
|
|
231
|
+
"value": "#fafafa",
|
|
232
|
+
"darkValue": "#fafafa",
|
|
233
|
+
"unit": "hex"
|
|
234
|
+
},
|
|
235
|
+
"sys.color.onBrandContainer": {
|
|
236
|
+
"role": "Foreground on brandContainer surfaces.",
|
|
237
|
+
"usedFor": [
|
|
238
|
+
"label on brandContainer fills"
|
|
239
|
+
],
|
|
240
|
+
"notFor": [],
|
|
241
|
+
"value": "#b42222",
|
|
242
|
+
"darkValue": "#df5656",
|
|
243
|
+
"unit": "hex"
|
|
244
|
+
},
|
|
245
|
+
"sys.color.onError": {
|
|
246
|
+
"role": "Foreground on error fills.",
|
|
247
|
+
"usedFor": [
|
|
248
|
+
"label on a destructive-filled button"
|
|
249
|
+
],
|
|
250
|
+
"notFor": [],
|
|
251
|
+
"value": "#fafafa",
|
|
252
|
+
"darkValue": "#fafafa",
|
|
253
|
+
"unit": "hex"
|
|
254
|
+
},
|
|
255
|
+
"sys.color.onErrorContainer": {
|
|
256
|
+
"role": "Foreground on errorContainer.",
|
|
257
|
+
"usedFor": [],
|
|
258
|
+
"notFor": [],
|
|
259
|
+
"value": "#931a1a",
|
|
260
|
+
"darkValue": "#d92626",
|
|
261
|
+
"unit": "hex"
|
|
262
|
+
},
|
|
263
|
+
"sys.color.onPrimary": {
|
|
264
|
+
"role": "Foreground that paints ON sys.color.primary fills. Travels as a pair.",
|
|
265
|
+
"usedFor": [
|
|
266
|
+
"label/icon on a primary-filled button",
|
|
267
|
+
"text on a primary surface"
|
|
268
|
+
],
|
|
269
|
+
"notFor": [
|
|
270
|
+
"any surface that isn't sys.color.primary"
|
|
271
|
+
],
|
|
272
|
+
"value": "#fafafa",
|
|
273
|
+
"darkValue": "#fafafa",
|
|
274
|
+
"unit": "hex"
|
|
275
|
+
},
|
|
276
|
+
"sys.color.onPrimaryContainer": {
|
|
277
|
+
"role": "Foreground for primaryContainer surfaces. Travels as a pair.",
|
|
278
|
+
"usedFor": [
|
|
279
|
+
"label/icon on primaryContainer fills"
|
|
280
|
+
],
|
|
281
|
+
"notFor": [
|
|
282
|
+
"primary fills (use onPrimary)"
|
|
283
|
+
],
|
|
284
|
+
"value": "#1d4ed8",
|
|
285
|
+
"darkValue": "#5081ed",
|
|
286
|
+
"unit": "hex"
|
|
287
|
+
},
|
|
288
|
+
"sys.color.onSecondary": {
|
|
289
|
+
"role": "Foreground on sys.color.secondary fills.",
|
|
290
|
+
"usedFor": [
|
|
291
|
+
"label/icon on a secondary-filled surface"
|
|
292
|
+
],
|
|
293
|
+
"notFor": [
|
|
294
|
+
"surfaces other than secondary"
|
|
295
|
+
],
|
|
296
|
+
"value": "#fafafa",
|
|
297
|
+
"darkValue": "#141414",
|
|
298
|
+
"unit": "hex"
|
|
299
|
+
},
|
|
300
|
+
"sys.color.onSecondaryContainer": {
|
|
301
|
+
"role": "Foreground on secondaryContainer surfaces.",
|
|
302
|
+
"usedFor": [
|
|
303
|
+
"label on secondaryContainer fills"
|
|
304
|
+
],
|
|
305
|
+
"notFor": [],
|
|
306
|
+
"value": "#141414",
|
|
307
|
+
"darkValue": "#f0f0f0",
|
|
308
|
+
"unit": "hex"
|
|
309
|
+
},
|
|
310
|
+
"sys.color.onSuccess": {
|
|
311
|
+
"role": "Foreground on success fills.",
|
|
312
|
+
"usedFor": [
|
|
313
|
+
"label on a success-filled surface"
|
|
314
|
+
],
|
|
315
|
+
"notFor": [],
|
|
316
|
+
"value": "#fafafa",
|
|
317
|
+
"darkValue": "#fafafa",
|
|
318
|
+
"unit": "hex"
|
|
319
|
+
},
|
|
320
|
+
"sys.color.onSuccessContainer": {
|
|
321
|
+
"role": "Foreground on successContainer.",
|
|
322
|
+
"usedFor": [],
|
|
323
|
+
"notFor": [],
|
|
324
|
+
"value": "#006d2c",
|
|
325
|
+
"darkValue": "#25b260",
|
|
326
|
+
"unit": "hex"
|
|
327
|
+
},
|
|
328
|
+
"sys.color.onSurface": {
|
|
329
|
+
"role": "Default body text color — what most text on a `surface` fill resolves to.",
|
|
330
|
+
"usedFor": [
|
|
331
|
+
"body text",
|
|
332
|
+
"card title",
|
|
333
|
+
"list-row primary label"
|
|
334
|
+
],
|
|
335
|
+
"notFor": [
|
|
336
|
+
"primary CTA label on primary fill (use onPrimary)"
|
|
337
|
+
],
|
|
338
|
+
"value": "#141414",
|
|
339
|
+
"darkValue": "#fafafa",
|
|
340
|
+
"unit": "hex"
|
|
341
|
+
},
|
|
342
|
+
"sys.color.onSurfaceVariant": {
|
|
343
|
+
"role": "Secondary text color — meta lines, supporting text, placeholders, glyph chrome.",
|
|
344
|
+
"usedFor": [
|
|
345
|
+
"meta line text",
|
|
346
|
+
"supporting text",
|
|
347
|
+
"input placeholder",
|
|
348
|
+
"trailing chevron",
|
|
349
|
+
"secondary icon"
|
|
350
|
+
],
|
|
351
|
+
"notFor": [
|
|
352
|
+
"primary body text (use onSurface)"
|
|
353
|
+
],
|
|
354
|
+
"value": "#3d3d3d",
|
|
355
|
+
"darkValue": "#c2c2c2",
|
|
356
|
+
"unit": "hex"
|
|
357
|
+
},
|
|
358
|
+
"sys.color.outline": {
|
|
359
|
+
"role": "Strong divider line — control boundary, full-emphasis border.",
|
|
360
|
+
"usedFor": [
|
|
361
|
+
"form field active stroke",
|
|
362
|
+
"high-emphasis divider"
|
|
363
|
+
],
|
|
364
|
+
"notFor": [
|
|
365
|
+
"hairline card stroke (use outlineVariant)"
|
|
366
|
+
],
|
|
367
|
+
"value": "#999999",
|
|
368
|
+
"darkValue": "#737373",
|
|
369
|
+
"unit": "hex"
|
|
370
|
+
},
|
|
371
|
+
"sys.color.outlineVariant": {
|
|
372
|
+
"role": "Hairline edge stroke — card outline, divider line between rows.",
|
|
373
|
+
"usedFor": [
|
|
374
|
+
"card outline (as inset box-shadow or ::after overlay)",
|
|
375
|
+
"list-row divider",
|
|
376
|
+
"section bottom divider"
|
|
377
|
+
],
|
|
378
|
+
"notFor": [
|
|
379
|
+
"form field active stroke (use outline or primary)"
|
|
380
|
+
],
|
|
381
|
+
"value": "#e0e0e0",
|
|
382
|
+
"darkValue": "#3d3d3d",
|
|
383
|
+
"unit": "hex"
|
|
384
|
+
},
|
|
385
|
+
"sys.color.placeholderImage.end": {
|
|
386
|
+
"role": "Gradient end for the placeholder image-area underlay.",
|
|
387
|
+
"usedFor": [
|
|
388
|
+
"image-area underlay gradient end"
|
|
389
|
+
],
|
|
390
|
+
"notFor": [],
|
|
391
|
+
"value": "#2d6f72",
|
|
392
|
+
"darkValue": "#1a2226",
|
|
393
|
+
"unit": "hex"
|
|
394
|
+
},
|
|
395
|
+
"sys.color.placeholderImage.start": {
|
|
396
|
+
"role": "Gradient start for the placeholder image-area underlay (when /placeholder.png itself is unavailable).",
|
|
397
|
+
"usedFor": [
|
|
398
|
+
"image-area underlay gradient start"
|
|
399
|
+
],
|
|
400
|
+
"notFor": [
|
|
401
|
+
"foreground content"
|
|
402
|
+
],
|
|
403
|
+
"value": "#c8e0e1",
|
|
404
|
+
"darkValue": "#3a4548",
|
|
405
|
+
"unit": "hex"
|
|
406
|
+
},
|
|
407
|
+
"sys.color.primary": {
|
|
408
|
+
"role": "Brand-blue commit color — primary CTAs, active selection, link affordance.",
|
|
409
|
+
"usedFor": [
|
|
410
|
+
"primary commit button fill",
|
|
411
|
+
"active tab indicator",
|
|
412
|
+
"link-affordance text"
|
|
413
|
+
],
|
|
414
|
+
"notFor": [
|
|
415
|
+
"body text (use onSurface)",
|
|
416
|
+
"destructive commits (use brand or error)",
|
|
417
|
+
"informational tint (use primaryContainer)"
|
|
418
|
+
],
|
|
419
|
+
"pairsWith": "sys.color.onPrimary",
|
|
420
|
+
"allowedComponents": [
|
|
421
|
+
"button/standard (default appearance fill)",
|
|
422
|
+
"button/text (appearance=accent — link affordance)",
|
|
423
|
+
"tabs/underline (active indicator)",
|
|
424
|
+
"chip/filter (selected outline + label tone)",
|
|
425
|
+
"feed/post (poll icon, inline link/hashtag color)",
|
|
426
|
+
"carousel/post (verified glyph, mention link)",
|
|
427
|
+
"carousel/profile (thumb metric chip)"
|
|
428
|
+
],
|
|
429
|
+
"forbiddenComponents": [
|
|
430
|
+
"navigation-bar/* (header chrome — use onSurface for title, surface for bar fill)",
|
|
431
|
+
"banner/* fill (use primaryContainer for tinted info banner; primary is for the commit *inside* the banner)",
|
|
432
|
+
"card outline (use outlineVariant)",
|
|
433
|
+
"list-row divider (use outlineVariant)",
|
|
434
|
+
"tab-bar/* (Create item uses brand, other items use onSurface)"
|
|
435
|
+
],
|
|
436
|
+
"value": "#2563eb",
|
|
437
|
+
"darkValue": "#2563eb",
|
|
438
|
+
"unit": "hex"
|
|
439
|
+
},
|
|
440
|
+
"sys.color.primaryContainer": {
|
|
441
|
+
"role": "Tinted-primary surface for low-emphasis primary tints — informational chips, soft callouts.",
|
|
442
|
+
"usedFor": [
|
|
443
|
+
"filter chip selected fill",
|
|
444
|
+
"info banner background",
|
|
445
|
+
"soft primary tint"
|
|
446
|
+
],
|
|
447
|
+
"notFor": [
|
|
448
|
+
"primary commit button (use primary)"
|
|
449
|
+
],
|
|
450
|
+
"pairsWith": "sys.color.onPrimaryContainer",
|
|
451
|
+
"value": "#f1f4fb",
|
|
452
|
+
"darkValue": "#0a1833",
|
|
453
|
+
"unit": "hex"
|
|
454
|
+
},
|
|
455
|
+
"sys.color.scrim": {
|
|
456
|
+
"role": "Dialog / BottomSheet scrim background — semi-transparent black overlay.",
|
|
457
|
+
"usedFor": [
|
|
458
|
+
"dialog scrim",
|
|
459
|
+
"bottom-sheet scrim"
|
|
460
|
+
],
|
|
461
|
+
"notFor": [
|
|
462
|
+
"any visible surface"
|
|
463
|
+
],
|
|
464
|
+
"value": "#000000a3",
|
|
465
|
+
"darkValue": "#000000a3",
|
|
466
|
+
"unit": "hex"
|
|
467
|
+
},
|
|
468
|
+
"sys.color.scrimSubtle": {
|
|
469
|
+
"role": "Translucent inverse-tone surface tint (~8% — black light / white dark). Surface-agnostic fill that stays visible on every host surface tier.",
|
|
470
|
+
"usedFor": [
|
|
471
|
+
"Banner default background",
|
|
472
|
+
"Chip / Tag default background",
|
|
473
|
+
"Progress track background",
|
|
474
|
+
"StatusTag neutral background",
|
|
475
|
+
"Skeleton placeholder fill"
|
|
476
|
+
],
|
|
477
|
+
"notFor": [
|
|
478
|
+
"modal backdrop (use scrim)",
|
|
479
|
+
"opaque container surfaces (use surface* ladder)"
|
|
480
|
+
],
|
|
481
|
+
"value": "#00000014",
|
|
482
|
+
"darkValue": "#ffffff14",
|
|
483
|
+
"unit": "hex"
|
|
484
|
+
},
|
|
485
|
+
"sys.color.secondary": {
|
|
486
|
+
"role": "Neutral-dark accent — secondary text, neutral active state, supporting metric.",
|
|
487
|
+
"usedFor": [
|
|
488
|
+
"secondary button accent",
|
|
489
|
+
"neutral active state",
|
|
490
|
+
"metric values"
|
|
491
|
+
],
|
|
492
|
+
"notFor": [
|
|
493
|
+
"primary commit (use primary)",
|
|
494
|
+
"body text on surface (use onSurface)"
|
|
495
|
+
],
|
|
496
|
+
"pairsWith": "sys.color.onSecondary",
|
|
497
|
+
"value": "#3d3d3d",
|
|
498
|
+
"darkValue": "#c2c2c2",
|
|
499
|
+
"unit": "hex"
|
|
500
|
+
},
|
|
501
|
+
"sys.color.secondaryContainer": {
|
|
502
|
+
"role": "Tinted neutral surface — soft secondary tint.",
|
|
503
|
+
"usedFor": [
|
|
504
|
+
"soft neutral tinted chip",
|
|
505
|
+
"tag pill background"
|
|
506
|
+
],
|
|
507
|
+
"notFor": [
|
|
508
|
+
"plain card surface (use surface)"
|
|
509
|
+
],
|
|
510
|
+
"pairsWith": "sys.color.onSecondaryContainer",
|
|
511
|
+
"value": "#f0f0f0",
|
|
512
|
+
"darkValue": "#525252",
|
|
513
|
+
"unit": "hex"
|
|
514
|
+
},
|
|
515
|
+
"sys.color.success": {
|
|
516
|
+
"role": "Green commit / status color — success states, positive metrics.",
|
|
517
|
+
"usedFor": [
|
|
518
|
+
"success toast",
|
|
519
|
+
"completed-state status",
|
|
520
|
+
"positive metric (e.g. pulse metric value)"
|
|
521
|
+
],
|
|
522
|
+
"notFor": [
|
|
523
|
+
"destructive (use error)",
|
|
524
|
+
"promotional (use brand)"
|
|
525
|
+
],
|
|
526
|
+
"pairsWith": "sys.color.onSuccess",
|
|
527
|
+
"allowedComponents": [
|
|
528
|
+
"toast (success-flavored toast accent / icon)",
|
|
529
|
+
"carousel/profile (pulse metric chip)",
|
|
530
|
+
"feed/post (offer-flavored poll label — Offer banner uses success tone)",
|
|
531
|
+
"form-field (success state stroke when applicable)"
|
|
532
|
+
],
|
|
533
|
+
"forbiddenComponents": [
|
|
534
|
+
"button fill (primary commits use primary; destructive uses error)",
|
|
535
|
+
"navigation-bar/*",
|
|
536
|
+
"default body text"
|
|
537
|
+
],
|
|
538
|
+
"value": "#008838",
|
|
539
|
+
"darkValue": "#008838",
|
|
540
|
+
"unit": "hex"
|
|
541
|
+
},
|
|
542
|
+
"sys.color.successContainer": {
|
|
543
|
+
"role": "Tinted-green surface — success banner background.",
|
|
544
|
+
"usedFor": [
|
|
545
|
+
"success banner background",
|
|
546
|
+
"completed-state callout"
|
|
547
|
+
],
|
|
548
|
+
"notFor": [],
|
|
549
|
+
"pairsWith": "sys.color.onSuccessContainer",
|
|
550
|
+
"value": "#f0faf3",
|
|
551
|
+
"darkValue": "#00200a",
|
|
552
|
+
"unit": "hex"
|
|
553
|
+
},
|
|
554
|
+
"sys.color.surface": {
|
|
555
|
+
"role": "Default page and card fill — the canvas every other surface paints over.",
|
|
556
|
+
"usedFor": [
|
|
557
|
+
"page background",
|
|
558
|
+
"card fill",
|
|
559
|
+
"list row fill",
|
|
560
|
+
"feed item fill"
|
|
561
|
+
],
|
|
562
|
+
"notFor": [
|
|
563
|
+
"tinted callouts (use *Container variants)"
|
|
564
|
+
],
|
|
565
|
+
"pairsWith": "sys.color.onSurface",
|
|
566
|
+
"value": "#ffffff",
|
|
567
|
+
"darkValue": "#141414",
|
|
568
|
+
"unit": "hex"
|
|
569
|
+
},
|
|
570
|
+
"sys.color.surfaceBright": {
|
|
571
|
+
"role": "Light-mode bright surface step — used in dark mode to invert to a near-white surface.",
|
|
572
|
+
"usedFor": [
|
|
573
|
+
"bright-mode surface in dark theme"
|
|
574
|
+
],
|
|
575
|
+
"notFor": [
|
|
576
|
+
"light-mode default fill"
|
|
577
|
+
],
|
|
578
|
+
"value": "#ffffff",
|
|
579
|
+
"darkValue": "#262626",
|
|
580
|
+
"unit": "hex"
|
|
581
|
+
},
|
|
582
|
+
"sys.color.surfaceContainer": {
|
|
583
|
+
"role": "Mid-tint surface for grouped content blocks — Feed citation card, neutral grouped surface.",
|
|
584
|
+
"usedFor": [
|
|
585
|
+
"citation card fill",
|
|
586
|
+
"neutral grouped block"
|
|
587
|
+
],
|
|
588
|
+
"notFor": [
|
|
589
|
+
"page background (use surface)"
|
|
590
|
+
],
|
|
591
|
+
"value": "#ffffff",
|
|
592
|
+
"darkValue": "#262626",
|
|
593
|
+
"unit": "hex"
|
|
594
|
+
},
|
|
595
|
+
"sys.color.surfaceContainerHigh": {
|
|
596
|
+
"role": "Higher tint than surface — banner backgrounds, ProfileCarousel cover band, image-area fallback.",
|
|
597
|
+
"usedFor": [
|
|
598
|
+
"banner background",
|
|
599
|
+
"ProfileCarousel cover band",
|
|
600
|
+
"image-area underlay (with placeholder image on top)"
|
|
601
|
+
],
|
|
602
|
+
"notFor": [
|
|
603
|
+
"page background"
|
|
604
|
+
],
|
|
605
|
+
"value": "#ffffff",
|
|
606
|
+
"darkValue": "#262626",
|
|
607
|
+
"unit": "hex"
|
|
608
|
+
},
|
|
609
|
+
"sys.color.surfaceContainerHighest": {
|
|
610
|
+
"role": "Highest neutral surface tint — pressed-state row fill, deepest neutral callout.",
|
|
611
|
+
"usedFor": [
|
|
612
|
+
"pressed-state row fill",
|
|
613
|
+
"deepest neutral callout"
|
|
614
|
+
],
|
|
615
|
+
"notFor": [
|
|
616
|
+
"default fill"
|
|
617
|
+
],
|
|
618
|
+
"value": "#ffffff",
|
|
619
|
+
"darkValue": "#3d3d3d",
|
|
620
|
+
"unit": "hex"
|
|
621
|
+
},
|
|
622
|
+
"sys.color.surfaceContainerLow": {
|
|
623
|
+
"role": "Slight tint below default surface — search input bar fill, hover-state row fill.",
|
|
624
|
+
"usedFor": [
|
|
625
|
+
"search input bar fill",
|
|
626
|
+
"hover-state row fill"
|
|
627
|
+
],
|
|
628
|
+
"notFor": [
|
|
629
|
+
"card fill (use surface)"
|
|
630
|
+
],
|
|
631
|
+
"value": "#f0f0f0",
|
|
632
|
+
"darkValue": "#141414",
|
|
633
|
+
"unit": "hex"
|
|
634
|
+
},
|
|
635
|
+
"sys.color.surfaceContainerLowest": {
|
|
636
|
+
"role": "Deepest-low tint — barely visible surface step. Reserved for very subtle separation.",
|
|
637
|
+
"usedFor": [
|
|
638
|
+
"barely-tinted separators between regions"
|
|
639
|
+
],
|
|
640
|
+
"notFor": [
|
|
641
|
+
"any default fill"
|
|
642
|
+
],
|
|
643
|
+
"value": "#f0f0f0",
|
|
644
|
+
"darkValue": "#000000",
|
|
645
|
+
"unit": "hex"
|
|
646
|
+
},
|
|
647
|
+
"sys.color.surfaceDim": {
|
|
648
|
+
"role": "Dimmer-than-default surface — slightly muted variant.",
|
|
649
|
+
"usedFor": [
|
|
650
|
+
"muted surface variants"
|
|
651
|
+
],
|
|
652
|
+
"notFor": [
|
|
653
|
+
"default fill"
|
|
654
|
+
],
|
|
655
|
+
"value": "#e0e0e0",
|
|
656
|
+
"darkValue": "#141414",
|
|
657
|
+
"unit": "hex"
|
|
658
|
+
},
|
|
659
|
+
"sys.color.surfaceVariant": {
|
|
660
|
+
"role": "Subtly-tinted surface variant — input field rest fill, low-emphasis surface.",
|
|
661
|
+
"usedFor": [
|
|
662
|
+
"input field rest fill",
|
|
663
|
+
"tinted-card variant"
|
|
664
|
+
],
|
|
665
|
+
"notFor": [
|
|
666
|
+
"page background (use surface)"
|
|
667
|
+
],
|
|
668
|
+
"pairsWith": "sys.color.onSurfaceVariant",
|
|
669
|
+
"value": "#f0f0f0",
|
|
670
|
+
"darkValue": "#262626",
|
|
671
|
+
"unit": "hex"
|
|
672
|
+
},
|
|
673
|
+
"sys.elevation.floating": {
|
|
674
|
+
"role": "Free-floating above the page.",
|
|
675
|
+
"usedFor": [
|
|
676
|
+
"FAB",
|
|
677
|
+
"floating menu",
|
|
678
|
+
"dropdown",
|
|
679
|
+
"autocomplete panel"
|
|
680
|
+
],
|
|
681
|
+
"notFor": [
|
|
682
|
+
"flat cards (use raised or none)"
|
|
683
|
+
],
|
|
684
|
+
"value": "0 2px 4px #0000000f, 0 8px 20px #0000001f",
|
|
685
|
+
"darkValue": "0 2px 4px #0000000f, 0 8px 20px #0000001f",
|
|
686
|
+
"unit": "shadow"
|
|
687
|
+
},
|
|
688
|
+
"sys.elevation.overlay": {
|
|
689
|
+
"role": "Page-level overlay demanding focus.",
|
|
690
|
+
"usedFor": [
|
|
691
|
+
"dialog",
|
|
692
|
+
"modal",
|
|
693
|
+
"popover above scrim"
|
|
694
|
+
],
|
|
695
|
+
"notFor": [
|
|
696
|
+
"non-blocking floating panels (use floating)"
|
|
697
|
+
],
|
|
698
|
+
"value": "0 4px 12px #00000014, 0 16px 48px #00000033",
|
|
699
|
+
"darkValue": "0 4px 12px #00000014, 0 16px 48px #00000033",
|
|
700
|
+
"unit": "shadow"
|
|
701
|
+
},
|
|
702
|
+
"sys.elevation.raised": {
|
|
703
|
+
"role": "Subtle lift — sits-on the page.",
|
|
704
|
+
"usedFor": [
|
|
705
|
+
"card at rest",
|
|
706
|
+
"hovered list rows",
|
|
707
|
+
"selected menu items"
|
|
708
|
+
],
|
|
709
|
+
"notFor": [
|
|
710
|
+
"modal surfaces (use floating/overlay)"
|
|
711
|
+
],
|
|
712
|
+
"value": "0 1px 2px #0000000a, 0 2px 6px #0000000f",
|
|
713
|
+
"darkValue": "0 1px 2px #0000000a, 0 2px 6px #0000000f",
|
|
714
|
+
"unit": "shadow"
|
|
715
|
+
},
|
|
716
|
+
"sys.elevation.sheet": {
|
|
717
|
+
"role": "Edge-anchored panel projecting shadow upward (or away from the anchored edge).",
|
|
718
|
+
"usedFor": [
|
|
719
|
+
"bottom-sheet",
|
|
720
|
+
"side drawer",
|
|
721
|
+
"pinned panel"
|
|
722
|
+
],
|
|
723
|
+
"notFor": [
|
|
724
|
+
"centered modals (use overlay)"
|
|
725
|
+
],
|
|
726
|
+
"value": "0 -2px 6px #0000000a, 0 -8px 24px #00000029",
|
|
727
|
+
"darkValue": "0 -2px 6px #0000000a, 0 -8px 24px #00000029",
|
|
728
|
+
"unit": "shadow"
|
|
729
|
+
},
|
|
730
|
+
"sys.icon.lg": {
|
|
731
|
+
"role": "Large icon size (24px) — top-bar glyphs, FAB icon, prominent leading icon.",
|
|
732
|
+
"usedFor": [
|
|
733
|
+
"navigation-bar trailing action glyphs",
|
|
734
|
+
"FAB glyph",
|
|
735
|
+
"prominent leading icon"
|
|
736
|
+
],
|
|
737
|
+
"notFor": [
|
|
738
|
+
"dense inline icons (use icon.md)"
|
|
739
|
+
],
|
|
740
|
+
"value": "24px",
|
|
741
|
+
"darkValue": "24px",
|
|
742
|
+
"unit": "px"
|
|
743
|
+
},
|
|
744
|
+
"sys.icon.md": {
|
|
745
|
+
"role": "Default icon size (20px) — most inline icons.",
|
|
746
|
+
"usedFor": [
|
|
747
|
+
"Button.icon glyph",
|
|
748
|
+
"trailing chevron",
|
|
749
|
+
"list-row leading icon (small)",
|
|
750
|
+
"chip icon"
|
|
751
|
+
],
|
|
752
|
+
"notFor": [
|
|
753
|
+
"large hero icons (use icon.lg)"
|
|
754
|
+
],
|
|
755
|
+
"value": "16px",
|
|
756
|
+
"darkValue": "16px",
|
|
757
|
+
"unit": "px"
|
|
758
|
+
},
|
|
759
|
+
"sys.layout.container.2xl": {
|
|
760
|
+
"role": "Landing heroes and marketing layouts (48→64px) where padding is part of the visual composition.",
|
|
761
|
+
"usedFor": [
|
|
762
|
+
"landing heroes",
|
|
763
|
+
"marketing layouts where padding is design intent"
|
|
764
|
+
],
|
|
765
|
+
"notFor": [
|
|
766
|
+
"any app route (use container.md / lg / xl)"
|
|
767
|
+
],
|
|
768
|
+
"value": "48px",
|
|
769
|
+
"darkValue": "48px",
|
|
770
|
+
"webValue": "64px",
|
|
771
|
+
"unit": "px"
|
|
772
|
+
},
|
|
773
|
+
"sys.layout.container.2xs": {
|
|
774
|
+
"role": "Compact inset (4px) for small pills and dense tags.",
|
|
775
|
+
"usedFor": [
|
|
776
|
+
"small pills",
|
|
777
|
+
"dense tags",
|
|
778
|
+
"tightly-spaced inline controls"
|
|
779
|
+
],
|
|
780
|
+
"notFor": [
|
|
781
|
+
"card / list-row padding (use container.md)"
|
|
782
|
+
],
|
|
783
|
+
"value": "4px",
|
|
784
|
+
"darkValue": "4px",
|
|
785
|
+
"unit": "px"
|
|
786
|
+
},
|
|
787
|
+
"sys.layout.container.3xl": {
|
|
788
|
+
"role": "Largest container inset (64→80px) — showcase heroes, extra-wide marketing.",
|
|
789
|
+
"usedFor": [
|
|
790
|
+
"showcase heroes",
|
|
791
|
+
"extra-wide marketing canvases"
|
|
792
|
+
],
|
|
793
|
+
"notFor": [
|
|
794
|
+
"app routes",
|
|
795
|
+
"ordinary surfaces"
|
|
796
|
+
],
|
|
797
|
+
"value": "64px",
|
|
798
|
+
"darkValue": "64px",
|
|
799
|
+
"webValue": "80px",
|
|
800
|
+
"unit": "px"
|
|
801
|
+
},
|
|
802
|
+
"sys.layout.container.3xs": {
|
|
803
|
+
"role": "Hairline surface inset (2px). Density is the design intent.",
|
|
804
|
+
"usedFor": [
|
|
805
|
+
"tightly-packed chip/badge interiors",
|
|
806
|
+
"icon-only controls"
|
|
807
|
+
],
|
|
808
|
+
"notFor": [
|
|
809
|
+
"any breathing surface",
|
|
810
|
+
"card / list-row padding"
|
|
811
|
+
],
|
|
812
|
+
"value": "2px",
|
|
813
|
+
"darkValue": "2px",
|
|
814
|
+
"unit": "px"
|
|
815
|
+
},
|
|
816
|
+
"sys.layout.container.lg": {
|
|
817
|
+
"role": "Spacious card padding (24→32px). Higher-hierarchy surfaces — primary dialogs, feature-card callouts.",
|
|
818
|
+
"usedFor": [
|
|
819
|
+
"dialog body padding",
|
|
820
|
+
"feature-card callouts",
|
|
821
|
+
"primary dialog bodies"
|
|
822
|
+
],
|
|
823
|
+
"notFor": [
|
|
824
|
+
"ordinary cards (use container.md)"
|
|
825
|
+
],
|
|
826
|
+
"value": "24px",
|
|
827
|
+
"darkValue": "24px",
|
|
828
|
+
"webValue": "32px",
|
|
829
|
+
"unit": "px"
|
|
830
|
+
},
|
|
831
|
+
"sys.layout.container.md": {
|
|
832
|
+
"role": "Default surface padding (16px) — card, list-row, sheet content. Also the system-wide baseline section horizontal padding.",
|
|
833
|
+
"usedFor": [
|
|
834
|
+
"card padding",
|
|
835
|
+
"list-row padding",
|
|
836
|
+
"sheet content padding",
|
|
837
|
+
"section horizontal padding"
|
|
838
|
+
],
|
|
839
|
+
"notFor": [
|
|
840
|
+
"page gutter (use layout.page.md, paid by the shell)",
|
|
841
|
+
"between sibling cards (use stack.md)",
|
|
842
|
+
"button padding (use container.sm)",
|
|
843
|
+
"dialog padding (often container.lg)"
|
|
844
|
+
],
|
|
845
|
+
"value": "16px",
|
|
846
|
+
"darkValue": "16px",
|
|
847
|
+
"unit": "px"
|
|
848
|
+
},
|
|
849
|
+
"sys.layout.container.sm": {
|
|
850
|
+
"role": "Button and input-field padding (12px). Canonical one-rung step-down for a child container nested inside a container.md parent.",
|
|
851
|
+
"usedFor": [
|
|
852
|
+
"button padding",
|
|
853
|
+
"input-field padding",
|
|
854
|
+
"nested-card interior (when parent uses container.md)"
|
|
855
|
+
],
|
|
856
|
+
"notFor": [
|
|
857
|
+
"top-level card / list-row / sheet (use container.md)"
|
|
858
|
+
],
|
|
859
|
+
"value": "12px",
|
|
860
|
+
"darkValue": "12px",
|
|
861
|
+
"unit": "px"
|
|
862
|
+
},
|
|
863
|
+
"sys.layout.container.xl": {
|
|
864
|
+
"role": "Hero section insets and large modal bodies (32→40px).",
|
|
865
|
+
"usedFor": [
|
|
866
|
+
"hero section interior",
|
|
867
|
+
"large modal bodies"
|
|
868
|
+
],
|
|
869
|
+
"notFor": [
|
|
870
|
+
"ordinary cards",
|
|
871
|
+
"ordinary dialogs"
|
|
872
|
+
],
|
|
873
|
+
"value": "32px",
|
|
874
|
+
"darkValue": "32px",
|
|
875
|
+
"webValue": "40px",
|
|
876
|
+
"unit": "px"
|
|
877
|
+
},
|
|
878
|
+
"sys.layout.container.xs": {
|
|
879
|
+
"role": "Small-control padding (8px) — chip body, segmented-control items, dense table cells.",
|
|
880
|
+
"usedFor": [
|
|
881
|
+
"chip body padding",
|
|
882
|
+
"segmented control items",
|
|
883
|
+
"compact list rows",
|
|
884
|
+
"dense table-cell inputs"
|
|
885
|
+
],
|
|
886
|
+
"notFor": [
|
|
887
|
+
"card padding (use container.md)"
|
|
888
|
+
],
|
|
889
|
+
"value": "8px",
|
|
890
|
+
"darkValue": "8px",
|
|
891
|
+
"unit": "px"
|
|
892
|
+
},
|
|
893
|
+
"sys.layout.inline.2xl": {
|
|
894
|
+
"role": "Widest horizontal gap (24→32px) — marketing inline composition.",
|
|
895
|
+
"usedFor": [
|
|
896
|
+
"marketing inline composition",
|
|
897
|
+
"showcase pair"
|
|
898
|
+
],
|
|
899
|
+
"notFor": [
|
|
900
|
+
"app routes"
|
|
901
|
+
],
|
|
902
|
+
"value": "24px",
|
|
903
|
+
"darkValue": "24px",
|
|
904
|
+
"webValue": "32px",
|
|
905
|
+
"unit": "px"
|
|
906
|
+
},
|
|
907
|
+
"sys.layout.inline.lg": {
|
|
908
|
+
"role": "Spacious horizontal gap (12→16px) — content-rich inline pair.",
|
|
909
|
+
"usedFor": [
|
|
910
|
+
"content-rich inline pair",
|
|
911
|
+
"header trailing-action cluster"
|
|
912
|
+
],
|
|
913
|
+
"notFor": [
|
|
914
|
+
"tight chip rows"
|
|
915
|
+
],
|
|
916
|
+
"value": "12px",
|
|
917
|
+
"darkValue": "12px",
|
|
918
|
+
"webValue": "16px",
|
|
919
|
+
"unit": "px"
|
|
920
|
+
},
|
|
921
|
+
"sys.layout.inline.md": {
|
|
922
|
+
"role": "Default horizontal sibling gap (12→16px) — button group, inline action cluster.",
|
|
923
|
+
"usedFor": [
|
|
924
|
+
"button group gap",
|
|
925
|
+
"inline action cluster",
|
|
926
|
+
"icon button row"
|
|
927
|
+
],
|
|
928
|
+
"notFor": [
|
|
929
|
+
"tight icon↔label (use inline.xs)"
|
|
930
|
+
],
|
|
931
|
+
"value": "8px",
|
|
932
|
+
"darkValue": "8px",
|
|
933
|
+
"unit": "px"
|
|
934
|
+
},
|
|
935
|
+
"sys.layout.inline.sm": {
|
|
936
|
+
"role": "Compact horizontal gap (8px) — chip↔chip, dense button cluster.",
|
|
937
|
+
"usedFor": [
|
|
938
|
+
"chip↔chip in a filter row",
|
|
939
|
+
"dense action cluster"
|
|
940
|
+
],
|
|
941
|
+
"notFor": [
|
|
942
|
+
"button group with breathing room (use inline.md)"
|
|
943
|
+
],
|
|
944
|
+
"value": "4px",
|
|
945
|
+
"darkValue": "4px",
|
|
946
|
+
"unit": "px"
|
|
947
|
+
},
|
|
948
|
+
"sys.layout.inline.xl": {
|
|
949
|
+
"role": "Wide horizontal gap (16→24px) — toolbar cluster, hero inline pair.",
|
|
950
|
+
"usedFor": [
|
|
951
|
+
"toolbar cluster",
|
|
952
|
+
"hero inline pair"
|
|
953
|
+
],
|
|
954
|
+
"notFor": [
|
|
955
|
+
"app-route action clusters (use inline.md)"
|
|
956
|
+
],
|
|
957
|
+
"value": "16px",
|
|
958
|
+
"darkValue": "16px",
|
|
959
|
+
"webValue": "24px",
|
|
960
|
+
"unit": "px"
|
|
961
|
+
},
|
|
962
|
+
"sys.layout.inline.xs": {
|
|
963
|
+
"role": "Hairline horizontal rhythm (4px) — glyph↔label inside a tight control.",
|
|
964
|
+
"usedFor": [
|
|
965
|
+
"icon↔label inside a chip",
|
|
966
|
+
"glyph↔caption pairs"
|
|
967
|
+
],
|
|
968
|
+
"notFor": [
|
|
969
|
+
"button group gap (use inline.md)",
|
|
970
|
+
"card row gap"
|
|
971
|
+
],
|
|
972
|
+
"value": "2px",
|
|
973
|
+
"darkValue": "2px",
|
|
974
|
+
"unit": "px"
|
|
975
|
+
},
|
|
976
|
+
"sys.layout.page.lg": {
|
|
977
|
+
"role": "Generous gutter for marketing / content-forward / editorial routes.",
|
|
978
|
+
"usedFor": [
|
|
979
|
+
"landing pages",
|
|
980
|
+
"editorial routes",
|
|
981
|
+
"high-emphasis CTAs"
|
|
982
|
+
],
|
|
983
|
+
"notFor": [
|
|
984
|
+
"ordinary app routes (use page.md — wider gutter loses density)"
|
|
985
|
+
],
|
|
986
|
+
"value": "24px",
|
|
987
|
+
"darkValue": "24px",
|
|
988
|
+
"webValue": "40px",
|
|
989
|
+
"unit": "px"
|
|
990
|
+
},
|
|
991
|
+
"sys.layout.page.md": {
|
|
992
|
+
"role": "Default viewport-edge gutter — canonical page-shell padding-inline for ordinary app routes.",
|
|
993
|
+
"usedFor": [
|
|
994
|
+
"feed routes",
|
|
995
|
+
"settings",
|
|
996
|
+
"compose flows",
|
|
997
|
+
"detail screens",
|
|
998
|
+
"lists"
|
|
999
|
+
],
|
|
1000
|
+
"notFor": [
|
|
1001
|
+
"card interior padding (use container.md)",
|
|
1002
|
+
"section interior padding (also container.md, but paid by the section, not the shell)",
|
|
1003
|
+
"between sibling cards (use stack.md)"
|
|
1004
|
+
],
|
|
1005
|
+
"value": "16px",
|
|
1006
|
+
"darkValue": "16px",
|
|
1007
|
+
"unit": "px"
|
|
1008
|
+
},
|
|
1009
|
+
"sys.layout.page.sm": {
|
|
1010
|
+
"role": "Compact viewport-edge gutter for information-dense routes.",
|
|
1011
|
+
"usedFor": [
|
|
1012
|
+
"dashboards",
|
|
1013
|
+
"admin tables",
|
|
1014
|
+
"multi-pane list/detail views"
|
|
1015
|
+
],
|
|
1016
|
+
"notFor": [
|
|
1017
|
+
"ordinary app routes (use page.md)",
|
|
1018
|
+
"marketing/landing pages (use page.lg)"
|
|
1019
|
+
],
|
|
1020
|
+
"value": "8px",
|
|
1021
|
+
"darkValue": "8px",
|
|
1022
|
+
"unit": "px"
|
|
1023
|
+
},
|
|
1024
|
+
"sys.layout.page.xl": {
|
|
1025
|
+
"role": "Widest gutter — showcase heroes and brand-moment landings.",
|
|
1026
|
+
"usedFor": [
|
|
1027
|
+
"showcase heroes",
|
|
1028
|
+
"brand landings"
|
|
1029
|
+
],
|
|
1030
|
+
"notFor": [
|
|
1031
|
+
"everyday app routes",
|
|
1032
|
+
"any route that shares rhythm with the rest of the app"
|
|
1033
|
+
],
|
|
1034
|
+
"value": "40px",
|
|
1035
|
+
"darkValue": "40px",
|
|
1036
|
+
"webValue": "64px",
|
|
1037
|
+
"unit": "px"
|
|
1038
|
+
},
|
|
1039
|
+
"sys.layout.stack.2xl": {
|
|
1040
|
+
"role": "Strong section break on content-dense vertical pages (40→48px) — hero→feature→CTA reads as discrete chapters.",
|
|
1041
|
+
"usedFor": [
|
|
1042
|
+
"chapter-style page breaks on content-heavy pages"
|
|
1043
|
+
],
|
|
1044
|
+
"notFor": [
|
|
1045
|
+
"ordinary app routes"
|
|
1046
|
+
],
|
|
1047
|
+
"value": "40px",
|
|
1048
|
+
"darkValue": "40px",
|
|
1049
|
+
"webValue": "48px",
|
|
1050
|
+
"unit": "px"
|
|
1051
|
+
},
|
|
1052
|
+
"sys.layout.stack.2xs": {
|
|
1053
|
+
"role": "Tight rhythm (4px) — label↔input, caption↔parent text, title↔immediately-attached subtitle. Signals two elements describe the same thing.",
|
|
1054
|
+
"usedFor": [
|
|
1055
|
+
"label↔input gap inside a FormField",
|
|
1056
|
+
"title↔subtitle",
|
|
1057
|
+
"caption↔parent text"
|
|
1058
|
+
],
|
|
1059
|
+
"notFor": [
|
|
1060
|
+
"sibling cards",
|
|
1061
|
+
"paragraph gaps"
|
|
1062
|
+
],
|
|
1063
|
+
"value": "4px",
|
|
1064
|
+
"darkValue": "4px",
|
|
1065
|
+
"unit": "px"
|
|
1066
|
+
},
|
|
1067
|
+
"sys.layout.stack.3xl": {
|
|
1068
|
+
"role": "Widest vertical break (48→64px) — hero-scale separations on marketing pages.",
|
|
1069
|
+
"usedFor": [
|
|
1070
|
+
"hero-scale separations",
|
|
1071
|
+
"marketing pages"
|
|
1072
|
+
],
|
|
1073
|
+
"notFor": [
|
|
1074
|
+
"app routes"
|
|
1075
|
+
],
|
|
1076
|
+
"value": "48px",
|
|
1077
|
+
"darkValue": "48px",
|
|
1078
|
+
"webValue": "64px",
|
|
1079
|
+
"unit": "px"
|
|
1080
|
+
},
|
|
1081
|
+
"sys.layout.stack.3xs": {
|
|
1082
|
+
"role": "Hairline vertical rhythm (2px) — visually bonded stacked pairs.",
|
|
1083
|
+
"usedFor": [
|
|
1084
|
+
"badge↔counter line",
|
|
1085
|
+
"two metadata lines that read as one unit"
|
|
1086
|
+
],
|
|
1087
|
+
"notFor": [
|
|
1088
|
+
"sibling cards",
|
|
1089
|
+
"form field gaps",
|
|
1090
|
+
"paragraph gaps"
|
|
1091
|
+
],
|
|
1092
|
+
"value": "2px",
|
|
1093
|
+
"darkValue": "2px",
|
|
1094
|
+
"unit": "px"
|
|
1095
|
+
},
|
|
1096
|
+
"sys.layout.stack.lg": {
|
|
1097
|
+
"role": "Gap between distinct content groups within a section (24→32px) — heading block↔body block, form group↔submit area.",
|
|
1098
|
+
"usedFor": [
|
|
1099
|
+
"heading block↔body block",
|
|
1100
|
+
"form group↔submit area",
|
|
1101
|
+
"list label↔scrollable track"
|
|
1102
|
+
],
|
|
1103
|
+
"notFor": [
|
|
1104
|
+
"sibling paragraphs (use stack.md)",
|
|
1105
|
+
"page-section break (use stack.xl)"
|
|
1106
|
+
],
|
|
1107
|
+
"value": "24px",
|
|
1108
|
+
"darkValue": "24px",
|
|
1109
|
+
"webValue": "32px",
|
|
1110
|
+
"unit": "px"
|
|
1111
|
+
},
|
|
1112
|
+
"sys.layout.stack.md": {
|
|
1113
|
+
"role": "Default vertical sibling rhythm (16px) — paragraph↔paragraph, card↔card, item↔item within one section.",
|
|
1114
|
+
"usedFor": [
|
|
1115
|
+
"paragraph↔paragraph gap",
|
|
1116
|
+
"card↔card gap in a vertical feed",
|
|
1117
|
+
"item↔item in a section"
|
|
1118
|
+
],
|
|
1119
|
+
"notFor": [
|
|
1120
|
+
"page-section break (use stack.xl)",
|
|
1121
|
+
"tightly-bound pairs (use stack.2xs)",
|
|
1122
|
+
"form field gap (use stack.sm)"
|
|
1123
|
+
],
|
|
1124
|
+
"value": "16px",
|
|
1125
|
+
"darkValue": "16px",
|
|
1126
|
+
"unit": "px"
|
|
1127
|
+
},
|
|
1128
|
+
"sys.layout.stack.sm": {
|
|
1129
|
+
"role": "Form field gap (12px) — between two adjacent fields or rows in a dense list.",
|
|
1130
|
+
"usedFor": [
|
|
1131
|
+
"form field↔field gap",
|
|
1132
|
+
"dense list-row gap"
|
|
1133
|
+
],
|
|
1134
|
+
"notFor": [
|
|
1135
|
+
"paragraph rhythm (use stack.md)",
|
|
1136
|
+
"section-region break"
|
|
1137
|
+
],
|
|
1138
|
+
"value": "12px",
|
|
1139
|
+
"darkValue": "12px",
|
|
1140
|
+
"unit": "px"
|
|
1141
|
+
},
|
|
1142
|
+
"sys.layout.stack.xl": {
|
|
1143
|
+
"role": "Top-level page-section break (32→40px) — strong content break that still sits within one scroll region.",
|
|
1144
|
+
"usedFor": [
|
|
1145
|
+
"page-section↔page-section break",
|
|
1146
|
+
"hero→feature transition"
|
|
1147
|
+
],
|
|
1148
|
+
"notFor": [
|
|
1149
|
+
"intra-section rhythm (use stack.md/lg)"
|
|
1150
|
+
],
|
|
1151
|
+
"value": "32px",
|
|
1152
|
+
"darkValue": "32px",
|
|
1153
|
+
"webValue": "40px",
|
|
1154
|
+
"unit": "px"
|
|
1155
|
+
},
|
|
1156
|
+
"sys.layout.stack.xs": {
|
|
1157
|
+
"role": "Compact list spacing (8px) — dense feed rows, compact menus, tightly-set metadata blocks. Also the canonical section↔section separator when needed, and the tighter rhythm for one-bound-group content blocks.",
|
|
1158
|
+
"usedFor": [
|
|
1159
|
+
"dense feed rows",
|
|
1160
|
+
"compact menus",
|
|
1161
|
+
"tightly-set metadata blocks",
|
|
1162
|
+
"section↔section gap when paddings alone don't separate them",
|
|
1163
|
+
"content rhythm for one-bound-group blocks (bullet rows, metadata lines)"
|
|
1164
|
+
],
|
|
1165
|
+
"notFor": [
|
|
1166
|
+
"sibling cards in a feed (use stack.md)",
|
|
1167
|
+
"section-region break (use stack.xl)"
|
|
1168
|
+
],
|
|
1169
|
+
"value": "8px",
|
|
1170
|
+
"darkValue": "8px",
|
|
1171
|
+
"unit": "px"
|
|
1172
|
+
},
|
|
1173
|
+
"sys.radius.2xl": {
|
|
1174
|
+
"role": "Showcase rounding (24px) — marketing hero radius.",
|
|
1175
|
+
"usedFor": [
|
|
1176
|
+
"marketing hero radius"
|
|
1177
|
+
],
|
|
1178
|
+
"notFor": [
|
|
1179
|
+
"app routes"
|
|
1180
|
+
],
|
|
1181
|
+
"value": "24px",
|
|
1182
|
+
"darkValue": "24px",
|
|
1183
|
+
"unit": "px"
|
|
1184
|
+
},
|
|
1185
|
+
"sys.radius.full": {
|
|
1186
|
+
"role": "Fully circular / pill (999px).",
|
|
1187
|
+
"usedFor": [
|
|
1188
|
+
"chip outer",
|
|
1189
|
+
"pill button",
|
|
1190
|
+
"circular Thumbnail",
|
|
1191
|
+
"avatar"
|
|
1192
|
+
],
|
|
1193
|
+
"notFor": [
|
|
1194
|
+
"cards (use radius.md)"
|
|
1195
|
+
],
|
|
1196
|
+
"value": "9999px",
|
|
1197
|
+
"darkValue": "9999px",
|
|
1198
|
+
"unit": "px"
|
|
1199
|
+
},
|
|
1200
|
+
"sys.radius.lg": {
|
|
1201
|
+
"role": "Spacious rounding (12px) — BottomSheet top corners, toast pill, large dialog.",
|
|
1202
|
+
"usedFor": [
|
|
1203
|
+
"bottom-sheet top corner radius",
|
|
1204
|
+
"toast pill outer",
|
|
1205
|
+
"large dialog"
|
|
1206
|
+
],
|
|
1207
|
+
"notFor": [
|
|
1208
|
+
"ordinary cards (use radius.md)"
|
|
1209
|
+
],
|
|
1210
|
+
"value": "12px",
|
|
1211
|
+
"darkValue": "12px",
|
|
1212
|
+
"unit": "px"
|
|
1213
|
+
},
|
|
1214
|
+
"sys.radius.md": {
|
|
1215
|
+
"role": "Default rounding (8px) — card, banner, dialog outer, Feed item, Section card.",
|
|
1216
|
+
"usedFor": [
|
|
1217
|
+
"card outer radius",
|
|
1218
|
+
"banner radius",
|
|
1219
|
+
"dialog body radius",
|
|
1220
|
+
"feed item radius"
|
|
1221
|
+
],
|
|
1222
|
+
"notFor": [
|
|
1223
|
+
"chip / pill (use radius.full)",
|
|
1224
|
+
"very large surfaces (use radius.lg/xl)"
|
|
1225
|
+
],
|
|
1226
|
+
"value": "8px",
|
|
1227
|
+
"darkValue": "8px",
|
|
1228
|
+
"unit": "px"
|
|
1229
|
+
},
|
|
1230
|
+
"sys.radius.none": {
|
|
1231
|
+
"role": "No corner rounding (0px).",
|
|
1232
|
+
"usedFor": [
|
|
1233
|
+
"full-bleed surfaces",
|
|
1234
|
+
"dividers",
|
|
1235
|
+
"non-rounded chrome"
|
|
1236
|
+
],
|
|
1237
|
+
"notFor": [
|
|
1238
|
+
"cards (use radius.md)"
|
|
1239
|
+
],
|
|
1240
|
+
"value": "0px",
|
|
1241
|
+
"darkValue": "0px",
|
|
1242
|
+
"unit": "px"
|
|
1243
|
+
},
|
|
1244
|
+
"sys.radius.sm": {
|
|
1245
|
+
"role": "Compact rounding (4px) — inline poll option, list radio, tag pill.",
|
|
1246
|
+
"usedFor": [
|
|
1247
|
+
"poll option row",
|
|
1248
|
+
"list radio interior",
|
|
1249
|
+
"tag pill"
|
|
1250
|
+
],
|
|
1251
|
+
"notFor": [
|
|
1252
|
+
"card outer corner (use radius.md)"
|
|
1253
|
+
],
|
|
1254
|
+
"value": "4px",
|
|
1255
|
+
"darkValue": "4px",
|
|
1256
|
+
"unit": "px"
|
|
1257
|
+
},
|
|
1258
|
+
"sys.radius.xl": {
|
|
1259
|
+
"role": "Hero-scale rounding (16px) — large hero surfaces.",
|
|
1260
|
+
"usedFor": [
|
|
1261
|
+
"hero surface radius"
|
|
1262
|
+
],
|
|
1263
|
+
"notFor": [
|
|
1264
|
+
"ordinary cards"
|
|
1265
|
+
],
|
|
1266
|
+
"value": "16px",
|
|
1267
|
+
"darkValue": "16px",
|
|
1268
|
+
"unit": "px"
|
|
1269
|
+
},
|
|
1270
|
+
"sys.radius.xs": {
|
|
1271
|
+
"role": "Subtle rounding (2px) — barely visible.",
|
|
1272
|
+
"usedFor": [
|
|
1273
|
+
"barely-rounded utility surfaces",
|
|
1274
|
+
"checkbox interior"
|
|
1275
|
+
],
|
|
1276
|
+
"notFor": [
|
|
1277
|
+
"cards"
|
|
1278
|
+
],
|
|
1279
|
+
"value": "2px",
|
|
1280
|
+
"darkValue": "2px",
|
|
1281
|
+
"unit": "px"
|
|
1282
|
+
},
|
|
1283
|
+
"sys.state.disabled": {
|
|
1284
|
+
"role": "Disabled foreground opacity.",
|
|
1285
|
+
"usedFor": [
|
|
1286
|
+
"disabled control opacity"
|
|
1287
|
+
],
|
|
1288
|
+
"notFor": [
|
|
1289
|
+
"enabled states"
|
|
1290
|
+
],
|
|
1291
|
+
"value": 0.4,
|
|
1292
|
+
"darkValue": 0.4,
|
|
1293
|
+
"unit": "opacity"
|
|
1294
|
+
},
|
|
1295
|
+
"sys.state.dragged": {
|
|
1296
|
+
"role": "Dragged overlay opacity.",
|
|
1297
|
+
"usedFor": [
|
|
1298
|
+
"dragged state"
|
|
1299
|
+
],
|
|
1300
|
+
"notFor": [
|
|
1301
|
+
"rest state"
|
|
1302
|
+
],
|
|
1303
|
+
"value": 0.16,
|
|
1304
|
+
"darkValue": 0.16,
|
|
1305
|
+
"unit": "opacity"
|
|
1306
|
+
},
|
|
1307
|
+
"sys.state.focus": {
|
|
1308
|
+
"role": "Focus overlay opacity.",
|
|
1309
|
+
"usedFor": [
|
|
1310
|
+
"focus state on interactive controls"
|
|
1311
|
+
],
|
|
1312
|
+
"notFor": [
|
|
1313
|
+
"rest state"
|
|
1314
|
+
],
|
|
1315
|
+
"value": 0.12,
|
|
1316
|
+
"darkValue": 0.12,
|
|
1317
|
+
"unit": "opacity"
|
|
1318
|
+
},
|
|
1319
|
+
"sys.state.hover": {
|
|
1320
|
+
"role": "Hover overlay opacity (state layer).",
|
|
1321
|
+
"usedFor": [
|
|
1322
|
+
"hover state on interactive controls"
|
|
1323
|
+
],
|
|
1324
|
+
"notFor": [
|
|
1325
|
+
"rest state"
|
|
1326
|
+
],
|
|
1327
|
+
"value": 0.08,
|
|
1328
|
+
"darkValue": 0.08,
|
|
1329
|
+
"unit": "opacity"
|
|
1330
|
+
},
|
|
1331
|
+
"sys.state.pressed": {
|
|
1332
|
+
"role": "Pressed overlay opacity.",
|
|
1333
|
+
"usedFor": [
|
|
1334
|
+
"pressed state on interactive controls"
|
|
1335
|
+
],
|
|
1336
|
+
"notFor": [
|
|
1337
|
+
"rest state"
|
|
1338
|
+
],
|
|
1339
|
+
"value": 0.16,
|
|
1340
|
+
"darkValue": 0.16,
|
|
1341
|
+
"unit": "opacity"
|
|
1342
|
+
},
|
|
1343
|
+
"sys.typo.body.lg": {
|
|
1344
|
+
"role": "Spacious body text (18px) — long-form single-topic content where reading is the job.",
|
|
1345
|
+
"usedFor": [
|
|
1346
|
+
"post body in a single-topic detail page",
|
|
1347
|
+
"article body"
|
|
1348
|
+
],
|
|
1349
|
+
"notFor": [
|
|
1350
|
+
"mixed-group section body (use body.md or sm)"
|
|
1351
|
+
],
|
|
1352
|
+
"value": {
|
|
1353
|
+
"size": "20px",
|
|
1354
|
+
"weight": 400,
|
|
1355
|
+
"line": 1.5,
|
|
1356
|
+
"tracking": "0em"
|
|
1357
|
+
},
|
|
1358
|
+
"darkValue": {
|
|
1359
|
+
"size": "20px",
|
|
1360
|
+
"weight": 400,
|
|
1361
|
+
"line": 1.5,
|
|
1362
|
+
"tracking": "0em"
|
|
1363
|
+
},
|
|
1364
|
+
"unit": "object"
|
|
1365
|
+
},
|
|
1366
|
+
"sys.typo.body.md": {
|
|
1367
|
+
"role": "Default body (16px) — single-topic page bodies, form input values.",
|
|
1368
|
+
"usedFor": [
|
|
1369
|
+
"single-topic body paragraphs",
|
|
1370
|
+
"FormField input value"
|
|
1371
|
+
],
|
|
1372
|
+
"notFor": [
|
|
1373
|
+
"mixed-group section body (use body.sm)"
|
|
1374
|
+
],
|
|
1375
|
+
"value": {
|
|
1376
|
+
"size": "16px",
|
|
1377
|
+
"weight": 400,
|
|
1378
|
+
"line": 1.5,
|
|
1379
|
+
"tracking": "0em"
|
|
1380
|
+
},
|
|
1381
|
+
"darkValue": {
|
|
1382
|
+
"size": "16px",
|
|
1383
|
+
"weight": 400,
|
|
1384
|
+
"line": 1.5,
|
|
1385
|
+
"tracking": "0em"
|
|
1386
|
+
},
|
|
1387
|
+
"unit": "object"
|
|
1388
|
+
},
|
|
1389
|
+
"sys.typo.body.sm": {
|
|
1390
|
+
"role": "Compact body (14px) — mixed-group sections (multiple distinct text groups within one body).",
|
|
1391
|
+
"usedFor": [
|
|
1392
|
+
"card listing several short descriptions",
|
|
1393
|
+
"settings page with mixed labels + helper text",
|
|
1394
|
+
"compact feed item descriptions"
|
|
1395
|
+
],
|
|
1396
|
+
"notFor": [
|
|
1397
|
+
"single-topic article body (use body.md)"
|
|
1398
|
+
],
|
|
1399
|
+
"value": {
|
|
1400
|
+
"size": "14px",
|
|
1401
|
+
"weight": 400,
|
|
1402
|
+
"line": 1.5,
|
|
1403
|
+
"tracking": "0em"
|
|
1404
|
+
},
|
|
1405
|
+
"darkValue": {
|
|
1406
|
+
"size": "14px",
|
|
1407
|
+
"weight": 400,
|
|
1408
|
+
"line": 1.5,
|
|
1409
|
+
"tracking": "0em"
|
|
1410
|
+
},
|
|
1411
|
+
"unit": "object"
|
|
1412
|
+
},
|
|
1413
|
+
"sys.typo.caption": {
|
|
1414
|
+
"role": "Caption (10px, weight 600) — smallest text rung; tiny annotation, badge count.",
|
|
1415
|
+
"usedFor": [
|
|
1416
|
+
"tiny annotation",
|
|
1417
|
+
"badge count",
|
|
1418
|
+
"smallest legal/aux line"
|
|
1419
|
+
],
|
|
1420
|
+
"notFor": [
|
|
1421
|
+
"any primary or meta text"
|
|
1422
|
+
],
|
|
1423
|
+
"value": {
|
|
1424
|
+
"size": "10px",
|
|
1425
|
+
"weight": 600,
|
|
1426
|
+
"line": 1.5,
|
|
1427
|
+
"tracking": "0.02em"
|
|
1428
|
+
},
|
|
1429
|
+
"darkValue": {
|
|
1430
|
+
"size": "10px",
|
|
1431
|
+
"weight": 600,
|
|
1432
|
+
"line": 1.5,
|
|
1433
|
+
"tracking": "0.02em"
|
|
1434
|
+
},
|
|
1435
|
+
"unit": "object"
|
|
1436
|
+
},
|
|
1437
|
+
"sys.typo.display.lg": {
|
|
1438
|
+
"role": "Largest display type (48→80px) — landing page hero headline.",
|
|
1439
|
+
"usedFor": [
|
|
1440
|
+
"landing hero headline",
|
|
1441
|
+
"marketing page hero"
|
|
1442
|
+
],
|
|
1443
|
+
"notFor": [
|
|
1444
|
+
"app-route page titles (use heading.lg)"
|
|
1445
|
+
],
|
|
1446
|
+
"value": {
|
|
1447
|
+
"size": "48px",
|
|
1448
|
+
"weight": 700,
|
|
1449
|
+
"line": 1.25,
|
|
1450
|
+
"tracking": "-0.02em"
|
|
1451
|
+
},
|
|
1452
|
+
"darkValue": {
|
|
1453
|
+
"size": "48px",
|
|
1454
|
+
"weight": 700,
|
|
1455
|
+
"line": 1.25,
|
|
1456
|
+
"tracking": "-0.02em"
|
|
1457
|
+
},
|
|
1458
|
+
"webValue": {
|
|
1459
|
+
"size": "80px"
|
|
1460
|
+
},
|
|
1461
|
+
"unit": "object"
|
|
1462
|
+
},
|
|
1463
|
+
"sys.typo.display.md": {
|
|
1464
|
+
"role": "Display type for editorial single-topic page titles (32px).",
|
|
1465
|
+
"usedFor": [
|
|
1466
|
+
"single-topic page title (post detail, article)"
|
|
1467
|
+
],
|
|
1468
|
+
"notFor": [
|
|
1469
|
+
"section title within a feed page (use heading.lg)"
|
|
1470
|
+
],
|
|
1471
|
+
"value": {
|
|
1472
|
+
"size": "40px",
|
|
1473
|
+
"weight": 700,
|
|
1474
|
+
"line": 1.25,
|
|
1475
|
+
"tracking": "-0.02em"
|
|
1476
|
+
},
|
|
1477
|
+
"darkValue": {
|
|
1478
|
+
"size": "40px",
|
|
1479
|
+
"weight": 700,
|
|
1480
|
+
"line": 1.25,
|
|
1481
|
+
"tracking": "-0.02em"
|
|
1482
|
+
},
|
|
1483
|
+
"unit": "object"
|
|
1484
|
+
},
|
|
1485
|
+
"sys.typo.display.sm": {
|
|
1486
|
+
"role": "Compact display type (24px) — secondary editorial heading.",
|
|
1487
|
+
"usedFor": [
|
|
1488
|
+
"secondary editorial heading"
|
|
1489
|
+
],
|
|
1490
|
+
"notFor": [
|
|
1491
|
+
"body text (use body.md)"
|
|
1492
|
+
],
|
|
1493
|
+
"value": {
|
|
1494
|
+
"size": "32px",
|
|
1495
|
+
"weight": 700,
|
|
1496
|
+
"line": 1.25,
|
|
1497
|
+
"tracking": "-0.02em"
|
|
1498
|
+
},
|
|
1499
|
+
"darkValue": {
|
|
1500
|
+
"size": "32px",
|
|
1501
|
+
"weight": 700,
|
|
1502
|
+
"line": 1.25,
|
|
1503
|
+
"tracking": "-0.02em"
|
|
1504
|
+
},
|
|
1505
|
+
"unit": "object"
|
|
1506
|
+
},
|
|
1507
|
+
"sys.typo.heading.lg": {
|
|
1508
|
+
"role": "Page-level type (24→32px) — Home / Jobs / Notifications page title in navigation-bar/main.",
|
|
1509
|
+
"usedFor": [
|
|
1510
|
+
"home navigation-bar title",
|
|
1511
|
+
"page-level top section title"
|
|
1512
|
+
],
|
|
1513
|
+
"notFor": [
|
|
1514
|
+
"card title (use heading.md)"
|
|
1515
|
+
],
|
|
1516
|
+
"value": {
|
|
1517
|
+
"size": "24px",
|
|
1518
|
+
"weight": 600,
|
|
1519
|
+
"line": 1.25,
|
|
1520
|
+
"tracking": "-0.01em"
|
|
1521
|
+
},
|
|
1522
|
+
"darkValue": {
|
|
1523
|
+
"size": "24px",
|
|
1524
|
+
"weight": 600,
|
|
1525
|
+
"line": 1.25,
|
|
1526
|
+
"tracking": "-0.01em"
|
|
1527
|
+
},
|
|
1528
|
+
"webValue": {
|
|
1529
|
+
"size": "32px"
|
|
1530
|
+
},
|
|
1531
|
+
"unit": "object"
|
|
1532
|
+
},
|
|
1533
|
+
"sys.typo.heading.md": {
|
|
1534
|
+
"role": "Section / card title (20px) — Section.label, Feed card title, Job card title.",
|
|
1535
|
+
"usedFor": [
|
|
1536
|
+
"section heading",
|
|
1537
|
+
"card title",
|
|
1538
|
+
"Feed.title"
|
|
1539
|
+
],
|
|
1540
|
+
"notFor": [
|
|
1541
|
+
"page title (use heading.lg)",
|
|
1542
|
+
"list-row label (use body.md)"
|
|
1543
|
+
],
|
|
1544
|
+
"value": {
|
|
1545
|
+
"size": "20px",
|
|
1546
|
+
"weight": 600,
|
|
1547
|
+
"line": 1.25,
|
|
1548
|
+
"tracking": "-0.01em"
|
|
1549
|
+
},
|
|
1550
|
+
"darkValue": {
|
|
1551
|
+
"size": "20px",
|
|
1552
|
+
"weight": 600,
|
|
1553
|
+
"line": 1.25,
|
|
1554
|
+
"tracking": "-0.01em"
|
|
1555
|
+
},
|
|
1556
|
+
"unit": "object"
|
|
1557
|
+
},
|
|
1558
|
+
"sys.typo.heading.sm": {
|
|
1559
|
+
"role": "Sub-section heading (16px) — small subhead inside a card.",
|
|
1560
|
+
"usedFor": [
|
|
1561
|
+
"small subhead inside a card",
|
|
1562
|
+
"sub-section heading"
|
|
1563
|
+
],
|
|
1564
|
+
"notFor": [
|
|
1565
|
+
"card title (use heading.md)"
|
|
1566
|
+
],
|
|
1567
|
+
"value": {
|
|
1568
|
+
"size": "16px",
|
|
1569
|
+
"weight": 600,
|
|
1570
|
+
"line": 1.25,
|
|
1571
|
+
"tracking": "-0.01em"
|
|
1572
|
+
},
|
|
1573
|
+
"darkValue": {
|
|
1574
|
+
"size": "16px",
|
|
1575
|
+
"weight": 600,
|
|
1576
|
+
"line": 1.25,
|
|
1577
|
+
"tracking": "-0.01em"
|
|
1578
|
+
},
|
|
1579
|
+
"unit": "object"
|
|
1580
|
+
},
|
|
1581
|
+
"sys.typo.label.lg": {
|
|
1582
|
+
"role": "Largest label rung (16px) — primary button label.",
|
|
1583
|
+
"usedFor": [
|
|
1584
|
+
"primary button label (Button.standard)",
|
|
1585
|
+
"tab label"
|
|
1586
|
+
],
|
|
1587
|
+
"notFor": [
|
|
1588
|
+
"body text (use body.md)"
|
|
1589
|
+
],
|
|
1590
|
+
"value": {
|
|
1591
|
+
"size": "16px",
|
|
1592
|
+
"weight": 600,
|
|
1593
|
+
"line": 1.5,
|
|
1594
|
+
"tracking": "0em"
|
|
1595
|
+
},
|
|
1596
|
+
"darkValue": {
|
|
1597
|
+
"size": "16px",
|
|
1598
|
+
"weight": 600,
|
|
1599
|
+
"line": 1.5,
|
|
1600
|
+
"tracking": "0em"
|
|
1601
|
+
},
|
|
1602
|
+
"unit": "object"
|
|
1603
|
+
},
|
|
1604
|
+
"sys.typo.label.md": {
|
|
1605
|
+
"role": "Default label (14px) — list-row primary text, chip label, secondary control label, figure caption.",
|
|
1606
|
+
"usedFor": [
|
|
1607
|
+
"list-row primary label",
|
|
1608
|
+
"chip label",
|
|
1609
|
+
"navigation-bar text title",
|
|
1610
|
+
"figure caption",
|
|
1611
|
+
"supplementary annotation"
|
|
1612
|
+
],
|
|
1613
|
+
"notFor": [
|
|
1614
|
+
"body text"
|
|
1615
|
+
],
|
|
1616
|
+
"value": {
|
|
1617
|
+
"size": "14px",
|
|
1618
|
+
"weight": 600,
|
|
1619
|
+
"line": 1.5,
|
|
1620
|
+
"tracking": "0em"
|
|
1621
|
+
},
|
|
1622
|
+
"darkValue": {
|
|
1623
|
+
"size": "14px",
|
|
1624
|
+
"weight": 600,
|
|
1625
|
+
"line": 1.5,
|
|
1626
|
+
"tracking": "0em"
|
|
1627
|
+
},
|
|
1628
|
+
"unit": "object"
|
|
1629
|
+
},
|
|
1630
|
+
"sys.typo.label.sm": {
|
|
1631
|
+
"role": "Small label (12px) — chip metric value, supporting label, meta lines, helper text, engagement counts.",
|
|
1632
|
+
"usedFor": [
|
|
1633
|
+
"chip metric value",
|
|
1634
|
+
"supporting label",
|
|
1635
|
+
"Feed meta line (channel · time)",
|
|
1636
|
+
"follower count under a profile name",
|
|
1637
|
+
"engagement counter (likes / comments / views)"
|
|
1638
|
+
],
|
|
1639
|
+
"notFor": [
|
|
1640
|
+
"body paragraphs"
|
|
1641
|
+
],
|
|
1642
|
+
"value": {
|
|
1643
|
+
"size": "12px",
|
|
1644
|
+
"weight": 600,
|
|
1645
|
+
"line": 1.5,
|
|
1646
|
+
"tracking": "0.02em"
|
|
1647
|
+
},
|
|
1648
|
+
"darkValue": {
|
|
1649
|
+
"size": "12px",
|
|
1650
|
+
"weight": 600,
|
|
1651
|
+
"line": 1.5,
|
|
1652
|
+
"tracking": "0.02em"
|
|
1653
|
+
},
|
|
1654
|
+
"unit": "object"
|
|
1655
|
+
}
|
|
1656
|
+
}
|
|
1657
|
+
}
|