@tldiagram/core-ui 1.87.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 (272) hide show
  1. package/dist/App.d.ts +1 -0
  2. package/dist/api/client.d.ts +143 -0
  3. package/dist/api/transport-vscode.d.ts +8 -0
  4. package/dist/api/transport.d.ts +1 -0
  5. package/dist/components/CodePreviewPanel-vscode.d.ts +7 -0
  6. package/dist/components/CodePreviewPanel.d.ts +9 -0
  7. package/dist/components/ConfirmDialog.d.ts +12 -0
  8. package/dist/components/ConnectorPanel.d.ts +21 -0
  9. package/dist/components/ContextBoundaryElement.d.ts +11 -0
  10. package/dist/components/ContextNeighborElement.d.ts +29 -0
  11. package/dist/components/ContextStraightConnector.d.ts +4 -0
  12. package/dist/components/CrossBranchControls.d.ts +9 -0
  13. package/dist/components/DependenciesOnboarding.d.ts +5 -0
  14. package/dist/components/DrawingCanvas.d.ts +39 -0
  15. package/dist/components/ElementLibrary-vscode.d.ts +7 -0
  16. package/dist/components/ElementLibrary.d.ts +22 -0
  17. package/dist/components/ElementNode.d.ts +36 -0
  18. package/dist/components/ElementPanel.d.ts +25 -0
  19. package/dist/components/ExploreOnboarding.d.ts +5 -0
  20. package/dist/components/ExplorePageOnboarding.d.ts +5 -0
  21. package/dist/components/ExportModal.d.ts +16 -0
  22. package/dist/components/FloatingEdge.d.ts +9 -0
  23. package/dist/components/GitSourceLinker.d.ts +8 -0
  24. package/dist/components/HeaderContext.d.ts +16 -0
  25. package/dist/components/Icons.d.ts +95 -0
  26. package/dist/components/ImportModal.d.ts +10 -0
  27. package/dist/components/InlineElementAdder.d.ts +17 -0
  28. package/dist/components/LayoutSection.d.ts +7 -0
  29. package/dist/components/LocalSourceLinker.d.ts +8 -0
  30. package/dist/components/MiniZoomOnboarding.d.ts +5 -0
  31. package/dist/components/NavBreadcrumb.d.ts +6 -0
  32. package/dist/components/NodeBody.d.ts +12 -0
  33. package/dist/components/NodeContainer.d.ts +8 -0
  34. package/dist/components/NodeHoverCard.d.ts +10 -0
  35. package/dist/components/PanelHeader.d.ts +8 -0
  36. package/dist/components/PanelUI.d.ts +3 -0
  37. package/dist/components/ProxyConnectorEdge.d.ts +4 -0
  38. package/dist/components/ProxyConnectorPanel.d.ts +9 -0
  39. package/dist/components/SafeBackground.d.ts +13 -0
  40. package/dist/components/ScrollIndicatorWrapper.d.ts +8 -0
  41. package/dist/components/SetChildModal.d.ts +10 -0
  42. package/dist/components/SetParentModal.d.ts +10 -0
  43. package/dist/components/SlidingPanel.d.ts +16 -0
  44. package/dist/components/TagUpsert.d.ts +8 -0
  45. package/dist/components/TopMenuBar.d.ts +8 -0
  46. package/dist/components/ViewBezierConnector.d.ts +4 -0
  47. package/dist/components/ViewDrawMenu.d.ts +22 -0
  48. package/dist/components/ViewEditorEdgeLabelLayout.d.ts +16 -0
  49. package/dist/components/ViewEditorOnboarding.d.ts +5 -0
  50. package/dist/components/ViewExplorer/TagManager/ColorPicker.d.ts +7 -0
  51. package/dist/components/ViewExplorer/TagManager/GroupNamingPopover.d.ts +10 -0
  52. package/dist/components/ViewExplorer/TagManager/LayerItem.d.ts +27 -0
  53. package/dist/components/ViewExplorer/TagManager/TagItem.d.ts +25 -0
  54. package/dist/components/ViewExplorer/TagManager/index.d.ts +21 -0
  55. package/dist/components/ViewExplorer/ViewNavigator.d.ts +11 -0
  56. package/dist/components/ViewExplorer/ViewSearch.d.ts +8 -0
  57. package/dist/components/ViewExplorer/ViewTree.d.ts +18 -0
  58. package/dist/components/ViewExplorer/index.d.ts +31 -0
  59. package/dist/components/ViewExplorer/types.d.ts +11 -0
  60. package/dist/components/ViewExplorer/utils.d.ts +6 -0
  61. package/dist/components/ViewExplorer-vscode.d.ts +6 -0
  62. package/dist/components/ViewFloatingMenu-vscode.d.ts +27 -0
  63. package/dist/components/ViewFloatingMenu.d.ts +39 -0
  64. package/dist/components/ViewGridNode.d.ts +29 -0
  65. package/dist/components/ViewHeaderButton.d.ts +11 -0
  66. package/dist/components/ViewPanel.d.ts +18 -0
  67. package/dist/components/ViewsGridOnboarding.d.ts +5 -0
  68. package/dist/components/ZUI/ZUICanvas.d.ts +18 -0
  69. package/dist/components/ZUI/index.d.ts +2 -0
  70. package/dist/components/ZUI/layout.d.ts +18 -0
  71. package/dist/components/ZUI/proxy.d.ts +25 -0
  72. package/dist/components/ZUI/renderer.d.ts +30 -0
  73. package/dist/components/ZUI/types.d.ts +140 -0
  74. package/dist/components/ZUI/useZUIInteraction.d.ts +21 -0
  75. package/dist/config/runtime-vscode.d.ts +22 -0
  76. package/dist/config/runtime.d.ts +5 -0
  77. package/dist/constants/colors.d.ts +27 -0
  78. package/dist/constants/diagramColors.d.ts +1 -0
  79. package/dist/context/ThemeContext.d.ts +27 -0
  80. package/dist/crossBranch/graph.d.ts +13 -0
  81. package/dist/crossBranch/resolve.d.ts +22 -0
  82. package/dist/crossBranch/settings.d.ts +6 -0
  83. package/dist/crossBranch/store.d.ts +11 -0
  84. package/dist/crossBranch/types.d.ts +96 -0
  85. package/dist/demo/DemoPage.d.ts +9 -0
  86. package/dist/demo/seed.d.ts +9 -0
  87. package/dist/demo/store.d.ts +137 -0
  88. package/dist/demo/viewEditor.d.ts +26 -0
  89. package/dist/favicon.svg +35 -0
  90. package/dist/hooks/useSafeFitView.d.ts +16 -0
  91. package/dist/index.css +1 -0
  92. package/dist/index.d.ts +115 -0
  93. package/dist/index.js +19966 -0
  94. package/dist/lib/vscodeBridge-vscode.d.ts +13 -0
  95. package/dist/lib/vscodeBridge.d.ts +5 -0
  96. package/dist/logo-120.png +0 -0
  97. package/dist/logo-bw.png +0 -0
  98. package/dist/logo-bw.svg +15 -0
  99. package/dist/logo-text.svg +51 -0
  100. package/dist/logo.svg +35 -0
  101. package/dist/pages/AppearanceSettings.d.ts +3 -0
  102. package/dist/pages/Dependencies.d.ts +1 -0
  103. package/dist/pages/InfiniteZoom.d.ts +7 -0
  104. package/dist/pages/Settings.d.ts +7 -0
  105. package/dist/pages/ViewEditor/components/EditorMenus.d.ts +24 -0
  106. package/dist/pages/ViewEditor/components/EditorOverlays.d.ts +30 -0
  107. package/dist/pages/ViewEditor/components/EmptyCanvasState.d.ts +7 -0
  108. package/dist/pages/ViewEditor/context.d.ts +13 -0
  109. package/dist/pages/ViewEditor/hooks/useCanvasInteractions.d.ts +201 -0
  110. package/dist/pages/ViewEditor/hooks/useDrawingEngine.d.ts +40 -0
  111. package/dist/pages/ViewEditor/hooks/useViewContextNeighbours.d.ts +20 -0
  112. package/dist/pages/ViewEditor/hooks/useViewData.d.ts +74 -0
  113. package/dist/pages/ViewEditor/index.d.ts +8 -0
  114. package/dist/pages/ViewEditor/utils.d.ts +14 -0
  115. package/dist/pages/Views.d.ts +6 -0
  116. package/dist/pages/ViewsGrid.d.ts +6 -0
  117. package/dist/pkg/importer/mermaid.d.ts +7 -0
  118. package/dist/pkg/importer/mermaid.test.d.ts +1 -0
  119. package/dist/platform/PlatformContext.d.ts +6 -0
  120. package/dist/platform/context.d.ts +3 -0
  121. package/dist/platform/local.d.ts +2 -0
  122. package/dist/platform/types.d.ts +17 -0
  123. package/dist/slots.d.ts +67 -0
  124. package/dist/theme.d.ts +2 -0
  125. package/dist/types/index.d.ts +193 -0
  126. package/dist/types/vscode-messages.d.ts +60 -0
  127. package/dist/utils/edgeDistribution.d.ts +34 -0
  128. package/dist/utils/githubApi.d.ts +4 -0
  129. package/dist/utils/githubCache.d.ts +17 -0
  130. package/dist/utils/ids.d.ts +2 -0
  131. package/dist/utils/technologyCatalog.d.ts +15 -0
  132. package/dist/utils/toast.d.ts +15 -0
  133. package/dist/utils/treesitter.d.ts +13 -0
  134. package/dist/utils/url.d.ts +12 -0
  135. package/package.json +159 -0
  136. package/src/App.tsx +141 -0
  137. package/src/api/client.ts +618 -0
  138. package/src/api/transport-vscode.ts +28 -0
  139. package/src/api/transport.ts +7 -0
  140. package/src/assets/logo-mark.svg +31 -0
  141. package/src/assets/logo-wordmark.svg +22 -0
  142. package/src/assets/logo.svg +35 -0
  143. package/src/components/CodePreviewPanel-vscode.tsx +85 -0
  144. package/src/components/CodePreviewPanel.tsx +384 -0
  145. package/src/components/ConfirmDialog.tsx +66 -0
  146. package/src/components/ConnectorPanel.tsx +403 -0
  147. package/src/components/ContextBoundaryElement.tsx +35 -0
  148. package/src/components/ContextNeighborElement.tsx +282 -0
  149. package/src/components/ContextStraightConnector.tsx +144 -0
  150. package/src/components/CrossBranchControls.tsx +105 -0
  151. package/src/components/DependenciesOnboarding.tsx +427 -0
  152. package/src/components/DrawingCanvas.tsx +391 -0
  153. package/src/components/ElementLibrary-vscode.tsx +9 -0
  154. package/src/components/ElementLibrary.tsx +512 -0
  155. package/src/components/ElementNode.tsx +1033 -0
  156. package/src/components/ElementPanel.tsx +928 -0
  157. package/src/components/ExploreOnboarding.tsx +347 -0
  158. package/src/components/ExplorePageOnboarding.tsx +383 -0
  159. package/src/components/ExportModal.tsx +132 -0
  160. package/src/components/FloatingEdge.tsx +115 -0
  161. package/src/components/GitSourceLinker.tsx +1053 -0
  162. package/src/components/HeaderContext.tsx +30 -0
  163. package/src/components/Icons.tsx +245 -0
  164. package/src/components/ImportModal.tsx +219 -0
  165. package/src/components/InlineElementAdder.tsx +216 -0
  166. package/src/components/LayoutSection.tsx +624 -0
  167. package/src/components/LocalSourceLinker.tsx +330 -0
  168. package/src/components/MiniZoomOnboarding.tsx +78 -0
  169. package/src/components/NavBreadcrumb.tsx +24 -0
  170. package/src/components/NodeBody.tsx +89 -0
  171. package/src/components/NodeContainer.tsx +58 -0
  172. package/src/components/NodeHoverCard.tsx +135 -0
  173. package/src/components/PanelHeader.tsx +36 -0
  174. package/src/components/PanelUI.tsx +24 -0
  175. package/src/components/ProxyConnectorEdge.tsx +169 -0
  176. package/src/components/ProxyConnectorPanel.tsx +130 -0
  177. package/src/components/SafeBackground.tsx +19 -0
  178. package/src/components/ScrollIndicatorWrapper.tsx +117 -0
  179. package/src/components/SetChildModal.tsx +191 -0
  180. package/src/components/SetParentModal.tsx +187 -0
  181. package/src/components/SlidingPanel.tsx +114 -0
  182. package/src/components/TagUpsert.tsx +142 -0
  183. package/src/components/TopMenuBar.tsx +380 -0
  184. package/src/components/ViewBezierConnector.tsx +143 -0
  185. package/src/components/ViewDrawMenu.tsx +270 -0
  186. package/src/components/ViewEditorEdgeLabelLayout.ts +189 -0
  187. package/src/components/ViewEditorOnboarding.tsx +445 -0
  188. package/src/components/ViewExplorer/TagManager/ColorPicker.tsx +49 -0
  189. package/src/components/ViewExplorer/TagManager/GroupNamingPopover.tsx +96 -0
  190. package/src/components/ViewExplorer/TagManager/LayerItem.tsx +228 -0
  191. package/src/components/ViewExplorer/TagManager/TagItem.tsx +242 -0
  192. package/src/components/ViewExplorer/TagManager/index.tsx +418 -0
  193. package/src/components/ViewExplorer/ViewNavigator.tsx +121 -0
  194. package/src/components/ViewExplorer/ViewSearch.tsx +33 -0
  195. package/src/components/ViewExplorer/ViewTree.tsx +98 -0
  196. package/src/components/ViewExplorer/index.tsx +384 -0
  197. package/src/components/ViewExplorer/types.ts +13 -0
  198. package/src/components/ViewExplorer/utils.ts +56 -0
  199. package/src/components/ViewExplorer-vscode.tsx +8 -0
  200. package/src/components/ViewFloatingMenu-vscode.tsx +248 -0
  201. package/src/components/ViewFloatingMenu.tsx +379 -0
  202. package/src/components/ViewGridNode.tsx +451 -0
  203. package/src/components/ViewHeaderButton.tsx +60 -0
  204. package/src/components/ViewPanel.tsx +162 -0
  205. package/src/components/ViewsGridOnboarding.tsx +400 -0
  206. package/src/components/ZUI/ZUICanvas.tsx +853 -0
  207. package/src/components/ZUI/index.ts +3 -0
  208. package/src/components/ZUI/layout.ts +323 -0
  209. package/src/components/ZUI/proxy.ts +278 -0
  210. package/src/components/ZUI/renderer.ts +1189 -0
  211. package/src/components/ZUI/types.ts +150 -0
  212. package/src/components/ZUI/useZUIInteraction.ts +720 -0
  213. package/src/config/runtime-vscode.ts +46 -0
  214. package/src/config/runtime.ts +30 -0
  215. package/src/constants/colors.ts +80 -0
  216. package/src/constants/diagramColors.ts +9 -0
  217. package/src/context/ThemeContext.tsx +158 -0
  218. package/src/crossBranch/graph.ts +207 -0
  219. package/src/crossBranch/resolve.ts +643 -0
  220. package/src/crossBranch/settings.ts +59 -0
  221. package/src/crossBranch/store.ts +71 -0
  222. package/src/crossBranch/types.ts +102 -0
  223. package/src/demo/DemoPage.tsx +184 -0
  224. package/src/demo/seed.ts +67 -0
  225. package/src/demo/store.ts +536 -0
  226. package/src/demo/viewEditor.ts +110 -0
  227. package/src/hooks/useSafeFitView.ts +60 -0
  228. package/src/index.css +309 -0
  229. package/src/index.ts +184 -0
  230. package/src/kafka-ss.png +0 -0
  231. package/src/lib/vscodeBridge-vscode.ts +27 -0
  232. package/src/lib/vscodeBridge.ts +7 -0
  233. package/src/main.tsx +46 -0
  234. package/src/pages/AppearanceSettings.tsx +135 -0
  235. package/src/pages/Dependencies.tsx +926 -0
  236. package/src/pages/InfiniteZoom.tsx +404 -0
  237. package/src/pages/Settings.tsx +91 -0
  238. package/src/pages/ViewEditor/EDGE_DISTRIBUTION.md +64 -0
  239. package/src/pages/ViewEditor/components/EditorMenus.tsx +112 -0
  240. package/src/pages/ViewEditor/components/EditorOverlays.tsx +172 -0
  241. package/src/pages/ViewEditor/components/EmptyCanvasState.tsx +42 -0
  242. package/src/pages/ViewEditor/context.tsx +21 -0
  243. package/src/pages/ViewEditor/hooks/useCanvasInteractions.ts +1349 -0
  244. package/src/pages/ViewEditor/hooks/useDrawingEngine.ts +127 -0
  245. package/src/pages/ViewEditor/hooks/useViewContextNeighbours.ts +501 -0
  246. package/src/pages/ViewEditor/hooks/useViewData.ts +491 -0
  247. package/src/pages/ViewEditor/index.tsx +1366 -0
  248. package/src/pages/ViewEditor/utils.ts +88 -0
  249. package/src/pages/Views.tsx +171 -0
  250. package/src/pages/ViewsGrid.tsx +1310 -0
  251. package/src/pkg/importer/mermaid.test.ts +141 -0
  252. package/src/pkg/importer/mermaid.ts +76 -0
  253. package/src/platform/PlatformContext.tsx +17 -0
  254. package/src/platform/context.ts +9 -0
  255. package/src/platform/local.tsx +15 -0
  256. package/src/platform/types.ts +19 -0
  257. package/src/slots.ts +92 -0
  258. package/src/styles/editor-panels.css +66 -0
  259. package/src/styles/theme.css +56 -0
  260. package/src/theme.ts +336 -0
  261. package/src/types/index.ts +234 -0
  262. package/src/types/offline-ambient.d.ts +14 -0
  263. package/src/types/vscode-messages.ts +32 -0
  264. package/src/utils/edgeDistribution.ts +103 -0
  265. package/src/utils/githubApi.ts +121 -0
  266. package/src/utils/githubCache.ts +108 -0
  267. package/src/utils/ids.ts +9 -0
  268. package/src/utils/technologyCatalog.ts +143 -0
  269. package/src/utils/toast.ts +100 -0
  270. package/src/utils/treesitter.ts +147 -0
  271. package/src/utils/url.ts +72 -0
  272. package/src/vite-env.d.ts +1 -0
@@ -0,0 +1,8 @@
1
+ import { BoxProps } from '@chakra-ui/react';
2
+ export interface ElementContainerProps extends BoxProps {
3
+ isSelected?: boolean;
4
+ isSource?: boolean;
5
+ isTarget?: boolean;
6
+ isConnectorHighlighted?: boolean;
7
+ }
8
+ export declare const ElementContainer: import("react").MemoExoticComponent<import("@chakra-ui/react").ComponentWithAs<"div", ElementContainerProps>>;
@@ -0,0 +1,10 @@
1
+ import { type PlacedElement } from '../types';
2
+ interface Props {
3
+ data: PlacedElement & {
4
+ hasChildLink?: boolean;
5
+ };
6
+ /** Bounding rect of the node element in screen (viewport) coordinates */
7
+ anchorRect: DOMRect;
8
+ }
9
+ export default function NodeHoverCard({ data, anchorRect }: Props): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { ReactNode } from 'react';
2
+ interface Props {
3
+ title: ReactNode;
4
+ onClose?: () => void;
5
+ hasCloseButton?: boolean;
6
+ }
7
+ export default function PanelHeader({ title, onClose, hasCloseButton }: Props): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare function KbdHint({ children }: {
2
+ children: string;
3
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { type EdgeProps } from 'reactflow';
2
+ declare function ProxyConnectorEdge({ id, source, target, selected, style }: EdgeProps): import("react/jsx-runtime").JSX.Element | null;
3
+ declare const _default: import("react").MemoExoticComponent<typeof ProxyConnectorEdge>;
4
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import type { ProxyConnectorDetails } from '../crossBranch/types';
2
+ interface Props {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ details: ProxyConnectorDetails | null;
6
+ hasBackdrop?: boolean;
7
+ }
8
+ export default function ProxyConnectorPanel({ isOpen, onClose, details, hasBackdrop, }: Props): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,13 @@
1
+ import { type ComponentPropsWithoutRef } from 'react';
2
+ import { Background } from 'reactflow';
3
+ /**
4
+ * Guards React Flow's Background against NaN zoom.
5
+ *
6
+ * In @reactflow/background, `scaledSize = patternSize * transform[2]` has no
7
+ * NaN guard (unlike scaledGap which uses `|| 1`). When d3-zoom produces a NaN
8
+ * transform during fitView on a zero-size container, scaledSize becomes NaN,
9
+ * propagating to patternOffset and the circle cx/cy attributes.
10
+ *
11
+ * This wrapper simply skips rendering until zoom is a positive finite number.
12
+ */
13
+ export declare function SafeBackground(props: ComponentPropsWithoutRef<typeof Background>): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,8 @@
1
+ import { type BoxProps } from '@chakra-ui/react';
2
+ import { type ReactNode } from 'react';
3
+ interface ScrollIndicatorWrapperProps extends BoxProps {
4
+ children: ReactNode;
5
+ scrollId?: string;
6
+ }
7
+ declare const ScrollIndicatorWrapper: import("react").ForwardRefExoticComponent<ScrollIndicatorWrapperProps & import("react").RefAttributes<HTMLDivElement>>;
8
+ export default ScrollIndicatorWrapper;
@@ -0,0 +1,10 @@
1
+ import type { ViewTreeNode } from '../types';
2
+ interface Props {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ targetId: number | null;
6
+ treeData: ViewTreeNode[];
7
+ onConfirm: (childId: number) => Promise<void>;
8
+ }
9
+ export default function SetChildModal({ isOpen, onClose, targetId, treeData, onConfirm }: Props): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,10 @@
1
+ import type { ViewTreeNode } from '../types';
2
+ interface Props {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ targetId: number | null;
6
+ treeData: ViewTreeNode[];
7
+ onConfirm: (newParentId: number) => Promise<void>;
8
+ }
9
+ export default function SetParentModal({ isOpen, onClose, targetId, treeData, onConfirm }: Props): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,16 @@
1
+ import { type ReactNode } from 'react';
2
+ interface Props {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ panelKey: string;
6
+ side?: 'left' | 'right';
7
+ width?: string | Record<string, string>;
8
+ minWidth?: string | Record<string, string>;
9
+ maxHeight?: string;
10
+ height?: string;
11
+ hasBackdrop?: boolean;
12
+ zIndex?: number;
13
+ children: ReactNode;
14
+ }
15
+ export default function SlidingPanel({ isOpen, onClose, panelKey, side, width, minWidth, maxHeight, height, hasBackdrop, zIndex, children, }: Props): import("react/jsx-runtime").JSX.Element;
16
+ export {};
@@ -0,0 +1,8 @@
1
+ interface Props {
2
+ currentTags: string[];
3
+ availableTags: string[];
4
+ onAddTag: (tag: string) => void;
5
+ isReadOnly?: boolean;
6
+ }
7
+ export default function TagUpsert({ currentTags, availableTags, onAddTag, isReadOnly, }: Props): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ import type { TopMenuBarSlots } from '../slots';
3
+ interface Props extends TopMenuBarSlots {
4
+ children?: React.ReactNode;
5
+ hideMobileBar?: boolean;
6
+ }
7
+ export default function TopMenuBar({ children, hideMobileBar, rightSlot, mobileMenuSlot, userControlsSlot }: Props): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,4 @@
1
+ import { type EdgeProps } from 'reactflow';
2
+ declare function ViewBezierConnector({ id, source, target, sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, style, label, labelStyle, labelBgStyle, labelShowBg: _labelShowBg, labelBgPadding, labelBgBorderRadius, markerStart, markerEnd, selected, }: EdgeProps): import("react/jsx-runtime").JSX.Element;
3
+ declare const _default: import("react").MemoExoticComponent<typeof ViewBezierConnector>;
4
+ export default _default;
@@ -0,0 +1,22 @@
1
+ export declare function UndoSvg(): import("react/jsx-runtime").JSX.Element;
2
+ export declare function RedoSvg(): import("react/jsx-runtime").JSX.Element;
3
+ export declare function PencilSvg(): import("react/jsx-runtime").JSX.Element;
4
+ export declare function EraserSvg(): import("react/jsx-runtime").JSX.Element;
5
+ export declare function TextSvg(): import("react/jsx-runtime").JSX.Element;
6
+ export declare function MoveSvg(): import("react/jsx-runtime").JSX.Element;
7
+ export declare function CloseSvg(): import("react/jsx-runtime").JSX.Element;
8
+ export interface ViewDrawMenuProps {
9
+ drawingMode: boolean;
10
+ drawingTool: 'pencil' | 'eraser' | 'text' | 'select';
11
+ setDrawingTool: (tool: 'pencil' | 'eraser' | 'text' | 'select') => void;
12
+ drawingColor: string;
13
+ setDrawingColor: (color: string) => void;
14
+ drawingWidth: number;
15
+ setDrawingWidth: (width: number) => void;
16
+ onUndo: () => void;
17
+ onRedo: () => void;
18
+ canUndo: boolean;
19
+ canRedo: boolean;
20
+ setDrawingMode: (mode: boolean) => void;
21
+ }
22
+ export default function ViewDrawMenu({ drawingMode, drawingTool, setDrawingTool, drawingColor, setDrawingColor, drawingWidth, setDrawingWidth, onUndo, onRedo, canUndo, canRedo, setDrawingMode, }: ViewDrawMenuProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,16 @@
1
+ export declare function measureEdgeLabel(text: string, font: string): number;
2
+ interface UseEdgeLabelLayoutArgs {
3
+ id: string;
4
+ preferredX: number;
5
+ preferredY: number;
6
+ width: number;
7
+ height: number;
8
+ dx: number;
9
+ dy: number;
10
+ alongLineOnly?: boolean;
11
+ }
12
+ export declare function useEdgeLabelLayout({ id, preferredX, preferredY, width, height, dx, dy, alongLineOnly, }: UseEdgeLabelLayoutArgs): {
13
+ x: number;
14
+ y: number;
15
+ };
16
+ export {};
@@ -0,0 +1,5 @@
1
+ interface Props {
2
+ hasElements: boolean;
3
+ }
4
+ export default function ViewEditorOnboarding({ hasElements }: Props): import("react/jsx-runtime").JSX.Element | null;
5
+ export {};
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface Props {
3
+ onSelect: (color: string) => void;
4
+ onClose: () => void;
5
+ }
6
+ export declare const ColorPicker: React.FC<Props>;
7
+ export {};
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface Props {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ onConfirm: (name: string) => void | Promise<void>;
6
+ defaultName: string;
7
+ anchorEl?: HTMLElement | null;
8
+ }
9
+ export declare const GroupNamingPopover: React.FC<Props>;
10
+ export {};
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { ViewLayer } from '../../../types';
3
+ interface Props {
4
+ layer: ViewLayer;
5
+ isActive: boolean;
6
+ isExpanded: boolean;
7
+ tagCount: number;
8
+ tagColors: Record<string, import('../../../types').Tag>;
9
+ onToggleActive: () => void;
10
+ onToggleExpanded: () => void;
11
+ onDelete: () => void;
12
+ onSetColor: (color: string) => void;
13
+ onSetTagColor?: (tag: string, color: string, description?: string) => void;
14
+ onAddTag: (tag: string) => void;
15
+ onRemoveTag: (tag: string) => void;
16
+ onHover: (active: boolean) => void;
17
+ selectedElementTags?: string[];
18
+ onToggleTagOnElement?: (tag: string) => void;
19
+ namingPopover?: {
20
+ isOpen: boolean;
21
+ defaultName: string;
22
+ };
23
+ onConfirmNaming?: (name: string) => void;
24
+ onCloseNaming?: () => void;
25
+ }
26
+ export declare const LayerItem: React.FC<Props>;
27
+ export {};
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ interface Props {
3
+ tag: string;
4
+ color: string;
5
+ isAssigned?: boolean;
6
+ tagCount?: number;
7
+ onToggle?: () => void;
8
+ onHover?: (active: boolean) => void;
9
+ onDropTag?: (draggedTag: string) => void;
10
+ onDropLayer?: (layerId: number) => void;
11
+ namingPopover?: {
12
+ isOpen: boolean;
13
+ defaultName: string;
14
+ };
15
+ onConfirmNaming?: (name: string) => void;
16
+ onCloseNaming?: () => void;
17
+ onSetColor?: (color: string) => void;
18
+ onSetDescription?: (description: string) => void;
19
+ onRemove?: () => void;
20
+ description?: string | null;
21
+ isVisible?: boolean;
22
+ onToggleVisibility?: () => void;
23
+ }
24
+ export declare const TagItem: React.FC<Props>;
25
+ export {};
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import { ViewLayer, LibraryElement, PlacedElement } from '../../../types';
3
+ interface Props {
4
+ availableTags: string[];
5
+ tagColors: Record<string, import('../../../types').Tag>;
6
+ layers: ViewLayer[];
7
+ viewElements: PlacedElement[];
8
+ selectedElement: LibraryElement | null;
9
+ hiddenLayerTags: string[];
10
+ setHiddenLayerTags: (tags: string[]) => void;
11
+ onToggleTagOnElement: (tag: string) => void;
12
+ onHoverLayer: (tags: string[] | null, color?: string | null) => void;
13
+ onCreateLayer: (name: string, tags: string[], color: string) => Promise<void>;
14
+ onUpdateLayer: (layer: ViewLayer) => Promise<void>;
15
+ onDeleteLayer: (id: number) => Promise<void>;
16
+ onCreateTag: (tag: string, color?: string, description?: string) => Promise<void>;
17
+ tagCounts: Record<string, number>;
18
+ layerCounts: Record<number, number>;
19
+ }
20
+ export declare const TagManager: React.FC<Props>;
21
+ export {};
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { NavItem } from './types';
3
+ interface Props {
4
+ parents: NavItem[];
5
+ children: NavItem[];
6
+ activeFilter: 'out' | 'in' | null;
7
+ onFilterToggle: (type: 'out' | 'in', items: NavItem[]) => void;
8
+ onHoverZoom?: (elementId: number | null, type: 'in' | 'out' | null) => void;
9
+ }
10
+ export declare const ViewNavigator: React.FC<Props>;
11
+ export {};
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface Props {
3
+ query: string;
4
+ setQuery: (q: string) => void;
5
+ activeFilter: 'out' | 'in' | null;
6
+ }
7
+ export declare const ViewSearch: React.FC<Props>;
8
+ export {};
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { TreeNode } from './types';
3
+ interface Props {
4
+ filtered: TreeNode[];
5
+ viewId: number | null;
6
+ focusedIdx: number;
7
+ itemRefs: React.MutableRefObject<(HTMLDivElement | null)[]>;
8
+ handleNavigate: (id: number) => void;
9
+ onHoverZoom?: (elementId: number | null, type: 'in' | 'out' | null) => void;
10
+ viewHoverMap: Map<number, {
11
+ elementId: number | undefined;
12
+ type: 'in' | 'out';
13
+ }>;
14
+ handleKeyDown: (e: React.KeyboardEvent) => void;
15
+ listRef: React.RefObject<HTMLDivElement>;
16
+ }
17
+ export declare const ViewTree: React.FC<Props>;
18
+ export {};
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import '../../styles/editor-panels.css';
3
+ import type { ViewTreeNode, ViewConnector, PlacedElement, LibraryElement, ViewLayer, Tag } from '../../types';
4
+ interface Props {
5
+ treeNodes: ViewTreeNode[];
6
+ linksMap: Record<number, ViewConnector[]>;
7
+ viewElements: PlacedElement[];
8
+ onNavigate: (id: number) => void;
9
+ onHoverZoom?: (elementId: number | null, type: 'in' | 'out' | null) => void;
10
+ isOpen: boolean;
11
+ onToggle: () => void;
12
+ isMobile?: boolean;
13
+ suppressed?: boolean;
14
+ activeTags: string[];
15
+ setActiveTags: (tags: string[]) => void;
16
+ hiddenLayerTags: string[];
17
+ setHiddenLayerTags: (tags: string[]) => void;
18
+ availableTags: string[];
19
+ tagColors: Record<string, Tag>;
20
+ selectedElement?: LibraryElement | null;
21
+ onUpdateTags?: (elementId: number, tags: string[]) => Promise<void>;
22
+ onCreateTag: (tag: string, color?: string) => Promise<void>;
23
+ layers: ViewLayer[];
24
+ onHoverLayer: (tags: string[] | null, color?: string | null) => void;
25
+ onCreateLayer: (name: string, tags: string[], color: string) => Promise<void>;
26
+ onUpdateLayer: (layer: ViewLayer) => Promise<void>;
27
+ onDeleteLayer: (id: number) => Promise<void>;
28
+ }
29
+ declare function ViewExplorer({ treeNodes, linksMap, viewElements, onNavigate, onHoverZoom, isOpen, onToggle, isMobile, suppressed, hiddenLayerTags, setHiddenLayerTags, availableTags, tagColors, selectedElement, onUpdateTags, onCreateTag, layers, onHoverLayer, onCreateLayer, onUpdateLayer, onDeleteLayer, }: Props): import("react/jsx-runtime").JSX.Element;
30
+ declare const _default: React.MemoExoticComponent<typeof ViewExplorer>;
31
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import type { ViewTreeNode } from '../../types';
2
+ export interface TreeNode extends ViewTreeNode {
3
+ children: TreeNode[];
4
+ depth: number;
5
+ }
6
+ export interface NavItem {
7
+ id: number;
8
+ name: string;
9
+ subtitle?: string;
10
+ elementId?: number;
11
+ }
@@ -0,0 +1,6 @@
1
+ import type { ViewTreeNode } from '../../types';
2
+ import type { TreeNode } from './types';
3
+ export declare const SWATCH_COLORS: string[];
4
+ export declare function pickUnusedColor(usedColors: string[]): string;
5
+ export declare function buildTree(nodes: ViewTreeNode[]): TreeNode[];
6
+ export declare function flattenTree(roots: TreeNode[]): TreeNode[];
@@ -0,0 +1,6 @@
1
+ /**
2
+ * VS Code variant of ViewExplorer.
3
+ * Diagram navigation is surfaced as a native VS Code tree view instead.
4
+ * This stub keeps the webview bundle lean.
5
+ */
6
+ export default function ViewExplorer(): null;
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ interface ViewFloatingMenuProps {
3
+ canEdit: boolean;
4
+ handleAddElementAtCenter: () => void;
5
+ drawingMode: boolean;
6
+ setDrawingMode: React.Dispatch<React.SetStateAction<boolean>>;
7
+ hasDrawingPaths: boolean;
8
+ drawingVisible: boolean;
9
+ setDrawingVisible: React.Dispatch<React.SetStateAction<boolean>>;
10
+ extrasOpen: boolean;
11
+ setExtrasOpen: React.Dispatch<React.SetStateAction<boolean>>;
12
+ onImport: () => void;
13
+ onExport: () => void;
14
+ onShare: () => void;
15
+ isFreePlan: boolean;
16
+ canUpgrade?: boolean;
17
+ activeTags?: string[];
18
+ setActiveTags?: (tags: string[]) => void;
19
+ availableTags?: string[];
20
+ }
21
+ /**
22
+ * VS Code variant of ViewFloatingMenu.
23
+ * Import, Export, and Share are removed they are registered as VS Code commands instead.
24
+ * The extras toggle chevron is also removed since there are no extras to expand.
25
+ */
26
+ export default function ViewFloatingMenu({ canEdit, handleAddElementAtCenter, drawingMode, setDrawingMode, hasDrawingPaths, drawingVisible, setDrawingVisible, activeTags, setActiveTags, availableTags, }: ViewFloatingMenuProps): import("react/jsx-runtime").JSX.Element;
27
+ export {};
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import type { ViewFloatingMenuSlots } from '../slots';
3
+ import type { Tag, ViewLayer } from '../types';
4
+ export interface ViewFloatingMenuProps extends ViewFloatingMenuSlots {
5
+ handleAddElementAtCenter: () => void;
6
+ drawingMode: boolean;
7
+ setDrawingMode: React.Dispatch<React.SetStateAction<boolean>>;
8
+ hasDrawingPaths: boolean;
9
+ drawingVisible: boolean;
10
+ setDrawingVisible: React.Dispatch<React.SetStateAction<boolean>>;
11
+ extrasOpen: boolean;
12
+ setExtrasOpen: React.Dispatch<React.SetStateAction<boolean>>;
13
+ disableImportExport?: boolean;
14
+ onImport: () => void;
15
+ onExport: () => void;
16
+ onShare?: () => void;
17
+ focusMode: boolean;
18
+ onFocusModeChange: (enabled: boolean) => void;
19
+ allTags: string[];
20
+ layers: ViewLayer[];
21
+ tagColors: Record<string, Tag>;
22
+ hiddenTags: string[];
23
+ toggleTagVisibility: (tag: string) => void;
24
+ toggleLayerVisibility: (layer: ViewLayer) => void;
25
+ tagCounts: Record<string, number>;
26
+ layerElementCounts: Record<number, number>;
27
+ setHighlightedTags: (tags: string[] | null) => void;
28
+ setHighlightColor: (color: string | null) => void;
29
+ toolbarSlot?: React.ReactNode;
30
+ }
31
+ /**
32
+ * Name: Floating Menu
33
+ * Role: Shows add element, draw, export, import, and share buttons with a collapsible section.
34
+ * Location: Floating at the bottom center of the editor.
35
+ * Aliases: Bottom bar, Action bar.
36
+ */
37
+ declare function ViewFloatingMenu({ handleAddElementAtCenter, drawingMode, setDrawingMode, hasDrawingPaths, drawingVisible, setDrawingVisible, extrasOpen, setExtrasOpen, disableImportExport, onImport, onExport, focusMode, onFocusModeChange, allTags, layers, tagColors, hiddenTags, toggleTagVisibility, toggleLayerVisibility, tagCounts, layerElementCounts, setHighlightedTags, setHighlightColor, shareSlot, toolbarSlot, }: ViewFloatingMenuProps): import("react/jsx-runtime").JSX.Element;
38
+ declare const _default: React.MemoExoticComponent<typeof ViewFloatingMenu>;
39
+ export default _default;
@@ -0,0 +1,29 @@
1
+ export interface ViewGridNodeData {
2
+ id: number;
3
+ name: string;
4
+ level_label: string | null;
5
+ counts?: {
6
+ nodes: number;
7
+ edges: number;
8
+ };
9
+ focused: boolean;
10
+ canEdit: boolean;
11
+ isEditing: boolean;
12
+ editName: string;
13
+ onFocus: () => void;
14
+ onOpen: () => void;
15
+ onStartRename: () => void;
16
+ onDetails: () => void;
17
+ onDelete: () => void;
18
+ onShare: () => void;
19
+ onEditNameChange: (v: string) => void;
20
+ onEditCommit: () => void;
21
+ onEditCancel: () => void;
22
+ /** On touch/mobile: tap navigates directly instead of just focusing */
23
+ isMobile?: boolean;
24
+ /** Key that navigates to this card from the currently selected card */
25
+ wasdKey?: 'w' | 'a' | 's' | 'd';
26
+ }
27
+ export default function ViewGridNode({ data }: {
28
+ data: ViewGridNodeData;
29
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ export interface ViewHeaderButtonProps {
2
+ name?: string;
3
+ onOpen: () => void;
4
+ }
5
+ /**
6
+ * Name: Diagram Button
7
+ * Role: Appears on the headerbar and it opens the diagram details panel.
8
+ * Location: Headerbar at the top.
9
+ * Aliases: Diagram Name Button, Header Title.
10
+ */
11
+ export default function ViewHeaderButton({ name, onOpen }: ViewHeaderButtonProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import type { ViewTreeNode } from '../types';
2
+ interface Props {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ view: ViewTreeNode | null;
6
+ canEdit?: boolean;
7
+ onSave: (updated: ViewTreeNode) => void;
8
+ hasBackdrop?: boolean;
9
+ }
10
+ /**
11
+ * Name: View Details Panel
12
+ * Role: Opens on the right and allows view field updates.
13
+ * Location: Right side of the screen on desktop. Overlays screen on mobile.
14
+ * Aliases: View Properties, View Settings.
15
+ */
16
+ declare function ViewPanel({ isOpen, onClose, view, canEdit: canEditProp, onSave, hasBackdrop }: Props): import("react/jsx-runtime").JSX.Element;
17
+ declare const _default: import("react").MemoExoticComponent<typeof ViewPanel>;
18
+ export default _default;
@@ -0,0 +1,5 @@
1
+ interface Props {
2
+ hasViews: boolean;
3
+ }
4
+ export default function ViewsGridOnboarding({ hasViews }: Props): import("react/jsx-runtime").JSX.Element | null;
5
+ export {};
@@ -0,0 +1,18 @@
1
+ import type { ExploreData } from '../../types';
2
+ import type { CrossBranchContextSettings } from '../../crossBranch/types';
3
+ export interface ZUICanvasHandle {
4
+ fitView(): void;
5
+ }
6
+ interface Props {
7
+ data: ExploreData;
8
+ onReady?: () => void;
9
+ onZoom?: () => void;
10
+ onPan?: () => void;
11
+ highlightedTags?: string[];
12
+ highlightColor?: string;
13
+ hiddenTags?: string[];
14
+ crossBranchSettings: CrossBranchContextSettings;
15
+ hoverLocked?: boolean;
16
+ }
17
+ export declare const ZUICanvas: import("react").ForwardRefExoticComponent<Props & import("react").RefAttributes<ZUICanvasHandle>>;
18
+ export {};
@@ -0,0 +1,2 @@
1
+ export { ZUICanvas } from './ZUICanvas';
2
+ export type { ZUICanvasHandle } from './ZUICanvas';
@@ -0,0 +1,18 @@
1
+ import type { ZUILayout } from './types';
2
+ import type { ExploreData } from '../../types';
3
+ export declare const NODE_W = 200;
4
+ export declare const NODE_H = 100;
5
+ /**
6
+ * Compute the full world-space layout for all diagrams in `data`.
7
+ * Root diagrams are placed side-by-side horizontally.
8
+ */
9
+ export declare function computeLayout(data: ExploreData): ZUILayout;
10
+ /**
11
+ * Compute the initial viewport that fits the entire layout on screen.
12
+ * Returns a ZUIViewState (x=panX, y=panY, zoom).
13
+ */
14
+ export declare function fitViewport(layout: ZUILayout, canvasW: number, canvasH: number, padding?: number): {
15
+ x: number;
16
+ y: number;
17
+ zoom: number;
18
+ };
@@ -0,0 +1,25 @@
1
+ import { type ZUIResolvedConnector } from '../../crossBranch/resolve';
2
+ import type { WorkspaceGraphSnapshot } from '../../crossBranch/types';
3
+ import type { LayoutNode, ZUIViewState, HoveredItem } from './types';
4
+ import { type ScreenRect } from './renderer';
5
+ import type { CrossBranchContextSettings } from '../../crossBranch/types';
6
+ export interface VisibleNodeAnchor {
7
+ nodeId: string;
8
+ elementId: number;
9
+ label: string;
10
+ worldX: number;
11
+ worldY: number;
12
+ worldW: number;
13
+ worldH: number;
14
+ pathDepth: number;
15
+ renderAlpha: number;
16
+ }
17
+ export declare function collectVisibleNodeAnchors(groups: Array<{
18
+ nodes: LayoutNode[];
19
+ }>, view: ZUIViewState, canvasW: number, hiddenTags?: string[]): {
20
+ visibleAnchors: Map<number, VisibleNodeAnchor>;
21
+ byNodeId: Map<string, VisibleNodeAnchor>;
22
+ };
23
+ export declare function buildVisibleProxyConnectors(snapshot: WorkspaceGraphSnapshot | null, visibleAnchors: Map<number, VisibleNodeAnchor>, settings: CrossBranchContextSettings): ZUIResolvedConnector[];
24
+ export declare function drawVisibleProxyConnectors(ctx: CanvasRenderingContext2D, connectors: ZUIResolvedConnector[], visibleAnchorsByNodeId: Map<string, VisibleNodeAnchor>, zoom: number, labelBg: string, occupiedLabelRects: ScreenRect[]): void;
25
+ export declare function findHoveredProxyConnector(worldX: number, worldY: number, connectors: ZUIResolvedConnector[], visibleAnchorsByNodeId: Map<string, VisibleNodeAnchor>, view: ZUIViewState): HoveredItem | null;
@@ -0,0 +1,30 @@
1
+ import type { DiagramGroupLayout, ZUIViewState } from './types';
2
+ export declare function getExpandThresholds(canvasW: number): {
3
+ start: number;
4
+ end: number;
5
+ };
6
+ export interface ScreenRect {
7
+ left: number;
8
+ top: number;
9
+ right: number;
10
+ bottom: number;
11
+ }
12
+ export declare function setOnImageLoadCallback(cb: (() => void) | null): void;
13
+ export declare function setHighlightedTags(tags: Set<string>): void;
14
+ export declare function setHighlightColor(color: string): void;
15
+ export declare function setHiddenTags(tags: Set<string>): void;
16
+ export declare function pickEdgeLabelPosition(matrix: DOMMatrix, midX: number, midY: number, textW: number, textH: number, dx: number, dy: number, occupiedLabelRects: ScreenRect[]): {
17
+ x: number;
18
+ y: number;
19
+ };
20
+ /** Is the rect (in world space) visible on screen? */
21
+ export declare function isVisible(worldX: number, worldY: number, worldW: number, worldH: number, view: ZUIViewState, canvasW: number, canvasH: number): boolean;
22
+ /** Is the rect (in world space) FULLY visible on screen? */
23
+ export declare function isFullyVisible(worldX: number, worldY: number, worldW: number, worldH: number, view: ZUIViewState, canvasW: number, canvasH: number): boolean;
24
+ /**
25
+ * Render a complete frame onto `ctx`.
26
+ * Call this from a `requestAnimationFrame` loop.
27
+ * The caller must set `ctx.setTransform(dpr,0,0,dpr,0,0)` before calling;
28
+ * `canvasW/canvasH` are CSS-pixel dimensions (the transform handles HiDPI).
29
+ */
30
+ export declare function renderFrame(ctx: CanvasRenderingContext2D, groups: DiagramGroupLayout[], view: ZUIViewState, canvasW: number, canvasH: number): ScreenRect[];