place.mode.standard.defs
Schema Diff
+40 -14
Compatibility Analysis
Breaking Changes Detected
21 breaking changes, 18 non-breaking changes.
Breaking Changes (21)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "place.mode.standard.defs#actionPriorities", src: "place.mode.standard.defs#actionPriorities", tgt: "place.mode.standard.defs#actionPriorities.secondary", kind: "prop", name: Some("secondary") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "place.mode.standard.defs#actionPriorities", src: "place.mode.standard.defs#actionPriorities", tgt: "place.mode.standard.defs#actionPriorities.primary", kind: "prop", name: Some("primary") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "place.mode.standard.defs#actionPriorities", src: "place.mode.standard.defs#actionPriorities", tgt: "place.mode.standard.defs#actionPriorities.auxiliary", kind: "prop", name: Some("auxiliary") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "place.mode.standard.defs#surfacePriorities", src: "place.mode.standard.defs#surfacePriorities", tgt: "place.mode.standard.defs#surfacePriorities.auxiliary", kind: "prop", name: Some("auxiliary") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "place.mode.standard.defs#surfacePriorities", src: "place.mode.standard.defs#surfacePriorities", tgt: "place.mode.standard.defs#surfacePriorities.secondary", kind: "prop", name: Some("secondary") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "place.mode.standard.defs#surfacePriorities", src: "place.mode.standard.defs#surfacePriorities", tgt: "place.mode.standard.defs#surfacePriorities.primary", kind: "prop", name: Some("primary") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "place.mode.standard.defs#colorPriorities", src: "place.mode.standard.defs#colorPriorities", tgt: "place.mode.standard.defs#colorPriorities.secondary", kind: "prop", name: Some("secondary") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "place.mode.standard.defs#colorPriorities", src: "place.mode.standard.defs#colorPriorities", tgt: "place.mode.standard.defs#colorPriorities.primary", kind: "prop", name: Some("primary") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "place.mode.standard.defs#colorPriorities", src: "place.mode.standard.defs#colorPriorities", tgt: "place.mode.standard.defs#colorPriorities.auxiliary", kind: "prop", name: Some("auxiliary") }
- RemovedVertex RemovedVertex { vertex_id: "lex:place.mode.standard.defs#colorPriorities" }
- RemovedVertex RemovedVertex { vertex_id: "place.mode.standard.defs#colorPriorities" }
- RemovedVertex RemovedVertex { vertex_id: "place.mode.standard.defs#colorPriorities.auxiliary" }
- RemovedVertex RemovedVertex { vertex_id: "place.mode.standard.defs#colorPriorities.primary" }
- RemovedVertex RemovedVertex { vertex_id: "place.mode.standard.defs#colorPriorities.secondary" }
- RemovedEdge RemovedEdge { src: "place.mode.standard.defs#colorAspect.action", tgt: "lex:place.mode.standard.defs#colorPriorities", kind: "ref", name: None }
- RemovedEdge RemovedEdge { src: "place.mode.standard.defs#colorAspect.surface", tgt: "lex:place.mode.standard.defs#colorPriorities", kind: "ref", name: None }
- RemovedEdge RemovedEdge { src: "place.mode.standard.defs#colorPriorities.auxiliary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- RemovedEdge RemovedEdge { src: "place.mode.standard.defs#colorPriorities.primary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- RemovedEdge RemovedEdge { src: "place.mode.standard.defs#colorPriorities.secondary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- ConstraintTightened ConstraintTightened { vertex_id: "place.mode.standard.defs#colorAspect.action", sort: "ref", old_value: "lex:place.mode.standard.defs#colorPriorities", new_value: "lex:place.mode.standard.defs#actionPriorities" }
- ConstraintTightened ConstraintTightened { vertex_id: "place.mode.standard.defs#colorAspect.surface", sort: "ref", old_value: "lex:place.mode.standard.defs#colorPriorities", new_value: "lex:place.mode.standard.defs#surfacePriorities" }
Non-Breaking Changes (18)
- AddedVertex AddedVertex { vertex_id: "lex:place.mode.standard.defs#actionPriorities" }
- AddedVertex AddedVertex { vertex_id: "lex:place.mode.standard.defs#surfacePriorities" }
- AddedVertex AddedVertex { vertex_id: "place.mode.standard.defs#actionPriorities" }
- AddedVertex AddedVertex { vertex_id: "place.mode.standard.defs#actionPriorities.auxiliary" }
- AddedVertex AddedVertex { vertex_id: "place.mode.standard.defs#actionPriorities.primary" }
- AddedVertex AddedVertex { vertex_id: "place.mode.standard.defs#actionPriorities.secondary" }
- AddedVertex AddedVertex { vertex_id: "place.mode.standard.defs#surfacePriorities" }
- AddedVertex AddedVertex { vertex_id: "place.mode.standard.defs#surfacePriorities.auxiliary" }
- AddedVertex AddedVertex { vertex_id: "place.mode.standard.defs#surfacePriorities.primary" }
- AddedVertex AddedVertex { vertex_id: "place.mode.standard.defs#surfacePriorities.secondary" }
- AddedEdge AddedEdge { src: "place.mode.standard.defs#actionPriorities.auxiliary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "place.mode.standard.defs#actionPriorities.primary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "place.mode.standard.defs#actionPriorities.secondary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "place.mode.standard.defs#colorAspect.action", tgt: "lex:place.mode.standard.defs#actionPriorities", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "place.mode.standard.defs#colorAspect.surface", tgt: "lex:place.mode.standard.defs#surfacePriorities", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "place.mode.standard.defs#surfacePriorities.auxiliary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "place.mode.standard.defs#surfacePriorities.primary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "place.mode.standard.defs#surfacePriorities.secondary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "lex:place.mode.standard.defs#colorPriorities" }RemovedVertex { vertex_id: "place.mode.standard.defs#colorPriorities" }RemovedVertex { vertex_id: "place.mode.standard.defs#colorPriorities.auxiliary" }RemovedVertex { vertex_id: "place.mode.standard.defs#colorPriorities.primary" }RemovedVertex { vertex_id: "place.mode.standard.defs#colorPriorities.secondary" }
Added Elements
AddedVertex { vertex_id: "lex:place.mode.standard.defs#actionPriorities" }AddedVertex { vertex_id: "lex:place.mode.standard.defs#surfacePriorities" }AddedVertex { vertex_id: "place.mode.standard.defs#actionPriorities" }AddedVertex { vertex_id: "place.mode.standard.defs#actionPriorities.auxiliary" }AddedVertex { vertex_id: "place.mode.standard.defs#actionPriorities.primary" }AddedVertex { vertex_id: "place.mode.standard.defs#actionPriorities.secondary" }AddedVertex { vertex_id: "place.mode.standard.defs#surfacePriorities" }AddedVertex { vertex_id: "place.mode.standard.defs#surfacePriorities.auxiliary" }AddedVertex { vertex_id: "place.mode.standard.defs#surfacePriorities.primary" }AddedVertex { vertex_id: "place.mode.standard.defs#surfacePriorities.secondary" }
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "place.mode.standard.defs#colorAspect.surface", sort: "ref", old_value: "lex:place.mode.standard.defs#colorPriorities", new_value: "lex:place.mode.standard.defs#surfacePriorities" }
- ConstraintTightened ConstraintTightened { vertex_id: "place.mode.standard.defs#colorAspect.action", sort: "ref", old_value: "lex:place.mode.standard.defs#colorPriorities", new_value: "lex:place.mode.standard.defs#actionPriorities" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "place.mode.standard.defs#actionPriorities", src: "place.mode.standard.defs#actionPriorities", tgt: "place.mode.standard.defs#actionPriorities.secondary", kind: "prop", name: Some("secondary") }
- Breaking: RequiredEdgeAdded { vertex_id: "place.mode.standard.defs#actionPriorities", src: "place.mode.standard.defs#actionPriorities", tgt: "place.mode.standard.defs#actionPriorities.primary", kind: "prop", name: Some("primary") }
- Breaking: RequiredEdgeAdded { vertex_id: "place.mode.standard.defs#actionPriorities", src: "place.mode.standard.defs#actionPriorities", tgt: "place.mode.standard.defs#actionPriorities.auxiliary", kind: "prop", name: Some("auxiliary") }
- Breaking: RequiredEdgeAdded { vertex_id: "place.mode.standard.defs#surfacePriorities", src: "place.mode.standard.defs#surfacePriorities", tgt: "place.mode.standard.defs#surfacePriorities.auxiliary", kind: "prop", name: Some("auxiliary") }
- Breaking: RequiredEdgeAdded { vertex_id: "place.mode.standard.defs#surfacePriorities", src: "place.mode.standard.defs#surfacePriorities", tgt: "place.mode.standard.defs#surfacePriorities.secondary", kind: "prop", name: Some("secondary") }
- Breaking: RequiredEdgeAdded { vertex_id: "place.mode.standard.defs#surfacePriorities", src: "place.mode.standard.defs#surfacePriorities", tgt: "place.mode.standard.defs#surfacePriorities.primary", kind: "prop", name: Some("primary") }
- Breaking: RequiredEdgeRemoved { vertex_id: "place.mode.standard.defs#colorPriorities", src: "place.mode.standard.defs#colorPriorities", tgt: "place.mode.standard.defs#colorPriorities.secondary", kind: "prop", name: Some("secondary") }
- Breaking: RequiredEdgeRemoved { vertex_id: "place.mode.standard.defs#colorPriorities", src: "place.mode.standard.defs#colorPriorities", tgt: "place.mode.standard.defs#colorPriorities.primary", kind: "prop", name: Some("primary") }
- Breaking: RequiredEdgeRemoved { vertex_id: "place.mode.standard.defs#colorPriorities", src: "place.mode.standard.defs#colorPriorities", tgt: "place.mode.standard.defs#colorPriorities.auxiliary", kind: "prop", name: Some("auxiliary") }
- Breaking: RemovedEdge { src: "place.mode.standard.defs#colorAspect.action", tgt: "lex:place.mode.standard.defs#colorPriorities", kind: "ref", name: None }
- Breaking: RemovedEdge { src: "place.mode.standard.defs#colorAspect.surface", tgt: "lex:place.mode.standard.defs#colorPriorities", kind: "ref", name: None }
- Breaking: RemovedEdge { src: "place.mode.standard.defs#colorPriorities.auxiliary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- Breaking: RemovedEdge { src: "place.mode.standard.defs#colorPriorities.primary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- Breaking: RemovedEdge { src: "place.mode.standard.defs#colorPriorities.secondary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "place.mode.standard.defs#actionPriorities.auxiliary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "place.mode.standard.defs#actionPriorities.primary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "place.mode.standard.defs#actionPriorities.secondary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "place.mode.standard.defs#colorAspect.action", tgt: "lex:place.mode.standard.defs#actionPriorities", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "place.mode.standard.defs#colorAspect.surface", tgt: "lex:place.mode.standard.defs#surfacePriorities", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "place.mode.standard.defs#surfacePriorities.auxiliary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "place.mode.standard.defs#surfacePriorities.primary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "place.mode.standard.defs#surfacePriorities.secondary", tgt: "lex:place.mode.standard.defs#colorIntent", kind: "ref", name: None }
1
1
{
2
2
"id": "place.mode.standard.defs",
3
3
"defs": {
4
4
"aspects": {
5
5
"type": "object",
6
6
"properties": {
7
7
"color": {
8
8
"ref": "lex:place.mode.standard.defs#colorAspect",
9
9
"type": "ref",
10
10
"description": "The color aspect (21 intents). Optional, but complete when present."
11
11
},
12
12
"typography": {
13
13
"ref": "lex:place.mode.standard.defs#typographyAspect",
14
14
"type": "ref",
15
15
"description": "The typography aspect (12 text intents). Optional, but complete when present."
16
16
}
17
17
},
18
18
"description": "A theme's renderable style, grouped by aspect. Each aspect is optional but complete when present; a theme SHOULD carry at least one."
19
19
},
20
20
"textIntent": {
21
21
"type": "object",
22
22
"required": [
23
23
"size",
24
24
"weight",
25
25
"family",
26
26
"lineHeight"
27
27
],
28
28
"properties": {
29
29
"size": {
30
30
"type": "string",
31
31
"maxLength": 128,
32
32
"description": "A valid CSS <length-percentage> font size (e.g. '1.25rem')."
33
33
},
34
34
"family": {
35
35
"type": "string",
36
36
"maxLength": 256,
37
37
"description": "A CSS font-family value; should match a `family` in the theme's `fonts` array."
38
38
},
39
39
"weight": {
40
40
"type": "string",
41
41
"maxLength": 128,
42
42
"description": "A valid CSS <font-weight> (e.g. '400', '600')."
43
43
},
44
44
"lineHeight": {
45
45
"type": "string",
46
46
"maxLength": 128,
47
47
"description": "A valid CSS line-height value (e.g. '1.4')."
48
48
}
49
49
},
50
50
"description": "Typography metrics for a single text priority. Color is intentionally excluded (it belongs to the containing surface)."
51
51
},
52
52
"colorAspect": {
53
53
"type": "object",
54
54
"required": [
55
55
"control",
56
56
"action",
57
57
"surface"
58
58
],
59
59
"properties": {
60
60
"action": {
61
-
"ref": "lex:place.mode.standard.defs#colorPriorities",
61
+
"ref": "lex:place.mode.standard.defs#actionPriorities",
62
62
"type": "ref",
63
-
"description": "Interactive element (button/link) color by priority."
63
+
"description": "Interactive element (button/link) color, by priority."
64
64
},
65
65
"control": {
66
66
"ref": "lex:place.mode.standard.defs#colorIntent",
67
67
"type": "ref",
68
-
"description": "Form input (control) color. No priority — all controls are peers."
68
+
"description": "Form fields. No priority — all controls are peers."
69
69
},
70
70
"surface": {
71
-
"ref": "lex:place.mode.standard.defs#colorPriorities",
71
+
"ref": "lex:place.mode.standard.defs#surfacePriorities",
72
72
"type": "ref",
73
-
"description": "Non-interactive container (surface) color by priority."
73
+
"description": "Non-interactive container (surface) color, by how far above the page the surface sits."
74
74
}
75
75
},
76
76
"description": "The complete color aspect of a theme: control + action + surface (21 intents)."
77
77
},
78
78
"colorIntent": {
79
79
"type": "object",
80
80
"required": [
81
81
"background",
82
82
"foreground",
83
83
"border"
84
84
],
85
85
"properties": {
86
86
"border": {
87
87
"type": "string",
88
88
"maxLength": 128,
89
89
"description": "Any valid CSS <color> for the element's border."
90
90
},
91
91
"background": {
92
92
"type": "string",
93
93
"maxLength": 128,
94
94
"description": "Any valid CSS <color> for the element's background."
95
95
},
96
96
"foreground": {
97
97
"type": "string",
98
98
"maxLength": 128,
99
99
"description": "Any valid CSS <color> for the element's foreground (text/icon)."
100
100
}
101
101
},
102
102
"description": "The three color values for a single intent (a purpose, or a purpose+priority)."
103
103
},
104
104
"fontDescriptor": {
105
105
"type": "object",
106
106
"required": [
107
107
"family"
108
108
],
109
109
"properties": {
110
110
"src": {
111
111
"type": "string",
112
112
"maxLength": 1024,
113
113
"description": "A URL to the font file, or a CSS `src` value (e.g. 'url(https://...) format(woff2)'). Alternative to `file`."
114
114
},
115
115
"file": {
116
116
"type": "blob",
117
117
"accept": [
118
118
"font/woff2",
119
119
"font/woff",
120
120
"font/ttf",
121
121
"font/otf",
122
122
"application/octet-stream"
123
123
],
124
124
"maxSize": 5000000,
125
125
"description": "A font file stored as a blob on the author's PDS. Takes precedence over `src` when both are present."
126
126
},
127
127
"style": {
128
128
"type": "string",
129
129
"maxLength": 32,
130
130
"description": "CSS font-style descriptor (e.g. 'normal', 'italic', 'oblique 0deg 20deg')."
131
131
},
132
132
"family": {
133
133
"type": "string",
134
134
"maxLength": 256,
135
135
"description": "The font-family name as it should appear in CSS (e.g. 'Inter')."
136
136
},
137
137
"weight": {
138
138
"type": "string",
139
139
"maxLength": 32,
140
140
"description": "CSS font-weight descriptor or range (e.g. '400', '100 900')."
141
141
},
142
142
"display": {
143
143
"type": "string",
144
144
"maxLength": 32,
145
145
"description": "CSS font-display descriptor (e.g. 'swap', 'fallback')."
146
146
},
147
147
"stretch": {
148
148
"type": "string",
149
149
"maxLength": 64,
150
150
"description": "CSS font-stretch/font-width descriptor or range (e.g. 'normal', '75% 125%')."
151
151
},
152
152
"unicodeRange": {
153
153
"type": "string",
154
154
"maxLength": 2048,
155
155
"description": "CSS unicode-range descriptor (e.g. 'U+0000-00FF, U+0131'). Lets several entries share one `family` for subsetting."
156
156
}
157
157
},
158
158
"description": "One @font-face declaration. Only `family` is schema-required; a source (`src` or `file`) is required by the standard."
159
159
},
160
160
"textPriorities": {
161
161
"type": "object",
162
162
"required": [
163
163
"primary",
164
164
"secondary",
165
165
"auxiliary"
166
166
],
167
167
"properties": {
168
168
"primary": {
169
169
"ref": "lex:place.mode.standard.defs#textIntent",
170
170
"type": "ref",
171
-
"description": "Highest-priority text (headlines/titles)."
171
+
"description": "Headlines and titles."
172
172
},
173
173
"auxiliary": {
174
174
"ref": "lex:place.mode.standard.defs#textIntent",
175
175
"type": "ref",
176
-
"description": "Smallest accessible text (captions, legal, help)."
176
+
"description": "Detail and help: captions, hints, legal."
177
177
},
178
178
"secondary": {
179
179
"ref": "lex:place.mode.standard.defs#textIntent",
180
180
"type": "ref",
181
-
"description": "Body text."
181
+
"description": "Body copy — the text a page is mostly made of."
182
182
}
183
183
},
184
-
"description": "The three Mise en Mode priorities for the `text` purpose."
184
+
"description": "The three Mise en Mode priorities for `text`, counting down from the text that claims most of a reader's attention to the text that claims least."
185
185
},
186
-
"colorPriorities": {
186
+
"actionPriorities": {
187
187
"type": "object",
188
188
"required": [
189
189
"primary",
190
190
"secondary",
191
191
"auxiliary"
192
192
],
193
193
"properties": {
194
194
"primary": {
195
195
"ref": "lex:place.mode.standard.defs#colorIntent",
196
196
"type": "ref",
197
-
"description": "Highest-priority treatment."
197
+
"description": "The one thing the screen most wants you to do."
198
198
},
199
199
"auxiliary": {
200
200
"ref": "lex:place.mode.standard.defs#colorIntent",
201
201
"type": "ref",
202
-
"description": "Lowest-priority / default treatment."
202
+
"description": "The quietest choice."
203
203
},
204
204
"secondary": {
205
205
"ref": "lex:place.mode.standard.defs#colorIntent",
206
206
"type": "ref",
207
-
"description": "Mid-priority treatment."
207
+
"description": "A supporting choice."
208
208
}
209
209
},
210
-
"description": "The three Mise en Mode priorities (primary, secondary, auxiliary) for a color-bearing purpose such as `action` or `surface`."
210
+
"description": "The three Mise en Mode priorities for `action`, counting down from the thing a screen most wants you to do to the thing it least insists on."
211
211
},
212
212
"typographyAspect": {
213
213
"type": "object",
214
214
"required": [
215
215
"text"
216
216
],
217
217
"properties": {
218
218
"text": {
219
219
"ref": "lex:place.mode.standard.defs#textPriorities",
220
220
"type": "ref",
221
221
"description": "Typography by priority."
222
222
}
223
223
},
224
224
"description": "The typography aspect of a theme: text (12 intents), complete when present."
225
+
},
226
+
"surfacePriorities": {
227
+
"type": "object",
228
+
"required": [
229
+
"primary",
230
+
"secondary",
231
+
"auxiliary"
232
+
],
233
+
"properties": {
234
+
"primary": {
235
+
"ref": "lex:place.mode.standard.defs#colorIntent",
236
+
"type": "ref",
237
+
"description": "A surface that interrupts the page: modal, dialog, alert, sheet."
238
+
},
239
+
"auxiliary": {
240
+
"ref": "lex:place.mode.standard.defs#colorIntent",
241
+
"type": "ref",
242
+
"description": "The page itself, and everything sitting on it rather than above it — cards, bars, panels. The layer a theme is mostly made of."
243
+
},
244
+
"secondary": {
245
+
"ref": "lex:place.mode.standard.defs#colorIntent",
246
+
"type": "ref",
247
+
"description": "A surface over the page, not instead of it: flyout, menu, popover."
248
+
}
249
+
},
250
+
"description": "The three Mise en Mode priorities for `surface`, counting down from the layer that claims most of a reader's attention to the one that claims least. Because priority counts down, the page is `auxiliary` and not `primary`: a page is what a modal interrupts."
225
251
}
226
252
},
227
253
"$type": "com.atproto.lexicon.schema",
228
254
"lexicon": 1
229
255
}