system-canvas 0.1.0 → 0.1.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 (65) hide show
  1. package/dist/actions.d.ts +50 -0
  2. package/dist/actions.d.ts.map +1 -0
  3. package/dist/actions.js +85 -0
  4. package/dist/actions.js.map +1 -0
  5. package/dist/canvas.d.ts +40 -1
  6. package/dist/canvas.d.ts.map +1 -1
  7. package/dist/canvas.js +180 -0
  8. package/dist/canvas.js.map +1 -1
  9. package/dist/index.d.ts +12 -4
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +15 -3
  12. package/dist/index.js.map +1 -1
  13. package/dist/lanes.d.ts +50 -0
  14. package/dist/lanes.d.ts.map +1 -0
  15. package/dist/lanes.js +129 -0
  16. package/dist/lanes.js.map +1 -0
  17. package/dist/paths.d.ts +15 -0
  18. package/dist/paths.d.ts.map +1 -0
  19. package/dist/paths.js +41 -0
  20. package/dist/paths.js.map +1 -0
  21. package/dist/rendering/index.d.ts +2 -1
  22. package/dist/rendering/index.d.ts.map +1 -1
  23. package/dist/rendering/index.js +1 -1
  24. package/dist/rendering/index.js.map +1 -1
  25. package/dist/rendering/viewport-math.d.ts +28 -0
  26. package/dist/rendering/viewport-math.d.ts.map +1 -1
  27. package/dist/rendering/viewport-math.js +49 -0
  28. package/dist/rendering/viewport-math.js.map +1 -1
  29. package/dist/rollup.d.ts +23 -0
  30. package/dist/rollup.d.ts.map +1 -0
  31. package/dist/rollup.js +56 -0
  32. package/dist/rollup.js.map +1 -0
  33. package/dist/slots.d.ts +65 -0
  34. package/dist/slots.d.ts.map +1 -0
  35. package/dist/slots.js +367 -0
  36. package/dist/slots.js.map +1 -0
  37. package/dist/themes/blueprint.d.ts.map +1 -1
  38. package/dist/themes/blueprint.js +13 -1
  39. package/dist/themes/blueprint.js.map +1 -1
  40. package/dist/themes/dark.d.ts.map +1 -1
  41. package/dist/themes/dark.js +13 -1
  42. package/dist/themes/dark.js.map +1 -1
  43. package/dist/themes/index.d.ts +1 -0
  44. package/dist/themes/index.d.ts.map +1 -1
  45. package/dist/themes/index.js +1 -0
  46. package/dist/themes/index.js.map +1 -1
  47. package/dist/themes/light.d.ts.map +1 -1
  48. package/dist/themes/light.js +13 -1
  49. package/dist/themes/light.js.map +1 -1
  50. package/dist/themes/midnight.d.ts.map +1 -1
  51. package/dist/themes/midnight.js +13 -1
  52. package/dist/themes/midnight.js.map +1 -1
  53. package/dist/themes/resolve.d.ts.map +1 -1
  54. package/dist/themes/resolve.js +5 -0
  55. package/dist/themes/resolve.js.map +1 -1
  56. package/dist/themes/roadmap.d.ts +13 -0
  57. package/dist/themes/roadmap.d.ts.map +1 -0
  58. package/dist/themes/roadmap.js +264 -0
  59. package/dist/themes/roadmap.js.map +1 -0
  60. package/dist/themes/warm.d.ts.map +1 -1
  61. package/dist/themes/warm.js +13 -1
  62. package/dist/themes/warm.js.map +1 -1
  63. package/dist/types.d.ts +419 -0
  64. package/dist/types.d.ts.map +1 -1
  65. package/package.json +13 -3
package/dist/slots.js ADDED
@@ -0,0 +1,367 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Region geometry
3
+ //
4
+ // Regions are library-owned rectangles on a node, in canvas-space. Sizes
5
+ // that scale with text use `em` units relative to `theme.node.fontSize`;
6
+ // edge thicknesses and insets are in px because they're visual details.
7
+ // ---------------------------------------------------------------------------
8
+ const CORNER_INSET = 8;
9
+ const CORNER_EM = 1.25;
10
+ const HEADER_EM = 1.0;
11
+ const FOOTER_EM = 1.0;
12
+ const HEADER_INSET_X = 14;
13
+ const HEADER_INSET_Y = 10;
14
+ const FOOTER_INSET_Y = 10;
15
+ /**
16
+ * Edge-strip thicknesses. Sized so a `progress` slot reads as a
17
+ * real progress bar (not a 2px hairline) while still feeling like a
18
+ * strip, not a bar chart.
19
+ */
20
+ const TOP_EDGE_PX = 5;
21
+ const RIGHT_EDGE_PX = 4;
22
+ const LEFT_EDGE_PX = 4;
23
+ /** Bottom-edge strip gets a bit more weight so progress bars read. */
24
+ const BOTTOM_EDGE_MIN_PX = 6;
25
+ const BOTTOM_EDGE_HEIGHT_RATIO = 0.08;
26
+ /** Corner-tab badge — hangs off the top-right corner. */
27
+ const TAB_BADGE_EM = 1.4;
28
+ /** How far the tab badge floats above the node's top edge (in px). */
29
+ const TAB_BADGE_LIFT = 10;
30
+ /** How far the tab badge extends past the node's right edge (in px). */
31
+ const TAB_BADGE_OVERHANG = 8;
32
+ /**
33
+ * Compute the region rect (in canvas-space) for every slot position on a
34
+ * resolved node. Pure geometry — no knowledge of which slots are actually
35
+ * in use. Callers index by `SlotPosition`.
36
+ */
37
+ export function computeCategorySlotRegions(node, theme, slots) {
38
+ const { x, y, width, height } = node;
39
+ const fs = theme.node.fontSize;
40
+ const corner = CORNER_EM * fs;
41
+ const header = HEADER_EM * fs;
42
+ const footer = FOOTER_EM * fs;
43
+ const tab = TAB_BADGE_EM * fs;
44
+ const bottomEdge = Math.max(BOTTOM_EDGE_MIN_PX, Math.round(height * BOTTOM_EDGE_HEIGHT_RATIO));
45
+ // Body region is the reflow-aware content rect: the full node box minus
46
+ // any header/footer/edge reservations contributed by other slots. We
47
+ // compute this from `slots` if provided, otherwise default to the full
48
+ // content area minus standard padding. The body region never shrinks to
49
+ // accommodate itself — only sibling slots influence it.
50
+ const bodyReservations = computeBodyReservations(node, theme, slots);
51
+ const bodyX = x + bodyReservations.left;
52
+ const bodyY = y + bodyReservations.top;
53
+ const bodyWidth = Math.max(0, width - bodyReservations.left - bodyReservations.right);
54
+ const bodyHeight = Math.max(0, height - bodyReservations.top - bodyReservations.bottom);
55
+ // Edge regions span the full edge of the node. The `CategorySlotsLayer`
56
+ // wraps edge-slot output in a clipPath that matches the node's rounded
57
+ // rect, so solid fills and progress bars bleed naturally under the
58
+ // corners instead of leaving a visible gap.
59
+ return {
60
+ topEdge: {
61
+ x,
62
+ y,
63
+ width,
64
+ height: TOP_EDGE_PX,
65
+ },
66
+ bottomEdge: {
67
+ x,
68
+ y: y + height - bottomEdge,
69
+ width,
70
+ height: bottomEdge,
71
+ },
72
+ leftEdge: {
73
+ x,
74
+ y,
75
+ width: LEFT_EDGE_PX,
76
+ height,
77
+ },
78
+ rightEdge: {
79
+ x: x + width - RIGHT_EDGE_PX,
80
+ y,
81
+ width: RIGHT_EDGE_PX,
82
+ height,
83
+ },
84
+ bodyTop: {
85
+ // Horizontal band sitting below the title row. When a footer slot
86
+ // is present it floats ~halfway between the title and the footer;
87
+ // otherwise it sits below the title with similar breathing room.
88
+ // Used for inline progress bars, divider strips, sparklines, etc.
89
+ x: x + HEADER_INSET_X,
90
+ // title baseline sits at roughly `HEADER_INSET_Y + fs + 4`, so pad
91
+ // another ~fs to clear the descender before the bar.
92
+ y: y + HEADER_INSET_Y + fs + Math.round(fs * 0.9),
93
+ width: Math.max(0, width - HEADER_INSET_X * 2),
94
+ height: Math.max(4, Math.round(fs * 0.35)),
95
+ },
96
+ topRightOuter: {
97
+ // Hangs off the top-right corner. The region extends past the
98
+ // node's right edge so the badge reads as a notification tab
99
+ // clinging to the outside of the corner rather than sitting on
100
+ // top of the node.
101
+ x: x + width - tab + TAB_BADGE_OVERHANG,
102
+ y: y - TAB_BADGE_LIFT,
103
+ width: tab,
104
+ height: tab,
105
+ },
106
+ topLeft: {
107
+ x: x + CORNER_INSET,
108
+ y: y + CORNER_INSET,
109
+ width: corner,
110
+ height: corner,
111
+ },
112
+ topRight: {
113
+ x: x + width - CORNER_INSET - corner,
114
+ y: y + CORNER_INSET,
115
+ width: corner,
116
+ height: corner,
117
+ },
118
+ bottomLeft: {
119
+ x: x + CORNER_INSET,
120
+ y: y + height - CORNER_INSET - corner,
121
+ width: corner,
122
+ height: corner,
123
+ },
124
+ bottomRight: {
125
+ x: x + width - CORNER_INSET - corner,
126
+ y: y + height - CORNER_INSET - corner,
127
+ width: corner,
128
+ height: corner,
129
+ },
130
+ header: {
131
+ x: x + HEADER_INSET_X,
132
+ y: y + HEADER_INSET_Y,
133
+ width: Math.max(0, width - HEADER_INSET_X * 2),
134
+ height: header,
135
+ },
136
+ footer: {
137
+ x: x + HEADER_INSET_X,
138
+ y: y + height - FOOTER_INSET_Y - footer,
139
+ width: Math.max(0, width - HEADER_INSET_X * 2),
140
+ height: footer,
141
+ },
142
+ body: {
143
+ x: bodyX,
144
+ y: bodyY,
145
+ width: bodyWidth,
146
+ height: bodyHeight,
147
+ },
148
+ };
149
+ }
150
+ /**
151
+ * Reservations used to compute the `body` region. Mirrors
152
+ * `computeReflowReservations` but excludes the body slot itself from
153
+ * triggering the dashboard padding — the body owns the reflowed area
154
+ * regardless of whether decorative slots are present.
155
+ */
156
+ function computeBodyReservations(node, theme, slots) {
157
+ // Fall back to standard content padding when there are no slots.
158
+ if (!slots) {
159
+ return {
160
+ top: HEADER_INSET_Y,
161
+ bottom: FOOTER_INSET_Y,
162
+ left: HEADER_INSET_X,
163
+ right: HEADER_INSET_X,
164
+ };
165
+ }
166
+ const r = computeReflowReservationsInternal(node, theme, slots);
167
+ // Always apply standard body padding so the body slot aligns with
168
+ // header/footer insets even when no other slots are present.
169
+ return {
170
+ top: Math.max(r.top, HEADER_INSET_Y),
171
+ bottom: Math.max(r.bottom, FOOTER_INSET_Y),
172
+ left: Math.max(r.left, HEADER_INSET_X),
173
+ right: Math.max(r.right, HEADER_INSET_X),
174
+ };
175
+ }
176
+ /** Return true for `NodeAccessor` values that are functions. */
177
+ function isFn(v) {
178
+ return typeof v === 'function';
179
+ }
180
+ /**
181
+ * Resolve an accessor against a `SlotContext`. Function accessors are
182
+ * called; static values are returned as-is.
183
+ */
184
+ export function resolveAccessor(accessor, ctx) {
185
+ return isFn(accessor) ? accessor(ctx) : accessor;
186
+ }
187
+ /**
188
+ * Resolve an accessor with a fallback for the function case. Useful when
189
+ * a slot renders a default from the theme but allows per-call overrides.
190
+ */
191
+ export function resolveAccessorOr(accessor, fallback, ctx) {
192
+ if (accessor === undefined)
193
+ return fallback;
194
+ return resolveAccessor(accessor, ctx);
195
+ }
196
+ /**
197
+ * Look up the slots map for a node's category. Returns undefined when the
198
+ * node has no category, or the category has no slots declared.
199
+ */
200
+ export function getCategorySlots(node, theme) {
201
+ if (!node.category)
202
+ return undefined;
203
+ const def = theme.categories[node.category];
204
+ return def?.slots;
205
+ }
206
+ /**
207
+ * Pick a corner for the ref indicator given which slots are occupied.
208
+ *
209
+ * If the default corner is free, it wins. Otherwise we try the diagonally
210
+ * opposite corner, then the remaining two corners in clockwise order from
211
+ * the default. If all four corners are occupied we keep the default
212
+ * position — the caller can decide whether to log a dev warning.
213
+ *
214
+ * Corners occupied by `header` or `footer` count as occupied on *both*
215
+ * corners of that row: a header in the top strip blocks both `topLeft` and
216
+ * `topRight` (the indicator would overlap the header text strip anyway).
217
+ */
218
+ export function pickRefIndicatorCorner(defaultCorner, slots) {
219
+ if (!slots)
220
+ return defaultCorner;
221
+ const occupied = (c) => {
222
+ if (slots[c])
223
+ return true;
224
+ if ((c === 'topLeft' || c === 'topRight') && slots.header)
225
+ return true;
226
+ if ((c === 'bottomLeft' || c === 'bottomRight') && slots.footer)
227
+ return true;
228
+ // A tab badge hanging off the top-right blocks the topRight corner.
229
+ if (c === 'topRight' && slots.topRightOuter)
230
+ return true;
231
+ return false;
232
+ };
233
+ if (!occupied(defaultCorner))
234
+ return defaultCorner;
235
+ // Search order: diagonal, then the remaining two in clockwise order.
236
+ const order = {
237
+ topLeft: ['bottomRight', 'topRight', 'bottomLeft'],
238
+ topRight: ['bottomLeft', 'bottomRight', 'topLeft'],
239
+ bottomLeft: ['topRight', 'topLeft', 'bottomRight'],
240
+ bottomRight: ['topLeft', 'bottomLeft', 'topRight'],
241
+ };
242
+ for (const c of order[defaultCorner]) {
243
+ if (!occupied(c))
244
+ return c;
245
+ }
246
+ return defaultCorner;
247
+ }
248
+ // ---------------------------------------------------------------------------
249
+ // Iteration helper
250
+ // ---------------------------------------------------------------------------
251
+ /**
252
+ * Iterate over a slots map in a deterministic order. Returns entries as
253
+ * `[position, spec]` pairs. Order matches the `SlotPosition` definition —
254
+ * stable across runs so SVG paint order is stable.
255
+ */
256
+ export function slotEntries(slots) {
257
+ const positions = [
258
+ 'topEdge',
259
+ 'bottomEdge',
260
+ 'leftEdge',
261
+ 'rightEdge',
262
+ 'header',
263
+ 'footer',
264
+ 'body',
265
+ 'bodyTop',
266
+ 'topLeft',
267
+ 'topRight',
268
+ 'bottomLeft',
269
+ 'bottomRight',
270
+ // Outer positions paint last so they visually sit above the node's
271
+ // own stroke — a tab badge needs to clip into the node's corner.
272
+ 'topRightOuter',
273
+ ];
274
+ const out = [];
275
+ for (const p of positions) {
276
+ const s = slots[p];
277
+ if (s)
278
+ out.push([p, s]);
279
+ }
280
+ return out;
281
+ }
282
+ /**
283
+ * Compute how many pixels of the node's content box must be reserved on
284
+ * each side for library-owned slots so node text/icons can be reflowed
285
+ * without colliding with slots.
286
+ *
287
+ * - `header` → shift text down by header region height + inset
288
+ * - `footer` → shrink text vertical extent by footer region height + inset
289
+ * - `leftEdge` / `rightEdge` → inset text by the edge strip width
290
+ *
291
+ * Top/bottom edges and corner slots don't reflow text (they're thin strips
292
+ * or small badges that sit over the existing layout). If the node is so
293
+ * short that reservations would leave less than `fontSize` vertical space
294
+ * for text, the reflow is skipped (text stays centered).
295
+ */
296
+ export function computeReflowReservations(node, theme, slots) {
297
+ return computeReflowReservationsInternal(node, theme, slots);
298
+ }
299
+ /**
300
+ * Shared reservation computation used by `computeReflowReservations` (for
301
+ * text/icon reflow) and by body-region geometry. Kept private so the
302
+ * public API surface stays small.
303
+ */
304
+ function computeReflowReservationsInternal(node, theme, slots) {
305
+ if (!slots)
306
+ return { top: 0, bottom: 0, left: 0, right: 0 };
307
+ // Compute header/footer/edge base regions without the body inset. We
308
+ // deliberately pass `undefined` so this recursive call doesn't re-enter
309
+ // the body-region logic (which itself calls this function).
310
+ const regions = computeCategorySlotRegions(node, theme);
311
+ let top = 0;
312
+ let bottom = 0;
313
+ let left = 0;
314
+ let right = 0;
315
+ if (slots.header)
316
+ top = regions.header.height + HEADER_INSET_Y + 6;
317
+ if (slots.footer)
318
+ bottom = regions.footer.height + FOOTER_INSET_Y + 4;
319
+ if (slots.leftEdge)
320
+ left = regions.leftEdge.width + 4;
321
+ if (slots.rightEdge)
322
+ right = regions.rightEdge.width + 4;
323
+ // A `topLeft` dot reads as an inline status marker next to the title,
324
+ // not a corner badge — reserve enough left padding that the title
325
+ // clears the dot region.
326
+ if (slots.topLeft && slots.topLeft.kind === 'dot') {
327
+ left = Math.max(left, regions.topLeft.x + regions.topLeft.width - node.x + 6);
328
+ }
329
+ // Dashboard-card pattern: whenever the node has "dashboard" signals
330
+ // (an explicit header, a top-right pill, an inline bodyTop strip, an
331
+ // inline topLeft dot, or a footer row), pin the title to the top,
332
+ // left-align it, and apply standard body padding so the body text
333
+ // aligns with the header's inset.
334
+ const isDashboard = slots.header !== undefined ||
335
+ slots.topRight !== undefined ||
336
+ slots.bodyTop !== undefined ||
337
+ slots.footer !== undefined ||
338
+ (slots.topLeft !== undefined && slots.topLeft.kind === 'dot');
339
+ if (isDashboard) {
340
+ if (!slots.header)
341
+ top = Math.max(top, HEADER_INSET_Y);
342
+ // Baseline body padding — matches `HEADER_INSET_X` so the title,
343
+ // sublabel, and header text all share the same left edge. Without
344
+ // this, text renders flush against the node's rounded stroke.
345
+ left = Math.max(left, HEADER_INSET_X);
346
+ right = Math.max(right, HEADER_INSET_X);
347
+ }
348
+ // A topRight pill steals additional real estate from the title — on
349
+ // top of the baseline padding, reserve a band wide enough for a short
350
+ // 4-char tag ("RISK" / "ATTN" / "OK").
351
+ if (slots.topRight && slots.topRight.kind === 'pill') {
352
+ right = Math.max(right, Math.round(theme.node.fontSize * 3.6));
353
+ }
354
+ // Bail if reservations would eat all the text space.
355
+ const vertSpace = node.height - top - bottom;
356
+ if (vertSpace < theme.node.fontSize) {
357
+ top = 0;
358
+ bottom = 0;
359
+ }
360
+ const horSpace = node.width - left - right;
361
+ if (horSpace < theme.node.fontSize) {
362
+ left = 0;
363
+ right = 0;
364
+ }
365
+ return { top, bottom, left, right };
366
+ }
367
+ //# sourceMappingURL=slots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slots.js","sourceRoot":"","sources":["../src/slots.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"blueprint.d.ts","sourceRoot":"","sources":["../../src/themes/blueprint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAgE5B,CAAA"}
1
+ {"version":3,"file":"blueprint.d.ts","sourceRoot":"","sources":["../../src/themes/blueprint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WA6E5B,CAAA"}
@@ -22,7 +22,7 @@ export const blueprintTheme = {
22
22
  sublabelFontSize: 8,
23
23
  refIndicator: {
24
24
  icon: 'expand',
25
- color: 'rgba(74, 144, 217, 0.5)',
25
+ color: 'rgba(191, 219, 254, 0.95)',
26
26
  },
27
27
  },
28
28
  edge: {
@@ -49,6 +49,18 @@ export const blueprintTheme = {
49
49
  fontFamily: "'JetBrains Mono', monospace",
50
50
  fontSize: 11,
51
51
  },
52
+ lanes: {
53
+ bandFillEven: 'rgba(19, 34, 68, 0.45)',
54
+ bandFillOdd: 'rgba(19, 34, 68, 0.15)',
55
+ dividerColor: 'rgba(74, 144, 217, 0.35)',
56
+ dividerWidth: 1,
57
+ headerBackground: 'rgba(10, 22, 40, 0.92)',
58
+ headerTextColor: '#d4e5f7',
59
+ headerFontFamily: "'JetBrains Mono', monospace",
60
+ headerFontSize: 11,
61
+ headerSize: 28,
62
+ headerPadding: 10,
63
+ },
52
64
  presetColors: {
53
65
  '1': { fill: 'rgba(180, 60, 60, 0.25)', stroke: '#e07070' }, // blueprint red
54
66
  '2': { fill: 'rgba(200, 130, 50, 0.25)', stroke: '#d4a050' }, // blueprint orange
@@ -1 +1 @@
1
- {"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../../src/themes/blueprint.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,IAAI,EAAE,WAAW;IAEjB,UAAU,EAAE,SAAS;IAErB,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,GAAG;KACjB;IAED,IAAI,EAAE;QACJ,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,SAAS;QACxB,UAAU,EAAE,4CAA4C;QACxD,QAAQ,EAAE,EAAE;QACZ,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,yBAAyB;SACjC;KACF;IAED,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,CAAC;KACjB;IAED,KAAK,EAAE;QACL,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,GAAG;QAChB,eAAe,EAAE,MAAM;QACvB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,CAAC;KAChB;IAED,WAAW,EAAE;QACX,UAAU,EAAE,wBAAwB;QACpC,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,SAAS;QACzB,UAAU,EAAE,6BAA6B;QACzC,QAAQ,EAAE,EAAE;KACb;IAED,YAAY,EAAE;QACZ,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,gBAAgB;QAChF,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,mBAAmB;QACnF,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,mBAAmB;QACnF,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,kBAAkB;QAClF,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,iBAAiB;QACjF,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,mBAAmB;KACpF;IAED,UAAU,EAAE,EAAE;CACf,CAAA"}
1
+ {"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../../src/themes/blueprint.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,IAAI,EAAE,WAAW;IAEjB,UAAU,EAAE,SAAS;IAErB,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,GAAG;KACjB;IAED,IAAI,EAAE;QACJ,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,SAAS;QACxB,UAAU,EAAE,4CAA4C;QACxD,QAAQ,EAAE,EAAE;QACZ,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,2BAA2B;SACnC;KACF;IAED,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,CAAC;KACjB;IAED,KAAK,EAAE;QACL,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,GAAG;QAChB,eAAe,EAAE,MAAM;QACvB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,CAAC;KAChB;IAED,WAAW,EAAE;QACX,UAAU,EAAE,wBAAwB;QACpC,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,SAAS;QACzB,UAAU,EAAE,6BAA6B;QACzC,QAAQ,EAAE,EAAE;KACb;IAED,KAAK,EAAE;QACL,YAAY,EAAE,wBAAwB;QACtC,WAAW,EAAE,wBAAwB;QACrC,YAAY,EAAE,0BAA0B;QACxC,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,wBAAwB;QAC1C,eAAe,EAAE,SAAS;QAC1B,gBAAgB,EAAE,6BAA6B;QAC/C,cAAc,EAAE,EAAE;QAClB,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,EAAE;KAClB;IAED,YAAY,EAAE;QACZ,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,gBAAgB;QAChF,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,mBAAmB;QACnF,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,mBAAmB;QACnF,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,kBAAkB;QAClF,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,iBAAiB;QACjF,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,mBAAmB;KACpF;IAED,UAAU,EAAE,EAAE;CACf,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"dark.d.ts","sourceRoot":"","sources":["../../src/themes/dark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,WAgEvB,CAAA"}
1
+ {"version":3,"file":"dark.d.ts","sourceRoot":"","sources":["../../src/themes/dark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,WA6EvB,CAAA"}
@@ -22,7 +22,7 @@ export const darkTheme = {
22
22
  sublabelFontSize: 9,
23
23
  refIndicator: {
24
24
  icon: 'chevron',
25
- color: 'rgba(148, 163, 184, 0.6)', // slate-400 at 60%
25
+ color: 'rgba(203, 213, 225, 0.95)', // slate-300 at 95%
26
26
  },
27
27
  },
28
28
  edge: {
@@ -49,6 +49,18 @@ export const darkTheme = {
49
49
  fontFamily: "'JetBrains Mono', 'Fira Code', 'SF Mono', monospace",
50
50
  fontSize: 12,
51
51
  },
52
+ lanes: {
53
+ bandFillEven: 'rgba(30, 41, 59, 0.18)', // slate-800 soft
54
+ bandFillOdd: 'rgba(30, 41, 59, 0.06)',
55
+ dividerColor: 'rgba(71, 85, 105, 0.35)', // slate-600 muted
56
+ dividerWidth: 1,
57
+ headerBackground: 'rgba(15, 23, 42, 0.88)',
58
+ headerTextColor: '#cbd5e1', // slate-300
59
+ headerFontFamily: "'JetBrains Mono', 'Fira Code', 'SF Mono', monospace",
60
+ headerFontSize: 11,
61
+ headerSize: 28,
62
+ headerPadding: 10,
63
+ },
52
64
  presetColors: {
53
65
  '1': { fill: 'rgba(136, 19, 55, 0.4)', stroke: '#fb7185' }, // rose — security/auth
54
66
  '2': { fill: 'rgba(120, 53, 15, 0.3)', stroke: '#fb923c' }, // orange — events/messaging
@@ -1 +1 @@
1
- {"version":3,"file":"dark.js","sourceRoot":"","sources":["../../src/themes/dark.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAgB;IACpC,IAAI,EAAE,MAAM;IAEZ,UAAU,EAAE,SAAS,EAAE,YAAY;IAEnC,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,SAAS,EAAE,YAAY;QAC9B,WAAW,EAAE,GAAG;KACjB;IAED,IAAI,EAAE;QACJ,IAAI,EAAE,uBAAuB,EAAK,gBAAgB;QAClD,MAAM,EAAE,SAAS,EAAmB,YAAY;QAChD,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,SAAS,EAAY,YAAY;QAChD,UAAU,EAAE,qDAAqD;QACjE,QAAQ,EAAE,EAAE;QACZ,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE;YACZ,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,0BAA0B,EAAE,mBAAmB;SACvD;KACF;IAED,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS,EAAK,YAAY;QAClC,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,SAAS,EAAE,YAAY;QACnC,aAAa,EAAE,CAAC;KACjB;IAED,KAAK,EAAE;QACL,IAAI,EAAE,wBAAwB;QAC9B,MAAM,EAAE,SAAS,EAAO,YAAY;QACpC,WAAW,EAAE,CAAC;QACd,eAAe,EAAE,KAAK;QACtB,UAAU,EAAE,SAAS,EAAG,YAAY;QACpC,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,EAAE;KACjB;IAED,WAAW,EAAE;QACX,UAAU,EAAE,uBAAuB,EAAE,mBAAmB;QACxD,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS,EAAgB,YAAY;QAClD,cAAc,EAAE,SAAS,EAAa,YAAY;QAClD,UAAU,EAAE,qDAAqD;QACjE,QAAQ,EAAE,EAAE;KACb;IAED,YAAY,EAAE;QACZ,GAAG,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,uBAAuB;QACtF,GAAG,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,4BAA4B;QAC3F,GAAG,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,sBAAsB;QACrF,GAAG,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAM,MAAM,EAAE,SAAS,EAAE,EAAG,6BAA6B;QAC5F,GAAG,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAM,MAAM,EAAE,SAAS,EAAE,EAAG,yBAAyB;QACxF,GAAG,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,4BAA4B;KAC5F;IAED,UAAU,EAAE,EAAE;CACf,CAAA"}
1
+ {"version":3,"file":"dark.js","sourceRoot":"","sources":["../../src/themes/dark.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAgB;IACpC,IAAI,EAAE,MAAM;IAEZ,UAAU,EAAE,SAAS,EAAE,YAAY;IAEnC,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,SAAS,EAAE,YAAY;QAC9B,WAAW,EAAE,GAAG;KACjB;IAED,IAAI,EAAE;QACJ,IAAI,EAAE,uBAAuB,EAAK,gBAAgB;QAClD,MAAM,EAAE,SAAS,EAAmB,YAAY;QAChD,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,SAAS,EAAY,YAAY;QAChD,UAAU,EAAE,qDAAqD;QACjE,QAAQ,EAAE,EAAE;QACZ,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE;YACZ,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,2BAA2B,EAAE,mBAAmB;SACxD;KACF;IAED,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS,EAAK,YAAY;QAClC,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,SAAS,EAAE,YAAY;QACnC,aAAa,EAAE,CAAC;KACjB;IAED,KAAK,EAAE;QACL,IAAI,EAAE,wBAAwB;QAC9B,MAAM,EAAE,SAAS,EAAO,YAAY;QACpC,WAAW,EAAE,CAAC;QACd,eAAe,EAAE,KAAK;QACtB,UAAU,EAAE,SAAS,EAAG,YAAY;QACpC,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,EAAE;KACjB;IAED,WAAW,EAAE;QACX,UAAU,EAAE,uBAAuB,EAAE,mBAAmB;QACxD,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS,EAAgB,YAAY;QAClD,cAAc,EAAE,SAAS,EAAa,YAAY;QAClD,UAAU,EAAE,qDAAqD;QACjE,QAAQ,EAAE,EAAE;KACb;IAED,KAAK,EAAE;QACL,YAAY,EAAE,wBAAwB,EAAG,iBAAiB;QAC1D,WAAW,EAAE,wBAAwB;QACrC,YAAY,EAAE,yBAAyB,EAAE,kBAAkB;QAC3D,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,wBAAwB;QAC1C,eAAe,EAAE,SAAS,EAAe,YAAY;QACrD,gBAAgB,EAAE,qDAAqD;QACvE,cAAc,EAAE,EAAE;QAClB,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,EAAE;KAClB;IAED,YAAY,EAAE;QACZ,GAAG,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,uBAAuB;QACtF,GAAG,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,4BAA4B;QAC3F,GAAG,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,sBAAsB;QACrF,GAAG,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAM,MAAM,EAAE,SAAS,EAAE,EAAG,6BAA6B;QAC5F,GAAG,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAM,MAAM,EAAE,SAAS,EAAE,EAAG,yBAAyB;QACxF,GAAG,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,4BAA4B;KAC5F;IAED,UAAU,EAAE,EAAE;CACf,CAAA"}
@@ -3,5 +3,6 @@ export { midnightTheme } from './midnight.js';
3
3
  export { lightTheme } from './light.js';
4
4
  export { blueprintTheme } from './blueprint.js';
5
5
  export { warmTheme } from './warm.js';
6
+ export { roadmapTheme } from './roadmap.js';
6
7
  export { resolveTheme, resolveColor, resolveNode } from './resolve.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA"}
@@ -3,5 +3,6 @@ export { midnightTheme } from './midnight.js';
3
3
  export { lightTheme } from './light.js';
4
4
  export { blueprintTheme } from './blueprint.js';
5
5
  export { warmTheme } from './warm.js';
6
+ export { roadmapTheme } from './roadmap.js';
6
7
  export { resolveTheme, resolveColor, resolveNode } from './resolve.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../src/themes/light.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,WAgExB,CAAA"}
1
+ {"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../src/themes/light.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,WA6ExB,CAAA"}
@@ -22,7 +22,7 @@ export const lightTheme = {
22
22
  sublabelFontSize: 9,
23
23
  refIndicator: {
24
24
  icon: 'chevron',
25
- color: 'rgba(100, 116, 139, 0.5)',
25
+ color: 'rgba(71, 85, 105, 0.9)',
26
26
  },
27
27
  },
28
28
  edge: {
@@ -49,6 +49,18 @@ export const lightTheme = {
49
49
  fontFamily: "'Inter', 'Helvetica Neue', sans-serif",
50
50
  fontSize: 12,
51
51
  },
52
+ lanes: {
53
+ bandFillEven: 'rgba(148, 163, 184, 0.10)', // slate-400 soft
54
+ bandFillOdd: 'rgba(148, 163, 184, 0.03)',
55
+ dividerColor: 'rgba(148, 163, 184, 0.4)',
56
+ dividerWidth: 1,
57
+ headerBackground: 'rgba(255, 255, 255, 0.92)',
58
+ headerTextColor: '#334155', // slate-700
59
+ headerFontFamily: "'Inter', 'Helvetica Neue', sans-serif",
60
+ headerFontSize: 11,
61
+ headerSize: 28,
62
+ headerPadding: 10,
63
+ },
52
64
  presetColors: {
53
65
  '1': { fill: 'rgba(254, 226, 226, 0.7)', stroke: '#ef4444' }, // red
54
66
  '2': { fill: 'rgba(255, 237, 213, 0.7)', stroke: '#f97316' }, // orange
@@ -1 +1 @@
1
- {"version":3,"file":"light.js","sourceRoot":"","sources":["../../src/themes/light.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,IAAI,EAAE,OAAO;IAEb,UAAU,EAAE,SAAS,EAAE,WAAW;IAElC,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,SAAS,EAAE,YAAY;QAC9B,WAAW,EAAE,GAAG;KACjB;IAED,IAAI,EAAE;QACJ,IAAI,EAAE,0BAA0B,EAAG,YAAY;QAC/C,MAAM,EAAE,SAAS,EAAmB,YAAY;QAChD,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,SAAS,EAAe,YAAY;QAChD,aAAa,EAAE,SAAS,EAAY,YAAY;QAChD,UAAU,EAAE,uCAAuC;QACnD,QAAQ,EAAE,EAAE;QACZ,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE;YACZ,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,0BAA0B;SAClC;KACF;IAED,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS,EAAM,YAAY;QACnC,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,SAAS,EAAE,YAAY;QACnC,aAAa,EAAE,CAAC;KACjB;IAED,KAAK,EAAE;QACL,IAAI,EAAE,0BAA0B;QAChC,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,CAAC;QACd,eAAe,EAAE,KAAK;QACtB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,EAAE;KACjB;IAED,WAAW,EAAE;QACX,UAAU,EAAE,2BAA2B;QACvC,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,SAAS;QACzB,UAAU,EAAE,uCAAuC;QACnD,QAAQ,EAAE,EAAE;KACb;IAED,YAAY,EAAE;QACZ,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,EAAG,MAAM;QACrE,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,EAAG,SAAS;QACxE,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,EAAG,SAAS;QACxE,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,EAAG,QAAQ;QACvE,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,EAAG,OAAO;QACtE,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,EAAG,SAAS;KACzE;IAED,UAAU,EAAE,EAAE;CACf,CAAA"}
1
+ {"version":3,"file":"light.js","sourceRoot":"","sources":["../../src/themes/light.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,IAAI,EAAE,OAAO;IAEb,UAAU,EAAE,SAAS,EAAE,WAAW;IAElC,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,SAAS,EAAE,YAAY;QAC9B,WAAW,EAAE,GAAG;KACjB;IAED,IAAI,EAAE;QACJ,IAAI,EAAE,0BAA0B,EAAG,YAAY;QAC/C,MAAM,EAAE,SAAS,EAAmB,YAAY;QAChD,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,SAAS,EAAe,YAAY;QAChD,aAAa,EAAE,SAAS,EAAY,YAAY;QAChD,UAAU,EAAE,uCAAuC;QACnD,QAAQ,EAAE,EAAE;QACZ,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE;YACZ,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,wBAAwB;SAChC;KACF;IAED,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS,EAAM,YAAY;QACnC,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,SAAS,EAAE,YAAY;QACnC,aAAa,EAAE,CAAC;KACjB;IAED,KAAK,EAAE;QACL,IAAI,EAAE,0BAA0B;QAChC,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,CAAC;QACd,eAAe,EAAE,KAAK;QACtB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,EAAE;KACjB;IAED,WAAW,EAAE;QACX,UAAU,EAAE,2BAA2B;QACvC,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,SAAS;QACzB,UAAU,EAAE,uCAAuC;QACnD,QAAQ,EAAE,EAAE;KACb;IAED,KAAK,EAAE;QACL,YAAY,EAAE,2BAA2B,EAAE,iBAAiB;QAC5D,WAAW,EAAE,2BAA2B;QACxC,YAAY,EAAE,0BAA0B;QACxC,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,2BAA2B;QAC7C,eAAe,EAAE,SAAS,EAAkB,YAAY;QACxD,gBAAgB,EAAE,uCAAuC;QACzD,cAAc,EAAE,EAAE;QAClB,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,EAAE;KAClB;IAED,YAAY,EAAE;QACZ,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,EAAG,MAAM;QACrE,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,EAAG,SAAS;QACxE,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,EAAG,SAAS;QACxE,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,EAAG,QAAQ;QACvE,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,EAAG,OAAO;QACtE,GAAG,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,EAAG,SAAS;KACzE;IAED,UAAU,EAAE,EAAE;CACf,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"midnight.d.ts","sourceRoot":"","sources":["../../src/themes/midnight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,WAgE3B,CAAA"}
1
+ {"version":3,"file":"midnight.d.ts","sourceRoot":"","sources":["../../src/themes/midnight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,WA6E3B,CAAA"}
@@ -22,7 +22,7 @@ export const midnightTheme = {
22
22
  sublabelFontSize: 8,
23
23
  refIndicator: {
24
24
  icon: 'arrow',
25
- color: 'rgba(107, 114, 128, 0.5)',
25
+ color: 'rgba(203, 213, 225, 0.95)',
26
26
  },
27
27
  },
28
28
  edge: {
@@ -49,6 +49,18 @@ export const midnightTheme = {
49
49
  fontFamily: "'JetBrains Mono', monospace",
50
50
  fontSize: 11,
51
51
  },
52
+ lanes: {
53
+ bandFillEven: 'rgba(17, 17, 17, 0.7)',
54
+ bandFillOdd: 'rgba(0, 0, 0, 0)',
55
+ dividerColor: 'rgba(55, 65, 81, 0.6)', // gray-700
56
+ dividerWidth: 1,
57
+ headerBackground: 'rgba(0, 0, 0, 0.92)',
58
+ headerTextColor: '#00ff88',
59
+ headerFontFamily: "'JetBrains Mono', monospace",
60
+ headerFontSize: 10,
61
+ headerSize: 26,
62
+ headerPadding: 10,
63
+ },
52
64
  presetColors: {
53
65
  '1': { fill: 'rgba(255, 0, 60, 0.15)', stroke: '#ff003c' }, // neon red
54
66
  '2': { fill: 'rgba(255, 140, 0, 0.15)', stroke: '#ff8c00' }, // neon orange
@@ -1 +1 @@
1
- {"version":3,"file":"midnight.js","sourceRoot":"","sources":["../../src/themes/midnight.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,IAAI,EAAE,UAAU;IAEhB,UAAU,EAAE,SAAS;IAErB,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,GAAG;KACjB;IAED,IAAI,EAAE;QACJ,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,SAAS,EAAgB,WAAW;QAC5C,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,SAAS,EAAY,WAAW;QAC5C,aAAa,EAAE,SAAS,EAAS,WAAW;QAC5C,UAAU,EAAE,0CAA0C;QACtD,QAAQ,EAAE,EAAE;QACZ,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE;YACZ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,0BAA0B;SAClC;KACF;IAED,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS,EAAO,WAAW;QACnC,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,SAAS,EAAG,WAAW;QACnC,aAAa,EAAE,CAAC;KACjB;IAED,KAAK,EAAE;QACL,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,CAAC;QACd,eAAe,EAAE,KAAK;QACtB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,CAAC;KAChB;IAED,WAAW,EAAE;QACX,UAAU,EAAE,qBAAqB;QACjC,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,SAAS;QACzB,UAAU,EAAE,6BAA6B;QACzC,QAAQ,EAAE,EAAE;KACb;IAED,YAAY,EAAE;QACZ,GAAG,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,WAAW;QAC1E,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,cAAc;QAC7E,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,cAAc;QAC7E,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,aAAa;QAC5E,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,YAAY;QAC3E,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,cAAc;KAC9E;IAED,UAAU,EAAE,EAAE;CACf,CAAA"}
1
+ {"version":3,"file":"midnight.js","sourceRoot":"","sources":["../../src/themes/midnight.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,IAAI,EAAE,UAAU;IAEhB,UAAU,EAAE,SAAS;IAErB,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,GAAG;KACjB;IAED,IAAI,EAAE;QACJ,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,SAAS,EAAgB,WAAW;QAC5C,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,SAAS,EAAY,WAAW;QAC5C,aAAa,EAAE,SAAS,EAAS,WAAW;QAC5C,UAAU,EAAE,0CAA0C;QACtD,QAAQ,EAAE,EAAE;QACZ,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE;YACZ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,2BAA2B;SACnC;KACF;IAED,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS,EAAO,WAAW;QACnC,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,SAAS,EAAG,WAAW;QACnC,aAAa,EAAE,CAAC;KACjB;IAED,KAAK,EAAE;QACL,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,CAAC;QACd,eAAe,EAAE,KAAK;QACtB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,CAAC;KAChB;IAED,WAAW,EAAE;QACX,UAAU,EAAE,qBAAqB;QACjC,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,SAAS;QACzB,UAAU,EAAE,6BAA6B;QACzC,QAAQ,EAAE,EAAE;KACb;IAED,KAAK,EAAE;QACL,YAAY,EAAE,uBAAuB;QACrC,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,uBAAuB,EAAI,WAAW;QACpD,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,qBAAqB;QACvC,eAAe,EAAE,SAAS;QAC1B,gBAAgB,EAAE,6BAA6B;QAC/C,cAAc,EAAE,EAAE;QAClB,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,EAAE;KAClB;IAED,YAAY,EAAE;QACZ,GAAG,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAI,MAAM,EAAE,SAAS,EAAE,EAAG,WAAW;QAC1E,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,cAAc;QAC7E,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,cAAc;QAC7E,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,aAAa;QAC5E,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,YAAY;QAC3E,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAG,MAAM,EAAE,SAAS,EAAE,EAAG,cAAc;KAC9E;IAED,UAAU,EAAE,EAAE;CACf,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/themes/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,EACZ,MAAM,aAAa,CAAA;AAGpB,oDAAoD;AACpD,wBAAgB,YAAY,CAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAC9B,IAAI,GAAE,WAAuB,GAC5B,WAAW,CAcb;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,WAAW,GACjB,WAAW,CAsBb;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,WAAW,GACjB,YAAY,CA0Cd"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/themes/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,EACZ,MAAM,aAAa,CAAA;AAGpB,oDAAoD;AACpD,wBAAgB,YAAY,CAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAC9B,IAAI,GAAE,WAAuB,GAC5B,WAAW,CAmBb;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,WAAW,GACjB,WAAW,CAsBb;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,WAAW,GACjB,YAAY,CA0Cd"}
@@ -11,8 +11,13 @@ export function resolveTheme(partial, base = darkTheme) {
11
11
  edge: { ...base.edge, ...partial.edge },
12
12
  group: { ...base.group, ...partial.group },
13
13
  breadcrumbs: { ...base.breadcrumbs, ...partial.breadcrumbs },
14
+ lanes: { ...base.lanes, ...partial.lanes },
14
15
  presetColors: { ...base.presetColors, ...partial.presetColors },
15
16
  categories: { ...base.categories, ...partial.categories },
17
+ icons: partial.icons
18
+ ? { ...(base.icons ?? {}), ...partial.icons }
19
+ : base.icons,
20
+ nodeActions: partial.nodeActions ?? base.nodeActions,
16
21
  };
17
22
  }
18
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/themes/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/themes/resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { CanvasTheme } from '../types.js';
2
+ /**
3
+ * Roadmap theme — designed for timeline/column layouts like Now/Next/Later,
4
+ * quarter-based planning, or swim-lane roadmaps. Soft neutral background,
5
+ * muted lane bands, and purpose-built categories (initiative, milestone,
6
+ * outcome, blocker, parking-lot).
7
+ *
8
+ * The theme is agnostic about what "columns" mean — the consumer decides
9
+ * whether they represent quarters, ordinal buckets, phases, or anything
10
+ * else. It just ships good visual defaults for roadmap-shaped work.
11
+ */
12
+ export declare const roadmapTheme: CanvasTheme;
13
+ //# sourceMappingURL=roadmap.d.ts.map