@principal-ai/subsystems-react 0.51.0 → 0.51.1

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.
Files changed (87) hide show
  1. package/dist/index.d.ts +6 -6
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +6 -4
  4. package/dist/index.js.map +1 -1
  5. package/dist/pierre/PierreTrailCodeView.d.ts +1 -1
  6. package/dist/pierre/PierreTrailCodeView.d.ts.map +1 -1
  7. package/dist/pierre/PierreTrailCodeView.js +44 -21
  8. package/dist/pierre/PierreTrailCodeView.js.map +1 -1
  9. package/dist/stories/Subsystem/C4Graph/c4ProposedElements.fixture.d.ts +493 -0
  10. package/dist/stories/Subsystem/C4Graph/c4ProposedElements.fixture.d.ts.map +1 -0
  11. package/dist/stories/Subsystem/C4Graph/c4ProposedElements.fixture.js +329 -0
  12. package/dist/stories/Subsystem/C4Graph/c4ProposedElements.fixture.js.map +1 -0
  13. package/dist/subsystem/C4Graph.d.ts +2 -2
  14. package/dist/subsystem/C4Graph.d.ts.map +1 -1
  15. package/dist/subsystem/C4Graph.js +25 -16
  16. package/dist/subsystem/C4Graph.js.map +1 -1
  17. package/dist/subsystem/C4NodeCard.d.ts +71 -36
  18. package/dist/subsystem/C4NodeCard.d.ts.map +1 -1
  19. package/dist/subsystem/C4NodeCard.js +88 -94
  20. package/dist/subsystem/C4NodeCard.js.map +1 -1
  21. package/dist/subsystem/FileDrawer.d.ts.map +1 -1
  22. package/dist/subsystem/FileDrawer.js +20 -21
  23. package/dist/subsystem/FileDrawer.js.map +1 -1
  24. package/dist/subsystem/IssueList.js +1 -1
  25. package/dist/subsystem/IssueList.js.map +1 -1
  26. package/dist/subsystem/SubsystemComponentGraph.d.ts.map +1 -1
  27. package/dist/subsystem/SubsystemComponentGraph.js +13 -4
  28. package/dist/subsystem/SubsystemComponentGraph.js.map +1 -1
  29. package/dist/subsystem/c4.d.ts +272 -0
  30. package/dist/subsystem/c4.d.ts.map +1 -0
  31. package/dist/subsystem/c4.js +322 -0
  32. package/dist/subsystem/c4.js.map +1 -0
  33. package/dist/subsystem/c4Evidence.d.ts +143 -0
  34. package/dist/subsystem/c4Evidence.d.ts.map +1 -0
  35. package/dist/subsystem/c4Evidence.js +240 -0
  36. package/dist/subsystem/c4Evidence.js.map +1 -0
  37. package/dist/subsystem/model.d.ts +2 -6
  38. package/dist/subsystem/model.d.ts.map +1 -1
  39. package/dist/subsystem/model.js.map +1 -1
  40. package/package.json +4 -3
  41. package/src/index.ts +26 -28
  42. package/src/pierre/PierreTrailCodeView.tsx +49 -21
  43. package/src/stories/Subsystem/C4Graph/C4NodeGallery.stories.tsx +167 -79
  44. package/src/stories/Subsystem/C4Graph/ProposedElements.stories.tsx +293 -0
  45. package/src/stories/Subsystem/C4Graph/c4ProposedElements.fixture.ts +366 -0
  46. package/src/stories/Subsystem/ComponentGraph/IssueOverlay.stories.tsx +1 -1
  47. package/src/stories/Subsystem/ComponentGraph/Issues.stories.tsx +1 -1
  48. package/src/subsystem/C4Graph.tsx +39 -24
  49. package/src/subsystem/C4NodeCard.test.ts +169 -64
  50. package/src/subsystem/C4NodeCard.tsx +102 -108
  51. package/src/subsystem/FileDrawer.tsx +32 -34
  52. package/src/subsystem/IssueList.tsx +1 -1
  53. package/src/subsystem/SubsystemComponentGraph.tsx +13 -5
  54. package/src/subsystem/c4.test.ts +573 -0
  55. package/src/subsystem/c4.ts +558 -0
  56. package/src/subsystem/c4Evidence.test.ts +386 -0
  57. package/src/subsystem/c4Evidence.ts +329 -0
  58. package/src/subsystem/model.ts +2 -6
  59. package/dist/stories/Subsystem/C4Graph/c4Associations.fixture.d.ts +0 -95
  60. package/dist/stories/Subsystem/C4Graph/c4Associations.fixture.d.ts.map +0 -1
  61. package/dist/stories/Subsystem/C4Graph/c4Associations.fixture.js +0 -340
  62. package/dist/stories/Subsystem/C4Graph/c4Associations.fixture.js.map +0 -1
  63. package/dist/stories/Subsystem/C4Graph/c4Fixture.d.ts +0 -7
  64. package/dist/stories/Subsystem/C4Graph/c4Fixture.d.ts.map +0 -1
  65. package/dist/stories/Subsystem/C4Graph/c4Fixture.js +0 -7335
  66. package/dist/stories/Subsystem/C4Graph/c4Fixture.js.map +0 -1
  67. package/dist/stories/Subsystem/C4Graph/generateFixture.d.ts +0 -2
  68. package/dist/stories/Subsystem/C4Graph/generateFixture.d.ts.map +0 -1
  69. package/dist/stories/Subsystem/C4Graph/generateFixture.js +0 -145
  70. package/dist/stories/Subsystem/C4Graph/generateFixture.js.map +0 -1
  71. package/dist/subsystem/c4Associations.d.ts +0 -186
  72. package/dist/subsystem/c4Associations.d.ts.map +0 -1
  73. package/dist/subsystem/c4Associations.js +0 -284
  74. package/dist/subsystem/c4Associations.js.map +0 -1
  75. package/dist/subsystem/toC4.d.ts +0 -214
  76. package/dist/subsystem/toC4.d.ts.map +0 -1
  77. package/dist/subsystem/toC4.js +0 -282
  78. package/dist/subsystem/toC4.js.map +0 -1
  79. package/src/stories/Subsystem/C4Graph/C4Associations.stories.tsx +0 -273
  80. package/src/stories/Subsystem/C4Graph/C4Container.stories.tsx +0 -101
  81. package/src/stories/Subsystem/C4Graph/c4Associations.fixture.ts +0 -344
  82. package/src/stories/Subsystem/C4Graph/c4Fixture.ts +0 -7339
  83. package/src/stories/Subsystem/C4Graph/generateFixture.ts +0 -161
  84. package/src/subsystem/c4Associations.test.ts +0 -484
  85. package/src/subsystem/c4Associations.ts +0 -398
  86. package/src/subsystem/toC4.test.ts +0 -114
  87. package/src/subsystem/toC4.ts +0 -478
@@ -7,69 +7,104 @@
7
7
  *
8
8
  * The encoding has one job: make confirmation state legible at a glance. A box
9
9
  * nobody has looked at must not read the same as a box a person signed off.
10
- * Everything else here is C4 notation — a type, a technology, a description —
11
- * surfaced in the order a reader wants it.
10
+ * Kind says what the box is — shape, size, and a written tag — and everything
11
+ * else in C4 notation (technology, description) is surfaced in the order a
12
+ * reader wants it.
12
13
  */
13
14
  /// <reference types="react" />
14
15
  import { useTheme } from '@principal-ade/industry-theme';
15
- import type { C4Node } from './toC4';
16
+ import type { C4Node } from './c4';
16
17
  /**
17
- * Card box. Near-square rather than a wide strip: a C4 element carries four
18
- * things at once (tag, label, type + technology, and the notation gap it still
19
- * has), and a wide strip forces the last two to truncate. The extra height is
20
- * what lets the `needs …` marker sit on its own line instead of clipping.
18
+ * Card box for a container: a wide rectangle. A container carries four things
19
+ * at once (tag, label, type + technology, and the notation gap it still has),
20
+ * and a strip would force the last two to truncate.
21
21
  */
22
22
  export declare const NODE_W = 210;
23
23
  export declare const NODE_H = 138;
24
+ /**
25
+ * A component is a proper square — equal sides, and visibly smaller than the
26
+ * container it sits inside. Square-vs-rectangle is the clearest signal that
27
+ * these are different C4 levels, and it survives grayscale and colour-blind
28
+ * reading where a border-weight difference alone does not.
29
+ */
30
+ export declare const COMPONENT_SIZE = 132;
31
+ /**
32
+ * Per-level box size. The graph lays out against these, so a square component
33
+ * and a rectangular container do not collide at a shared nominal width.
34
+ */
35
+ export declare function nodeSize(node: C4Node): {
36
+ width: number;
37
+ height: number;
38
+ };
24
39
  type Theme = ReturnType<typeof useTheme>['theme'];
25
40
  export interface NodeStyle {
26
41
  color: string;
27
- dash: string;
42
+ dash: 'solid' | 'dashed' | 'dotted';
28
43
  width: number;
29
44
  }
30
45
  /**
31
- * Border style and colour for one node, by what we know about it.
46
+ * Border style for one node: colour, dash and weight, from confirmation state
47
+ * and level.
48
+ *
49
+ * One axis per channel, so nothing is said twice and nothing is contradicted:
32
50
  *
33
- * Confirmation state wins over C4 kind: an accepted container and a raw
34
- * derived container are both "containers", and the reader's first question
35
- * about either is whether anyone vouched for it.
51
+ * colour + dash → confirmation state (the primary axis)
52
+ * weight → C4 level, as a grayscale redundancy for the square
53
+ * shape + size → C4 kind (`nodeShape`, `nodeSize`)
54
+ *
55
+ * State owning the dash is deliberate. An earlier build gave the dash to kind
56
+ * and drew proposed boxes solid, quietly contradicting the one thing the
57
+ * confirm UI needs a reader to see. Kind now says itself through shape, and
58
+ * the border says who vouched for it.
36
59
  */
37
60
  export declare function nodeStyle(node: C4Node, theme: Theme, selected?: boolean): NodeStyle;
38
- /** The type + technology line under the label. */
39
- export declare function nodeSubtitle(node: C4Node): string;
40
61
  /**
41
- * The C4 level — what the box IS.
62
+ * The kind + technology line under the label.
42
63
  *
43
- * Deliberately independent of confirmation state. An accepted container is
44
- * still a container, and a component is a component whether or not anyone has
45
- * reviewed it; collapsing the two into one label is what made the two
46
- * indistinguishable. Confirmation is a separate axis (`nodeStateTag`).
64
+ * A container shows its `containerKind` (application / data-store / queue);
65
+ * C4 has no kind for the other three, so they show technology or nothing.
47
66
  */
48
- export declare function nodeTag(node: C4Node): string;
67
+ export declare function nodeSubtitle(node: C4Node): string;
49
68
  /**
50
- * Confirmation state, as its own short tag. Empty when nothing was proposed —
51
- * which is itself the distinction from a reviewed element.
69
+ * What the box IS — its C4 kind. An accepted container is still a container;
70
+ * collapsing the two is what once made containers and components unreadable.
71
+ * Confirmation state is a separate axis carried by the border (see
72
+ * `nodeStyle`), not by a word on the card.
52
73
  */
53
- export declare function nodeStateTag(node: C4Node): string;
74
+ export declare function nodeTag(node: C4Node): string;
75
+ /** How a box is drawn. Shape carries the C4 kind, independent of colour. */
76
+ export type C4ShapeKind = 'rect' | 'square' | 'pill';
77
+ export interface NodeShape {
78
+ kind: C4ShapeKind;
79
+ /** Corner radius, for the shapes that use one. */
80
+ radius: number;
81
+ }
54
82
  /**
55
- * Shape cue for the C4 level, independent of colour and dash pattern.
83
+ * Shape cue for the C4 kind, independent of colour and dash — both of which
84
+ * belong to confirmation state.
56
85
  *
57
- * Colour alone is not enough: a container and a component with no association
58
- * both fall back to the muted border, so they were identical in grayscale.
59
86
  * The convention:
60
87
  *
61
- * container solid rectangle — a runtime boundary, drawn to scale
62
- * component rounded rectangle — a part inside one, drawn smaller
63
- * external rounded rectangle + dashed (nothing to confirm inside)
64
- * actor fully rounded — a person, not a box
88
+ * container wide rectangle, sharp corners — a runtime boundary
89
+ * component square — a part inside one (see `nodeSize`)
90
+ * external system wide rectangle, rounded — someone else's system
91
+ * person pill — not a box at all
92
+ *
93
+ * An external system is separated from a container by radius alone, which is
94
+ * a weak cue. That is deliberate rather than an oversight: the border dash is
95
+ * the only channel that could say "outside our control" loudly, and it is
96
+ * already spent on proposed-vs-accepted. The kind tag says it in words, and
97
+ * the frame position says it structurally.
65
98
  */
66
- export declare function nodeShape(node: C4Node): {
67
- radius: number;
68
- dash: 'solid' | 'dashed';
69
- };
99
+ export declare function nodeShape(node: C4Node): NodeShape;
70
100
  /**
71
- * C4 notation requires a technology and a description on every container.
72
- * Name the gaps rather than leaving them to be noticed.
101
+ * The gaps the C4 notation still wants on this element, named rather than left
102
+ * to be noticed.
103
+ *
104
+ * Containers are where the notation is strictest: it requires a technology and
105
+ * a description on every one. A component needs a technology too, but a
106
+ * component drawn without a parent already reports `unknown_container`, and
107
+ * that is the question worth asking first.
73
108
  */
74
109
  export declare function nodeMissing(node: C4Node): string[];
75
110
  export interface C4NodeCardProps {
@@ -1 +1 @@
1
- {"version":3,"file":"C4NodeCard.d.ts","sourceRoot":"","sources":["../../src/subsystem/C4NodeCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,MAAM,MAAM,CAAC;AAC1B,eAAO,MAAM,MAAM,MAAM,CAAC;AAU1B,KAAK,KAAK,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;AAElD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,UAAQ,GAAG,SAAS,CAgCjF;AAOD,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUjD;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWjD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,CAWpF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMlD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,QAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,eAAe,+BAmIvF"}
1
+ {"version":3,"file":"C4NodeCard.d.ts","sourceRoot":"","sources":["../../src/subsystem/C4NodeCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC;;;;GAIG;AACH,eAAO,MAAM,MAAM,MAAM,CAAC;AAC1B,eAAO,MAAM,MAAM,MAAM,CAAC;AAE1B;;;;;GAKG;AACH,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAIxE;AAUD,KAAK,KAAK,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;AAElD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,UAAQ,GAAG,SAAS,CAmBjF;AAOD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUjD;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAWjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMlD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,QAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,eAAe,+BA2GvF"}
@@ -8,19 +8,35 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
8
  *
9
9
  * The encoding has one job: make confirmation state legible at a glance. A box
10
10
  * nobody has looked at must not read the same as a box a person signed off.
11
- * Everything else here is C4 notation — a type, a technology, a description —
12
- * surfaced in the order a reader wants it.
11
+ * Kind says what the box is — shape, size, and a written tag — and everything
12
+ * else in C4 notation (technology, description) is surfaced in the order a
13
+ * reader wants it.
13
14
  */
14
15
  import { useTheme } from '@principal-ade/industry-theme';
15
16
  import { describeConstructBreakdown } from './model';
16
17
  /**
17
- * Card box. Near-square rather than a wide strip: a C4 element carries four
18
- * things at once (tag, label, type + technology, and the notation gap it still
19
- * has), and a wide strip forces the last two to truncate. The extra height is
20
- * what lets the `needs …` marker sit on its own line instead of clipping.
18
+ * Card box for a container: a wide rectangle. A container carries four things
19
+ * at once (tag, label, type + technology, and the notation gap it still has),
20
+ * and a strip would force the last two to truncate.
21
21
  */
22
22
  export const NODE_W = 210;
23
23
  export const NODE_H = 138;
24
+ /**
25
+ * A component is a proper square — equal sides, and visibly smaller than the
26
+ * container it sits inside. Square-vs-rectangle is the clearest signal that
27
+ * these are different C4 levels, and it survives grayscale and colour-blind
28
+ * reading where a border-weight difference alone does not.
29
+ */
30
+ export const COMPONENT_SIZE = 132;
31
+ /**
32
+ * Per-level box size. The graph lays out against these, so a square component
33
+ * and a rectangular container do not collide at a shared nominal width.
34
+ */
35
+ export function nodeSize(node) {
36
+ return node.kind === 'component'
37
+ ? { width: COMPONENT_SIZE, height: COMPONENT_SIZE }
38
+ : { width: NODE_W, height: NODE_H };
39
+ }
24
40
  /**
25
41
  * Fixed slot heights, so rows line up across every card regardless of which
26
42
  * optional fields are present. Without these a card missing its notation-gap
@@ -29,20 +45,28 @@ export const NODE_H = 138;
29
45
  const LABEL_SLOT_H = 40;
30
46
  const GAP_SLOT_H = 18;
31
47
  /**
32
- * Border style and colour for one node, by what we know about it.
48
+ * Border style for one node: colour, dash and weight, from confirmation state
49
+ * and level.
50
+ *
51
+ * One axis per channel, so nothing is said twice and nothing is contradicted:
33
52
  *
34
- * Confirmation state wins over C4 kind: an accepted container and a raw
35
- * derived container are both "containers", and the reader's first question
36
- * about either is whether anyone vouched for it.
53
+ * colour + dash → confirmation state (the primary axis)
54
+ * weight → C4 level, as a grayscale redundancy for the square
55
+ * shape + size → C4 kind (`nodeShape`, `nodeSize`)
56
+ *
57
+ * State owning the dash is deliberate. An earlier build gave the dash to kind
58
+ * and drew proposed boxes solid, quietly contradicting the one thing the
59
+ * confirm UI needs a reader to see. Kind now says itself through shape, and
60
+ * the border says who vouched for it.
37
61
  */
38
62
  export function nodeStyle(node, theme, selected = false) {
39
63
  const muted = theme.colors.border ?? '#555';
40
64
  if (selected)
41
65
  return { color: theme.colors.primary ?? '#5aa', dash: 'solid', width: 3 };
42
- // Border width carries the C4 level, so a component stays a component even
66
+ // Border weight carries the level, so a component stays a component even
43
67
  // in grayscale or for a reader who cannot separate the hues.
44
68
  const weight = node.kind === 'component' ? 1 : 2;
45
- switch (node.decoration?.state) {
69
+ switch (node.state) {
46
70
  case 'accepted':
47
71
  // Solid and saturated — part of the architecture now.
48
72
  return { color: theme.colors.primary ?? '#4ec9b0', dash: 'solid', width: weight };
@@ -50,31 +74,24 @@ export function nodeStyle(node, theme, selected = false) {
50
74
  // Dashed — an agent asked; a human has not answered.
51
75
  return { color: theme.colors.warning ?? '#e8a33a', dash: 'dashed', width: weight };
52
76
  case 'rejected':
53
- // Should never be drawn (toC4 drops it); belt-and-braces.
77
+ // Should never be drawn (buildC4Model drops it); belt-and-braces.
54
78
  return { color: muted, dash: 'dotted', width: 1 };
55
- default:
56
- break;
57
- }
58
- // No association at all — the raw derivation. Muted, so confirmed boxes
59
- // read as the stronger signal.
60
- switch (node.kind) {
61
- case 'external':
62
- return { color: theme.colors.warning ?? '#a78bfa', dash: 'solid', width: weight };
63
- case 'actor':
64
- return { color: theme.colors.accent ?? theme.colors.info ?? '#e3b341', dash: 'solid', width: weight };
65
- default:
66
- return { color: muted, dash: 'solid', width: weight };
67
79
  }
68
80
  }
69
81
  function baseName(path) {
70
82
  const parts = path.split('/').filter(Boolean);
71
83
  return parts[parts.length - 1] ?? path;
72
84
  }
73
- /** The type + technology line under the label. */
85
+ /**
86
+ * The kind + technology line under the label.
87
+ *
88
+ * A container shows its `containerKind` (application / data-store / queue);
89
+ * C4 has no kind for the other three, so they show technology or nothing.
90
+ */
74
91
  export function nodeSubtitle(node) {
75
- const d = node.decoration;
76
- if (d?.type || d?.technology)
77
- return [d.type, d.technology].filter(Boolean).join(' · ');
92
+ const parts = [node.containerKind, node.technology].filter(Boolean);
93
+ if (parts.length > 0)
94
+ return parts.join(' · ');
78
95
  // No confirmed attributes: fall back to what the document told us.
79
96
  if (node.kind === 'component') {
80
97
  return `${node.component?.construct ?? 'code'}${node.component?.file ? ` · ${baseName(node.component.file)}` : ''}`;
@@ -83,67 +100,59 @@ export function nodeSubtitle(node) {
83
100
  return `${describeConstructBreakdown(node.constructs)}${count > 0 ? ` · ${count} component${count === 1 ? '' : 's'}` : ''}`;
84
101
  }
85
102
  /**
86
- * The C4 level — what the box IS.
87
- *
88
- * Deliberately independent of confirmation state. An accepted container is
89
- * still a container, and a component is a component whether or not anyone has
90
- * reviewed it; collapsing the two into one label is what made the two
91
- * indistinguishable. Confirmation is a separate axis (`nodeStateTag`).
103
+ * What the box IS — its C4 kind. An accepted container is still a container;
104
+ * collapsing the two is what once made containers and components unreadable.
105
+ * Confirmation state is a separate axis carried by the border (see
106
+ * `nodeStyle`), not by a word on the card.
92
107
  */
93
108
  export function nodeTag(node) {
94
109
  return node.kind;
95
110
  }
96
111
  /**
97
- * Confirmation state, as its own short tag. Empty when nothing was proposed —
98
- * which is itself the distinction from a reviewed element.
99
- */
100
- export function nodeStateTag(node) {
101
- switch (node.decoration?.state) {
102
- case 'accepted':
103
- return 'confirmed';
104
- case 'proposed':
105
- return 'proposed';
106
- case 'rejected':
107
- return 'rejected';
108
- default:
109
- return 'unconfirmed';
110
- }
111
- }
112
- /**
113
- * Shape cue for the C4 level, independent of colour and dash pattern.
112
+ * Shape cue for the C4 kind, independent of colour and dash — both of which
113
+ * belong to confirmation state.
114
114
  *
115
- * Colour alone is not enough: a container and a component with no association
116
- * both fall back to the muted border, so they were identical in grayscale.
117
115
  * The convention:
118
116
  *
119
- * container solid rectangle — a runtime boundary, drawn to scale
120
- * component rounded rectangle — a part inside one, drawn smaller
121
- * external rounded rectangle + dashed (nothing to confirm inside)
122
- * actor fully rounded — a person, not a box
117
+ * container wide rectangle, sharp corners — a runtime boundary
118
+ * component square — a part inside one (see `nodeSize`)
119
+ * external system wide rectangle, rounded — someone else's system
120
+ * person pill — not a box at all
121
+ *
122
+ * An external system is separated from a container by radius alone, which is
123
+ * a weak cue. That is deliberate rather than an oversight: the border dash is
124
+ * the only channel that could say "outside our control" loudly, and it is
125
+ * already spent on proposed-vs-accepted. The kind tag says it in words, and
126
+ * the frame position says it structurally.
123
127
  */
124
128
  export function nodeShape(node) {
125
129
  switch (node.kind) {
126
- case 'actor':
127
- return { radius: NODE_H / 2, dash: 'solid' };
128
- case 'external':
129
- return { radius: 14, dash: 'dashed' };
130
+ case 'person':
131
+ return { kind: 'pill', radius: NODE_H / 2 };
132
+ case 'external-system':
133
+ return { kind: 'rect', radius: 14 };
130
134
  case 'component':
131
- return { radius: 14, dash: 'solid' };
135
+ return { kind: 'square', radius: 6 };
132
136
  default:
133
- return { radius: 4, dash: 'solid' };
137
+ return { kind: 'rect', radius: 4 };
134
138
  }
135
139
  }
136
140
  /**
137
- * C4 notation requires a technology and a description on every container.
138
- * Name the gaps rather than leaving them to be noticed.
141
+ * The gaps the C4 notation still wants on this element, named rather than left
142
+ * to be noticed.
143
+ *
144
+ * Containers are where the notation is strictest: it requires a technology and
145
+ * a description on every one. A component needs a technology too, but a
146
+ * component drawn without a parent already reports `unknown_container`, and
147
+ * that is the question worth asking first.
139
148
  */
140
149
  export function nodeMissing(node) {
141
150
  if (node.kind !== 'container')
142
151
  return [];
143
152
  const missing = [];
144
- if (!node.decoration?.technology)
153
+ if (!node.technology)
145
154
  missing.push('technology');
146
- if (!node.decoration?.description)
155
+ if (!node.description)
147
156
  missing.push('description');
148
157
  return missing;
149
158
  }
@@ -153,10 +162,10 @@ export function C4NodeCard({ node, selected = false, handles, onClick }) {
153
162
  const style = nodeStyle(node, theme, selected);
154
163
  const shape = nodeShape(node);
155
164
  const missing = nodeMissing(node);
156
- const unconfirmed = !node.decoration?.state;
165
+ const size = nodeSize(node);
157
166
  return (_jsxs("div", { onClick: onClick, style: {
158
- width: NODE_W,
159
- minHeight: NODE_H,
167
+ width: size.width,
168
+ minHeight: size.height,
160
169
  boxSizing: 'border-box',
161
170
  display: 'flex',
162
171
  flexDirection: 'column',
@@ -172,32 +181,17 @@ export function C4NodeCard({ node, selected = false, handles, onClick }) {
172
181
  boxShadow: '0 1px 4px rgba(0,0,0,0.25)',
173
182
  cursor: onClick ? 'pointer' : 'default',
174
183
  fontFamily: theme.fonts.body,
175
- }, children: [_jsxs("span", { style: {
176
- display: 'flex',
177
- alignItems: 'baseline',
178
- gap: 6,
184
+ }, children: [_jsx("span", { style: {
179
185
  fontFamily: theme.fonts.monospace,
180
186
  fontSize: theme.fontSizes[0],
187
+ color: style.color,
188
+ fontWeight: 600,
181
189
  letterSpacing: 0.5,
182
190
  textTransform: 'uppercase',
183
- }, children: [_jsx("span", { style: {
184
- color: style.color,
185
- fontWeight: 600,
186
- whiteSpace: 'nowrap',
187
- overflow: 'hidden',
188
- textOverflow: 'ellipsis',
189
- minWidth: 0,
190
- }, children: nodeTag(node) }), _jsx("span", { title: unconfirmed ? 'Nobody has reviewed this element yet' : undefined, style: {
191
- color: unconfirmed ? muted : style.color,
192
- // Unconfirmed is a quiet absence, not a loud claim.
193
- opacity: unconfirmed ? 0.75 : 1,
194
- letterSpacing: 0,
195
- textTransform: 'none',
196
- whiteSpace: 'nowrap',
197
- overflow: 'hidden',
198
- textOverflow: 'ellipsis',
199
- minWidth: 0,
200
- }, children: nodeStateTag(node) })] }), _jsx("span", { style: {
191
+ whiteSpace: 'nowrap',
192
+ overflow: 'hidden',
193
+ textOverflow: 'ellipsis',
194
+ }, children: nodeTag(node) }), _jsx("span", { style: {
201
195
  fontWeight: 600,
202
196
  fontSize: theme.fontSizes[2],
203
197
  color: theme.colors.text,
@@ -214,7 +208,7 @@ export function C4NodeCard({ node, selected = false, handles, onClick }) {
214
208
  whiteSpace: 'nowrap',
215
209
  overflow: 'hidden',
216
210
  textOverflow: 'ellipsis',
217
- }, title: node.decoration?.description ?? node.members.join(', '), children: nodeSubtitle(node) }), _jsx("span", { style: { height: GAP_SLOT_H }, "aria-hidden": "true" }), missing.length > 0 && (_jsxs("span", { title: `C4 requires a ${missing.join(' and a ')} on every container`, style: {
211
+ }, title: node.description ?? node.members.join(', '), children: nodeSubtitle(node) }), _jsx("span", { style: { height: GAP_SLOT_H }, "aria-hidden": "true" }), missing.length > 0 && (_jsxs("span", { title: `C4 requires a ${missing.join(' and a ')} on every container`, style: {
218
212
  fontFamily: theme.fonts.monospace,
219
213
  fontSize: theme.fontSizes[0],
220
214
  color: theme.colors.warning ?? '#e8a33a',
@@ -1 +1 @@
1
- {"version":3,"file":"C4NodeCard.js","sourceRoot":"","sources":["../../src/subsystem/C4NodeCard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"C4NodeCard.js","sourceRoot":"","sources":["../../src/subsystem/C4NodeCard.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FileDrawer.d.ts","sourceRoot":"","sources":["../../src/subsystem/FileDrawer.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC;2EAC2E;AAC3E,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;iFAIiF;AACjF,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,EACP,UAAkB,EAClB,cAAsB,EACtB,MAAc,EACd,QAAe,EACf,QAAQ,GACT,EAAE;IACD,qDAAqD;IACrD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,wEAAwE;IACxE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,+BA2LA"}
1
+ {"version":3,"file":"FileDrawer.d.ts","sourceRoot":"","sources":["../../src/subsystem/FileDrawer.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC;2EAC2E;AAC3E,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;iFAIiF;AACjF,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,EACP,UAAkB,EAClB,cAAsB,EACtB,MAAc,EACd,QAAe,EACf,QAAQ,GACT,EAAE;IACD,qDAAqD;IACrD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,wEAAwE;IACxE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,+BAyLA"}
@@ -72,17 +72,28 @@ export function FileDrawer({ title, onClose, fillHeight = false, suppressEscape
72
72
  flexShrink: 0,
73
73
  cursor: "default",
74
74
  userSelect: "none",
75
- }, children: [_jsxs("div", { style: {
75
+ }, children: [showProgress && progress != null && (_jsx("div", { role: "img", "aria-label": `Step ${progress.index + 1} of ${progress.total}`, style: {
76
+ display: "flex",
77
+ gap: 2,
78
+ flexShrink: 0,
79
+ }, children: Array.from({ length: progress.total }, (_, i) => (_jsx("span", { style: {
80
+ flex: 1,
81
+ height: 2,
82
+ borderRadius: 1,
83
+ background: i <= progress.index
84
+ ? theme.colors.primary
85
+ : theme.colors.border,
86
+ } }, i))) })), _jsxs("div", { style: {
76
87
  display: "flex",
77
88
  alignItems: "center",
78
89
  gap: 8,
79
- padding: "6px 10px",
80
- // With segments present they form the header's bottom edge, so
81
- // only draw the hairline when there is nothing to stand in for it.
82
- borderBottom: showProgress
83
- ? "none"
84
- : `1px solid ${theme.colors.border}`,
85
- }, children: [_jsx("span", { title: title ?? undefined, style: {
90
+ // Top runs deeper than the bottom so the title/label sits
91
+ // optically centered inside the sticky top edge.
92
+ padding: "10px 10px 8px",
93
+ // The header row is the last chrome row now, so its hairline is
94
+ // the boundary with the code below.
95
+ borderBottom: `1px solid ${theme.colors.border}`,
96
+ }, children: [_jsx("span", { style: {
86
97
  flex: 1,
87
98
  minWidth: 0,
88
99
  overflow: "hidden",
@@ -118,18 +129,6 @@ export function FileDrawer({ title, onClose, fillHeight = false, suppressEscape
118
129
  color: closeHover ? theme.colors.text : muted,
119
130
  cursor: "pointer",
120
131
  transition: "background 120ms ease, color 120ms ease",
121
- }, children: _jsx(X, { size: 14 }) })] }), showProgress && progress != null && (_jsx("div", { role: "img", "aria-label": `Step ${progress.index + 1} of ${progress.total}`, style: {
122
- display: "flex",
123
- gap: 2,
124
- flexShrink: 0,
125
- padding: "0 10px 6px",
126
- }, children: Array.from({ length: progress.total }, (_, i) => (_jsx("span", { style: {
127
- flex: 1,
128
- height: 2,
129
- borderRadius: 1,
130
- background: i <= progress.index
131
- ? theme.colors.primary
132
- : theme.colors.border,
133
- } }, i))) }))] }), _jsx("div", { style: { flex: 1, minHeight: 0, overflow: "auto" }, children: children })] })] }));
132
+ }, children: _jsx(X, { size: 14 }) })] })] }), _jsx("div", { style: { flex: 1, minHeight: 0, overflow: "auto" }, children: children })] })] }));
134
133
  }
135
134
  //# sourceMappingURL=FileDrawer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileDrawer.js","sourceRoot":"","sources":["../../src/subsystem/FileDrawer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileDrawer.js","sourceRoot":"","sources":["../../src/subsystem/FileDrawer.tsx"],"names":[],"mappings":"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"}
@@ -136,7 +136,7 @@ export function humanizeIssueKind(kind) {
136
136
  const KIND_LABEL = {
137
137
  missing_file: 'Construct declaration file missing',
138
138
  symbol_ambiguous: 'Multiple construct symbol matches',
139
- symbol_unmatched: 'Construct symbol unconfirmed',
139
+ symbol_unmatched: 'Construct symbol missing',
140
140
  stale_declaration: 'Construct declaration drift',
141
141
  construct_mismatch: 'Construct type mismatch',
142
142
  construct_unconfirmed: 'Construct type unconfirmed',