@principal-ai/subsystems-react 0.23.1 → 0.23.2
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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pierre/constructColors.d.ts +2 -3
- package/dist/pierre/constructColors.d.ts.map +1 -1
- package/dist/pierre/constructColors.js +31 -21
- package/dist/pierre/constructColors.js.map +1 -1
- package/dist/subsystem/model.d.ts +69 -23
- package/dist/subsystem/model.d.ts.map +1 -1
- package/dist/subsystem/model.js +184 -40
- package/dist/subsystem/model.js.map +1 -1
- package/dist/subsystem/nodes.d.ts.map +1 -1
- package/dist/subsystem/nodes.js +53 -25
- package/dist/subsystem/nodes.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +2 -0
- package/src/pierre/constructColors.test.ts +2 -2
- package/src/pierre/constructColors.ts +41 -23
- package/src/stories/Subsystem/ComponentGraph/Packages.stories.tsx +242 -0
- package/src/subsystem/model.test.ts +167 -0
- package/src/subsystem/model.ts +236 -46
- package/src/subsystem/nodes.tsx +55 -26
package/dist/subsystem/nodes.js
CHANGED
|
@@ -10,7 +10,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
10
10
|
import { useState } from 'react';
|
|
11
11
|
import { Handle, Position, } from '@xyflow/react';
|
|
12
12
|
import { useTheme } from '@principal-ade/industry-theme';
|
|
13
|
-
import { MECHANISM_COLOR, MECHANISM_STYLE, PROPOSED_COLOR, constructBadgeLabel, rightBadgeLabel, rightBadgeColor, storageBadgeLabel, storageBadgeColor, deriveNameFromSymbol, BADGE_EDGE_INSET, nodeMinWidthForBadges, packageColor, } from './model';
|
|
13
|
+
import { MECHANISM_COLOR, MECHANISM_STYLE, PROPOSED_COLOR, constructBadgeColor, constructBadgeLabel, rightBadgeLabel, rightBadgeColor, storageBadgeLabel, storageBadgeColor, deriveNameFromSymbol, BADGE_EDGE_INSET, nodeMinWidthForBadges, packageColor, } from './model';
|
|
14
14
|
import { componentColor } from '../pierre/constructColors';
|
|
15
15
|
import { resolvePierreSyntaxThemeName } from '../pierre/pierreSyntaxTheme';
|
|
16
16
|
export const CONSTRUCT_LABEL = {
|
|
@@ -48,6 +48,9 @@ export function SubsystemComponentNode(props) {
|
|
|
48
48
|
// shows as the hover badge, not as color — for now; a role glyph/accent may
|
|
49
49
|
// come later. A component-authored `color` override wins over the construct.
|
|
50
50
|
const color = componentColor(c, resolvePierreSyntaxThemeName(mode));
|
|
51
|
+
// Left badge: framework brand (e.g. React cyan) when the label is a
|
|
52
|
+
// framework stereotype; otherwise the same construct color as the border.
|
|
53
|
+
const badgeColor = constructBadgeColor(c) ?? color;
|
|
51
54
|
const [hover, setHover] = useState(false);
|
|
52
55
|
const configuredMax = SUBSYSTEM_CALLBACKS.maxNodeWidth;
|
|
53
56
|
const maxWidth = configuredMax ?? 300;
|
|
@@ -74,6 +77,10 @@ export function SubsystemComponentNode(props) {
|
|
|
74
77
|
// Selection is stamped into data by the graph component — React Flow's own
|
|
75
78
|
// `selected` never updates because the node stops click propagation.
|
|
76
79
|
const isSelected = selected || data.isSelected === true;
|
|
80
|
+
// Externals are "outside" the system — square corners on the node + badges.
|
|
81
|
+
const isExternal = c.construct === 'external';
|
|
82
|
+
const nodeRadius = isExternal ? 0 : 8;
|
|
83
|
+
const badgeRadius = isExternal ? 0 : 4;
|
|
77
84
|
return (_jsxs("div", { onMouseEnter: () => {
|
|
78
85
|
setHover(true);
|
|
79
86
|
SUBSYSTEM_CALLBACKS.onHover?.(c.id);
|
|
@@ -95,7 +102,7 @@ export function SubsystemComponentNode(props) {
|
|
|
95
102
|
minWidth: badgeMinWidth,
|
|
96
103
|
maxWidth,
|
|
97
104
|
padding: '6px 10px',
|
|
98
|
-
borderRadius:
|
|
105
|
+
borderRadius: nodeRadius,
|
|
99
106
|
background: theme.colors.backgroundSecondary ?? theme.colors.background,
|
|
100
107
|
// Selected / file-matched nodes get a thicker border. Proposed nodes
|
|
101
108
|
// use a dashed goldenrod border; left construct badge keeps construct color.
|
|
@@ -109,7 +116,7 @@ export function SubsystemComponentNode(props) {
|
|
|
109
116
|
fontFamily: theme.fonts.body,
|
|
110
117
|
}, children: [_jsx("div", { style: {
|
|
111
118
|
position: 'absolute',
|
|
112
|
-
top: -
|
|
119
|
+
top: -11,
|
|
113
120
|
left: BADGE_EDGE_INSET,
|
|
114
121
|
zIndex: 1,
|
|
115
122
|
fontFamily: theme.fonts.monospace,
|
|
@@ -118,14 +125,14 @@ export function SubsystemComponentNode(props) {
|
|
|
118
125
|
textTransform: 'uppercase',
|
|
119
126
|
lineHeight: '17px',
|
|
120
127
|
whiteSpace: 'nowrap',
|
|
121
|
-
color,
|
|
128
|
+
color: badgeColor,
|
|
122
129
|
background: theme.colors.backgroundSecondary ?? theme.colors.background,
|
|
123
|
-
border: `
|
|
124
|
-
borderRadius:
|
|
125
|
-
padding: '
|
|
130
|
+
border: `2px solid ${badgeColor}`,
|
|
131
|
+
borderRadius: badgeRadius,
|
|
132
|
+
padding: '2px 8px',
|
|
126
133
|
}, children: constructBadgeLabel(c) }), (topRightLabel != null || storageLabel != null) && (_jsxs("div", { style: {
|
|
127
134
|
position: 'absolute',
|
|
128
|
-
top: -
|
|
135
|
+
top: -11,
|
|
129
136
|
right: BADGE_EDGE_INSET,
|
|
130
137
|
zIndex: 1,
|
|
131
138
|
display: 'flex',
|
|
@@ -139,9 +146,9 @@ export function SubsystemComponentNode(props) {
|
|
|
139
146
|
lineHeight: '17px',
|
|
140
147
|
color: storageColor,
|
|
141
148
|
background: theme.colors.backgroundSecondary ?? theme.colors.background,
|
|
142
|
-
border: `
|
|
143
|
-
borderRadius:
|
|
144
|
-
padding: '
|
|
149
|
+
border: `2px solid ${storageColor}`,
|
|
150
|
+
borderRadius: badgeRadius,
|
|
151
|
+
padding: '2px 8px',
|
|
145
152
|
}, children: storageLabel })), topRightLabel != null && topRightColor != null && (_jsx("span", { style: {
|
|
146
153
|
fontFamily: theme.fonts.monospace,
|
|
147
154
|
fontSize: theme.fontSizes[0] * 1.1,
|
|
@@ -150,12 +157,12 @@ export function SubsystemComponentNode(props) {
|
|
|
150
157
|
lineHeight: '17px',
|
|
151
158
|
color: topRightColor,
|
|
152
159
|
background: theme.colors.backgroundSecondary ?? theme.colors.background,
|
|
153
|
-
border: `
|
|
154
|
-
borderRadius:
|
|
155
|
-
padding: '
|
|
160
|
+
border: `2px solid ${topRightColor}`,
|
|
161
|
+
borderRadius: badgeRadius,
|
|
162
|
+
padding: '2px 8px',
|
|
156
163
|
}, children: topRightLabel }))] })), (hover || fileMatch === true) && c.file ? (_jsx("div", { style: {
|
|
157
164
|
position: 'absolute',
|
|
158
|
-
bottom: -
|
|
165
|
+
bottom: -14,
|
|
159
166
|
left: '50%',
|
|
160
167
|
transform: 'translateX(-50%)',
|
|
161
168
|
zIndex: 1,
|
|
@@ -168,9 +175,9 @@ export function SubsystemComponentNode(props) {
|
|
|
168
175
|
// borders and badges, not the file name
|
|
169
176
|
color: theme.colors.text ?? theme.colors.textSecondary,
|
|
170
177
|
background: theme.colors.backgroundSecondary ?? theme.colors.background,
|
|
171
|
-
border: `
|
|
172
|
-
borderRadius:
|
|
173
|
-
padding: '
|
|
178
|
+
border: `2px solid ${color}`,
|
|
179
|
+
borderRadius: badgeRadius,
|
|
180
|
+
padding: '2px 8px',
|
|
174
181
|
cursor: 'pointer',
|
|
175
182
|
}, onClick: (e) => {
|
|
176
183
|
// Open the file directly; don't also toggle node selection.
|
|
@@ -217,7 +224,21 @@ export function SubsystemGroupNode(props) {
|
|
|
217
224
|
const color = packageColor(region?.key ?? 'process');
|
|
218
225
|
const dimmed = data.dimmed === true;
|
|
219
226
|
const hidden = data.hidden === true;
|
|
220
|
-
|
|
227
|
+
// Label is the region identity alone (path / process key / owner/name).
|
|
228
|
+
// Kind is carried by frame chrome (square = process; rounded = module/package)
|
|
229
|
+
// — don't prefix `module ·` / `package ·` or the path reads twice.
|
|
230
|
+
const label = region?.label ?? '';
|
|
231
|
+
// Process frames match external nodes — square corners (outside the soft
|
|
232
|
+
// component language). Module / package frames keep the rounded look.
|
|
233
|
+
const isProcess = region?.kind === 'process';
|
|
234
|
+
const frameRadius = isProcess ? 0 : 12;
|
|
235
|
+
const badgeRadius = isProcess ? 0 : 4;
|
|
236
|
+
// Processes are deployment units — solid frame. Modules/packages stay dashed
|
|
237
|
+
// until selected.
|
|
238
|
+
const frameStyle = isProcess || selected ? 'solid' : 'dashed';
|
|
239
|
+
// Process keeps a tinted fill; module / package bodies stay transparent so
|
|
240
|
+
// nested frames don't stack washes.
|
|
241
|
+
const frameFill = isProcess ? `${color}14` : 'transparent';
|
|
221
242
|
if (!region)
|
|
222
243
|
return null;
|
|
223
244
|
return (_jsx("div", { style: {
|
|
@@ -225,16 +246,22 @@ export function SubsystemGroupNode(props) {
|
|
|
225
246
|
width: width ?? 400,
|
|
226
247
|
height: height ?? 300,
|
|
227
248
|
boxSizing: 'border-box',
|
|
228
|
-
borderRadius:
|
|
229
|
-
border: `2px ${
|
|
230
|
-
background:
|
|
249
|
+
borderRadius: frameRadius,
|
|
250
|
+
border: `2px ${frameStyle} ${color}`,
|
|
251
|
+
background: frameFill,
|
|
231
252
|
opacity: hidden ? 0 : dimmed ? 0.35 : 1,
|
|
232
253
|
transition: 'opacity 150ms ease',
|
|
233
254
|
pointerEvents: 'none',
|
|
234
255
|
}, children: _jsx("div", { style: {
|
|
235
256
|
position: 'absolute',
|
|
236
|
-
|
|
237
|
-
|
|
257
|
+
// Process: badge fill starts with the process fill (inside the
|
|
258
|
+
// frame border); no top badge border so widths don't fight.
|
|
259
|
+
// Module/package sit astride the top edge like component badges.
|
|
260
|
+
// Always set left/transform/borderTop explicitly — React Flow reuses
|
|
261
|
+
// group DOM nodes and `undefined` does not clear a prior value.
|
|
262
|
+
top: isProcess ? 0 : -19,
|
|
263
|
+
left: isProcess ? '50%' : 12,
|
|
264
|
+
transform: isProcess ? 'translateX(-50%)' : 'none',
|
|
238
265
|
fontFamily: theme.fonts.monospace,
|
|
239
266
|
fontSize: theme.fontSizes[3],
|
|
240
267
|
fontWeight: 700,
|
|
@@ -242,7 +269,8 @@ export function SubsystemGroupNode(props) {
|
|
|
242
269
|
color,
|
|
243
270
|
background: theme.colors.backgroundSecondary ?? theme.colors.background,
|
|
244
271
|
border: `1px solid ${color}`,
|
|
245
|
-
|
|
272
|
+
borderTopWidth: isProcess ? 0 : 1,
|
|
273
|
+
borderRadius: badgeRadius,
|
|
246
274
|
padding: '1px 7px',
|
|
247
275
|
whiteSpace: 'nowrap',
|
|
248
276
|
}, children: label }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/subsystem/nodes.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/subsystem/nodes.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -128,6 +128,7 @@ export type {
|
|
|
128
128
|
} from './subsystem/model';
|
|
129
129
|
export {
|
|
130
130
|
constructBadgeLabel,
|
|
131
|
+
constructBadgeColor,
|
|
131
132
|
rightBadgeLabel,
|
|
132
133
|
rightBadgeColor,
|
|
133
134
|
deriveNameFromSymbol,
|
|
@@ -137,6 +138,7 @@ export {
|
|
|
137
138
|
walkthroughStepGraphEdgeId,
|
|
138
139
|
ROLE_COLOR,
|
|
139
140
|
ROLE_LABEL,
|
|
141
|
+
FRAMEWORK_BADGE_COLOR,
|
|
140
142
|
PROPOSED_COLOR,
|
|
141
143
|
} from './subsystem/model';
|
|
142
144
|
export type {
|
|
@@ -38,9 +38,9 @@ describe('constructColorsFromPierreTheme', () => {
|
|
|
38
38
|
}
|
|
39
39
|
});
|
|
40
40
|
|
|
41
|
-
test('colliding scope pairs are shaded apart (class/type
|
|
41
|
+
test('colliding scope pairs are shaded apart (class/type); function and method differ', () => {
|
|
42
42
|
const dark = constructColorsFromPierreTheme('pierre-dark');
|
|
43
|
-
expect(dark.class).not.toBe(dark.
|
|
43
|
+
expect(dark.class).not.toBe(dark.type_alias);
|
|
44
44
|
expect(dark.function).not.toBe(dark.method);
|
|
45
45
|
});
|
|
46
46
|
|
|
@@ -9,9 +9,8 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Syntax themes deliberately reuse one hue across related scopes (class and
|
|
11
11
|
* type share `entity.name.class`); the node taxonomy needs distinguishable
|
|
12
|
-
* colors, so colliding constructs
|
|
13
|
-
*
|
|
14
|
-
* light themes.
|
|
12
|
+
* colors, so colliding constructs remap to distinct theme scopes (or a shade
|
|
13
|
+
* of one) rather than sharing the syntax color verbatim.
|
|
15
14
|
*/
|
|
16
15
|
|
|
17
16
|
import type { SubsystemComponentConstruct } from '../subsystem/model';
|
|
@@ -84,24 +83,51 @@ export function constructColorsFromPierreTheme(
|
|
|
84
83
|
// still all-Pierre, never a hand-picked value.
|
|
85
84
|
const editorFg = theme.colors['editor.foreground'] ?? '#fafafa';
|
|
86
85
|
const pick = (scope: string) => scopeColor(theme, scope) ?? editorFg;
|
|
87
|
-
const towardBackground = theme.type === 'dark' ? lighten : darken;
|
|
88
86
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
// Classes: keyword's warm red/pink, pulled toward black for a crimson
|
|
88
|
+
// border (syntax paints class names purple; the taxonomy wants red).
|
|
89
|
+
// Darken lightly so it stays brighter than a muted wine, but still
|
|
90
|
+
// distinguishable from method (hot pink / magenta).
|
|
91
|
+
const classColor = mix(
|
|
92
|
+
pick('keyword'),
|
|
93
|
+
'#000000',
|
|
94
|
+
theme.type === 'dark' ? 0.18 : 0.08,
|
|
95
|
+
);
|
|
96
|
+
// Syntax themes paint function names purple; the node taxonomy wants
|
|
97
|
+
// standalone functions in the theme's string green, while methods take a
|
|
98
|
+
// hot pink (keyword + type magenta) so they don't collapse into class crimson.
|
|
99
|
+
const functionColor = pick('string');
|
|
100
|
+
const methodColor = mix(
|
|
101
|
+
pick('keyword'),
|
|
102
|
+
pick('support.type'),
|
|
103
|
+
theme.type === 'dark' ? 0.5 : 0.4,
|
|
104
|
+
);
|
|
105
|
+
// Cool white-silver: punctuation gray iced with numeric cyan, then lifted
|
|
106
|
+
// toward pure white (dark) / pure black (light). Higher cyan mix so the
|
|
107
|
+
// metallic cool cast survives the lift.
|
|
108
|
+
const coolMetal = mix(pick('punctuation'), pick('constant.numeric'), 0.45);
|
|
109
|
+
const interfaceColor =
|
|
110
|
+
theme.type === 'dark'
|
|
111
|
+
? mix('#ffffff', coolMetal, 0.16)
|
|
112
|
+
: mix('#000000', coolMetal, 0.3);
|
|
92
113
|
|
|
93
114
|
return {
|
|
94
115
|
class: classColor,
|
|
95
|
-
//
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
type_alias:
|
|
116
|
+
// Interfaces are contracts / shapes — a near-white cool silver, not typed purple.
|
|
117
|
+
interface: interfaceColor,
|
|
118
|
+
// Type aliases: decorator blue (distinct from class crimson / enum purple).
|
|
119
|
+
type_alias: pick('meta.decorator'),
|
|
99
120
|
function: functionColor,
|
|
100
|
-
method:
|
|
101
|
-
//
|
|
102
|
-
enum: pick('
|
|
121
|
+
method: methodColor,
|
|
122
|
+
// Enums: function-name purple from the syntax theme.
|
|
123
|
+
enum: pick('entity.name.function'),
|
|
103
124
|
store: pick('variable.other.constant'),
|
|
104
|
-
|
|
125
|
+
// Externals: comment gray, lifted slightly so they read as muted but
|
|
126
|
+
// not sunk into the canvas.
|
|
127
|
+
external:
|
|
128
|
+
theme.type === 'dark'
|
|
129
|
+
? mix(pick('comment'), '#ffffff', 0.22)
|
|
130
|
+
: mix(pick('comment'), '#000000', 0.08),
|
|
105
131
|
// custom entities are actors, not code — the heading/emphasis coral reads
|
|
106
132
|
// as a highlight against the code-construct hues. Distinct from entry role
|
|
107
133
|
// orange (#ff6b35) which stays a badge, not a border.
|
|
@@ -109,14 +135,6 @@ export function constructColorsFromPierreTheme(
|
|
|
109
135
|
};
|
|
110
136
|
}
|
|
111
137
|
|
|
112
|
-
function lighten(hex: string, amount: number): string {
|
|
113
|
-
return mix(hex, '#ffffff', amount);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
function darken(hex: string, amount: number): string {
|
|
117
|
-
return mix(hex, '#000000', amount);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
138
|
/**
|
|
121
139
|
* The dark-theme instantiation, for consumers without a mode context (the
|
|
122
140
|
* bun-side excalidraw exporter). React components derive per mode instead.
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import '@xyflow/react/dist/style.css';
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
+
import { ThemeProvider, defaultEditorTheme } from '@principal-ade/industry-theme';
|
|
4
|
+
import { SubsystemComponentGraph } from '../../../subsystem/SubsystemComponentGraph';
|
|
5
|
+
import type { SubsystemComponent } from '../../../subsystem/model';
|
|
6
|
+
import { graphSpecFromEdges } from './fixtures';
|
|
7
|
+
|
|
8
|
+
const meta = {
|
|
9
|
+
title: 'Subsystem/ComponentGraph/Packages',
|
|
10
|
+
component: SubsystemComponentGraph,
|
|
11
|
+
parameters: { layout: 'fullscreen' },
|
|
12
|
+
tags: ['autodocs'],
|
|
13
|
+
decorators: [
|
|
14
|
+
(Story) => (
|
|
15
|
+
<ThemeProvider theme={defaultEditorTheme}>
|
|
16
|
+
<Story />
|
|
17
|
+
</ThemeProvider>
|
|
18
|
+
),
|
|
19
|
+
],
|
|
20
|
+
} satisfies Meta<typeof SubsystemComponentGraph>;
|
|
21
|
+
|
|
22
|
+
export default meta;
|
|
23
|
+
type Story = StoryObj<typeof meta>;
|
|
24
|
+
|
|
25
|
+
const APP = 'pkg:github/acme/app';
|
|
26
|
+
const LIB = 'pkg:github/acme/lib';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Package frames are derived from `purl` when a graph spans multiple repos.
|
|
30
|
+
* No separate `package` field — single-repo graphs stay unframed at this level.
|
|
31
|
+
*/
|
|
32
|
+
const multiRepoComponents: SubsystemComponent[] = [
|
|
33
|
+
{
|
|
34
|
+
id: 'dispatch',
|
|
35
|
+
name: 'dispatch',
|
|
36
|
+
construct: 'function',
|
|
37
|
+
symbol: 'dispatch',
|
|
38
|
+
file: 'src/host/dispatch.ts',
|
|
39
|
+
module: 'src/host/dispatch.ts',
|
|
40
|
+
process: 'app/host',
|
|
41
|
+
purl: APP,
|
|
42
|
+
purpose: 'host entry',
|
|
43
|
+
layer: 1,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: 'session',
|
|
47
|
+
name: 'SessionService',
|
|
48
|
+
construct: 'class',
|
|
49
|
+
symbol: 'SessionService',
|
|
50
|
+
file: 'src/host/session.ts',
|
|
51
|
+
module: 'src/host/session.ts',
|
|
52
|
+
process: 'app/host',
|
|
53
|
+
purl: APP,
|
|
54
|
+
purpose: 'session state',
|
|
55
|
+
layer: 2,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: 'parse',
|
|
59
|
+
name: 'parseEvent',
|
|
60
|
+
construct: 'function',
|
|
61
|
+
symbol: 'parseEvent',
|
|
62
|
+
file: 'src/parse.ts',
|
|
63
|
+
module: 'src/parse.ts',
|
|
64
|
+
process: 'lib/worker',
|
|
65
|
+
purl: LIB,
|
|
66
|
+
purpose: 'shared parser',
|
|
67
|
+
layer: 1,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: 'normalize',
|
|
71
|
+
name: 'normalize',
|
|
72
|
+
construct: 'function',
|
|
73
|
+
symbol: 'normalize',
|
|
74
|
+
file: 'src/normalize.ts',
|
|
75
|
+
module: 'src/normalize.ts',
|
|
76
|
+
process: 'lib/worker',
|
|
77
|
+
purl: LIB,
|
|
78
|
+
purpose: 'normalize payloads',
|
|
79
|
+
layer: 2,
|
|
80
|
+
},
|
|
81
|
+
];
|
|
82
|
+
|
|
83
|
+
const multiRepoEdges = graphSpecFromEdges([
|
|
84
|
+
['dispatch', 'session', 'calls'],
|
|
85
|
+
['dispatch', 'parse', 'calls'],
|
|
86
|
+
['parse', 'normalize', 'calls'],
|
|
87
|
+
]);
|
|
88
|
+
|
|
89
|
+
export const MultiRepoPackageFrames: Story = {
|
|
90
|
+
name: 'Multi-repo package frames',
|
|
91
|
+
args: {
|
|
92
|
+
components: multiRepoComponents,
|
|
93
|
+
relations: multiRepoEdges.relations,
|
|
94
|
+
walkthroughs: multiRepoEdges.walkthroughs,
|
|
95
|
+
},
|
|
96
|
+
render: (args) => (
|
|
97
|
+
<div style={{ width: '100vw', height: '100vh' }}>
|
|
98
|
+
<SubsystemComponentGraph {...args} />
|
|
99
|
+
</div>
|
|
100
|
+
),
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
/** Same components, one purl — no package frames (process/module only). */
|
|
104
|
+
const singleRepo = multiRepoComponents.map((c) => ({ ...c, purl: APP }));
|
|
105
|
+
|
|
106
|
+
export const SingleRepoNoPackageFrames: Story = {
|
|
107
|
+
name: 'Single-repo (no package frames)',
|
|
108
|
+
args: {
|
|
109
|
+
components: singleRepo,
|
|
110
|
+
relations: multiRepoEdges.relations,
|
|
111
|
+
walkthroughs: multiRepoEdges.walkthroughs,
|
|
112
|
+
},
|
|
113
|
+
render: (args) => (
|
|
114
|
+
<div style={{ width: '100vw', height: '100vh' }}>
|
|
115
|
+
<SubsystemComponentGraph {...args} />
|
|
116
|
+
</div>
|
|
117
|
+
),
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Full nest: package → process → module → leaves.
|
|
122
|
+
* Each module path has 2+ exports so module frames survive the singleton rule.
|
|
123
|
+
*/
|
|
124
|
+
const nestedComponents: SubsystemComponent[] = [
|
|
125
|
+
{
|
|
126
|
+
id: 'dispatch',
|
|
127
|
+
name: 'dispatch',
|
|
128
|
+
construct: 'function',
|
|
129
|
+
symbol: 'dispatch',
|
|
130
|
+
file: 'src/host/main.ts',
|
|
131
|
+
module: 'src/host/main.ts',
|
|
132
|
+
process: 'app/host',
|
|
133
|
+
purl: APP,
|
|
134
|
+
purpose: 'host entry',
|
|
135
|
+
layer: 1,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
id: 'boot',
|
|
139
|
+
name: 'boot',
|
|
140
|
+
construct: 'function',
|
|
141
|
+
symbol: 'boot',
|
|
142
|
+
file: 'src/host/main.ts',
|
|
143
|
+
module: 'src/host/main.ts',
|
|
144
|
+
process: 'app/host',
|
|
145
|
+
purl: APP,
|
|
146
|
+
purpose: 'host bootstrap',
|
|
147
|
+
layer: 1,
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
id: 'session',
|
|
151
|
+
name: 'SessionService',
|
|
152
|
+
construct: 'class',
|
|
153
|
+
symbol: 'SessionService',
|
|
154
|
+
file: 'src/host/session.ts',
|
|
155
|
+
module: 'src/host/session.ts',
|
|
156
|
+
process: 'app/host',
|
|
157
|
+
purl: APP,
|
|
158
|
+
purpose: 'session state',
|
|
159
|
+
layer: 2,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
id: 'session-types',
|
|
163
|
+
name: 'SessionRecord',
|
|
164
|
+
construct: 'type_alias',
|
|
165
|
+
symbol: 'SessionRecord',
|
|
166
|
+
file: 'src/host/session.ts',
|
|
167
|
+
module: 'src/host/session.ts',
|
|
168
|
+
process: 'app/host',
|
|
169
|
+
purl: APP,
|
|
170
|
+
purpose: 'session record shape',
|
|
171
|
+
layer: 2,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
id: 'parse',
|
|
175
|
+
name: 'parseEvent',
|
|
176
|
+
construct: 'function',
|
|
177
|
+
symbol: 'parseEvent',
|
|
178
|
+
file: 'src/parse.ts',
|
|
179
|
+
module: 'src/parse.ts',
|
|
180
|
+
process: 'lib/worker',
|
|
181
|
+
purl: LIB,
|
|
182
|
+
purpose: 'shared parser',
|
|
183
|
+
layer: 1,
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
id: 'parse-types',
|
|
187
|
+
name: 'RawEvent',
|
|
188
|
+
construct: 'type_alias',
|
|
189
|
+
symbol: 'RawEvent',
|
|
190
|
+
file: 'src/parse.ts',
|
|
191
|
+
module: 'src/parse.ts',
|
|
192
|
+
process: 'lib/worker',
|
|
193
|
+
purl: LIB,
|
|
194
|
+
purpose: 'raw event shape',
|
|
195
|
+
layer: 1,
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
id: 'normalize',
|
|
199
|
+
name: 'normalize',
|
|
200
|
+
construct: 'function',
|
|
201
|
+
symbol: 'normalize',
|
|
202
|
+
file: 'src/normalize.ts',
|
|
203
|
+
module: 'src/normalize.ts',
|
|
204
|
+
process: 'lib/worker',
|
|
205
|
+
purl: LIB,
|
|
206
|
+
purpose: 'normalize payloads',
|
|
207
|
+
layer: 2,
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
id: 'normalize-types',
|
|
211
|
+
name: 'NormalizedEvent',
|
|
212
|
+
construct: 'type_alias',
|
|
213
|
+
symbol: 'NormalizedEvent',
|
|
214
|
+
file: 'src/normalize.ts',
|
|
215
|
+
module: 'src/normalize.ts',
|
|
216
|
+
process: 'lib/worker',
|
|
217
|
+
purl: LIB,
|
|
218
|
+
purpose: 'normalized event shape',
|
|
219
|
+
layer: 2,
|
|
220
|
+
},
|
|
221
|
+
];
|
|
222
|
+
|
|
223
|
+
const nestedEdges = graphSpecFromEdges([
|
|
224
|
+
['boot', 'dispatch', 'calls'],
|
|
225
|
+
['dispatch', 'session', 'calls'],
|
|
226
|
+
['dispatch', 'parse', 'calls'],
|
|
227
|
+
['parse', 'normalize', 'calls'],
|
|
228
|
+
]);
|
|
229
|
+
|
|
230
|
+
export const PackageProcessModuleNesting: Story = {
|
|
231
|
+
name: 'Package → process → module nesting',
|
|
232
|
+
args: {
|
|
233
|
+
components: nestedComponents,
|
|
234
|
+
relations: nestedEdges.relations,
|
|
235
|
+
walkthroughs: nestedEdges.walkthroughs,
|
|
236
|
+
},
|
|
237
|
+
render: (args) => (
|
|
238
|
+
<div style={{ width: '100vw', height: '100vh' }}>
|
|
239
|
+
<SubsystemComponentGraph {...args} />
|
|
240
|
+
</div>
|
|
241
|
+
),
|
|
242
|
+
};
|