@duro-app/cli 1.3.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -25,11 +25,11 @@ Exit codes: `0` ok · `1` not found (with "did you mean") · `2` usage error ·
25
25
  ## MCP server
26
26
 
27
27
  ```
28
- claude mcp add duro -- npx -y -p @duro-app/cli -p @modelcontextprotocol/sdk duro mcp
28
+ claude mcp add duro-ds -- npx -y -p @duro-app/cli -p @modelcontextprotocol/sdk duro mcp
29
29
  ```
30
30
 
31
- Tools: `duro_lookup` (same fallback-to-search behavior as the CLI),
32
- `duro_list`, `duro_manifest`. Resources: `duro://component/<Name>`,
31
+ Tools: `duro_ds_lookup` (same fallback-to-search behavior as the CLI),
32
+ `duro_ds_list`, `duro_ds_manifest`. Resources: `duro://component/<Name>`,
33
33
  `duro://recipe/<name>`. Prompt: `duro/build-ui` primes a session with the
34
34
  critical rules and the component index. The SDK is an optional peer — plain
35
35
  CLI use never loads it.
@@ -48,12 +48,53 @@ generated regions of the repo's CLAUDE.md (`--write-docs` / `--check-docs`).
48
48
  The CLI and `@duro-app/ui` are released in lockstep; a version mismatch with
49
49
  a locally installed ui prints a one-line stderr warning.
50
50
 
51
+ ### Authoring `relatedTo`
52
+
53
+ Every `relatedTo` entry declares a `kind`, and the type makes it required:
54
+
55
+ ```ts
56
+ relatedTo: [
57
+ {
58
+ component: 'Menu',
59
+ kind: 'contrast',
60
+ relationship: 'Menu triggers actions; Select picks a value',
61
+ },
62
+ {component: 'Field', kind: 'composition', relationship: 'Place Select inside Field.Root'},
63
+ ]
64
+ ```
65
+
66
+ - **`contrast`** — the two are alternatives; you pick one _instead of_ the
67
+ other. These become the session-start neighbors table, so write the
68
+ relationship so it decides in **either** direction: `X for A; Y for B`, not
69
+ "Vertical equivalent" (which of the two is vertical?).
70
+ - **`composition`** — one goes _inside_ the other, or is _built on_ it.
71
+ React composes, so this covers "wraps", "renders" and "built on" too, not
72
+ just literal nesting. These get their own table: rendered as "Input vs
73
+ Field" they would read as the opposite advice.
74
+
75
+ Filing an edge under the wrong kind puts it under a heading that contradicts
76
+ it, which is why the field is not optional and not inferred. Write the
77
+ relationship to match: a `contrast` edge decides ("X for A; Y for B"), a
78
+ `composition` edge says what wraps what.
79
+
51
80
  ## Claude Code session hook
52
81
 
53
- `duro hook session-start` prints a consult-first preamble followed by the
54
- full catalog, designed to be injected into agent context by a Claude Code
55
- `SessionStart` hook — so "check the design system before building UI" stops
56
- being a remembered step an agent can skip.
82
+ `duro hook session-start` prints a consult-first preamble, the full catalog,
83
+ and two neighbour tables, designed to be injected into agent context by a
84
+ Claude Code `SessionStart` hook — so "check the design system before building
85
+ UI" stops being a remembered step an agent can skip.
86
+
87
+ The catalog answers "what exists". The tables answer the two questions it
88
+ doesn't, which is where agents actually go wrong:
89
+
90
+ - **PICKING BETWEEN NEIGHBORS** — a Menu built out of a Select, a Card where
91
+ Panel was meant
92
+ - **COMPOSE — DO NOT HAND-ROLL THE WRAPPER** — a hand-rolled label beside an
93
+ Input that should have been wrapped in `Field.Root`
94
+
95
+ All three ship in one injection, so none waits on a `duro <Component>` call
96
+ the agent may never make. The tables are the `contrast` and `composition`
97
+ edges of each component's `relatedTo` — see above.
57
98
 
58
99
  Every consuming repo wires it the same way, and the CLI does the wiring:
59
100
 
@@ -1 +1 @@
1
- {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AA0B9C,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAID,wBAAgB,OAAO,CACrB,QAAQ,EAAE,QAAQ,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,GAAE,WAAgB,GACxB,aAAa,CAcf"}
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AA8B9C,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAID,wBAAgB,OAAO,CACrB,QAAQ,EAAE,QAAQ,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,GAAE,WAAgB,GACxB,aAAa,CAwBf"}
@@ -2,6 +2,8 @@ import { execFileSync } from 'node:child_process';
2
2
  import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
3
  import { dirname, join } from 'node:path';
4
4
  import { runList } from './list.js';
5
+ import { relatedPairs } from '../disambiguation.js';
6
+ import { renderPairs } from '../format.js';
5
7
  import { GITIGNORE_BLOCK, HOOK_CACHE_IGNORE, HOOK_COMMAND, HOOK_NOTES_PATH, HOOK_SCRIPT, HOOK_SCRIPT_PATH, HOOK_SETTINGS_PATH, } from '../hook-script.js';
6
8
  // Injected into agent context by a Claude Code SessionStart hook. The point
7
9
  // is to turn "consult the design system before building UI" from a remembered
@@ -12,7 +14,9 @@ const PREAMBLE = [
12
14
  'Duro design-system session bootstrap (duro hook session-start).',
13
15
  'The catalog below is already in your context — before hand-rolling ANY',
14
16
  'interactive element (menu, badge, tag, dialog, select, tooltip, ...),',
15
- 'pick the design-system component or recipe from this list. Details:',
17
+ 'pick the design-system component or recipe from this list. When two of',
18
+ 'them could both fit, the neighbors section decides; the compose section',
19
+ 'says what already wraps what, so you never rebuild it. Details:',
16
20
  'duro <Component> (props+usage) · duro <recipe> --source-only ·',
17
21
  'duro spacing|icons|rules.',
18
22
  ].join('\n');
@@ -28,9 +32,19 @@ export function runHook(registry, event, options = {}) {
28
32
  };
29
33
  }
30
34
  const list = runList(registry);
35
+ // The index says what exists; the guard says which one is wrong. Both ship
36
+ // in the same injection so neither waits on a call the agent may skip.
37
+ const contrast = relatedPairs(registry, 'contrast');
38
+ const composition = relatedPairs(registry, 'composition');
39
+ const sections = [
40
+ PREAMBLE,
41
+ list.text,
42
+ renderPairs(contrast, 'PICKING BETWEEN NEIGHBORS', 'vs'),
43
+ renderPairs(composition, 'COMPOSE — DO NOT HAND-ROLL THE WRAPPER', '+'),
44
+ ].filter(Boolean);
31
45
  return {
32
- text: `${PREAMBLE}\n\n${list.text}`,
33
- data: { preamble: PREAMBLE, entries: list.data },
46
+ text: sections.join('\n\n'),
47
+ data: { preamble: PREAMBLE, entries: list.data, contrast, composition },
34
48
  };
35
49
  }
36
50
  function read(path) {
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,20 @@ export declare function toolDefinitions(registry: Registry): ({
52
52
  required?: undefined;
53
53
  };
54
54
  })[];
55
+ /**
56
+ * The wire shape of a tools/call answer. `structuredContent` must be a JSON
57
+ * object — a bare array is rejected by the SDK's result schema, which is how
58
+ * duro_ds_list (a ListEntry[]) used to fail with -32602 — so arrays ride under
59
+ * `entries`.
60
+ */
61
+ export declare function toolResponse(registry: Registry, name: string, args: Record<string, unknown>): {
62
+ content: {
63
+ type: "text";
64
+ text: string;
65
+ }[];
66
+ structuredContent: Record<string, unknown>;
67
+ isError: boolean;
68
+ };
55
69
  export declare function callTool(registry: Registry, name: string, args: Record<string, unknown>): {
56
70
  text: string;
57
71
  data: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAA;AAYlD,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuCjD;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;EAkBvF;AAED,wBAAsB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAgG9D"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAA;AAYlD,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuCjD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;uBAInB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;EAG/F;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;EAkBvF;AAED,wBAAsB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA2F9D"}
@@ -11,7 +11,7 @@ or run it without installing:
11
11
  export function toolDefinitions(registry) {
12
12
  return [
13
13
  {
14
- name: 'duro_lookup',
14
+ name: 'duro_ds_lookup',
15
15
  description: 'Docs for anything in the Duro design system by name: a component (props, usage, example), a recipe (runnable source), a token group, "icons", or "rules". Free text falls back to a ranked search over usage metadata — pass what you need, e.g. "tags that wrap".',
16
16
  inputSchema: {
17
17
  type: 'object',
@@ -30,7 +30,7 @@ export function toolDefinitions(registry) {
30
30
  },
31
31
  },
32
32
  {
33
- name: 'duro_list',
33
+ name: 'duro_ds_list',
34
34
  description: `One-line index of everything documented (${Object.keys(registry.components).length} components, ${Object.keys(registry.recipes).length} recipes, token groups).`,
35
35
  inputSchema: {
36
36
  type: 'object',
@@ -40,26 +40,40 @@ export function toolDefinitions(registry) {
40
40
  },
41
41
  },
42
42
  {
43
- name: 'duro_manifest',
43
+ name: 'duro_ds_manifest',
44
44
  description: 'The duro command spec plus all valid lookup names.',
45
45
  inputSchema: { type: 'object', properties: {} },
46
46
  },
47
47
  ];
48
48
  }
49
+ /**
50
+ * The wire shape of a tools/call answer. `structuredContent` must be a JSON
51
+ * object — a bare array is rejected by the SDK's result schema, which is how
52
+ * duro_ds_list (a ListEntry[]) used to fail with -32602 — so arrays ride under
53
+ * `entries`.
54
+ */
55
+ export function toolResponse(registry, name, args) {
56
+ const { text, data, isError } = callTool(registry, name, args);
57
+ return {
58
+ content: [{ type: 'text', text: text || JSON.stringify(data, null, 2) }],
59
+ structuredContent: (Array.isArray(data) ? { entries: data } : data),
60
+ isError,
61
+ };
62
+ }
49
63
  export function callTool(registry, name, args) {
50
64
  switch (name) {
51
- case 'duro_lookup': {
65
+ case 'duro_ds_lookup': {
52
66
  const result = runLookup(registry, String(args.name ?? ''), {
53
67
  part: typeof args.part === 'string' ? args.part : undefined,
54
68
  sourceOnly: args.sourceOnly === true,
55
69
  });
56
70
  return { text: result.text, data: result.data, isError: result.exitCode === 1 };
57
71
  }
58
- case 'duro_list': {
72
+ case 'duro_ds_list': {
59
73
  const result = runList(registry, typeof args.kind === 'string' ? args.kind : undefined);
60
74
  return { text: result.text, data: result.data, isError: result.exitCode !== undefined };
61
75
  }
62
- case 'duro_manifest':
76
+ case 'duro_ds_manifest':
63
77
  return { text: '', data: buildManifest(registry, cliVersion()), isError: false };
64
78
  default:
65
79
  throw new Error(`unknown tool ${name}`);
@@ -80,14 +94,7 @@ export async function runMcp(registry) {
80
94
  server.setRequestHandler(sdkTypes.ListToolsRequestSchema, () => ({
81
95
  tools: toolDefinitions(registry),
82
96
  }));
83
- server.setRequestHandler(sdkTypes.CallToolRequestSchema, (request) => {
84
- const { text, data, isError } = callTool(registry, request.params.name, (request.params.arguments ?? {}));
85
- return {
86
- content: [{ type: 'text', text: text || JSON.stringify(data, null, 2) }],
87
- structuredContent: data,
88
- isError,
89
- };
90
- });
97
+ server.setRequestHandler(sdkTypes.CallToolRequestSchema, (request) => toolResponse(registry, request.params.name, (request.params.arguments ?? {})));
91
98
  server.setRequestHandler(sdkTypes.ListResourcesRequestSchema, () => ({
92
99
  resources: [
93
100
  ...Object.keys(registry.components).map((name) => ({
@@ -143,7 +150,7 @@ export async function runMcp(registry) {
143
150
  role: 'user',
144
151
  content: {
145
152
  type: 'text',
146
- text: `You are building UI with the Duro design system. Follow these rules:\n\n${registry.rules.critical}\n\nAvailable components:\n${componentIndex}\n\nQuery details with the duro_lookup tool.`,
153
+ text: `You are building UI with the Duro design system. Follow these rules:\n\n${registry.rules.critical}\n\nAvailable components:\n${componentIndex}\n\nQuery details with the duro_ds_lookup tool.`,
147
154
  },
148
155
  },
149
156
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { Registry } from './registry-types.js';
2
+ /** Two components and the sentence that relates them. */
3
+ export interface RelatedPair {
4
+ /** Alphabetically first of the two, so a pair has one stable identity. */
5
+ a: string;
6
+ b: string;
7
+ relationship: string;
8
+ }
9
+ /**
10
+ * Derive the neighbour pairs the session bootstrap ships alongside the index.
11
+ *
12
+ * The catalog in `duro list` says what EXISTS. It does not say which one, and
13
+ * it does not say what goes inside what — and those are the two ways agents
14
+ * go wrong: a Menu built out of a Select, or a hand-rolled label next to an
15
+ * Input that should have been wrapped in Field.Root. Both answers are already
16
+ * authored per component in `relatedTo`; they just need to be reachable
17
+ * without a `duro <Component>` call the agent may never make.
18
+ *
19
+ * The two kinds render as separate sections because they answer different
20
+ * questions. A `composition` edge shown as "Input vs Field" would read as a
21
+ * choice between them, which is the opposite of the guidance.
22
+ */
23
+ export declare function relatedPairs(registry: Registry, kind: 'contrast' | 'composition'): RelatedPair[];
24
+ //# sourceMappingURL=disambiguation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disambiguation.d.ts","sourceRoot":"","sources":["../src/disambiguation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAA;AAEjD,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B,0EAA0E;IAC1E,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,WAAW,EAAE,CAyBhG"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Derive the neighbour pairs the session bootstrap ships alongside the index.
3
+ *
4
+ * The catalog in `duro list` says what EXISTS. It does not say which one, and
5
+ * it does not say what goes inside what — and those are the two ways agents
6
+ * go wrong: a Menu built out of a Select, or a hand-rolled label next to an
7
+ * Input that should have been wrapped in Field.Root. Both answers are already
8
+ * authored per component in `relatedTo`; they just need to be reachable
9
+ * without a `duro <Component>` call the agent may never make.
10
+ *
11
+ * The two kinds render as separate sections because they answer different
12
+ * questions. A `composition` edge shown as "Input vs Field" would read as a
13
+ * choice between them, which is the opposite of the guidance.
14
+ */
15
+ export function relatedPairs(registry, kind) {
16
+ const byPair = new Map();
17
+ for (const [name, entry] of Object.entries(registry.components)) {
18
+ for (const related of entry.meta?.relatedTo ?? []) {
19
+ if (related.kind !== kind)
20
+ continue;
21
+ // A pair is only useful if both sides are documented.
22
+ if (!(related.component in registry.components) || related.component === name)
23
+ continue;
24
+ const [a, b] = [name, related.component].sort();
25
+ const candidate = { a, b, relationship: related.relationship };
26
+ const held = byPair.get(`${a}|${b}`);
27
+ if (held === undefined || score(candidate) > score(held))
28
+ byPair.set(`${a}|${b}`, candidate);
29
+ }
30
+ }
31
+ // Components sharing a meta file (ColorModeProvider / ColorModeToggle /
32
+ // useColorMode, Table / useDataTable) emit the same sentence against the
33
+ // same neighbour. One is guidance; three is noise in a payload every
34
+ // session pays for. Keep the pair the sentence actually names.
35
+ const best = new Map();
36
+ for (const pair of byPair.values()) {
37
+ const held = best.get(pair.relationship);
38
+ if (held === undefined || score(pair) > score(held))
39
+ best.set(pair.relationship, pair);
40
+ }
41
+ // Sort on the fields, not a joined key: locale collation treats a "|"
42
+ // separator as punctuation and reorders around it.
43
+ return [...best.values()].sort((x, y) => x.a.localeCompare(y.a) || x.b.localeCompare(y.b));
44
+ }
45
+ /**
46
+ * Most pairs are declared from both sides with different wording. Prefer the
47
+ * phrasing that names both components — it reads correctly whichever side the
48
+ * agent arrives from, which a one-sided "Vertical equivalent" does not. Ties
49
+ * keep the first seen, and registry keys are sorted, so this is deterministic.
50
+ */
51
+ function score(pair) {
52
+ return pair.relationship.includes(pair.a) && pair.relationship.includes(pair.b) ? 1 : 0;
53
+ }
54
+ //# sourceMappingURL=disambiguation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disambiguation.js","sourceRoot":"","sources":["../src/disambiguation.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAAC,QAAkB,EAAE,IAAgC;IAC/E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC7C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAChE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;YAClD,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI;gBAAE,SAAQ;YACnC,sDAAsD;YACtD,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI;gBAAE,SAAQ;YACvF,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;YAC/C,MAAM,SAAS,GAAgB,EAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAC,CAAA;YACzE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACpC,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;QAC9F,CAAC;IACH,CAAC;IACD,wEAAwE;IACxE,yEAAyE;IACzE,qEAAqE;IACrE,+DAA+D;IAC/D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxC,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC;IACD,sEAAsE;IACtE,mDAAmD;IACnD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5F,CAAC;AAED;;;;;GAKG;AACH,SAAS,KAAK,CAAC,IAAiB;IAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACzF,CAAC"}
package/dist/format.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { RelatedPair } from './disambiguation.js';
1
2
  import type { ComponentEntry, IconRegistry, RecipeEntry, Registry, RulesRegistry, TokenGroup } from './registry-types.js';
2
3
  export declare function renderComponent(registry: Registry, key: string, entry: ComponentEntry, options?: {
3
4
  part?: string;
@@ -10,4 +11,9 @@ export declare function renderTokenGroup(key: string, group: TokenGroup): string
10
11
  export declare function renderIcons(icons: IconRegistry): string;
11
12
  export declare function renderRules(rules: RulesRegistry): string;
12
13
  export declare function renderList(registry: Registry, kind?: string): string;
14
+ /**
15
+ * A neighbour-pair table. Its own section per kind, because the index answers
16
+ * "what exists" and these answer "which one" and "what goes inside what".
17
+ */
18
+ export declare function renderPairs(pairs: RelatedPair[], heading: string, joiner: string): string;
13
19
  //# sourceMappingURL=format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EAGZ,WAAW,EACX,QAAQ,EACR,aAAa,EACb,UAAU,EACX,MAAM,qBAAqB,CAAA;AAgE5B,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAM,GACjD,MAAM,CAyDR;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,GAAE;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAM,GAAG,MAAM,CAS7F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAuBvE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAUvD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAWxD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAgCpE"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EAGZ,WAAW,EACX,QAAQ,EACR,aAAa,EACb,UAAU,EACX,MAAM,qBAAqB,CAAA;AAgE5B,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAM,GACjD,MAAM,CAyDR;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,GAAE;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAM,GAAG,MAAM,CAS7F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAuBvE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAUvD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAWxD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAgCpE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CASzF"}
package/dist/format.js CHANGED
@@ -183,4 +183,19 @@ export function renderList(registry, kind) {
183
183
  sections.push(dim(`duro <name> for details · duro rules · duro manifest`));
184
184
  return sections.join('\n\n');
185
185
  }
186
+ /**
187
+ * A neighbour-pair table. Its own section per kind, because the index answers
188
+ * "what exists" and these answer "which one" and "what goes inside what".
189
+ */
190
+ export function renderPairs(pairs, heading, joiner) {
191
+ if (pairs.length === 0)
192
+ return '';
193
+ const labels = pairs.map((pair) => `${pair.a} ${joiner} ${pair.b}`);
194
+ const width = Math.max(...labels.map((label) => label.length)) + 2;
195
+ const rows = pairs.map((pair, index) => {
196
+ const body = wrap(pair.relationship, ' '.repeat(width + 2)).trimStart();
197
+ return ` ${labels[index].padEnd(width)}${body}`;
198
+ });
199
+ return `${bold(heading)} (${pairs.length})\n${rows.join('\n')}`;
200
+ }
186
201
  //# sourceMappingURL=format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
package/dist/manifest.js CHANGED
@@ -26,7 +26,7 @@ export const COMMANDS = [
26
26
  'duro login-form --source-only',
27
27
  'duro "tags that wrap"',
28
28
  ],
29
- mcpTool: 'duro_lookup',
29
+ mcpTool: 'duro_ds_lookup',
30
30
  },
31
31
  {
32
32
  name: 'list',
@@ -42,7 +42,7 @@ export const COMMANDS = [
42
42
  flags: [],
43
43
  returns: { shape: 'ListEntry[]', description: '{name, kind, importPath?, description}' },
44
44
  examples: ['duro list', 'duro list recipes --json'],
45
- mcpTool: 'duro_list',
45
+ mcpTool: 'duro_ds_list',
46
46
  },
47
47
  {
48
48
  name: 'manifest',
@@ -51,7 +51,7 @@ export const COMMANDS = [
51
51
  flags: [],
52
52
  returns: { shape: 'Manifest', description: 'Commands, flags, shapes, and enums of valid names' },
53
53
  examples: ['duro manifest --json'],
54
- mcpTool: 'duro_manifest',
54
+ mcpTool: 'duro_ds_manifest',
55
55
  },
56
56
  {
57
57
  name: 'hook',
@@ -79,7 +79,7 @@ export const COMMANDS = [
79
79
  },
80
80
  {
81
81
  name: 'mcp',
82
- summary: 'Run a stdio MCP server exposing duro_lookup / duro_list / duro_manifest',
82
+ summary: 'Run a stdio MCP server exposing duro_ds_lookup / duro_ds_list / duro_ds_manifest',
83
83
  args: [],
84
84
  flags: [],
85
85
  returns: { shape: 'never', description: 'Serves until stdin closes' },
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duro-app/cli",
3
- "version": "1.3.0",
3
+ "version": "2.0.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Machine-queryable docs for the Duro design system: components, props, recipes, tokens and rules as CLI output, JSON, or an MCP server.",
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@modelcontextprotocol/sdk": ">=1.0.0",
48
- "@duro-app/ui": "^1.3.0"
48
+ "@duro-app/ui": "^2.0.0"
49
49
  },
50
50
  "peerDependenciesMeta": {
51
51
  "@duro-app/ui": {
@@ -60,9 +60,9 @@
60
60
  "@types/node": "^24.0.0",
61
61
  "ts-morph": "^26.0.0",
62
62
  "typescript": "^5.7.0",
63
- "@duro-app/ui": "^1.3.0",
64
- "@duro-app/tokens": "^1.3.0",
65
- "@duro-app/eslint-plugin": "^1.3.0"
63
+ "@duro-app/eslint-plugin": "^2.0.0",
64
+ "@duro-app/ui": "^2.0.0",
65
+ "@duro-app/tokens": "^2.0.0"
66
66
  },
67
67
  "scripts": {
68
68
  "registry": "node scripts/build-registry.mjs",
package/registry.json CHANGED
@@ -9,6 +9,7 @@
9
9
  "relatedTo": [
10
10
  {
11
11
  "component": "Table",
12
+ "kind": "composition",
12
13
  "relationship": "Common pattern: Table checkboxes + ActionBar for bulk ops"
13
14
  }
14
15
  ],
@@ -78,6 +79,7 @@
78
79
  "relatedTo": [
79
80
  {
80
81
  "component": "Table",
82
+ "kind": "composition",
81
83
  "relationship": "Common pattern: Table checkboxes + ActionBar for bulk ops"
82
84
  }
83
85
  ],
@@ -110,6 +112,7 @@
110
112
  "relatedTo": [
111
113
  {
112
114
  "component": "Callout",
115
+ "kind": "contrast",
113
116
  "relationship": "Callout for larger block-level messages; Alert for compact inline"
114
117
  }
115
118
  ],
@@ -260,10 +263,12 @@
260
263
  "relatedTo": [
261
264
  {
262
265
  "component": "LinkButton",
266
+ "kind": "contrast",
263
267
  "relationship": "LinkButton for navigation; Button for actions"
264
268
  },
265
269
  {
266
270
  "component": "Toggle",
271
+ "kind": "contrast",
267
272
  "relationship": "Toggle for pressed/unpressed state"
268
273
  }
269
274
  ],
@@ -347,10 +352,12 @@
347
352
  "relatedTo": [
348
353
  {
349
354
  "component": "Inline",
355
+ "kind": "contrast",
350
356
  "relationship": "Inline is a general-purpose horizontal layout; ButtonGroup adds role=\"group\" and disabled support"
351
357
  },
352
358
  {
353
359
  "component": "ActionBar",
360
+ "kind": "contrast",
354
361
  "relationship": "ActionBar is a floating bulk-selection toolbar; ButtonGroup is a static grouping"
355
362
  }
356
363
  ],
@@ -412,6 +419,7 @@
412
419
  "relatedTo": [
413
420
  {
414
421
  "component": "Alert",
422
+ "kind": "contrast",
415
423
  "relationship": "Alert for compact inline; Callout for block-level prominent"
416
424
  }
417
425
  ],
@@ -470,6 +478,7 @@
470
478
  "relatedTo": [
471
479
  {
472
480
  "component": "Panel",
481
+ "kind": "contrast",
473
482
  "relationship": "Panel for structural Header/Body/Footer; Card for visual container"
474
483
  }
475
484
  ],
@@ -536,10 +545,12 @@
536
545
  "relatedTo": [
537
546
  {
538
547
  "component": "Switch",
548
+ "kind": "contrast",
539
549
  "relationship": "Switch for on/off settings; Checkbox for opt-in/selection"
540
550
  },
541
551
  {
542
552
  "component": "Toggle",
553
+ "kind": "contrast",
543
554
  "relationship": "Toggle for toolbar actions; Checkbox for form input"
544
555
  }
545
556
  ],
@@ -609,15 +620,18 @@
609
620
  "relatedTo": [
610
621
  {
611
622
  "component": "RadioGroup",
623
+ "kind": "contrast",
612
624
  "relationship": "RadioGroup for single-select; CheckboxGroup for multi-select"
613
625
  },
614
626
  {
615
627
  "component": "Checkbox",
628
+ "kind": "composition",
616
629
  "relationship": "CheckboxGroup.Item wraps Checkbox internally"
617
630
  },
618
631
  {
619
632
  "component": "ToggleGroup",
620
- "relationship": "ToggleGroup for toolbar-style multi-select"
633
+ "kind": "contrast",
634
+ "relationship": "CheckboxGroup for form multi-select; ToggleGroup for segmented/toolbar multi-select"
621
635
  }
622
636
  ],
623
637
  "whenNotToUse": [
@@ -706,11 +720,13 @@
706
720
  "relatedTo": [
707
721
  {
708
722
  "component": "Inline",
709
- "relationship": "Same but does NOT wrap (nowrap)"
723
+ "kind": "contrast",
724
+ "relationship": "Cluster wraps when items overflow; Inline stays on one row"
710
725
  },
711
726
  {
712
727
  "component": "Stack",
713
- "relationship": "Vertical equivalent"
728
+ "kind": "contrast",
729
+ "relationship": "Stack stacks vertically; Cluster lays out horizontally and wraps"
714
730
  }
715
731
  ],
716
732
  "whenNotToUse": [
@@ -770,10 +786,12 @@
770
786
  "relatedTo": [
771
787
  {
772
788
  "component": "Input",
773
- "relationship": "Sibling form control; same Field-context contract"
789
+ "kind": "contrast",
790
+ "relationship": "ColorInput is the native color swatch; Input is text entry"
774
791
  },
775
792
  {
776
793
  "component": "Field",
794
+ "kind": "composition",
777
795
  "relationship": "Wrap in Field.Root for label + error wiring"
778
796
  }
779
797
  ],
@@ -862,10 +880,12 @@
862
880
  "relatedTo": [
863
881
  {
864
882
  "component": "ThemeProvider",
883
+ "kind": "composition",
865
884
  "relationship": "ColorModeProvider renders ThemeProvider with the resolved theme; use ThemeProvider alone for a fixed theme"
866
885
  },
867
886
  {
868
887
  "component": "Toggle",
888
+ "kind": "contrast",
869
889
  "relationship": "Toggle is a generic pressed button; ColorModeToggle cycles theme modes"
870
890
  }
871
891
  ],
@@ -947,10 +967,12 @@
947
967
  "relatedTo": [
948
968
  {
949
969
  "component": "ThemeProvider",
970
+ "kind": "composition",
950
971
  "relationship": "ColorModeProvider renders ThemeProvider with the resolved theme; use ThemeProvider alone for a fixed theme"
951
972
  },
952
973
  {
953
974
  "component": "Toggle",
975
+ "kind": "contrast",
954
976
  "relationship": "Toggle is a generic pressed button; ColorModeToggle cycles theme modes"
955
977
  }
956
978
  ],
@@ -1009,14 +1031,17 @@
1009
1031
  "relatedTo": [
1010
1032
  {
1011
1033
  "component": "Select",
1034
+ "kind": "contrast",
1012
1035
  "relationship": "Select for short lists without search; Combobox for long filterable lists"
1013
1036
  },
1014
1037
  {
1015
1038
  "component": "Input",
1039
+ "kind": "contrast",
1016
1040
  "relationship": "Input for free-form text; Combobox for constrained selection"
1017
1041
  },
1018
1042
  {
1019
1043
  "component": "Menu",
1044
+ "kind": "contrast",
1020
1045
  "relationship": "Menu triggers actions; Combobox picks a value"
1021
1046
  }
1022
1047
  ],
@@ -1181,11 +1206,13 @@
1181
1206
  "relatedTo": [
1182
1207
  {
1183
1208
  "component": "Dialog",
1184
- "relationship": "Built on Dialog; this adds the phrase gate + footer"
1209
+ "kind": "composition",
1210
+ "relationship": "Built on Dialog — ConfirmDialog adds the phrase gate + footer"
1185
1211
  },
1186
1212
  {
1187
1213
  "component": "Button",
1188
- "relationship": "The confirm/cancel actions"
1214
+ "kind": "composition",
1215
+ "relationship": "Button renders the confirm/cancel actions inside ConfirmDialog"
1189
1216
  }
1190
1217
  ],
1191
1218
  "whenNotToUse": [
@@ -1292,14 +1319,12 @@
1292
1319
  "relatedTo": [
1293
1320
  {
1294
1321
  "component": "Drawer",
1322
+ "kind": "contrast",
1295
1323
  "relationship": "Drawer is modal with backdrop; DetailPanel is non-modal and in-flow"
1296
1324
  },
1297
- {
1298
- "component": "Panel",
1299
- "relationship": "DetailPanel uses Panel structure internally"
1300
- },
1301
1325
  {
1302
1326
  "component": "Table",
1327
+ "kind": "composition",
1303
1328
  "relationship": "Common pattern: Table + DetailPanel for master-detail"
1304
1329
  }
1305
1330
  ],
@@ -1535,10 +1560,12 @@
1535
1560
  "relatedTo": [
1536
1561
  {
1537
1562
  "component": "Drawer",
1563
+ "kind": "contrast",
1538
1564
  "relationship": "Drawer slides from an edge; Dialog is centered with scale animation"
1539
1565
  },
1540
1566
  {
1541
1567
  "component": "DetailPanel",
1568
+ "kind": "contrast",
1542
1569
  "relationship": "DetailPanel is non-modal and in-flow; Dialog is modal with backdrop"
1543
1570
  }
1544
1571
  ],
@@ -1740,10 +1767,12 @@
1740
1767
  "relatedTo": [
1741
1768
  {
1742
1769
  "component": "Dialog",
1770
+ "kind": "contrast",
1743
1771
  "relationship": "Dialog is centered modal; Drawer slides from an edge"
1744
1772
  },
1745
1773
  {
1746
1774
  "component": "DetailPanel",
1775
+ "kind": "contrast",
1747
1776
  "relationship": "DetailPanel is non-modal and in-flow; Drawer is modal with backdrop"
1748
1777
  }
1749
1778
  ],
@@ -1995,18 +2024,22 @@
1995
2024
  "relatedTo": [
1996
2025
  {
1997
2026
  "component": "Form",
2027
+ "kind": "composition",
1998
2028
  "relationship": "Field.Root auto-binds when name matches schema key"
1999
2029
  },
2000
2030
  {
2001
2031
  "component": "Input",
2032
+ "kind": "composition",
2002
2033
  "relationship": "Place Input inside Field.Root"
2003
2034
  },
2004
2035
  {
2005
2036
  "component": "Textarea",
2037
+ "kind": "composition",
2006
2038
  "relationship": "Place Textarea inside Field.Root"
2007
2039
  },
2008
2040
  {
2009
2041
  "component": "Select",
2042
+ "kind": "composition",
2010
2043
  "relationship": "Place Select inside Field.Root"
2011
2044
  }
2012
2045
  ],
@@ -2114,14 +2147,17 @@
2114
2147
  "relatedTo": [
2115
2148
  {
2116
2149
  "component": "Form",
2150
+ "kind": "composition",
2117
2151
  "relationship": "Fieldset.Root goes inside Form"
2118
2152
  },
2119
2153
  {
2120
2154
  "component": "Field",
2155
+ "kind": "composition",
2121
2156
  "relationship": "Field.Root goes inside Fieldset.Root"
2122
2157
  },
2123
2158
  {
2124
2159
  "component": "Stack",
2160
+ "kind": "contrast",
2125
2161
  "relationship": "Similar vertical spacing, but Fieldset has form semantics"
2126
2162
  }
2127
2163
  ],
@@ -2184,10 +2220,12 @@
2184
2220
  "relatedTo": [
2185
2221
  {
2186
2222
  "component": "Field",
2223
+ "kind": "composition",
2187
2224
  "relationship": "Field.Root auto-binds to Form via name prop"
2188
2225
  },
2189
2226
  {
2190
2227
  "component": "Fieldset",
2228
+ "kind": "composition",
2191
2229
  "relationship": "Groups fields visually within a Form"
2192
2230
  }
2193
2231
  ],
@@ -2261,7 +2299,8 @@
2261
2299
  "relatedTo": [
2262
2300
  {
2263
2301
  "component": "Stack",
2264
- "relationship": "Single-column vertical layout"
2302
+ "kind": "contrast",
2303
+ "relationship": "Grid for multi-column layouts; Stack for a single vertical column"
2265
2304
  }
2266
2305
  ],
2267
2306
  "whenNotToUse": [
@@ -2318,6 +2357,7 @@
2318
2357
  "relatedTo": [
2319
2358
  {
2320
2359
  "component": "Text",
2360
+ "kind": "contrast",
2321
2361
  "relationship": "Text for body/label; Heading for semantic headings"
2322
2362
  }
2323
2363
  ],
@@ -2381,6 +2421,7 @@
2381
2421
  "relatedTo": [
2382
2422
  {
2383
2423
  "component": "StatusIcon",
2424
+ "kind": "composition",
2384
2425
  "relationship": "StatusIcon wraps Icon with a colored background circle"
2385
2426
  }
2386
2427
  ],
@@ -2469,11 +2510,13 @@
2469
2510
  "relatedTo": [
2470
2511
  {
2471
2512
  "component": "Cluster",
2472
- "relationship": "Same but wraps to next line"
2513
+ "kind": "contrast",
2514
+ "relationship": "Cluster wraps when items overflow; Inline stays on one row"
2473
2515
  },
2474
2516
  {
2475
2517
  "component": "Stack",
2476
- "relationship": "Vertical equivalent"
2518
+ "kind": "contrast",
2519
+ "relationship": "Stack stacks vertically; Inline lays out horizontally on one row"
2477
2520
  }
2478
2521
  ],
2479
2522
  "whenNotToUse": [
@@ -2533,15 +2576,18 @@
2533
2576
  "relatedTo": [
2534
2577
  {
2535
2578
  "component": "Field",
2579
+ "kind": "composition",
2536
2580
  "relationship": "Wrap in Field.Root for label + error"
2537
2581
  },
2538
2582
  {
2539
2583
  "component": "InputGroup",
2584
+ "kind": "composition",
2540
2585
  "relationship": "Wrap in InputGroup.Root for prefix/suffix addons"
2541
2586
  },
2542
2587
  {
2543
2588
  "component": "Textarea",
2544
- "relationship": "Multi-line variant"
2589
+ "kind": "contrast",
2590
+ "relationship": "Input for single-line entry; Textarea for multi-line"
2545
2591
  }
2546
2592
  ],
2547
2593
  "whenNotToUse": [
@@ -2716,10 +2762,12 @@
2716
2762
  "relatedTo": [
2717
2763
  {
2718
2764
  "component": "Input",
2765
+ "kind": "composition",
2719
2766
  "relationship": "InputGroup enhances Input with addons"
2720
2767
  },
2721
2768
  {
2722
2769
  "component": "Field",
2770
+ "kind": "contrast",
2723
2771
  "relationship": "Field provides label/error; InputGroup provides visual addons"
2724
2772
  }
2725
2773
  ],
@@ -2821,6 +2869,7 @@
2821
2869
  "relatedTo": [
2822
2870
  {
2823
2871
  "component": "Button",
2872
+ "kind": "contrast",
2824
2873
  "relationship": "Button for actions; LinkButton for navigation"
2825
2874
  }
2826
2875
  ],
@@ -2906,14 +2955,17 @@
2906
2955
  "relatedTo": [
2907
2956
  {
2908
2957
  "component": "Table",
2958
+ "kind": "contrast",
2909
2959
  "relationship": "Table for wide multi-column data; List for narrow compact items"
2910
2960
  },
2911
2961
  {
2912
2962
  "component": "DetailPanel",
2963
+ "kind": "composition",
2913
2964
  "relationship": "List fits naturally inside DetailPanel.Body"
2914
2965
  },
2915
2966
  {
2916
2967
  "component": "Menu",
2968
+ "kind": "contrast",
2917
2969
  "relationship": "Menu for action menus; List for data display with selection"
2918
2970
  }
2919
2971
  ],
@@ -3067,10 +3119,12 @@
3067
3119
  "relatedTo": [
3068
3120
  {
3069
3121
  "component": "Select",
3122
+ "kind": "contrast",
3070
3123
  "relationship": "Select picks values; Menu triggers actions"
3071
3124
  },
3072
3125
  {
3073
3126
  "component": "Button",
3127
+ "kind": "composition",
3074
3128
  "relationship": "Often used as Menu.Trigger content"
3075
3129
  }
3076
3130
  ],
@@ -3243,10 +3297,12 @@
3243
3297
  "relatedTo": [
3244
3298
  {
3245
3299
  "component": "Stack",
3300
+ "kind": "composition",
3246
3301
  "relationship": "Use Stack for content within PageShell"
3247
3302
  },
3248
3303
  {
3249
3304
  "component": "SideNav",
3305
+ "kind": "composition",
3250
3306
  "relationship": "Often placed alongside PageShell"
3251
3307
  }
3252
3308
  ],
@@ -3318,14 +3374,12 @@
3318
3374
  "relatedTo": [
3319
3375
  {
3320
3376
  "component": "Card",
3377
+ "kind": "contrast",
3321
3378
  "relationship": "Card is for shallow, repeated items; Panel is for deep, organized content"
3322
3379
  },
3323
- {
3324
- "component": "DetailPanel",
3325
- "relationship": "DetailPanel uses Panel internally for its structural layout"
3326
- },
3327
3380
  {
3328
3381
  "component": "PageShell",
3382
+ "kind": "contrast",
3329
3383
  "relationship": "PageShell is for page-level layout; Panel is for section-level"
3330
3384
  }
3331
3385
  ],
@@ -3413,15 +3467,18 @@
3413
3467
  "relatedTo": [
3414
3468
  {
3415
3469
  "component": "CheckboxGroup",
3470
+ "kind": "contrast",
3416
3471
  "relationship": "CheckboxGroup for multi-select; RadioGroup for single-select"
3417
3472
  },
3418
3473
  {
3419
3474
  "component": "Select",
3420
- "relationship": "Select for larger option sets or when space is limited"
3475
+ "kind": "contrast",
3476
+ "relationship": "RadioGroup keeps 2-5 options visible; Select for larger sets or tight space"
3421
3477
  },
3422
3478
  {
3423
3479
  "component": "ToggleGroup",
3424
- "relationship": "ToggleGroup for toolbar-style selection"
3480
+ "kind": "contrast",
3481
+ "relationship": "RadioGroup for form single-select; ToggleGroup for segmented/toolbar single-select"
3425
3482
  }
3426
3483
  ],
3427
3484
  "whenNotToUse": [
@@ -3620,11 +3677,13 @@
3620
3677
  "relatedTo": [
3621
3678
  {
3622
3679
  "component": "Menu",
3680
+ "kind": "contrast",
3623
3681
  "relationship": "Menu triggers actions; Select picks a value"
3624
3682
  },
3625
3683
  {
3626
3684
  "component": "ToggleGroup",
3627
- "relationship": "For visible, small option sets"
3685
+ "kind": "contrast",
3686
+ "relationship": "Select hides options behind a dropdown; ToggleGroup keeps a small set visible"
3628
3687
  }
3629
3688
  ],
3630
3689
  "whenNotToUse": [
@@ -3774,10 +3833,12 @@
3774
3833
  "relatedTo": [
3775
3834
  {
3776
3835
  "component": "Tabs",
3836
+ "kind": "contrast",
3777
3837
  "relationship": "Tabs switch content in-place; SideNav navigates pages"
3778
3838
  },
3779
3839
  {
3780
3840
  "component": "PageShell",
3841
+ "kind": "composition",
3781
3842
  "relationship": "Often placed alongside PageShell"
3782
3843
  }
3783
3844
  ],
@@ -3937,11 +3998,13 @@
3937
3998
  "relatedTo": [
3938
3999
  {
3939
4000
  "component": "Inline",
3940
- "relationship": "Horizontal equivalent (no wrap)"
4001
+ "kind": "contrast",
4002
+ "relationship": "Stack stacks vertically; Inline lays out horizontally on one row"
3941
4003
  },
3942
4004
  {
3943
4005
  "component": "Cluster",
3944
- "relationship": "Horizontal equivalent (wraps)"
4006
+ "kind": "contrast",
4007
+ "relationship": "Stack stacks vertically; Cluster lays out horizontally and wraps"
3945
4008
  }
3946
4009
  ],
3947
4010
  "whenNotToUse": [
@@ -3994,10 +4057,12 @@
3994
4057
  "relatedTo": [
3995
4058
  {
3996
4059
  "component": "Icon",
3997
- "relationship": "StatusIcon wraps Icon with background; Icon is bare SVG"
4060
+ "kind": "composition",
4061
+ "relationship": "StatusIcon wraps Icon with a colored background circle"
3998
4062
  },
3999
4063
  {
4000
4064
  "component": "Badge",
4065
+ "kind": "contrast",
4001
4066
  "relationship": "Badge for text status; StatusIcon for icon status"
4002
4067
  }
4003
4068
  ],
@@ -4056,10 +4121,12 @@
4056
4121
  "relatedTo": [
4057
4122
  {
4058
4123
  "component": "Checkbox",
4124
+ "kind": "contrast",
4059
4125
  "relationship": "Checkbox for selection/opt-in; Switch for on/off settings"
4060
4126
  },
4061
4127
  {
4062
4128
  "component": "Toggle",
4129
+ "kind": "contrast",
4063
4130
  "relationship": "Toggle for toolbar pressed state; Switch for settings"
4064
4131
  }
4065
4132
  ],
@@ -4140,6 +4207,7 @@
4140
4207
  "relatedTo": [
4141
4208
  {
4142
4209
  "component": "ScrollArea",
4210
+ "kind": "composition",
4143
4211
  "relationship": "Wrap Table in ScrollArea for horizontal overflow"
4144
4212
  }
4145
4213
  ],
@@ -4342,6 +4410,7 @@
4342
4410
  "relatedTo": [
4343
4411
  {
4344
4412
  "component": "ScrollArea",
4413
+ "kind": "composition",
4345
4414
  "relationship": "Wrap Table in ScrollArea for horizontal overflow"
4346
4415
  }
4347
4416
  ],
@@ -4670,7 +4739,8 @@
4670
4739
  "relatedTo": [
4671
4740
  {
4672
4741
  "component": "SideNav",
4673
- "relationship": "For persistent navigation, not content switching"
4742
+ "kind": "contrast",
4743
+ "relationship": "Tabs switch content in-place; SideNav navigates between pages"
4674
4744
  }
4675
4745
  ],
4676
4746
  "whenNotToUse": [
@@ -4779,10 +4849,12 @@
4779
4849
  "relatedTo": [
4780
4850
  {
4781
4851
  "component": "Badge",
4782
- "relationship": "Static display variant"
4852
+ "kind": "contrast",
4853
+ "relationship": "Tag is interactive and removable; Badge is a static label"
4783
4854
  },
4784
4855
  {
4785
4856
  "component": "TagGroup",
4857
+ "kind": "composition",
4786
4858
  "relationship": "Wrap in TagGroup.Root for collection management"
4787
4859
  }
4788
4860
  ],
@@ -4869,14 +4941,17 @@
4869
4941
  "relatedTo": [
4870
4942
  {
4871
4943
  "component": "Tag",
4944
+ "kind": "composition",
4872
4945
  "relationship": "Tag is the item inside TagGroup.List"
4873
4946
  },
4874
4947
  {
4875
4948
  "component": "Badge",
4876
- "relationship": "Static display alternative"
4949
+ "kind": "contrast",
4950
+ "relationship": "TagGroup manages an editable collection; Badge is a static label"
4877
4951
  },
4878
4952
  {
4879
4953
  "component": "Field",
4954
+ "kind": "composition",
4880
4955
  "relationship": "Wrap in Field.Root for label + description + error"
4881
4956
  }
4882
4957
  ],
@@ -4983,6 +5058,7 @@
4983
5058
  "relatedTo": [
4984
5059
  {
4985
5060
  "component": "Heading",
5061
+ "kind": "contrast",
4986
5062
  "relationship": "Heading for semantic h1-h6; Text for body/label"
4987
5063
  }
4988
5064
  ],
@@ -5122,10 +5198,12 @@
5122
5198
  "relatedTo": [
5123
5199
  {
5124
5200
  "component": "Input",
5125
- "relationship": "Single-line variant"
5201
+ "kind": "contrast",
5202
+ "relationship": "Input for single-line entry; Textarea for multi-line"
5126
5203
  },
5127
5204
  {
5128
5205
  "component": "Field",
5206
+ "kind": "composition",
5129
5207
  "relationship": "Wrap in Field.Root for label + error"
5130
5208
  }
5131
5209
  ],
@@ -5251,10 +5329,12 @@
5251
5329
  "relatedTo": [
5252
5330
  {
5253
5331
  "component": "Alert",
5332
+ "kind": "contrast",
5254
5333
  "relationship": "Alert for inline/in-form status; Toast for action results"
5255
5334
  },
5256
5335
  {
5257
5336
  "component": "ConfirmDialog",
5337
+ "kind": "contrast",
5258
5338
  "relationship": "ConfirmDialog gates a destructive action; Toast reports the outcome"
5259
5339
  }
5260
5340
  ],
@@ -5288,14 +5368,17 @@
5288
5368
  "relatedTo": [
5289
5369
  {
5290
5370
  "component": "ToggleGroup",
5371
+ "kind": "composition",
5291
5372
  "relationship": "Group of Toggles with single/multi select"
5292
5373
  },
5293
5374
  {
5294
5375
  "component": "Switch",
5376
+ "kind": "contrast",
5295
5377
  "relationship": "Switch for settings; Toggle for toolbar actions"
5296
5378
  },
5297
5379
  {
5298
5380
  "component": "Button",
5381
+ "kind": "contrast",
5299
5382
  "relationship": "Button for actions; Toggle for state"
5300
5383
  }
5301
5384
  ],
@@ -5376,11 +5459,13 @@
5376
5459
  "relatedTo": [
5377
5460
  {
5378
5461
  "component": "Toggle",
5462
+ "kind": "composition",
5379
5463
  "relationship": "Toggle children get group context"
5380
5464
  },
5381
5465
  {
5382
5466
  "component": "Select",
5383
- "relationship": "Select for larger option sets"
5467
+ "kind": "contrast",
5468
+ "relationship": "Select hides options behind a dropdown; ToggleGroup keeps a small set visible"
5384
5469
  }
5385
5470
  ],
5386
5471
  "whenNotToUse": [
@@ -5543,6 +5628,7 @@
5543
5628
  "relatedTo": [
5544
5629
  {
5545
5630
  "component": "Table",
5631
+ "kind": "contrast",
5546
5632
  "relationship": "Table is semantic + paginated; VirtualTable windows large lists"
5547
5633
  }
5548
5634
  ],
@@ -5680,10 +5766,12 @@
5680
5766
  "relatedTo": [
5681
5767
  {
5682
5768
  "component": "ThemeProvider",
5769
+ "kind": "composition",
5683
5770
  "relationship": "ColorModeProvider renders ThemeProvider with the resolved theme; use ThemeProvider alone for a fixed theme"
5684
5771
  },
5685
5772
  {
5686
5773
  "component": "Toggle",
5774
+ "kind": "contrast",
5687
5775
  "relationship": "Toggle is a generic pressed button; ColorModeToggle cycles theme modes"
5688
5776
  }
5689
5777
  ],
@@ -5739,6 +5827,7 @@
5739
5827
  "relatedTo": [
5740
5828
  {
5741
5829
  "component": "ScrollArea",
5830
+ "kind": "composition",
5742
5831
  "relationship": "Wrap Table in ScrollArea for horizontal overflow"
5743
5832
  }
5744
5833
  ],
@@ -5782,10 +5871,12 @@
5782
5871
  "relatedTo": [
5783
5872
  {
5784
5873
  "component": "Alert",
5874
+ "kind": "contrast",
5785
5875
  "relationship": "Alert for inline/in-form status; Toast for action results"
5786
5876
  },
5787
5877
  {
5788
5878
  "component": "ConfirmDialog",
5879
+ "kind": "contrast",
5789
5880
  "relationship": "ConfirmDialog gates a destructive action; Toast reports the outcome"
5790
5881
  }
5791
5882
  ],