footprint-explainable-ui 0.3.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/README.md +42 -3
  2. package/dist/adapters/fromRuntimeSnapshot.d.ts +52 -0
  3. package/dist/adapters/fromRuntimeSnapshot.d.ts.map +1 -0
  4. package/dist/adapters/fromRuntimeSnapshot.js +97 -0
  5. package/dist/adapters/fromRuntimeSnapshot.js.map +1 -0
  6. package/dist/components/ExplainableShell/ExplainableShell.d.ts +26 -0
  7. package/dist/components/ExplainableShell/ExplainableShell.d.ts.map +1 -0
  8. package/dist/components/ExplainableShell/ExplainableShell.js +94 -0
  9. package/dist/components/ExplainableShell/ExplainableShell.js.map +1 -0
  10. package/dist/components/ExplainableShell/index.d.ts +3 -0
  11. package/dist/components/ExplainableShell/index.d.ts.map +1 -0
  12. package/dist/components/ExplainableShell/index.js +2 -0
  13. package/dist/components/ExplainableShell/index.js.map +1 -0
  14. package/dist/components/FlowchartView/FlowchartView.d.ts +20 -0
  15. package/dist/components/FlowchartView/FlowchartView.d.ts.map +1 -0
  16. package/dist/components/FlowchartView/FlowchartView.js +80 -0
  17. package/dist/components/FlowchartView/FlowchartView.js.map +1 -0
  18. package/dist/components/FlowchartView/SubflowBreadcrumb.d.ts +11 -0
  19. package/dist/components/FlowchartView/SubflowBreadcrumb.d.ts.map +1 -0
  20. package/dist/components/FlowchartView/SubflowBreadcrumb.js +49 -0
  21. package/dist/components/FlowchartView/SubflowBreadcrumb.js.map +1 -0
  22. package/dist/components/FlowchartView/SubflowTree.d.ts +36 -0
  23. package/dist/components/FlowchartView/SubflowTree.d.ts.map +1 -0
  24. package/dist/components/FlowchartView/SubflowTree.js +143 -0
  25. package/dist/components/FlowchartView/SubflowTree.js.map +1 -0
  26. package/dist/components/FlowchartView/TracedFlowchartView.d.ts +20 -0
  27. package/dist/components/FlowchartView/TracedFlowchartView.d.ts.map +1 -0
  28. package/dist/components/FlowchartView/TracedFlowchartView.js +101 -0
  29. package/dist/components/FlowchartView/TracedFlowchartView.js.map +1 -0
  30. package/dist/components/FlowchartView/index.d.ts +11 -0
  31. package/dist/components/FlowchartView/index.d.ts.map +1 -0
  32. package/dist/components/FlowchartView/index.js +6 -0
  33. package/dist/components/FlowchartView/index.js.map +1 -0
  34. package/dist/components/FlowchartView/specToReactFlow.d.ts +56 -0
  35. package/dist/components/FlowchartView/specToReactFlow.d.ts.map +1 -0
  36. package/dist/components/FlowchartView/specToReactFlow.js +202 -0
  37. package/dist/components/FlowchartView/specToReactFlow.js.map +1 -0
  38. package/dist/components/FlowchartView/useSubflowNavigation.d.ts +35 -0
  39. package/dist/components/FlowchartView/useSubflowNavigation.d.ts.map +1 -0
  40. package/dist/components/FlowchartView/useSubflowNavigation.js +80 -0
  41. package/dist/components/FlowchartView/useSubflowNavigation.js.map +1 -0
  42. package/dist/components/GanttTimeline/GanttTimeline.d.ts +18 -0
  43. package/dist/components/GanttTimeline/GanttTimeline.d.ts.map +1 -0
  44. package/dist/components/GanttTimeline/GanttTimeline.js +123 -0
  45. package/dist/components/GanttTimeline/GanttTimeline.js.map +1 -0
  46. package/dist/components/GanttTimeline/index.d.ts +3 -0
  47. package/dist/components/GanttTimeline/index.d.ts.map +1 -0
  48. package/dist/components/GanttTimeline/index.js +2 -0
  49. package/dist/components/GanttTimeline/index.js.map +1 -0
  50. package/dist/components/MemoryInspector/MemoryInspector.d.ts +19 -0
  51. package/dist/components/MemoryInspector/MemoryInspector.d.ts.map +1 -0
  52. package/dist/components/MemoryInspector/MemoryInspector.js +95 -0
  53. package/dist/components/MemoryInspector/MemoryInspector.js.map +1 -0
  54. package/dist/components/MemoryInspector/index.d.ts +3 -0
  55. package/dist/components/MemoryInspector/index.d.ts.map +1 -0
  56. package/dist/components/MemoryInspector/index.js +2 -0
  57. package/dist/components/MemoryInspector/index.js.map +1 -0
  58. package/dist/components/NarrativeLog/NarrativeLog.d.ts +15 -0
  59. package/dist/components/NarrativeLog/NarrativeLog.d.ts.map +1 -0
  60. package/dist/components/NarrativeLog/NarrativeLog.js +65 -0
  61. package/dist/components/NarrativeLog/NarrativeLog.js.map +1 -0
  62. package/dist/components/NarrativeLog/index.d.ts +3 -0
  63. package/dist/components/NarrativeLog/index.d.ts.map +1 -0
  64. package/dist/components/NarrativeLog/index.js +2 -0
  65. package/dist/components/NarrativeLog/index.js.map +1 -0
  66. package/dist/components/NarrativeTrace/NarrativeTrace.d.ts +13 -0
  67. package/dist/components/NarrativeTrace/NarrativeTrace.d.ts.map +1 -0
  68. package/dist/components/NarrativeTrace/NarrativeTrace.js +127 -0
  69. package/dist/components/NarrativeTrace/NarrativeTrace.js.map +1 -0
  70. package/dist/components/NarrativeTrace/index.d.ts +3 -0
  71. package/dist/components/NarrativeTrace/index.d.ts.map +1 -0
  72. package/dist/components/NarrativeTrace/index.js +2 -0
  73. package/dist/components/NarrativeTrace/index.js.map +1 -0
  74. package/dist/components/ResultPanel/ResultPanel.d.ts +11 -0
  75. package/dist/components/ResultPanel/ResultPanel.d.ts.map +1 -0
  76. package/dist/components/ResultPanel/ResultPanel.js +54 -0
  77. package/dist/components/ResultPanel/ResultPanel.js.map +1 -0
  78. package/dist/components/ResultPanel/index.d.ts +3 -0
  79. package/dist/components/ResultPanel/index.d.ts.map +1 -0
  80. package/dist/components/ResultPanel/index.js +2 -0
  81. package/dist/components/ResultPanel/index.js.map +1 -0
  82. package/dist/components/ScopeDiff/ScopeDiff.d.ts +17 -0
  83. package/dist/components/ScopeDiff/ScopeDiff.d.ts.map +1 -0
  84. package/dist/components/ScopeDiff/ScopeDiff.js +87 -0
  85. package/dist/components/ScopeDiff/ScopeDiff.js.map +1 -0
  86. package/dist/components/ScopeDiff/index.d.ts +3 -0
  87. package/dist/components/ScopeDiff/index.d.ts.map +1 -0
  88. package/dist/components/ScopeDiff/index.js +2 -0
  89. package/dist/components/ScopeDiff/index.js.map +1 -0
  90. package/dist/components/SnapshotPanel/SnapshotPanel.d.ts +17 -0
  91. package/dist/components/SnapshotPanel/SnapshotPanel.d.ts.map +1 -0
  92. package/dist/components/SnapshotPanel/SnapshotPanel.js +85 -0
  93. package/dist/components/SnapshotPanel/SnapshotPanel.js.map +1 -0
  94. package/dist/components/SnapshotPanel/index.d.ts +3 -0
  95. package/dist/components/SnapshotPanel/index.d.ts.map +1 -0
  96. package/dist/components/SnapshotPanel/index.js +2 -0
  97. package/dist/components/SnapshotPanel/index.js.map +1 -0
  98. package/dist/components/StageNode/StageNode.d.ts +31 -0
  99. package/dist/components/StageNode/StageNode.d.ts.map +1 -0
  100. package/dist/components/StageNode/StageNode.js +134 -0
  101. package/dist/components/StageNode/StageNode.js.map +1 -0
  102. package/dist/components/StageNode/index.d.ts +3 -0
  103. package/dist/components/StageNode/index.d.ts.map +1 -0
  104. package/dist/components/StageNode/index.js +2 -0
  105. package/dist/components/StageNode/index.js.map +1 -0
  106. package/dist/components/TimeTravelControls/TimeTravelControls.d.ts +13 -0
  107. package/dist/components/TimeTravelControls/TimeTravelControls.d.ts.map +1 -0
  108. package/dist/components/TimeTravelControls/TimeTravelControls.js +104 -0
  109. package/dist/components/TimeTravelControls/TimeTravelControls.js.map +1 -0
  110. package/dist/components/TimeTravelControls/index.d.ts +3 -0
  111. package/dist/components/TimeTravelControls/index.d.ts.map +1 -0
  112. package/dist/components/TimeTravelControls/index.js +2 -0
  113. package/dist/components/TimeTravelControls/index.js.map +1 -0
  114. package/dist/components/TimeTravelDebugger/TimeTravelDebugger.d.ts +22 -0
  115. package/dist/components/TimeTravelDebugger/TimeTravelDebugger.d.ts.map +1 -0
  116. package/dist/components/TimeTravelDebugger/TimeTravelDebugger.js +104 -0
  117. package/dist/components/TimeTravelDebugger/TimeTravelDebugger.js.map +1 -0
  118. package/dist/components/TimeTravelDebugger/index.d.ts +3 -0
  119. package/dist/components/TimeTravelDebugger/index.d.ts.map +1 -0
  120. package/dist/components/TimeTravelDebugger/index.js +2 -0
  121. package/dist/components/TimeTravelDebugger/index.js.map +1 -0
  122. package/dist/flowchart.cjs +704 -220
  123. package/dist/flowchart.cjs.map +1 -1
  124. package/dist/flowchart.d.cts +55 -1
  125. package/dist/flowchart.d.ts +55 -1
  126. package/dist/flowchart.d.ts.map +1 -0
  127. package/dist/flowchart.js +700 -214
  128. package/dist/flowchart.js.map +1 -1
  129. package/dist/index.cjs +849 -76
  130. package/dist/index.cjs.map +1 -1
  131. package/dist/index.d.cts +95 -3
  132. package/dist/index.d.ts +95 -3
  133. package/dist/index.d.ts.map +1 -0
  134. package/dist/index.js +851 -80
  135. package/dist/index.js.map +1 -1
  136. package/dist/theme/ThemeProvider.d.ts +13 -0
  137. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  138. package/dist/theme/ThemeProvider.js +16 -0
  139. package/dist/theme/ThemeProvider.js.map +1 -0
  140. package/dist/theme/index.d.ts +7 -0
  141. package/dist/theme/index.d.ts.map +1 -0
  142. package/dist/theme/index.js +5 -0
  143. package/dist/theme/index.js.map +1 -0
  144. package/dist/theme/presets.d.ts +15 -0
  145. package/dist/theme/presets.d.ts.map +1 -0
  146. package/dist/theme/presets.js +70 -0
  147. package/dist/theme/presets.js.map +1 -0
  148. package/dist/theme/styles.d.ts +32 -0
  149. package/dist/theme/styles.d.ts.map +1 -0
  150. package/dist/theme/styles.js +37 -0
  151. package/dist/theme/styles.js.map +1 -0
  152. package/dist/theme/tokens.d.ts +28 -0
  153. package/dist/theme/tokens.d.ts.map +1 -0
  154. package/dist/theme/tokens.js +58 -0
  155. package/dist/theme/tokens.js.map +1 -0
  156. package/dist/tsconfig.tsbuildinfo +1 -0
  157. package/dist/types.d.ts +35 -0
  158. package/dist/types.d.ts.map +1 -0
  159. package/dist/types.js +2 -0
  160. package/dist/types.js.map +1 -0
  161. package/package.json +10 -4
@@ -0,0 +1,13 @@
1
+ import type { ThemeTokens } from "./tokens";
2
+ export declare function useFootprintTheme(): ThemeTokens;
3
+ interface FootprintThemeProps {
4
+ tokens?: ThemeTokens;
5
+ children: React.ReactNode;
6
+ }
7
+ /**
8
+ * Optional theme provider — wraps children with CSS custom properties.
9
+ * Consumers can also just set --fp-* CSS variables directly.
10
+ */
11
+ export declare function FootprintTheme({ tokens, children }: FootprintThemeProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=ThemeProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5C,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C;AAED,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,MAAW,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAU5E"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext } from "react";
3
+ import { tokensToCSSVars } from "./tokens";
4
+ const ThemeContext = createContext({});
5
+ export function useFootprintTheme() {
6
+ return useContext(ThemeContext);
7
+ }
8
+ /**
9
+ * Optional theme provider — wraps children with CSS custom properties.
10
+ * Consumers can also just set --fp-* CSS variables directly.
11
+ */
12
+ export function FootprintTheme({ tokens = {}, children }) {
13
+ const cssVars = tokensToCSSVars(tokens);
14
+ return (_jsx(ThemeContext.Provider, { value: tokens, children: _jsx("div", { style: cssVars, className: "fp-theme-root", children: children }) }));
15
+ }
16
+ //# sourceMappingURL=ThemeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,YAAY,GAAG,aAAa,CAAc,EAAE,CAAC,CAAC;AAEpD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;AAClC,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,EAAuB;IAC3E,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAExC,OAAO,CACL,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAClC,cAAK,KAAK,EAAE,OAA8B,EAAE,SAAS,EAAC,eAAe,YAClE,QAAQ,GACL,GACgB,CACzB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { FootprintTheme, useFootprintTheme } from "./ThemeProvider";
2
+ export { tokensToCSSVars, defaultTokens } from "./tokens";
3
+ export type { ThemeTokens } from "./tokens";
4
+ export { theme, fontSize, padding, v } from "./styles";
5
+ export { themePresets, coolDark, warmDark, warmLight } from "./presets";
6
+ export type { ThemePresetName } from "./presets";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { FootprintTheme, useFootprintTheme } from "./ThemeProvider";
2
+ export { tokensToCSSVars, defaultTokens } from "./tokens";
3
+ export { theme, fontSize, padding, v } from "./styles";
4
+ export { themePresets, coolDark, warmDark, warmLight } from "./presets";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ThemeTokens } from "./tokens";
2
+ /** Cool dark theme (the library default) */
3
+ export declare const coolDark: ThemeTokens;
4
+ /** Warm dark theme — charcoal-purple palette */
5
+ export declare const warmDark: ThemeTokens;
6
+ /** Warm light theme — cream/peach palette */
7
+ export declare const warmLight: ThemeTokens;
8
+ /** All built-in theme presets */
9
+ export declare const themePresets: {
10
+ readonly coolDark: ThemeTokens;
11
+ readonly warmDark: ThemeTokens;
12
+ readonly warmLight: ThemeTokens;
13
+ };
14
+ export type ThemePresetName = keyof typeof themePresets;
15
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/theme/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,4CAA4C;AAC5C,eAAO,MAAM,QAAQ,EAAE,WAmBtB,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,QAAQ,EAAE,WAmBtB,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,SAAS,EAAE,WAmBvB,CAAC;AAEF,iCAAiC;AACjC,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,YAAY,CAAC"}
@@ -0,0 +1,70 @@
1
+ /** Cool dark theme (the library default) */
2
+ export const coolDark = {
3
+ colors: {
4
+ primary: "#6366f1",
5
+ success: "#22c55e",
6
+ error: "#ef4444",
7
+ warning: "#f59e0b",
8
+ bgPrimary: "#0f172a",
9
+ bgSecondary: "#1e293b",
10
+ bgTertiary: "#334155",
11
+ textPrimary: "#f8fafc",
12
+ textSecondary: "#94a3b8",
13
+ textMuted: "#64748b",
14
+ border: "#334155",
15
+ },
16
+ radius: "8px",
17
+ fontFamily: {
18
+ sans: "Inter, system-ui, -apple-system, sans-serif",
19
+ mono: "'JetBrains Mono', 'Fira Code', monospace",
20
+ },
21
+ };
22
+ /** Warm dark theme — charcoal-purple palette */
23
+ export const warmDark = {
24
+ colors: {
25
+ primary: "#7c6cf0",
26
+ success: "#3dd68c",
27
+ error: "#f06292",
28
+ warning: "#ffb74d",
29
+ bgPrimary: "#1e1a2e",
30
+ bgSecondary: "#2a2540",
31
+ bgTertiary: "#3a3455",
32
+ textPrimary: "#f0e6d6",
33
+ textSecondary: "#a89eb4",
34
+ textMuted: "#6e6480",
35
+ border: "#3a3455",
36
+ },
37
+ radius: "8px",
38
+ fontFamily: {
39
+ sans: "Inter, system-ui, -apple-system, sans-serif",
40
+ mono: "'JetBrains Mono', 'Fira Code', monospace",
41
+ },
42
+ };
43
+ /** Warm light theme — cream/peach palette */
44
+ export const warmLight = {
45
+ colors: {
46
+ primary: "#7c6cf0",
47
+ success: "#22a860",
48
+ error: "#d94452",
49
+ warning: "#e09030",
50
+ bgPrimary: "#faf5ef",
51
+ bgSecondary: "#f0e6d6",
52
+ bgTertiary: "#e4d5c3",
53
+ textPrimary: "#2e2938",
54
+ textSecondary: "#5c5468",
55
+ textMuted: "#8a7e96",
56
+ border: "#d6c8b4",
57
+ },
58
+ radius: "8px",
59
+ fontFamily: {
60
+ sans: "Inter, system-ui, -apple-system, sans-serif",
61
+ mono: "'JetBrains Mono', 'Fira Code', monospace",
62
+ },
63
+ };
64
+ /** All built-in theme presets */
65
+ export const themePresets = {
66
+ coolDark,
67
+ warmDark,
68
+ warmLight,
69
+ };
70
+ //# sourceMappingURL=presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/theme/presets.ts"],"names":[],"mappings":"AAEA,4CAA4C;AAC5C,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACnC,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE;QACV,IAAI,EAAE,6CAA6C;QACnD,IAAI,EAAE,0CAA0C;KACjD;CACF,CAAC;AAEF,gDAAgD;AAChD,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACnC,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE;QACV,IAAI,EAAE,6CAA6C;QACnD,IAAI,EAAE,0CAA0C;KACjD;CACF,CAAC;AAEF,6CAA6C;AAC7C,MAAM,CAAC,MAAM,SAAS,GAAgB;IACpC,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE;QACV,IAAI,EAAE,6CAA6C;QACnD,IAAI,EAAE,0CAA0C;KACjD;CACF,CAAC;AAEF,iCAAiC;AACjC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,QAAQ;IACR,SAAS;CACD,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { Size } from "../types";
2
+ /**
3
+ * Helper to resolve a CSS variable with a fallback.
4
+ * Usage: v("--fp-color-primary", "#6366f1")
5
+ */
6
+ export declare function v(varName: string, fallback: string): string;
7
+ /** Shorthand for common theme variables */
8
+ export declare const theme: {
9
+ readonly primary: string;
10
+ readonly success: string;
11
+ readonly error: string;
12
+ readonly warning: string;
13
+ readonly bgPrimary: string;
14
+ readonly bgSecondary: string;
15
+ readonly bgTertiary: string;
16
+ readonly textPrimary: string;
17
+ readonly textSecondary: string;
18
+ readonly textMuted: string;
19
+ readonly border: string;
20
+ readonly radius: string;
21
+ readonly fontSans: string;
22
+ readonly fontMono: string;
23
+ };
24
+ /** Font sizes per size variant */
25
+ export declare const fontSize: Record<Size, {
26
+ label: number;
27
+ body: number;
28
+ small: number;
29
+ }>;
30
+ /** Padding per size variant */
31
+ export declare const padding: Record<Size, number>;
32
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/theme/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC;;;GAGG;AACH,wBAAgB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,2CAA2C;AAC3C,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;CAeR,CAAC;AAEX,kCAAkC;AAClC,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAIjF,CAAC;AAEF,+BAA+B;AAC/B,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAIxC,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Helper to resolve a CSS variable with a fallback.
3
+ * Usage: v("--fp-color-primary", "#6366f1")
4
+ */
5
+ export function v(varName, fallback) {
6
+ return `var(${varName}, ${fallback})`;
7
+ }
8
+ /** Shorthand for common theme variables */
9
+ export const theme = {
10
+ primary: v("--fp-color-primary", "#6366f1"),
11
+ success: v("--fp-color-success", "#22c55e"),
12
+ error: v("--fp-color-error", "#ef4444"),
13
+ warning: v("--fp-color-warning", "#f59e0b"),
14
+ bgPrimary: v("--fp-bg-primary", "#0f172a"),
15
+ bgSecondary: v("--fp-bg-secondary", "#1e293b"),
16
+ bgTertiary: v("--fp-bg-tertiary", "#334155"),
17
+ textPrimary: v("--fp-text-primary", "#f8fafc"),
18
+ textSecondary: v("--fp-text-secondary", "#94a3b8"),
19
+ textMuted: v("--fp-text-muted", "#64748b"),
20
+ border: v("--fp-border", "#334155"),
21
+ radius: v("--fp-radius", "8px"),
22
+ fontSans: v("--fp-font-sans", "Inter, system-ui, -apple-system, sans-serif"),
23
+ fontMono: v("--fp-font-mono", "'JetBrains Mono', 'Fira Code', monospace"),
24
+ };
25
+ /** Font sizes per size variant */
26
+ export const fontSize = {
27
+ compact: { label: 10, body: 11, small: 9 },
28
+ default: { label: 11, body: 12, small: 10 },
29
+ detailed: { label: 12, body: 13, small: 11 },
30
+ };
31
+ /** Padding per size variant */
32
+ export const padding = {
33
+ compact: 8,
34
+ default: 12,
35
+ detailed: 16,
36
+ };
37
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/theme/styles.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,CAAC,CAAC,OAAe,EAAE,QAAgB;IACjD,OAAO,OAAO,OAAO,KAAK,QAAQ,GAAG,CAAC;AACxC,CAAC;AAED,2CAA2C;AAC3C,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,OAAO,EAAE,CAAC,CAAC,oBAAoB,EAAE,SAAS,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,oBAAoB,EAAE,SAAS,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,kBAAkB,EAAE,SAAS,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,oBAAoB,EAAE,SAAS,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,mBAAmB,EAAE,SAAS,CAAC;IAC9C,UAAU,EAAE,CAAC,CAAC,kBAAkB,EAAE,SAAS,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,mBAAmB,EAAE,SAAS,CAAC;IAC9C,aAAa,EAAE,CAAC,CAAC,qBAAqB,EAAE,SAAS,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC;IAC/B,QAAQ,EAAE,CAAC,CAAC,gBAAgB,EAAE,6CAA6C,CAAC;IAC5E,QAAQ,EAAE,CAAC,CAAC,gBAAgB,EAAE,0CAA0C,CAAC;CACjE,CAAC;AAEX,kCAAkC;AAClC,MAAM,CAAC,MAAM,QAAQ,GAAiE;IACpF,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;IAC1C,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3C,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;CAC7C,CAAC;AAEF,+BAA+B;AAC/B,MAAM,CAAC,MAAM,OAAO,GAAyB;IAC3C,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -0,0 +1,28 @@
1
+ /** Default theme tokens — consumers override via CSS variables or ThemeProvider. */
2
+ export interface ThemeTokens {
3
+ colors?: {
4
+ primary?: string;
5
+ success?: string;
6
+ error?: string;
7
+ warning?: string;
8
+ bgPrimary?: string;
9
+ bgSecondary?: string;
10
+ bgTertiary?: string;
11
+ textPrimary?: string;
12
+ textSecondary?: string;
13
+ textMuted?: string;
14
+ border?: string;
15
+ };
16
+ radius?: string;
17
+ fontFamily?: {
18
+ sans?: string;
19
+ mono?: string;
20
+ };
21
+ }
22
+ /** Maps ThemeTokens to CSS custom property assignments. */
23
+ export declare function tokensToCSSVars(tokens: ThemeTokens): Record<string, string>;
24
+ /** Default dark theme values (used as CSS variable fallbacks). */
25
+ export declare const defaultTokens: Required<{
26
+ [K in keyof ThemeTokens]-?: Required<ThemeTokens[K]>;
27
+ }>;
28
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoB3E;AAED,kEAAkE;AAClE,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC;KAClC,CAAC,IAAI,MAAM,WAAW,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CACrD,CAmBA,CAAC"}
@@ -0,0 +1,58 @@
1
+ /** Maps ThemeTokens to CSS custom property assignments. */
2
+ export function tokensToCSSVars(tokens) {
3
+ const vars = {};
4
+ if (tokens.colors) {
5
+ const c = tokens.colors;
6
+ if (c.primary)
7
+ vars["--fp-color-primary"] = c.primary;
8
+ if (c.success)
9
+ vars["--fp-color-success"] = c.success;
10
+ if (c.error)
11
+ vars["--fp-color-error"] = c.error;
12
+ if (c.warning)
13
+ vars["--fp-color-warning"] = c.warning;
14
+ if (c.bgPrimary)
15
+ vars["--fp-bg-primary"] = c.bgPrimary;
16
+ if (c.bgSecondary)
17
+ vars["--fp-bg-secondary"] = c.bgSecondary;
18
+ if (c.bgTertiary)
19
+ vars["--fp-bg-tertiary"] = c.bgTertiary;
20
+ if (c.textPrimary)
21
+ vars["--fp-text-primary"] = c.textPrimary;
22
+ if (c.textSecondary)
23
+ vars["--fp-text-secondary"] = c.textSecondary;
24
+ if (c.textMuted)
25
+ vars["--fp-text-muted"] = c.textMuted;
26
+ if (c.border)
27
+ vars["--fp-border"] = c.border;
28
+ }
29
+ if (tokens.radius)
30
+ vars["--fp-radius"] = tokens.radius;
31
+ if (tokens.fontFamily?.sans)
32
+ vars["--fp-font-sans"] = tokens.fontFamily.sans;
33
+ if (tokens.fontFamily?.mono)
34
+ vars["--fp-font-mono"] = tokens.fontFamily.mono;
35
+ return vars;
36
+ }
37
+ /** Default dark theme values (used as CSS variable fallbacks). */
38
+ export const defaultTokens = {
39
+ colors: {
40
+ primary: "#6366f1",
41
+ success: "#22c55e",
42
+ error: "#ef4444",
43
+ warning: "#f59e0b",
44
+ bgPrimary: "#0f172a",
45
+ bgSecondary: "#1e293b",
46
+ bgTertiary: "#334155",
47
+ textPrimary: "#f8fafc",
48
+ textSecondary: "#94a3b8",
49
+ textMuted: "#64748b",
50
+ border: "#334155",
51
+ },
52
+ radius: "8px",
53
+ fontFamily: {
54
+ sans: "Inter, system-ui, -apple-system, sans-serif",
55
+ mono: "'JetBrains Mono', 'Fira Code', monospace",
56
+ },
57
+ };
58
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"AAsBA,2DAA2D;AAC3D,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,CAAC,OAAO;YAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,CAAC,OAAO;YAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,CAAC,KAAK;YAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,CAAC,OAAO;YAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,CAAC,SAAS;YAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QACvD,IAAI,CAAC,CAAC,WAAW;YAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;QAC7D,IAAI,CAAC,CAAC,UAAU;YAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;QAC1D,IAAI,CAAC,CAAC,WAAW;YAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;QAC7D,IAAI,CAAC,CAAC,aAAa;YAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;QACnE,IAAI,CAAC,CAAC,SAAS;YAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QACvD,IAAI,CAAC,CAAC,MAAM;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,CAAC;IACD,IAAI,MAAM,CAAC,MAAM;QAAE,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACvD,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI;QAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;IAC7E,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI;QAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,aAAa,GAErB;IACH,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE;QACV,IAAI,EAAE,6CAA6C;QACnD,IAAI,EAAE,0CAA0C;KACjD;CACF,CAAC"}
@@ -0,0 +1 @@
1
+ {"root":["../src/flowchart.ts","../src/index.ts","../src/types.ts","../src/adapters/fromruntimesnapshot.ts","../src/components/explainableshell/explainableshell.tsx","../src/components/explainableshell/index.ts","../src/components/flowchartview/flowchartview.tsx","../src/components/flowchartview/subflowbreadcrumb.tsx","../src/components/flowchartview/subflowtree.tsx","../src/components/flowchartview/tracedflowchartview.tsx","../src/components/flowchartview/index.ts","../src/components/flowchartview/spectoreactflow.ts","../src/components/flowchartview/usesubflownavigation.ts","../src/components/gantttimeline/gantttimeline.tsx","../src/components/gantttimeline/index.ts","../src/components/memoryinspector/memoryinspector.tsx","../src/components/memoryinspector/index.ts","../src/components/narrativelog/narrativelog.tsx","../src/components/narrativelog/index.ts","../src/components/narrativetrace/narrativetrace.tsx","../src/components/narrativetrace/index.ts","../src/components/resultpanel/resultpanel.tsx","../src/components/resultpanel/index.ts","../src/components/scopediff/scopediff.tsx","../src/components/scopediff/index.ts","../src/components/snapshotpanel/snapshotpanel.tsx","../src/components/snapshotpanel/index.ts","../src/components/stagenode/stagenode.tsx","../src/components/stagenode/index.ts","../src/components/timetravelcontrols/timetravelcontrols.tsx","../src/components/timetravelcontrols/index.ts","../src/components/timetraveldebugger/timetraveldebugger.tsx","../src/components/timetraveldebugger/index.ts","../src/theme/themeprovider.tsx","../src/theme/index.ts","../src/theme/presets.ts","../src/theme/styles.ts","../src/theme/tokens.ts"],"version":"5.9.3"}
@@ -0,0 +1,35 @@
1
+ /** Snapshot of a single pipeline stage — the core data shape for all components. */
2
+ export interface StageSnapshot {
3
+ /** Internal stage identifier */
4
+ stageName: string;
5
+ /** Human-readable label */
6
+ stageLabel: string;
7
+ /** Accumulated memory state after this stage ran */
8
+ memory: Record<string, unknown>;
9
+ /** Narrative text describing what happened */
10
+ narrative: string;
11
+ /** When this stage started (ms from pipeline start) */
12
+ startMs: number;
13
+ /** How long this stage took (ms) */
14
+ durationMs: number;
15
+ /** Execution status */
16
+ status?: "pending" | "active" | "done" | "error";
17
+ /** Human-readable description of what this stage does */
18
+ description?: string;
19
+ /** Subflow identifier (when this stage is inside a subflow) */
20
+ subflowId?: string;
21
+ }
22
+ /** Component size variants */
23
+ export type Size = "compact" | "default" | "detailed";
24
+ /** Common props shared by all visualization components */
25
+ export interface BaseComponentProps {
26
+ /** Size variant */
27
+ size?: Size;
28
+ /** Strip all built-in styles — bring your own */
29
+ unstyled?: boolean;
30
+ /** Additional CSS class name */
31
+ className?: string;
32
+ /** Inline style overrides */
33
+ style?: React.CSSProperties;
34
+ }
35
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACjD,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,8BAA8B;AAC9B,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAEtD,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "footprint-explainable-ui",
3
- "version": "0.3.2",
3
+ "version": "0.5.0",
4
4
  "description": "Themeable React components for visualizing FootPrint pipeline execution",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -26,7 +26,12 @@
26
26
  "build": "tsup",
27
27
  "dev": "tsup --watch",
28
28
  "typecheck": "tsc --noEmit",
29
- "clean": "rm -rf dist"
29
+ "test": "vitest run",
30
+ "test:watch": "vitest",
31
+ "clean": "rm -rf dist",
32
+ "release:patch": "bash scripts/release.sh patch",
33
+ "release:minor": "bash scripts/release.sh minor",
34
+ "release:major": "bash scripts/release.sh major"
30
35
  },
31
36
  "peerDependencies": {
32
37
  "react": ">=18.0.0",
@@ -40,11 +45,12 @@
40
45
  "devDependencies": {
41
46
  "@types/react": "^19.0.0",
42
47
  "@types/react-dom": "^19.0.0",
48
+ "@xyflow/react": "^12.10.1",
43
49
  "react": "^19.2.0",
44
50
  "react-dom": "^19.2.0",
45
- "@xyflow/react": "^12.10.1",
46
51
  "tsup": "^8.4.0",
47
- "typescript": "^5.4.0"
52
+ "typescript": "^5.4.0",
53
+ "vitest": "^4.1.0"
48
54
  },
49
55
  "license": "MIT",
50
56
  "repository": {