@forumone/throughline-design-contract 0.2.0 → 0.3.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/CHANGELOG.md +14 -0
- package/README.md +27 -0
- package/dist/loader.d.ts +8 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +16 -0
- package/dist/loader.js.map +1 -1
- package/dist/manifest.d.ts +5 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/schema.d.ts +54 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +60 -0
- package/dist/schema.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @forumone/throughline-design-contract
|
|
2
2
|
|
|
3
|
+
## 0.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 24bd325: Add an optional `group` to the component contract, so an authoring UI can shelve components separately from what they are.
|
|
8
|
+
|
|
9
|
+
`category` was answering two questions at once — what a component _is_, and where an editor looks for it — and it is a bad answer to the second at any real size. A design system of sixty blocks files roughly half of them under `section`, so a picker grouped on `category` hands back the flat list the grouping was meant to avoid while `card` and `navigation` hold one entry each. Evening the shelves out within `category` would file components under the wrong kind for every consumer that reasons about kind, including `list_components`.
|
|
10
|
+
|
|
11
|
+
So `category` keeps its meaning and its enum, and `group` takes the second question with a vocabulary of shelf labels: `hero`, `narrative`, `proof`, `listing`, `media`, `form`, `cta`, `navigation`, `utility`. No `section`, which is the problem being solved; no `card` or `data`, which name a kind rather than a place to look.
|
|
12
|
+
|
|
13
|
+
New API: `groupOf(component)` resolves `group ?? category`, and `LoadedManifest` gains `listByGroup()` and `listGroups()` which match on the resolved value. Grouping consumers should call `groupOf` rather than reading either field.
|
|
14
|
+
|
|
15
|
+
Non-breaking. `group` is optional, and the fallback means a design system that sets none groups exactly as it did before.
|
|
16
|
+
|
|
3
17
|
## 0.2.0
|
|
4
18
|
|
|
5
19
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -64,6 +64,27 @@ export const contract: ComponentContract = {
|
|
|
64
64
|
|
|
65
65
|
Your design system's build tooling aggregates these into a `Manifest`. See the reference design system for a canonical example.
|
|
66
66
|
|
|
67
|
+
## `category` and `group`
|
|
68
|
+
|
|
69
|
+
Two fields, two questions.
|
|
70
|
+
|
|
71
|
+
`category` is what the component **is** — `hero`, `section`, `card`, `media`, `cta`, `navigation`, `data`, `form`, `utility`. It is required, and consumers reason about it as a kind: `list_components` in the components MCP server filters on it.
|
|
72
|
+
|
|
73
|
+
`group` is where an **editor looks for it** — `hero`, `narrative`, `proof`, `listing`, `media`, `form`, `cta`, `navigation`, `utility`. It is optional, and exists because `category` is a bad answer to that second question at any real size. A design system of sixty blocks files roughly half of them under `section`, so an authoring UI grouped on `category` hands back the flat list the grouping was meant to avoid, while `card` and `navigation` hold one entry each. Evening the shelves out by moving components between categories would file them under the wrong *kind* for every other consumer, so the fix is a second field rather than a looser first one.
|
|
74
|
+
|
|
75
|
+
There is deliberately no `section` in the group vocabulary — a shelf holding half the library is the problem this field exists to solve — and no `card` or `data`, both of which name a kind rather than a place to look.
|
|
76
|
+
|
|
77
|
+
Read the resolved value with `groupOf`, never either field directly:
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
import { groupOf } from '@forumone/throughline-design-contract'
|
|
81
|
+
|
|
82
|
+
groupOf({ category: 'section', group: 'proof' }) // 'proof'
|
|
83
|
+
groupOf({ category: 'hero' }) // 'hero' — falls back
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The fallback is what makes this a non-breaking addition: a design system that sets no `group` anywhere groups exactly as it did before the field existed, and one part-way through adopting it stays consistent instead of grouping half one way and half the other.
|
|
87
|
+
|
|
67
88
|
## Loading a manifest at runtime
|
|
68
89
|
|
|
69
90
|
```typescript
|
|
@@ -78,6 +99,12 @@ console.log(hero.intent)
|
|
|
78
99
|
for (const name of loaded.listByCategory('card')) {
|
|
79
100
|
console.log(name)
|
|
80
101
|
}
|
|
102
|
+
|
|
103
|
+
// Grouped for an authoring UI. Matches on the resolved group, so components
|
|
104
|
+
// with no `group` are found by their category.
|
|
105
|
+
for (const shelf of loaded.listGroups()) {
|
|
106
|
+
console.log(shelf, loaded.listByGroup(shelf).length)
|
|
107
|
+
}
|
|
81
108
|
```
|
|
82
109
|
|
|
83
110
|
Invalid manifests throw immediately with a path-qualified error message. The loader never partially loads invalid data.
|
package/dist/loader.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Manifest } from './manifest.js';
|
|
2
|
-
import type { ComponentContract, ComponentCategory } from './schema.js';
|
|
2
|
+
import type { ComponentContract, ComponentCategory, ComponentGroup } from './schema.js';
|
|
3
3
|
/**
|
|
4
4
|
* A validated, queryable manifest. Returned by {@link loadManifest} and
|
|
5
5
|
* {@link loadManifestFromUrl}. Consumers use the helper methods rather than
|
|
@@ -22,6 +22,13 @@ export declare class LoadedManifest {
|
|
|
22
22
|
listByCategory(category: ComponentCategory | string): ComponentContract[];
|
|
23
23
|
/** Every distinct category present, sorted alphabetically. */
|
|
24
24
|
listCategories(): string[];
|
|
25
|
+
/**
|
|
26
|
+
* Every component filed under a shelf. Matches on the resolved group, so a
|
|
27
|
+
* component with no `group` is found by its category.
|
|
28
|
+
*/
|
|
29
|
+
listByGroup(group: ComponentGroup | string): ComponentContract[];
|
|
30
|
+
/** Every distinct resolved group present, sorted alphabetically. */
|
|
31
|
+
listGroups(): string[];
|
|
25
32
|
/** Token definition by name, or `undefined` if absent. */
|
|
26
33
|
getToken(name: string): {
|
|
27
34
|
value: string;
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,eAAe,CAAA;AAE7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEvF;;;;GAIG;AACH,qBAAa,cAAc;aACG,GAAG,EAAE,QAAQ;gBAAb,GAAG,EAAE,QAAQ;IAEzC,oCAAoC;IACpC,IAAI,YAAY,IAAI,QAAQ,CAAC,cAAc,CAAC,CAE3C;IAED,oDAAoD;IACpD,IAAI,eAAe,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAEjD;IAED,uEAAuE;IACvE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIzD,0EAA0E;IAC1E,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAQjD,iDAAiD;IACjD,cAAc,IAAI,MAAM,EAAE;IAI1B,8CAA8C;IAC9C,cAAc,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,GAAG,iBAAiB,EAAE;IAIzE,8DAA8D;IAC9D,cAAc,IAAI,MAAM,EAAE;IAQ1B;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,iBAAiB,EAAE;IAIhE,oEAAoE;IACpE,UAAU,IAAI,MAAM,EAAE;IAQtB,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM;;;;;CAGtB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAS3D;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,cAAc,CAAC,CAOzB"}
|
package/dist/loader.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ManifestSchema } from './manifest.js';
|
|
2
|
+
import { groupOf } from './schema.js';
|
|
2
3
|
/**
|
|
3
4
|
* A validated, queryable manifest. Returned by {@link loadManifest} and
|
|
4
5
|
* {@link loadManifestFromUrl}. Consumers use the helper methods rather than
|
|
@@ -45,6 +46,21 @@ export class LoadedManifest {
|
|
|
45
46
|
}
|
|
46
47
|
return Array.from(categories).sort();
|
|
47
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Every component filed under a shelf. Matches on the resolved group, so a
|
|
51
|
+
* component with no `group` is found by its category.
|
|
52
|
+
*/
|
|
53
|
+
listByGroup(group) {
|
|
54
|
+
return Object.values(this.raw.components).filter((c) => groupOf(c) === group);
|
|
55
|
+
}
|
|
56
|
+
/** Every distinct resolved group present, sorted alphabetically. */
|
|
57
|
+
listGroups() {
|
|
58
|
+
const groups = new Set();
|
|
59
|
+
for (const component of Object.values(this.raw.components)) {
|
|
60
|
+
groups.add(groupOf(component));
|
|
61
|
+
}
|
|
62
|
+
return Array.from(groups).sort();
|
|
63
|
+
}
|
|
48
64
|
/** Token definition by name, or `undefined` if absent. */
|
|
49
65
|
getToken(name) {
|
|
50
66
|
return this.raw.tokens.find((t) => t.name === name);
|
package/dist/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/manifest.d.ts
CHANGED
|
@@ -54,6 +54,7 @@ export declare const ManifestSchema: z.ZodObject<{
|
|
|
54
54
|
components: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
55
55
|
name: z.ZodString;
|
|
56
56
|
category: z.ZodEnum<["hero", "section", "card", "media", "cta", "navigation", "data", "form", "utility"]>;
|
|
57
|
+
group: z.ZodOptional<z.ZodEnum<["hero", "narrative", "proof", "listing", "media", "form", "cta", "navigation", "utility"]>>;
|
|
57
58
|
description: z.ZodString;
|
|
58
59
|
intent: z.ZodString;
|
|
59
60
|
composition: z.ZodObject<{
|
|
@@ -243,6 +244,7 @@ export declare const ManifestSchema: z.ZodObject<{
|
|
|
243
244
|
animates: boolean;
|
|
244
245
|
requiresAnalytics: boolean;
|
|
245
246
|
};
|
|
247
|
+
group?: "hero" | "media" | "cta" | "navigation" | "form" | "utility" | "narrative" | "proof" | "listing" | undefined;
|
|
246
248
|
}, {
|
|
247
249
|
name: string;
|
|
248
250
|
category: "section" | "hero" | "card" | "media" | "cta" | "navigation" | "data" | "form" | "utility";
|
|
@@ -282,6 +284,7 @@ export declare const ManifestSchema: z.ZodObject<{
|
|
|
282
284
|
label: string;
|
|
283
285
|
storyId: string;
|
|
284
286
|
}[];
|
|
287
|
+
group?: "hero" | "media" | "cta" | "navigation" | "form" | "utility" | "narrative" | "proof" | "listing" | undefined;
|
|
285
288
|
antiExamples?: {
|
|
286
289
|
label: string;
|
|
287
290
|
why: string;
|
|
@@ -369,6 +372,7 @@ export declare const ManifestSchema: z.ZodObject<{
|
|
|
369
372
|
animates: boolean;
|
|
370
373
|
requiresAnalytics: boolean;
|
|
371
374
|
};
|
|
375
|
+
group?: "hero" | "media" | "cta" | "navigation" | "form" | "utility" | "narrative" | "proof" | "listing" | undefined;
|
|
372
376
|
}>;
|
|
373
377
|
build: {
|
|
374
378
|
timestamp: string;
|
|
@@ -427,6 +431,7 @@ export declare const ManifestSchema: z.ZodObject<{
|
|
|
427
431
|
label: string;
|
|
428
432
|
storyId: string;
|
|
429
433
|
}[];
|
|
434
|
+
group?: "hero" | "media" | "cta" | "navigation" | "form" | "utility" | "narrative" | "proof" | "listing" | undefined;
|
|
430
435
|
antiExamples?: {
|
|
431
436
|
label: string;
|
|
432
437
|
why: string;
|
package/dist/manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,QAAA,MAAM,qBAAqB;;;;;;;;;;;;EAIzB,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE,eAAO,MAAM,cAAc;IACzB,2DAA2D;;IAG3D,wCAAwC;;;;;;;;;;;;;;;;;;;;IASxC,+EAA+E;;;;;;;;;;;;;;IAG/E,gCAAgC
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,QAAA,MAAM,qBAAqB;;;;;;;;;;;;EAIzB,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE,eAAO,MAAM,cAAc;IACzB,2DAA2D;;IAG3D,wCAAwC;;;;;;;;;;;;;;;;;;;;IASxC,+EAA+E;;;;;;;;;;;;;;IAG/E,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGhC,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKtB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA"}
|
package/dist/schema.d.ts
CHANGED
|
@@ -8,6 +8,37 @@ export declare const CONTRACT_VERSION = "1.0.0";
|
|
|
8
8
|
declare const FieldTypeSchema: z.ZodEnum<["text", "richtext", "link", "image", "video", "select", "group", "array", "boolean", "number"]>;
|
|
9
9
|
declare const PlacementSchema: z.ZodEnum<["page", "section", "inline"]>;
|
|
10
10
|
declare const CategorySchema: z.ZodEnum<["hero", "section", "card", "media", "cta", "navigation", "data", "form", "utility"]>;
|
|
11
|
+
/**
|
|
12
|
+
* Where an editor looks for a component, as distinct from what the component
|
|
13
|
+
* *is*.
|
|
14
|
+
*
|
|
15
|
+
* `category` answers the second question and several consumers reason about it
|
|
16
|
+
* as a kind. It is a poor answer to the first: a real design system files
|
|
17
|
+
* roughly half its library under `section`, so a picker grouped on `category`
|
|
18
|
+
* hands back the flat list the grouping was meant to avoid, while `card` and
|
|
19
|
+
* `navigation` hold one entry each. Redistributing within `category` to even
|
|
20
|
+
* the shelves out would file components under the wrong kind for every other
|
|
21
|
+
* consumer.
|
|
22
|
+
*
|
|
23
|
+
* So this is a second, optional field. The values are shelf labels, chosen to
|
|
24
|
+
* split the sections a `category` cannot:
|
|
25
|
+
*
|
|
26
|
+
* - `hero` — page openers
|
|
27
|
+
* - `narrative` — sections that explain, walk through, or tell
|
|
28
|
+
* - `proof` — sections that evidence a claim: testimony, clients, results
|
|
29
|
+
* - `listing` — collections of records, usually repeating
|
|
30
|
+
* - `media` — image, video, audio, and their captions
|
|
31
|
+
* - `form` — anything an editor thinks of as a form
|
|
32
|
+
* - `cta` — asks
|
|
33
|
+
* - `navigation` — wayfinding within or across pages
|
|
34
|
+
* - `utility` — structural or incidental
|
|
35
|
+
*
|
|
36
|
+
* There is deliberately no `section`: a shelf that holds half the library is
|
|
37
|
+
* the problem this field exists to solve. There is no `card` or `data` either
|
|
38
|
+
* — both name a kind rather than a place to look, and their contents belong on
|
|
39
|
+
* `listing` and `proof` respectively.
|
|
40
|
+
*/
|
|
41
|
+
declare const GroupSchema: z.ZodEnum<["hero", "narrative", "proof", "listing", "media", "form", "cta", "navigation", "utility"]>;
|
|
11
42
|
export type ContentField = {
|
|
12
43
|
name: string;
|
|
13
44
|
type: z.infer<typeof FieldTypeSchema>;
|
|
@@ -28,6 +59,12 @@ export type ContentFieldInput = {
|
|
|
28
59
|
export declare const ComponentContractSchema: z.ZodObject<{
|
|
29
60
|
name: z.ZodString;
|
|
30
61
|
category: z.ZodEnum<["hero", "section", "card", "media", "cta", "navigation", "data", "form", "utility"]>;
|
|
62
|
+
/**
|
|
63
|
+
* The shelf an authoring UI files this component under. Optional: when it is
|
|
64
|
+
* absent, {@link groupOf} falls back to {@link category}, so a design system
|
|
65
|
+
* that sets none groups exactly as it did before this field existed.
|
|
66
|
+
*/
|
|
67
|
+
group: z.ZodOptional<z.ZodEnum<["hero", "narrative", "proof", "listing", "media", "form", "cta", "navigation", "utility"]>>;
|
|
31
68
|
description: z.ZodString;
|
|
32
69
|
intent: z.ZodString;
|
|
33
70
|
composition: z.ZodObject<{
|
|
@@ -217,6 +254,7 @@ export declare const ComponentContractSchema: z.ZodObject<{
|
|
|
217
254
|
animates: boolean;
|
|
218
255
|
requiresAnalytics: boolean;
|
|
219
256
|
};
|
|
257
|
+
group?: "hero" | "media" | "cta" | "navigation" | "form" | "utility" | "narrative" | "proof" | "listing" | undefined;
|
|
220
258
|
}, {
|
|
221
259
|
name: string;
|
|
222
260
|
category: "section" | "hero" | "card" | "media" | "cta" | "navigation" | "data" | "form" | "utility";
|
|
@@ -256,6 +294,7 @@ export declare const ComponentContractSchema: z.ZodObject<{
|
|
|
256
294
|
label: string;
|
|
257
295
|
storyId: string;
|
|
258
296
|
}[];
|
|
297
|
+
group?: "hero" | "media" | "cta" | "navigation" | "form" | "utility" | "narrative" | "proof" | "listing" | undefined;
|
|
259
298
|
antiExamples?: {
|
|
260
299
|
label: string;
|
|
261
300
|
why: string;
|
|
@@ -270,6 +309,21 @@ export declare const ComponentContractSchema: z.ZodObject<{
|
|
|
270
309
|
}>;
|
|
271
310
|
export type ComponentContract = z.infer<typeof ComponentContractSchema>;
|
|
272
311
|
export type ComponentCategory = z.infer<typeof CategorySchema>;
|
|
312
|
+
export type ComponentGroup = z.infer<typeof GroupSchema>;
|
|
313
|
+
/**
|
|
314
|
+
* The shelf a component is filed under: its `group` when set, otherwise its
|
|
315
|
+
* `category`.
|
|
316
|
+
*
|
|
317
|
+
* Anything that groups components should call this rather than reading either
|
|
318
|
+
* field directly, so a design system part-way through adopting `group` groups
|
|
319
|
+
* consistently instead of half one way and half the other. It takes a
|
|
320
|
+
* structural type so it also accepts the looser component shapes consumers
|
|
321
|
+
* carry around, not only a fully parsed {@link ComponentContract}.
|
|
322
|
+
*/
|
|
323
|
+
export declare function groupOf(component: {
|
|
324
|
+
category: string;
|
|
325
|
+
group?: string | undefined;
|
|
326
|
+
}): string;
|
|
273
327
|
export type ComponentPlacement = z.infer<typeof PlacementSchema>;
|
|
274
328
|
export type ContentFieldType = z.infer<typeof FieldTypeSchema>;
|
|
275
329
|
export {};
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,UAAU,CAAA;AAEvC,QAAA,MAAM,eAAe,4GAWnB,CAAA;AAEF,QAAA,MAAM,eAAe,0CAAwC,CAAA;AAE7D,QAAA,MAAM,cAAc,iGAUlB,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;IACrC,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAA;CAChC,CAAA;AAED,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;IACrC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,EAAE,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAA;CACrC,CAAA;AAeD,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,UAAU,CAAA;AAEvC,QAAA,MAAM,eAAe,4GAWnB,CAAA;AAEF,QAAA,MAAM,eAAe,0CAAwC,CAAA;AAE7D,QAAA,MAAM,cAAc,iGAUlB,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,QAAA,MAAM,WAAW,uGAUf,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;IACrC,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAA;CAChC,CAAA;AAED,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;IACrC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,EAAE,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAA;CACrC,CAAA;AAeD,eAAO,MAAM,uBAAuB;;;IAIlC;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgFH,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AACvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAExD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,MAAM,CAE3F;AACD,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAChE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA"}
|
package/dist/schema.js
CHANGED
|
@@ -29,6 +29,47 @@ const CategorySchema = z.enum([
|
|
|
29
29
|
'form',
|
|
30
30
|
'utility',
|
|
31
31
|
]);
|
|
32
|
+
/**
|
|
33
|
+
* Where an editor looks for a component, as distinct from what the component
|
|
34
|
+
* *is*.
|
|
35
|
+
*
|
|
36
|
+
* `category` answers the second question and several consumers reason about it
|
|
37
|
+
* as a kind. It is a poor answer to the first: a real design system files
|
|
38
|
+
* roughly half its library under `section`, so a picker grouped on `category`
|
|
39
|
+
* hands back the flat list the grouping was meant to avoid, while `card` and
|
|
40
|
+
* `navigation` hold one entry each. Redistributing within `category` to even
|
|
41
|
+
* the shelves out would file components under the wrong kind for every other
|
|
42
|
+
* consumer.
|
|
43
|
+
*
|
|
44
|
+
* So this is a second, optional field. The values are shelf labels, chosen to
|
|
45
|
+
* split the sections a `category` cannot:
|
|
46
|
+
*
|
|
47
|
+
* - `hero` — page openers
|
|
48
|
+
* - `narrative` — sections that explain, walk through, or tell
|
|
49
|
+
* - `proof` — sections that evidence a claim: testimony, clients, results
|
|
50
|
+
* - `listing` — collections of records, usually repeating
|
|
51
|
+
* - `media` — image, video, audio, and their captions
|
|
52
|
+
* - `form` — anything an editor thinks of as a form
|
|
53
|
+
* - `cta` — asks
|
|
54
|
+
* - `navigation` — wayfinding within or across pages
|
|
55
|
+
* - `utility` — structural or incidental
|
|
56
|
+
*
|
|
57
|
+
* There is deliberately no `section`: a shelf that holds half the library is
|
|
58
|
+
* the problem this field exists to solve. There is no `card` or `data` either
|
|
59
|
+
* — both name a kind rather than a place to look, and their contents belong on
|
|
60
|
+
* `listing` and `proof` respectively.
|
|
61
|
+
*/
|
|
62
|
+
const GroupSchema = z.enum([
|
|
63
|
+
'hero',
|
|
64
|
+
'narrative',
|
|
65
|
+
'proof',
|
|
66
|
+
'listing',
|
|
67
|
+
'media',
|
|
68
|
+
'form',
|
|
69
|
+
'cta',
|
|
70
|
+
'navigation',
|
|
71
|
+
'utility',
|
|
72
|
+
]);
|
|
32
73
|
const ContentFieldSchema = z.lazy(() => z.object({
|
|
33
74
|
name: z.string().min(1),
|
|
34
75
|
type: FieldTypeSchema,
|
|
@@ -43,6 +84,12 @@ export const ComponentContractSchema = z.object({
|
|
|
43
84
|
// Identity
|
|
44
85
|
name: z.string().min(1).regex(/^[A-Z][A-Za-z0-9]+$/, 'Component names must be PascalCase'),
|
|
45
86
|
category: CategorySchema,
|
|
87
|
+
/**
|
|
88
|
+
* The shelf an authoring UI files this component under. Optional: when it is
|
|
89
|
+
* absent, {@link groupOf} falls back to {@link category}, so a design system
|
|
90
|
+
* that sets none groups exactly as it did before this field existed.
|
|
91
|
+
*/
|
|
92
|
+
group: GroupSchema.optional(),
|
|
46
93
|
description: z.string().min(20).max(280),
|
|
47
94
|
intent: z.string().min(20).max(500),
|
|
48
95
|
// Composition
|
|
@@ -107,4 +154,17 @@ export const ComponentContractSchema = z.object({
|
|
|
107
154
|
})
|
|
108
155
|
.default({}),
|
|
109
156
|
});
|
|
157
|
+
/**
|
|
158
|
+
* The shelf a component is filed under: its `group` when set, otherwise its
|
|
159
|
+
* `category`.
|
|
160
|
+
*
|
|
161
|
+
* Anything that groups components should call this rather than reading either
|
|
162
|
+
* field directly, so a design system part-way through adopting `group` groups
|
|
163
|
+
* consistently instead of half one way and half the other. It takes a
|
|
164
|
+
* structural type so it also accepts the looser component shapes consumers
|
|
165
|
+
* carry around, not only a fully parsed {@link ComponentContract}.
|
|
166
|
+
*/
|
|
167
|
+
export function groupOf(component) {
|
|
168
|
+
return component.group ?? component.category;
|
|
169
|
+
}
|
|
110
170
|
//# sourceMappingURL=schema.js.map
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED