@forumone/throughline-design-system 1.5.0 → 1.6.0-next-d8178f0

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @forumone/throughline-design-system
2
2
 
3
+ ## 1.6.0-next-d8178f0
4
+
5
+ ### Minor Changes
6
+
7
+ - d8178f0: Contract 1.1.0 adds `primitives` to the manifest: layout and content building blocks that a composed section can be made of, but that never become blocks on their own. A `PrimitiveContract` declares closed-set `props` (`token`, `enum` or `boolean`), `slots` for a layout primitive, and `content` for a content primitive. `lintManifest` checks that every token a primitive allows exists and belongs to the prop's token group. Manifests at 1.0.0 still load, as having no primitives. Before this, an unknown top-level key was stripped silently.
8
+
3
9
  ## 1.5.0
4
10
 
5
11
  ## 1.4.0
@@ -1,4 +1,5 @@
1
1
  export * from './schema.js';
2
+ export * from './primitive.js';
2
3
  export * from './manifest.js';
3
4
  export * from './loader.js';
4
5
  export type { LintIssue, LintOptions } from './lint.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export * from './schema.js';
2
+ export * from './primitive.js';
2
3
  export * from './manifest.js';
3
4
  export * from './loader.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/contract/lint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B;;;;OAIG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,WAAgB,GAAG,SAAS,EAAE,CAyEvF;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAwB5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAMnF"}
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/contract/lint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B;;;;OAIG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,WAAgB,GAAG,SAAS,EAAE,CA0EvF;AAoDD,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAwB5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAMnF"}
@@ -71,6 +71,56 @@ export function lintManifest(manifest, options = {}) {
71
71
  });
72
72
  }
73
73
  }
74
+ issues.push(...lintPrimitives(manifest, tokenNames));
75
+ return issues;
76
+ }
77
+ /*
78
+ A primitive's props are closed sets, and the safety of everything built from
79
+ them rests on those sets being real: a token a primitive offers that the token
80
+ table does not have would reach a page as `var(--nothing)`. So every allowed
81
+ token must exist, and must be in the group the prop says it draws from — a
82
+ spacing prop offering a colour is a mistake in the primitive, not a choice.
83
+
84
+ A primitive may not share a name with a component either: a recipe node names
85
+ one or the other, and an ambiguous name is a node nobody can resolve.
86
+ */
87
+ function lintPrimitives(manifest, tokenNames) {
88
+ const issues = [];
89
+ const categoryOf = new Map(manifest.tokens.map((t) => [t.name, t.category]));
90
+ for (const [name, primitive] of Object.entries(manifest.primitives ?? {})) {
91
+ if (name in manifest.components) {
92
+ issues.push({
93
+ severity: 'error',
94
+ component: name,
95
+ rule: 'primitives.name',
96
+ message: `"${name}" is both a component and a primitive`,
97
+ });
98
+ }
99
+ for (const [propName, prop] of Object.entries(primitive.props)) {
100
+ if (prop.type !== 'token')
101
+ continue;
102
+ for (const token of prop.allowed) {
103
+ if (!tokenNames.has(token)) {
104
+ issues.push({
105
+ severity: 'error',
106
+ component: name,
107
+ rule: 'primitives.props.tokens',
108
+ message: `Prop "${propName}" allows unknown token "${token}"`,
109
+ });
110
+ continue;
111
+ }
112
+ const category = categoryOf.get(token);
113
+ if (category !== undefined && category !== prop.tokenGroup) {
114
+ issues.push({
115
+ severity: 'error',
116
+ component: name,
117
+ rule: 'primitives.props.tokenGroup',
118
+ message: `Prop "${propName}" draws from "${prop.tokenGroup}" but allows "${token}", a ${category} token`,
119
+ });
120
+ }
121
+ }
122
+ }
123
+ }
74
124
  return issues;
75
125
  }
76
126
  /** Formats lint issues as a multi-line string suitable for CI output. */
@@ -1 +1 @@
1
- {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/contract/lint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/contract/lint.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ declare const TokenDefinitionSchema: z.ZodObject<{
15
15
  export type TokenDefinition = z.infer<typeof TokenDefinitionSchema>;
16
16
  export declare const ManifestSchema: z.ZodObject<{
17
17
  /** The contract schema version this manifest satisfies. */
18
- contractVersion: z.ZodLiteral<"1.0.0">;
18
+ contractVersion: z.ZodEnum<["1.0.0", "1.1.0"]>;
19
19
  /** Metadata about the design system. */
20
20
  designSystem: z.ZodObject<{
21
21
  name: z.ZodString;
@@ -297,6 +297,207 @@ export declare const ManifestSchema: z.ZodObject<{
297
297
  requiresAnalytics?: boolean | undefined;
298
298
  } | undefined;
299
299
  }>>;
300
+ /**
301
+ * Building blocks a composed section may be made of, keyed by name: layout
302
+ * primitives and small content pieces. Never blocks on their own, which is
303
+ * why they are not in `components`. Since 1.1.0; a manifest without them has
304
+ * none.
305
+ */
306
+ primitives: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodObject<{
307
+ name: z.ZodString;
308
+ kind: z.ZodEnum<["layout", "content"]>;
309
+ description: z.ZodString;
310
+ renders: z.ZodOptional<z.ZodString>;
311
+ props: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
312
+ type: z.ZodLiteral<"token">;
313
+ tokenGroup: z.ZodString;
314
+ allowed: z.ZodArray<z.ZodString, "atleastone">;
315
+ default: z.ZodOptional<z.ZodString>;
316
+ description: z.ZodOptional<z.ZodString>;
317
+ }, "strip", z.ZodTypeAny, {
318
+ type: "token";
319
+ tokenGroup: string;
320
+ allowed: [string, ...string[]];
321
+ default?: string | undefined;
322
+ description?: string | undefined;
323
+ }, {
324
+ type: "token";
325
+ tokenGroup: string;
326
+ allowed: [string, ...string[]];
327
+ default?: string | undefined;
328
+ description?: string | undefined;
329
+ }>, z.ZodObject<{
330
+ type: z.ZodLiteral<"enum">;
331
+ values: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "atleastone">;
332
+ default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
333
+ description: z.ZodOptional<z.ZodString>;
334
+ }, "strip", z.ZodTypeAny, {
335
+ type: "enum";
336
+ values: [string | number, ...(string | number)[]];
337
+ default?: string | number | undefined;
338
+ description?: string | undefined;
339
+ }, {
340
+ type: "enum";
341
+ values: [string | number, ...(string | number)[]];
342
+ default?: string | number | undefined;
343
+ description?: string | undefined;
344
+ }>, z.ZodObject<{
345
+ type: z.ZodLiteral<"boolean">;
346
+ default: z.ZodOptional<z.ZodBoolean>;
347
+ description: z.ZodOptional<z.ZodString>;
348
+ }, "strip", z.ZodTypeAny, {
349
+ type: "boolean";
350
+ default?: boolean | undefined;
351
+ description?: string | undefined;
352
+ }, {
353
+ type: "boolean";
354
+ default?: boolean | undefined;
355
+ description?: string | undefined;
356
+ }>]>>>;
357
+ slots: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
358
+ description: z.ZodString;
359
+ required: z.ZodDefault<z.ZodBoolean>;
360
+ max: z.ZodOptional<z.ZodNumber>;
361
+ }, "strip", z.ZodTypeAny, {
362
+ required: boolean;
363
+ description: string;
364
+ max?: number | undefined;
365
+ }, {
366
+ description: string;
367
+ required?: boolean | undefined;
368
+ max?: number | undefined;
369
+ }>>>;
370
+ content: z.ZodOptional<z.ZodObject<{
371
+ type: z.ZodEnum<["text", "richtext", "link", "image"]>;
372
+ required: z.ZodDefault<z.ZodBoolean>;
373
+ }, "strip", z.ZodTypeAny, {
374
+ type: "link" | "text" | "richtext" | "image";
375
+ required: boolean;
376
+ }, {
377
+ type: "link" | "text" | "richtext" | "image";
378
+ required?: boolean | undefined;
379
+ }>>;
380
+ }, "strip", z.ZodTypeAny, {
381
+ name: string;
382
+ description: string;
383
+ kind: "layout" | "content";
384
+ props: Record<string, {
385
+ type: "token";
386
+ tokenGroup: string;
387
+ allowed: [string, ...string[]];
388
+ default?: string | undefined;
389
+ description?: string | undefined;
390
+ } | {
391
+ type: "enum";
392
+ values: [string | number, ...(string | number)[]];
393
+ default?: string | number | undefined;
394
+ description?: string | undefined;
395
+ } | {
396
+ type: "boolean";
397
+ default?: boolean | undefined;
398
+ description?: string | undefined;
399
+ }>;
400
+ slots: Record<string, {
401
+ required: boolean;
402
+ description: string;
403
+ max?: number | undefined;
404
+ }>;
405
+ content?: {
406
+ type: "link" | "text" | "richtext" | "image";
407
+ required: boolean;
408
+ } | undefined;
409
+ renders?: string | undefined;
410
+ }, {
411
+ name: string;
412
+ description: string;
413
+ kind: "layout" | "content";
414
+ content?: {
415
+ type: "link" | "text" | "richtext" | "image";
416
+ required?: boolean | undefined;
417
+ } | undefined;
418
+ renders?: string | undefined;
419
+ props?: Record<string, {
420
+ type: "token";
421
+ tokenGroup: string;
422
+ allowed: [string, ...string[]];
423
+ default?: string | undefined;
424
+ description?: string | undefined;
425
+ } | {
426
+ type: "enum";
427
+ values: [string | number, ...(string | number)[]];
428
+ default?: string | number | undefined;
429
+ description?: string | undefined;
430
+ } | {
431
+ type: "boolean";
432
+ default?: boolean | undefined;
433
+ description?: string | undefined;
434
+ }> | undefined;
435
+ slots?: Record<string, {
436
+ description: string;
437
+ required?: boolean | undefined;
438
+ max?: number | undefined;
439
+ }> | undefined;
440
+ }>, {
441
+ name: string;
442
+ description: string;
443
+ kind: "layout" | "content";
444
+ props: Record<string, {
445
+ type: "token";
446
+ tokenGroup: string;
447
+ allowed: [string, ...string[]];
448
+ default?: string | undefined;
449
+ description?: string | undefined;
450
+ } | {
451
+ type: "enum";
452
+ values: [string | number, ...(string | number)[]];
453
+ default?: string | number | undefined;
454
+ description?: string | undefined;
455
+ } | {
456
+ type: "boolean";
457
+ default?: boolean | undefined;
458
+ description?: string | undefined;
459
+ }>;
460
+ slots: Record<string, {
461
+ required: boolean;
462
+ description: string;
463
+ max?: number | undefined;
464
+ }>;
465
+ content?: {
466
+ type: "link" | "text" | "richtext" | "image";
467
+ required: boolean;
468
+ } | undefined;
469
+ renders?: string | undefined;
470
+ }, {
471
+ name: string;
472
+ description: string;
473
+ kind: "layout" | "content";
474
+ content?: {
475
+ type: "link" | "text" | "richtext" | "image";
476
+ required?: boolean | undefined;
477
+ } | undefined;
478
+ renders?: string | undefined;
479
+ props?: Record<string, {
480
+ type: "token";
481
+ tokenGroup: string;
482
+ allowed: [string, ...string[]];
483
+ default?: string | undefined;
484
+ description?: string | undefined;
485
+ } | {
486
+ type: "enum";
487
+ values: [string | number, ...(string | number)[]];
488
+ default?: string | number | undefined;
489
+ description?: string | undefined;
490
+ } | {
491
+ type: "boolean";
492
+ default?: boolean | undefined;
493
+ description?: string | undefined;
494
+ }> | undefined;
495
+ slots?: Record<string, {
496
+ description: string;
497
+ required?: boolean | undefined;
498
+ max?: number | undefined;
499
+ }> | undefined;
500
+ }>>>;
300
501
  /** Build metadata. */
301
502
  build: z.ZodObject<{
302
503
  timestamp: z.ZodString;
@@ -366,7 +567,7 @@ export declare const ManifestSchema: z.ZodObject<{
366
567
  value: string;
367
568
  category: string;
368
569
  }[];
369
- contractVersion: "1.0.0";
570
+ contractVersion: "1.1.0" | "1.0.0";
370
571
  designSystem: {
371
572
  name: string;
372
573
  version: string;
@@ -374,6 +575,37 @@ export declare const ManifestSchema: z.ZodObject<{
374
575
  homepage?: string | undefined;
375
576
  storybookUrl?: string | undefined;
376
577
  };
578
+ primitives: Record<string, {
579
+ name: string;
580
+ description: string;
581
+ kind: "layout" | "content";
582
+ props: Record<string, {
583
+ type: "token";
584
+ tokenGroup: string;
585
+ allowed: [string, ...string[]];
586
+ default?: string | undefined;
587
+ description?: string | undefined;
588
+ } | {
589
+ type: "enum";
590
+ values: [string | number, ...(string | number)[]];
591
+ default?: string | number | undefined;
592
+ description?: string | undefined;
593
+ } | {
594
+ type: "boolean";
595
+ default?: boolean | undefined;
596
+ description?: string | undefined;
597
+ }>;
598
+ slots: Record<string, {
599
+ required: boolean;
600
+ description: string;
601
+ max?: number | undefined;
602
+ }>;
603
+ content?: {
604
+ type: "link" | "text" | "richtext" | "image";
605
+ required: boolean;
606
+ } | undefined;
607
+ renders?: string | undefined;
608
+ }>;
377
609
  build: {
378
610
  timestamp: string;
379
611
  source?: string | undefined;
@@ -436,7 +668,7 @@ export declare const ManifestSchema: z.ZodObject<{
436
668
  value: string;
437
669
  category: string;
438
670
  }[];
439
- contractVersion: "1.0.0";
671
+ contractVersion: "1.1.0" | "1.0.0";
440
672
  designSystem: {
441
673
  name: string;
442
674
  version: string;
@@ -448,6 +680,37 @@ export declare const ManifestSchema: z.ZodObject<{
448
680
  timestamp: string;
449
681
  source?: string | undefined;
450
682
  };
683
+ primitives?: Record<string, {
684
+ name: string;
685
+ description: string;
686
+ kind: "layout" | "content";
687
+ content?: {
688
+ type: "link" | "text" | "richtext" | "image";
689
+ required?: boolean | undefined;
690
+ } | undefined;
691
+ renders?: string | undefined;
692
+ props?: Record<string, {
693
+ type: "token";
694
+ tokenGroup: string;
695
+ allowed: [string, ...string[]];
696
+ default?: string | undefined;
697
+ description?: string | undefined;
698
+ } | {
699
+ type: "enum";
700
+ values: [string | number, ...(string | number)[]];
701
+ default?: string | number | undefined;
702
+ description?: string | undefined;
703
+ } | {
704
+ type: "boolean";
705
+ default?: boolean | undefined;
706
+ description?: string | undefined;
707
+ }> | undefined;
708
+ slots?: Record<string, {
709
+ description: string;
710
+ required?: boolean | undefined;
711
+ max?: number | undefined;
712
+ }> | undefined;
713
+ }> | undefined;
451
714
  }>;
452
715
  export type Manifest = z.infer<typeof ManifestSchema>;
453
716
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/contract/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"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/contract/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,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;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGH,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKtB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
- import { CONTRACT_VERSION, ComponentContractSchema } from './schema.js';
2
+ import { PrimitiveContractSchema } from './primitive.js';
3
+ import { ComponentContractSchema, SUPPORTED_CONTRACT_VERSIONS } from './schema.js';
3
4
  const TokenDefinitionSchema = z.object({
4
5
  name: z.string(),
5
6
  value: z.string(),
@@ -7,7 +8,7 @@ const TokenDefinitionSchema = z.object({
7
8
  });
8
9
  export const ManifestSchema = z.object({
9
10
  /** The contract schema version this manifest satisfies. */
10
- contractVersion: z.literal(CONTRACT_VERSION),
11
+ contractVersion: z.enum(SUPPORTED_CONTRACT_VERSIONS),
11
12
  /** Metadata about the design system. */
12
13
  designSystem: z.object({
13
14
  name: z.string(),
@@ -20,6 +21,13 @@ export const ManifestSchema = z.object({
20
21
  tokens: z.array(TokenDefinitionSchema),
21
22
  /** Components keyed by name. */
22
23
  components: z.record(z.string(), ComponentContractSchema),
24
+ /**
25
+ * Building blocks a composed section may be made of, keyed by name: layout
26
+ * primitives and small content pieces. Never blocks on their own, which is
27
+ * why they are not in `components`. Since 1.1.0; a manifest without them has
28
+ * none.
29
+ */
30
+ primitives: z.record(z.string(), PrimitiveContractSchema).default({}),
23
31
  /** Build metadata. */
24
32
  build: z.object({
25
33
  timestamp: z.string().datetime(),
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/contract/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAEvE,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,2DAA2D;IAC3D,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAE5C,wCAAwC;IACxC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACrC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KAC1C,CAAC;IAEF,+EAA+E;IAC/E,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAEtC,gCAAgC;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC;IAEzD,sBAAsB;IACtB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC;CACH,CAAC,CAAA"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/contract/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAElF,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,2DAA2D;IAC3D,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC;IAEpD,wCAAwC;IACxC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACrC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KAC1C,CAAC;IAEF,+EAA+E;IAC/E,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAEtC,gCAAgC;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC;IAEzD;;;;;OAKG;IACH,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAErE,sBAAsB;IACtB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC;CACH,CAAC,CAAA"}
@@ -0,0 +1,275 @@
1
+ import { z } from 'zod';
2
+ export declare const PrimitivePropSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
3
+ type: z.ZodLiteral<"token">;
4
+ /** The token category the values come from, e.g. `spacing`. */
5
+ tokenGroup: z.ZodString;
6
+ /** The token names allowed, by name without `--`. Every one must exist. */
7
+ allowed: z.ZodArray<z.ZodString, "atleastone">;
8
+ default: z.ZodOptional<z.ZodString>;
9
+ description: z.ZodOptional<z.ZodString>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ type: "token";
12
+ tokenGroup: string;
13
+ allowed: [string, ...string[]];
14
+ default?: string | undefined;
15
+ description?: string | undefined;
16
+ }, {
17
+ type: "token";
18
+ tokenGroup: string;
19
+ allowed: [string, ...string[]];
20
+ default?: string | undefined;
21
+ description?: string | undefined;
22
+ }>, z.ZodObject<{
23
+ type: z.ZodLiteral<"enum">;
24
+ values: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "atleastone">;
25
+ default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
26
+ description: z.ZodOptional<z.ZodString>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ type: "enum";
29
+ values: [string | number, ...(string | number)[]];
30
+ default?: string | number | undefined;
31
+ description?: string | undefined;
32
+ }, {
33
+ type: "enum";
34
+ values: [string | number, ...(string | number)[]];
35
+ default?: string | number | undefined;
36
+ description?: string | undefined;
37
+ }>, z.ZodObject<{
38
+ type: z.ZodLiteral<"boolean">;
39
+ default: z.ZodOptional<z.ZodBoolean>;
40
+ description: z.ZodOptional<z.ZodString>;
41
+ }, "strip", z.ZodTypeAny, {
42
+ type: "boolean";
43
+ default?: boolean | undefined;
44
+ description?: string | undefined;
45
+ }, {
46
+ type: "boolean";
47
+ default?: boolean | undefined;
48
+ description?: string | undefined;
49
+ }>]>;
50
+ export type PrimitiveProp = z.infer<typeof PrimitivePropSchema>;
51
+ export declare const PrimitiveSlotSchema: z.ZodObject<{
52
+ description: z.ZodString;
53
+ /** Whether a recipe must put something here. */
54
+ required: z.ZodDefault<z.ZodBoolean>;
55
+ /** At most this many nodes; absent means any number. */
56
+ max: z.ZodOptional<z.ZodNumber>;
57
+ }, "strip", z.ZodTypeAny, {
58
+ required: boolean;
59
+ description: string;
60
+ max?: number | undefined;
61
+ }, {
62
+ description: string;
63
+ required?: boolean | undefined;
64
+ max?: number | undefined;
65
+ }>;
66
+ export type PrimitiveSlot = z.infer<typeof PrimitiveSlotSchema>;
67
+ /** The content field kinds a content primitive can show. A subset of a contract's field types. */
68
+ export declare const PrimitiveContentTypeSchema: z.ZodEnum<["text", "richtext", "link", "image"]>;
69
+ export declare const PrimitiveContractSchema: z.ZodEffects<z.ZodObject<{
70
+ name: z.ZodString;
71
+ /** `layout` arranges other nodes; `content` shows one content field. */
72
+ kind: z.ZodEnum<["layout", "content"]>;
73
+ description: z.ZodString;
74
+ /** The design-system export it renders, when that differs from `name`. */
75
+ renders: z.ZodOptional<z.ZodString>;
76
+ props: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
77
+ type: z.ZodLiteral<"token">;
78
+ /** The token category the values come from, e.g. `spacing`. */
79
+ tokenGroup: z.ZodString;
80
+ /** The token names allowed, by name without `--`. Every one must exist. */
81
+ allowed: z.ZodArray<z.ZodString, "atleastone">;
82
+ default: z.ZodOptional<z.ZodString>;
83
+ description: z.ZodOptional<z.ZodString>;
84
+ }, "strip", z.ZodTypeAny, {
85
+ type: "token";
86
+ tokenGroup: string;
87
+ allowed: [string, ...string[]];
88
+ default?: string | undefined;
89
+ description?: string | undefined;
90
+ }, {
91
+ type: "token";
92
+ tokenGroup: string;
93
+ allowed: [string, ...string[]];
94
+ default?: string | undefined;
95
+ description?: string | undefined;
96
+ }>, z.ZodObject<{
97
+ type: z.ZodLiteral<"enum">;
98
+ values: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "atleastone">;
99
+ default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
100
+ description: z.ZodOptional<z.ZodString>;
101
+ }, "strip", z.ZodTypeAny, {
102
+ type: "enum";
103
+ values: [string | number, ...(string | number)[]];
104
+ default?: string | number | undefined;
105
+ description?: string | undefined;
106
+ }, {
107
+ type: "enum";
108
+ values: [string | number, ...(string | number)[]];
109
+ default?: string | number | undefined;
110
+ description?: string | undefined;
111
+ }>, z.ZodObject<{
112
+ type: z.ZodLiteral<"boolean">;
113
+ default: z.ZodOptional<z.ZodBoolean>;
114
+ description: z.ZodOptional<z.ZodString>;
115
+ }, "strip", z.ZodTypeAny, {
116
+ type: "boolean";
117
+ default?: boolean | undefined;
118
+ description?: string | undefined;
119
+ }, {
120
+ type: "boolean";
121
+ default?: boolean | undefined;
122
+ description?: string | undefined;
123
+ }>]>>>;
124
+ /** Where child nodes go, by slot name. `children` is the unnamed one. */
125
+ slots: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
126
+ description: z.ZodString;
127
+ /** Whether a recipe must put something here. */
128
+ required: z.ZodDefault<z.ZodBoolean>;
129
+ /** At most this many nodes; absent means any number. */
130
+ max: z.ZodOptional<z.ZodNumber>;
131
+ }, "strip", z.ZodTypeAny, {
132
+ required: boolean;
133
+ description: string;
134
+ max?: number | undefined;
135
+ }, {
136
+ description: string;
137
+ required?: boolean | undefined;
138
+ max?: number | undefined;
139
+ }>>>;
140
+ /** A content primitive's field: what kind, and whether a recipe must bind one. */
141
+ content: z.ZodOptional<z.ZodObject<{
142
+ type: z.ZodEnum<["text", "richtext", "link", "image"]>;
143
+ required: z.ZodDefault<z.ZodBoolean>;
144
+ }, "strip", z.ZodTypeAny, {
145
+ type: "link" | "text" | "richtext" | "image";
146
+ required: boolean;
147
+ }, {
148
+ type: "link" | "text" | "richtext" | "image";
149
+ required?: boolean | undefined;
150
+ }>>;
151
+ }, "strip", z.ZodTypeAny, {
152
+ name: string;
153
+ description: string;
154
+ kind: "layout" | "content";
155
+ props: Record<string, {
156
+ type: "token";
157
+ tokenGroup: string;
158
+ allowed: [string, ...string[]];
159
+ default?: string | undefined;
160
+ description?: string | undefined;
161
+ } | {
162
+ type: "enum";
163
+ values: [string | number, ...(string | number)[]];
164
+ default?: string | number | undefined;
165
+ description?: string | undefined;
166
+ } | {
167
+ type: "boolean";
168
+ default?: boolean | undefined;
169
+ description?: string | undefined;
170
+ }>;
171
+ slots: Record<string, {
172
+ required: boolean;
173
+ description: string;
174
+ max?: number | undefined;
175
+ }>;
176
+ content?: {
177
+ type: "link" | "text" | "richtext" | "image";
178
+ required: boolean;
179
+ } | undefined;
180
+ renders?: string | undefined;
181
+ }, {
182
+ name: string;
183
+ description: string;
184
+ kind: "layout" | "content";
185
+ content?: {
186
+ type: "link" | "text" | "richtext" | "image";
187
+ required?: boolean | undefined;
188
+ } | undefined;
189
+ renders?: string | undefined;
190
+ props?: Record<string, {
191
+ type: "token";
192
+ tokenGroup: string;
193
+ allowed: [string, ...string[]];
194
+ default?: string | undefined;
195
+ description?: string | undefined;
196
+ } | {
197
+ type: "enum";
198
+ values: [string | number, ...(string | number)[]];
199
+ default?: string | number | undefined;
200
+ description?: string | undefined;
201
+ } | {
202
+ type: "boolean";
203
+ default?: boolean | undefined;
204
+ description?: string | undefined;
205
+ }> | undefined;
206
+ slots?: Record<string, {
207
+ description: string;
208
+ required?: boolean | undefined;
209
+ max?: number | undefined;
210
+ }> | undefined;
211
+ }>, {
212
+ name: string;
213
+ description: string;
214
+ kind: "layout" | "content";
215
+ props: Record<string, {
216
+ type: "token";
217
+ tokenGroup: string;
218
+ allowed: [string, ...string[]];
219
+ default?: string | undefined;
220
+ description?: string | undefined;
221
+ } | {
222
+ type: "enum";
223
+ values: [string | number, ...(string | number)[]];
224
+ default?: string | number | undefined;
225
+ description?: string | undefined;
226
+ } | {
227
+ type: "boolean";
228
+ default?: boolean | undefined;
229
+ description?: string | undefined;
230
+ }>;
231
+ slots: Record<string, {
232
+ required: boolean;
233
+ description: string;
234
+ max?: number | undefined;
235
+ }>;
236
+ content?: {
237
+ type: "link" | "text" | "richtext" | "image";
238
+ required: boolean;
239
+ } | undefined;
240
+ renders?: string | undefined;
241
+ }, {
242
+ name: string;
243
+ description: string;
244
+ kind: "layout" | "content";
245
+ content?: {
246
+ type: "link" | "text" | "richtext" | "image";
247
+ required?: boolean | undefined;
248
+ } | undefined;
249
+ renders?: string | undefined;
250
+ props?: Record<string, {
251
+ type: "token";
252
+ tokenGroup: string;
253
+ allowed: [string, ...string[]];
254
+ default?: string | undefined;
255
+ description?: string | undefined;
256
+ } | {
257
+ type: "enum";
258
+ values: [string | number, ...(string | number)[]];
259
+ default?: string | number | undefined;
260
+ description?: string | undefined;
261
+ } | {
262
+ type: "boolean";
263
+ default?: boolean | undefined;
264
+ description?: string | undefined;
265
+ }> | undefined;
266
+ slots?: Record<string, {
267
+ description: string;
268
+ required?: boolean | undefined;
269
+ max?: number | undefined;
270
+ }> | undefined;
271
+ }>;
272
+ export type PrimitiveContract = z.infer<typeof PrimitiveContractSchema>;
273
+ /** What an author writes in a `.primitive.ts`, before defaults are applied. */
274
+ export type PrimitiveContractInput = z.input<typeof PrimitiveContractSchema>;
275
+ //# sourceMappingURL=primitive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive.d.ts","sourceRoot":"","sources":["../../src/contract/primitive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiDvB,eAAO,MAAM,mBAAmB;;IArB9B,+DAA+D;;IAE/D,2EAA2E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuB3E,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,mBAAmB;;IAE9B,gDAAgD;;IAEhD,wDAAwD;;;;;;;;;;EAExD,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,kGAAkG;AAClG,eAAO,MAAM,0BAA0B,kDAAgD,CAAA;AAEvF,eAAO,MAAM,uBAAuB;;IAGhC,wEAAwE;;;IAGxE,0EAA0E;;;;QAhD5E,+DAA+D;;QAE/D,2EAA2E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiDzE,yEAAyE;;;QApB3E,gDAAgD;;QAEhD,wDAAwD;;;;;;;;;;;IAoBtD,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqDlF,CAAA;AAEJ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AACvE,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
@@ -0,0 +1,124 @@
1
+ import { z } from 'zod';
2
+ /*
3
+ A primitive: a building block a composed section (a "recipe", forumone-2026#801)
4
+ may be made of, but that is never a block on its own.
5
+
6
+ Layout primitives — a section band, a constrained column, a grid, a stack —
7
+ are deliberately absent from `components`, so the CMS can never place a bare
8
+ grid on a page as though it were content. A recipe needs them anyway, to say
9
+ how its content is arranged. So they get a contract of their own, in a
10
+ section of the manifest of their own, which `generateBlocks` never reads.
11
+
12
+ What a primitive declares is what a recipe may set, and nothing else:
13
+
14
+ - **props**, each one a closed set. A spacing prop names the tokens it takes,
15
+ an enum its values, a number its range. There is no free-form string, no
16
+ `className`, no `style`: a recipe can only say what the design system
17
+ already lets it say, which is the whole safety argument for letting a
18
+ marketer compose one without a code review.
19
+ - **slots**, where other nodes go. A layout primitive has them; a content
20
+ primitive has none.
21
+ - **content**, for a content primitive (a heading, a run of text, a button,
22
+ an image): the kind of content field it shows, which a recipe binds to one
23
+ of its own fields.
24
+ */
25
+ const TokenPropSchema = z.object({
26
+ type: z.literal('token'),
27
+ /** The token category the values come from, e.g. `spacing`. */
28
+ tokenGroup: z.string().min(1),
29
+ /** The token names allowed, by name without `--`. Every one must exist. */
30
+ allowed: z.array(z.string().min(1)).nonempty(),
31
+ default: z.string().optional(),
32
+ description: z.string().optional(),
33
+ });
34
+ const EnumPropSchema = z.object({
35
+ type: z.literal('enum'),
36
+ values: z.array(z.union([z.string().min(1), z.number()])).nonempty(),
37
+ default: z.union([z.string(), z.number()]).optional(),
38
+ description: z.string().optional(),
39
+ });
40
+ const BooleanPropSchema = z.object({
41
+ type: z.literal('boolean'),
42
+ default: z.boolean().optional(),
43
+ description: z.string().optional(),
44
+ });
45
+ export const PrimitivePropSchema = z.discriminatedUnion('type', [
46
+ TokenPropSchema,
47
+ EnumPropSchema,
48
+ BooleanPropSchema,
49
+ ]);
50
+ export const PrimitiveSlotSchema = z.object({
51
+ description: z.string().min(1),
52
+ /** Whether a recipe must put something here. */
53
+ required: z.boolean().default(false),
54
+ /** At most this many nodes; absent means any number. */
55
+ max: z.number().int().positive().optional(),
56
+ });
57
+ /** The content field kinds a content primitive can show. A subset of a contract's field types. */
58
+ export const PrimitiveContentTypeSchema = z.enum(['text', 'richtext', 'link', 'image']);
59
+ export const PrimitiveContractSchema = z
60
+ .object({
61
+ name: z.string().min(1).regex(/^[A-Z][A-Za-z0-9]+$/, 'Primitive names must be PascalCase'),
62
+ /** `layout` arranges other nodes; `content` shows one content field. */
63
+ kind: z.enum(['layout', 'content']),
64
+ description: z.string().min(20).max(280),
65
+ /** The design-system export it renders, when that differs from `name`. */
66
+ renders: z.string().optional(),
67
+ props: z.record(z.string(), PrimitivePropSchema).default({}),
68
+ /** Where child nodes go, by slot name. `children` is the unnamed one. */
69
+ slots: z.record(z.string(), PrimitiveSlotSchema).default({}),
70
+ /** A content primitive's field: what kind, and whether a recipe must bind one. */
71
+ content: z
72
+ .object({
73
+ type: PrimitiveContentTypeSchema,
74
+ required: z.boolean().default(true),
75
+ })
76
+ .optional(),
77
+ })
78
+ .superRefine((primitive, ctx) => {
79
+ if (primitive.kind === 'content' && !primitive.content) {
80
+ ctx.addIssue({
81
+ code: z.ZodIssueCode.custom,
82
+ path: ['content'],
83
+ message: `"${primitive.name}" is a content primitive, so it says what kind of content it shows.`,
84
+ });
85
+ }
86
+ if (primitive.kind === 'content' && Object.keys(primitive.slots).length > 0) {
87
+ ctx.addIssue({
88
+ code: z.ZodIssueCode.custom,
89
+ path: ['slots'],
90
+ message: `"${primitive.name}" is a content primitive, so nothing nests inside it.`,
91
+ });
92
+ }
93
+ if (primitive.kind === 'layout' && primitive.content) {
94
+ ctx.addIssue({
95
+ code: z.ZodIssueCode.custom,
96
+ path: ['content'],
97
+ message: `"${primitive.name}" is a layout primitive: its content is what its slots hold.`,
98
+ });
99
+ }
100
+ if (primitive.kind === 'layout' && Object.keys(primitive.slots).length === 0) {
101
+ ctx.addIssue({
102
+ code: z.ZodIssueCode.custom,
103
+ path: ['slots'],
104
+ message: `"${primitive.name}" is a layout primitive with nowhere to put anything.`,
105
+ });
106
+ }
107
+ for (const [name, prop] of Object.entries(primitive.props)) {
108
+ if (prop.type === 'enum' && prop.default !== undefined && !prop.values.includes(prop.default)) {
109
+ ctx.addIssue({
110
+ code: z.ZodIssueCode.custom,
111
+ path: ['props', name, 'default'],
112
+ message: `The default "${prop.default}" is not one of "${name}"'s values.`,
113
+ });
114
+ }
115
+ if (prop.type === 'token' && prop.default !== undefined && !prop.allowed.includes(prop.default)) {
116
+ ctx.addIssue({
117
+ code: z.ZodIssueCode.custom,
118
+ path: ['props', name, 'default'],
119
+ message: `The default "${prop.default}" is not one of the tokens "${name}" allows.`,
120
+ });
121
+ }
122
+ }
123
+ });
124
+ //# sourceMappingURL=primitive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../src/contract/primitive.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,16 @@
1
1
  import { z } from 'zod';
2
2
  /**
3
- * The current version of the contract schema. Bump this when making a
4
- * backwards-incompatible change to the shape. Manifests declare the
5
- * version they satisfy so the loader can reject mismatches loudly.
3
+ * The current version of the contract schema. Manifests declare the version
4
+ * they satisfy so the loader can reject one it does not understand loudly.
5
+ *
6
+ * 1.1.0 added `primitives` (forumone-2026#801), an optional section, so a 1.0.0
7
+ * manifest is still a valid 1.1.0 one with none. A minor bump stays readable:
8
+ * {@link SUPPORTED_CONTRACT_VERSIONS} lists every version the loader accepts,
9
+ * and a breaking change starts a new major that drops the old ones.
6
10
  */
7
- export declare const CONTRACT_VERSION = "1.0.0";
11
+ export declare const CONTRACT_VERSION = "1.1.0";
12
+ /** Every contract version a manifest may declare and still load. */
13
+ export declare const SUPPORTED_CONTRACT_VERSIONS: readonly ["1.0.0", "1.1.0"];
8
14
  declare const FieldTypeSchema: z.ZodEnum<["text", "richtext", "link", "image", "video", "select", "group", "array", "boolean", "number"]>;
9
15
  declare const PlacementSchema: z.ZodEnum<["page", "section", "inline"]>;
10
16
  declare const CategorySchema: z.ZodEnum<["hero", "section", "card", "media", "cta", "navigation", "data", "form", "utility"]>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/contract/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,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,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,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,EAAE,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAA;CACrC,CAAA;AAqED,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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/contract/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,UAAU,CAAA;AAEvC,oEAAoE;AACpE,eAAO,MAAM,2BAA2B,6BAA8B,CAAA;AAEtE,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,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,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,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,EAAE,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAA;CACrC,CAAA;AAqED,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"}
@@ -1,10 +1,16 @@
1
1
  import { z } from 'zod';
2
2
  /**
3
- * The current version of the contract schema. Bump this when making a
4
- * backwards-incompatible change to the shape. Manifests declare the
5
- * version they satisfy so the loader can reject mismatches loudly.
3
+ * The current version of the contract schema. Manifests declare the version
4
+ * they satisfy so the loader can reject one it does not understand loudly.
5
+ *
6
+ * 1.1.0 added `primitives` (forumone-2026#801), an optional section, so a 1.0.0
7
+ * manifest is still a valid 1.1.0 one with none. A minor bump stays readable:
8
+ * {@link SUPPORTED_CONTRACT_VERSIONS} lists every version the loader accepts,
9
+ * and a breaking change starts a new major that drops the old ones.
6
10
  */
7
- export const CONTRACT_VERSION = '1.0.0';
11
+ export const CONTRACT_VERSION = '1.1.0';
12
+ /** Every contract version a manifest may declare and still load. */
13
+ export const SUPPORTED_CONTRACT_VERSIONS = ['1.0.0', '1.1.0'];
8
14
  const FieldTypeSchema = z.enum([
9
15
  'text',
10
16
  'richtext',
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/contract/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/contract/schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forumone/throughline-design-system",
3
- "version": "1.5.0",
3
+ "version": "1.6.0-next-d8178f0",
4
4
  "description": "The design-system side of Throughline: the component contract and manifest a design system publishes, its linter, and the Payload blocks, rendering and admin components generated from it.",
5
5
  "type": "module",
6
6
  "exports": {