likec4 0.41.0 → 0.42.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 (144) hide show
  1. package/README.md +108 -0
  2. package/dist/__app__/src/App.jsx +1 -1
  3. package/dist/__app__/src/components/view-page/ExportDiagram.jsx +72 -0
  4. package/dist/__app__/src/components/view-page/ViewActionsToolbar.jsx +38 -12
  5. package/dist/cli/index.js +53 -53
  6. package/package.json +6 -6
  7. package/dist/@likec4/diagrams/cjs/components/EmbeddedDiagram.js +0 -83
  8. package/dist/@likec4/diagrams/cjs/components/FullscreenDiagramBrowser.js +0 -50
  9. package/dist/@likec4/diagrams/cjs/components/index.js +0 -49
  10. package/dist/@likec4/diagrams/cjs/components/primitives/fullscreen/CloseButton.js +0 -44
  11. package/dist/@likec4/diagrams/cjs/components/primitives/fullscreen/FullscreenDiagram.js +0 -110
  12. package/dist/@likec4/diagrams/cjs/components/primitives/fullscreen/FullscreenDiagramTitle.js +0 -39
  13. package/dist/@likec4/diagrams/cjs/components/primitives/index.js +0 -38
  14. package/dist/@likec4/diagrams/cjs/components/primitives/responsive/ResponsiveDiagram.js +0 -56
  15. package/dist/@likec4/diagrams/cjs/components/types.js +0 -1
  16. package/dist/@likec4/diagrams/cjs/diagram/Diagram.js +0 -326
  17. package/dist/@likec4/diagrams/cjs/diagram/Edges.js +0 -121
  18. package/dist/@likec4/diagrams/cjs/diagram/Nodes.js +0 -204
  19. package/dist/@likec4/diagrams/cjs/diagram/icons/BrainIcon.js +0 -25
  20. package/dist/@likec4/diagrams/cjs/diagram/icons/ExternalLink.js +0 -82
  21. package/dist/@likec4/diagrams/cjs/diagram/icons/index.js +0 -27
  22. package/dist/@likec4/diagrams/cjs/diagram/index.js +0 -27
  23. package/dist/@likec4/diagrams/cjs/diagram/shapes/Browser.js +0 -67
  24. package/dist/@likec4/diagrams/cjs/diagram/shapes/Compound.js +0 -55
  25. package/dist/@likec4/diagrams/cjs/diagram/shapes/Cylinder.js +0 -71
  26. package/dist/@likec4/diagrams/cjs/diagram/shapes/Edge.js +0 -62
  27. package/dist/@likec4/diagrams/cjs/diagram/shapes/Mobile.js +0 -45
  28. package/dist/@likec4/diagrams/cjs/diagram/shapes/NodeIcon.js +0 -38
  29. package/dist/@likec4/diagrams/cjs/diagram/shapes/NodeLabel.js +0 -62
  30. package/dist/@likec4/diagrams/cjs/diagram/shapes/Person.js +0 -48
  31. package/dist/@likec4/diagrams/cjs/diagram/shapes/Queue.js +0 -72
  32. package/dist/@likec4/diagrams/cjs/diagram/shapes/Rectangle.js +0 -30
  33. package/dist/@likec4/diagrams/cjs/diagram/shapes/index.js +0 -54
  34. package/dist/@likec4/diagrams/cjs/diagram/shapes/types.js +0 -1
  35. package/dist/@likec4/diagrams/cjs/diagram/shapes/utils.js +0 -19
  36. package/dist/@likec4/diagrams/cjs/diagram/springs.js +0 -61
  37. package/dist/@likec4/diagrams/cjs/diagram/state/atoms.js +0 -63
  38. package/dist/@likec4/diagrams/cjs/diagram/state/gestures.js +0 -26
  39. package/dist/@likec4/diagrams/cjs/diagram/state/hooks.js +0 -36
  40. package/dist/@likec4/diagrams/cjs/diagram/state/index.js +0 -38
  41. package/dist/@likec4/diagrams/cjs/diagram/state/provider.js +0 -18
  42. package/dist/@likec4/diagrams/cjs/diagram/types.js +0 -1
  43. package/dist/@likec4/diagrams/cjs/hooks/index.js +0 -49
  44. package/dist/@likec4/diagrams/cjs/hooks/useDarkMode.js +0 -11
  45. package/dist/@likec4/diagrams/cjs/hooks/useDiagramApi.js +0 -27
  46. package/dist/@likec4/diagrams/cjs/hooks/useImageLoader.js +0 -68
  47. package/dist/@likec4/diagrams/cjs/hooks/useViewIdFromHash.js +0 -93
  48. package/dist/@likec4/diagrams/cjs/index.js +0 -51
  49. package/dist/@likec4/diagrams/cjs/konva-html.js +0 -93
  50. package/dist/@likec4/diagrams/cjs/konva-portal.js +0 -50
  51. package/dist/@likec4/diagrams/cjs/konva.js +0 -102
  52. package/dist/@likec4/diagrams/cjs/likec4.js +0 -91
  53. package/dist/@likec4/diagrams/components/EmbeddedDiagram.mjs +0 -77
  54. package/dist/@likec4/diagrams/components/FullscreenDiagramBrowser.mjs +0 -52
  55. package/dist/@likec4/diagrams/components/index.mjs +0 -4
  56. package/dist/@likec4/diagrams/components/primitives/fullscreen/CloseButton.mjs +0 -43
  57. package/dist/@likec4/diagrams/components/primitives/fullscreen/FullscreenDiagram.mjs +0 -116
  58. package/dist/@likec4/diagrams/components/primitives/fullscreen/FullscreenDiagramTitle.mjs +0 -32
  59. package/dist/@likec4/diagrams/components/primitives/index.mjs +0 -3
  60. package/dist/@likec4/diagrams/components/primitives/responsive/ResponsiveDiagram.mjs +0 -42
  61. package/dist/@likec4/diagrams/components/types.mjs +0 -0
  62. package/dist/@likec4/diagrams/diagram/Diagram.mjs +0 -307
  63. package/dist/@likec4/diagrams/diagram/Edges.mjs +0 -117
  64. package/dist/@likec4/diagrams/diagram/Nodes.mjs +0 -178
  65. package/dist/@likec4/diagrams/diagram/icons/BrainIcon.mjs +0 -20
  66. package/dist/@likec4/diagrams/diagram/icons/ExternalLink.mjs +0 -90
  67. package/dist/@likec4/diagrams/diagram/icons/index.mjs +0 -2
  68. package/dist/@likec4/diagrams/diagram/index.mjs +0 -2
  69. package/dist/@likec4/diagrams/diagram/shapes/Browser.mjs +0 -49
  70. package/dist/@likec4/diagrams/diagram/shapes/Compound.mjs +0 -48
  71. package/dist/@likec4/diagrams/diagram/shapes/Cylinder.mjs +0 -57
  72. package/dist/@likec4/diagrams/diagram/shapes/Edge.mjs +0 -63
  73. package/dist/@likec4/diagrams/diagram/shapes/Mobile.mjs +0 -33
  74. package/dist/@likec4/diagrams/diagram/shapes/NodeIcon.mjs +0 -28
  75. package/dist/@likec4/diagrams/diagram/shapes/NodeLabel.mjs +0 -59
  76. package/dist/@likec4/diagrams/diagram/shapes/Person.mjs +0 -42
  77. package/dist/@likec4/diagrams/diagram/shapes/Queue.mjs +0 -58
  78. package/dist/@likec4/diagrams/diagram/shapes/Rectangle.mjs +0 -20
  79. package/dist/@likec4/diagrams/diagram/shapes/index.mjs +0 -7
  80. package/dist/@likec4/diagrams/diagram/shapes/types.mjs +0 -0
  81. package/dist/@likec4/diagrams/diagram/shapes/utils.mjs +0 -12
  82. package/dist/@likec4/diagrams/diagram/springs.mjs +0 -57
  83. package/dist/@likec4/diagrams/diagram/state/atoms.mjs +0 -71
  84. package/dist/@likec4/diagrams/diagram/state/gestures.mjs +0 -19
  85. package/dist/@likec4/diagrams/diagram/state/hooks.mjs +0 -28
  86. package/dist/@likec4/diagrams/diagram/state/index.mjs +0 -3
  87. package/dist/@likec4/diagrams/diagram/state/provider.mjs +0 -7
  88. package/dist/@likec4/diagrams/diagram/types.mjs +0 -0
  89. package/dist/@likec4/diagrams/esm/components/EmbeddedDiagram.js +0 -77
  90. package/dist/@likec4/diagrams/esm/components/FullscreenDiagramBrowser.js +0 -52
  91. package/dist/@likec4/diagrams/esm/components/index.js +0 -4
  92. package/dist/@likec4/diagrams/esm/components/primitives/fullscreen/CloseButton.js +0 -43
  93. package/dist/@likec4/diagrams/esm/components/primitives/fullscreen/FullscreenDiagram.js +0 -116
  94. package/dist/@likec4/diagrams/esm/components/primitives/fullscreen/FullscreenDiagramTitle.js +0 -32
  95. package/dist/@likec4/diagrams/esm/components/primitives/index.js +0 -3
  96. package/dist/@likec4/diagrams/esm/components/primitives/responsive/ResponsiveDiagram.js +0 -42
  97. package/dist/@likec4/diagrams/esm/components/types.js +0 -0
  98. package/dist/@likec4/diagrams/esm/diagram/Diagram.js +0 -307
  99. package/dist/@likec4/diagrams/esm/diagram/Edges.js +0 -117
  100. package/dist/@likec4/diagrams/esm/diagram/Nodes.js +0 -178
  101. package/dist/@likec4/diagrams/esm/diagram/icons/BrainIcon.js +0 -20
  102. package/dist/@likec4/diagrams/esm/diagram/icons/ExternalLink.js +0 -90
  103. package/dist/@likec4/diagrams/esm/diagram/icons/index.js +0 -2
  104. package/dist/@likec4/diagrams/esm/diagram/index.js +0 -2
  105. package/dist/@likec4/diagrams/esm/diagram/shapes/Browser.js +0 -49
  106. package/dist/@likec4/diagrams/esm/diagram/shapes/Compound.js +0 -48
  107. package/dist/@likec4/diagrams/esm/diagram/shapes/Cylinder.js +0 -57
  108. package/dist/@likec4/diagrams/esm/diagram/shapes/Edge.js +0 -63
  109. package/dist/@likec4/diagrams/esm/diagram/shapes/Mobile.js +0 -33
  110. package/dist/@likec4/diagrams/esm/diagram/shapes/NodeIcon.js +0 -28
  111. package/dist/@likec4/diagrams/esm/diagram/shapes/NodeLabel.js +0 -59
  112. package/dist/@likec4/diagrams/esm/diagram/shapes/Person.js +0 -42
  113. package/dist/@likec4/diagrams/esm/diagram/shapes/Queue.js +0 -58
  114. package/dist/@likec4/diagrams/esm/diagram/shapes/Rectangle.js +0 -20
  115. package/dist/@likec4/diagrams/esm/diagram/shapes/index.js +0 -7
  116. package/dist/@likec4/diagrams/esm/diagram/shapes/types.js +0 -0
  117. package/dist/@likec4/diagrams/esm/diagram/shapes/utils.js +0 -12
  118. package/dist/@likec4/diagrams/esm/diagram/springs.js +0 -57
  119. package/dist/@likec4/diagrams/esm/diagram/state/atoms.js +0 -71
  120. package/dist/@likec4/diagrams/esm/diagram/state/gestures.js +0 -19
  121. package/dist/@likec4/diagrams/esm/diagram/state/hooks.js +0 -28
  122. package/dist/@likec4/diagrams/esm/diagram/state/index.js +0 -3
  123. package/dist/@likec4/diagrams/esm/diagram/state/provider.js +0 -7
  124. package/dist/@likec4/diagrams/esm/diagram/types.js +0 -0
  125. package/dist/@likec4/diagrams/esm/hooks/index.js +0 -4
  126. package/dist/@likec4/diagrams/esm/hooks/useDarkMode.js +0 -5
  127. package/dist/@likec4/diagrams/esm/hooks/useDiagramApi.js +0 -27
  128. package/dist/@likec4/diagrams/esm/hooks/useImageLoader.js +0 -64
  129. package/dist/@likec4/diagrams/esm/hooks/useViewIdFromHash.js +0 -87
  130. package/dist/@likec4/diagrams/esm/index.js +0 -4
  131. package/dist/@likec4/diagrams/esm/konva-html.js +0 -74
  132. package/dist/@likec4/diagrams/esm/konva-portal.js +0 -34
  133. package/dist/@likec4/diagrams/esm/konva.js +0 -22
  134. package/dist/@likec4/diagrams/esm/likec4.js +0 -54
  135. package/dist/@likec4/diagrams/hooks/index.mjs +0 -4
  136. package/dist/@likec4/diagrams/hooks/useDarkMode.mjs +0 -5
  137. package/dist/@likec4/diagrams/hooks/useDiagramApi.mjs +0 -27
  138. package/dist/@likec4/diagrams/hooks/useImageLoader.mjs +0 -64
  139. package/dist/@likec4/diagrams/hooks/useViewIdFromHash.mjs +0 -87
  140. package/dist/@likec4/diagrams/index.mjs +0 -4
  141. package/dist/@likec4/diagrams/konva-html.mjs +0 -74
  142. package/dist/@likec4/diagrams/konva-portal.mjs +0 -34
  143. package/dist/@likec4/diagrams/konva.mjs +0 -33
  144. package/dist/@likec4/diagrams/likec4.mjs +0 -54
package/README.md CHANGED
@@ -1,3 +1,111 @@
1
1
  # LikeC4
2
2
 
3
+ `likec4` is a CLI tool for various operations and automation over LikeC4 projects, such as:
4
+
5
+ 1. LikeC4
6
+ 1. Install
7
+ 1. Local installation
8
+ 2. Global installation
9
+ 2. Usage
10
+ 1. Preview diagrams
11
+ 2. Build static website
12
+ 3. Export to PNG
13
+ 4. Export to Mermaid, Dot, D2
14
+ 5. Generate React components
15
+ 6. Generate structured data
16
+ 3. Support
17
+
18
+ ## Install
19
+
20
+ > **Compatibility Note:**
21
+ > LikeC4 requires [Node.js](https://nodejs.org/en/) version 18+, 20+
22
+
23
+ ### Local installation
24
+
25
+ If you're using it in an npm project, install it as a development dependency:
26
+
27
+ ```sh
28
+ npm install --save-dev likec4
29
+ ```
30
+
31
+ You can reference it directly in the `package.json#scripts` object:
32
+
33
+ ```json5
34
+ {
35
+ scripts: {
36
+ dev: 'likec4 serve ...',
37
+ build: 'likec4 build ...'
38
+ }
39
+ }
40
+ ```
41
+
42
+ > Check out the template repository [likec4/template](https://github.com/likec4/template)
43
+ > with pre-configured CI for building and deploying to github pages.
44
+
45
+ To use the binary, you can call it with [`npx`](https://docs.npmjs.com/cli/v10/commands/npx) while in the project directory:
46
+
47
+ ```sh
48
+ npx likec4 ...
49
+ ```
50
+
51
+ ### Global installation
52
+
53
+ If you want to use it in any arbitrary project without [`npx`](https://docs.npmjs.com/cli/v10/commands/npx), install it globally:
54
+
55
+ ```sh
56
+ npm install --global likec4
57
+ ```
58
+
59
+ Then, you can call `likec4` directly:
60
+
61
+ ```sh
62
+ likec4 ...
63
+ ```
64
+
65
+ ## Usage
66
+
67
+ ### Preview diagrams
68
+
69
+ In a folder with LikeC4 sources:
70
+
71
+ ```sh
72
+ likec4 serve
73
+ ```
74
+
75
+ This will recursively search for `*.c4`, `*.likec4` files and serve them in a local web server.
76
+
77
+ Any changes to the sources will trigger a live-update of diagrams.
78
+
79
+ Refer to the help for more options:
80
+
81
+ ```sh
82
+ likec4 serve --help
83
+ ```
84
+
85
+ ### Build static website
86
+
87
+ ```sh
88
+ likec4 build -o ./dist
89
+ ```
90
+
91
+ The output folder will contain a static website (single-page application).
92
+
93
+ ### Export to PNG
94
+
95
+ ...
96
+
97
+ ### Export to Mermaid, Dot, D2
98
+
99
+ ...
100
+
101
+ ### Generate React components
102
+
3
103
  ...
104
+
105
+ ### Generate structured data
106
+
107
+ ...
108
+
109
+ ## Support
110
+
111
+ If there's a problem you're encountering or something you need help with, don't hesitate to take advantage of my [_Priority Support_ service](https://github.com/sponsors/davydkov) where you can ask me questions in an exclusive forum. I'm well equppied to assist you with this project and would be happy to help you out! 🙂
@@ -6,7 +6,7 @@ import { useRoute } from './router';
6
6
  import { Theme } from '@radix-ui/themes';
7
7
  const Routes = () => {
8
8
  const r = useRoute();
9
- return (<Theme accentColor='iris' panelBackground='translucent' appearance={r.params?.theme} radius='small'>
9
+ return (<Theme hasBackground={r.route !== 'export'} accentColor='indigo' radius='small' appearance={r.params?.theme}>
10
10
  {r.route === 'index' && <IndexPage key='index'/>}
11
11
  {r.route === 'view' && <ViewPage key='view' viewId={r.params.viewId} showUI={r.showUI}/>}
12
12
  {r.route === 'export' && (<ExportPage key='export' viewId={r.params.viewId} padding={r.params.padding}/>)}
@@ -0,0 +1,72 @@
1
+ import { Diagram, useDiagramApi } from '@likec4/diagrams';
2
+ import { Box, Portal } from '@radix-ui/themes';
3
+ import { useDebouncedEffect } from '@react-hookz/web/esm';
4
+ import { memo } from 'react';
5
+ function downloadBlob(blob, name) {
6
+ // Convert your blob into a Blob URL (a special url that points to an object in the browser's memory)
7
+ const blobUrl = URL.createObjectURL(blob);
8
+ // Create a link element
9
+ const link = document.createElement('a');
10
+ link.style.display = 'none';
11
+ // Set link's href to point to the Blob URL
12
+ link.href = blobUrl;
13
+ link.download = name;
14
+ // Click handler that releases the object URL after the element has been clicked
15
+ // This is required for one-off downloads of the blob content
16
+ const clickHandler = () => {
17
+ setTimeout(() => {
18
+ URL.revokeObjectURL(blobUrl);
19
+ removeEventListener('click', clickHandler);
20
+ document.body.removeChild(link);
21
+ }, 200);
22
+ };
23
+ link.addEventListener('click', clickHandler, false);
24
+ // Append link to the body
25
+ document.body.appendChild(link);
26
+ // Dispatch click event on the link
27
+ link.dispatchEvent(new MouseEvent('click', {
28
+ bubbles: true,
29
+ cancelable: true,
30
+ view: window
31
+ }));
32
+ }
33
+ const ExportDiagram = memo(({ diagram, onCompleted }) => {
34
+ const id = diagram.id;
35
+ const [ref, diagramApi] = useDiagramApi();
36
+ const padding = 20;
37
+ const width = diagram.width + padding * 2;
38
+ const height = diagram.height + padding * 2;
39
+ // To avoid flickering and double rendering
40
+ useDebouncedEffect(() => {
41
+ void diagramApi.stage
42
+ .toBlob({
43
+ pixelRatio: 2,
44
+ mimeType: 'image/png',
45
+ callback(blob) {
46
+ if (blob) {
47
+ downloadBlob(blob, `${diagram.id}.png`);
48
+ }
49
+ onCompleted();
50
+ }
51
+ })
52
+ .catch(err => {
53
+ onCompleted();
54
+ // Show error after 100ms to avoid blocking the UI
55
+ setTimeout(() => {
56
+ window.alert(err);
57
+ }, 100);
58
+ });
59
+ }, [id], 400);
60
+ return (<Portal>
61
+ <Box position={'fixed'} style={{
62
+ top: 0,
63
+ left: 0,
64
+ width,
65
+ height,
66
+ transform: `translateY(${-height}px)`
67
+ }}>
68
+ <Diagram ref={ref} animate={false} pannable={false} zoomable={false} diagram={diagram} padding={padding} width={width} height={height}/>
69
+ </Box>
70
+ </Portal>);
71
+ });
72
+ export default ExportDiagram;
@@ -1,8 +1,10 @@
1
1
  import { CaretDownIcon, Share1Icon as ShareIcon } from '@radix-ui/react-icons';
2
- import { Button, Dialog, DropdownMenu, Flex, Text } from '@radix-ui/themes';
3
- import { ThemePanelToggle } from '../ThemePanelToggle';
2
+ import { Button, Dialog, DropdownMenu, Flex, IconButton, Separator, Text } from '@radix-ui/themes';
3
+ import { useState } from 'react';
4
+ // import { ThemePanelToggle } from '../ThemePanelToggle'
5
+ import ExportDiagram from './ExportDiagram';
4
6
  import { ShareDialog } from './ShareDialog';
5
- const ExportMenu = ({ diagramApi, children }) => (<DropdownMenu.Root>
7
+ const ExportMenu = ({ onExport, children }) => (<DropdownMenu.Root>
6
8
  <DropdownMenu.Trigger>{children}</DropdownMenu.Trigger>
7
9
  <DropdownMenu.Content>
8
10
  <DropdownMenu.Label>
@@ -10,8 +12,12 @@ const ExportMenu = ({ diagramApi, children }) => (<DropdownMenu.Root>
10
12
  </DropdownMenu.Label>
11
13
  <DropdownMenu.Group>
12
14
  <DropdownMenu.Item onClick={_ => {
15
+ onExport('png');
13
16
  // const { boundingBox } = diagramApi.diagramView()
14
- console.log('Serialized: ', diagramApi.stage.toObject());
17
+ // console.log('Serialized: ', diagramApi.stage.toObject())
18
+ // const k = new KonvaCore.Canvas({
19
+ // height: diagramApi.
20
+ // })
15
21
  // diagramApi.stage().toBlob({
16
22
  // ...boundingBox,
17
23
  // callback(blob) {
@@ -27,21 +33,40 @@ const ExportMenu = ({ diagramApi, children }) => (<DropdownMenu.Root>
27
33
  }}>
28
34
  Export as .png
29
35
  </DropdownMenu.Item>
30
- <DropdownMenu.Item>Export as .dot</DropdownMenu.Item>
31
- <DropdownMenu.Item>Export as .d2</DropdownMenu.Item>
32
- <DropdownMenu.Item>Export as .mmd</DropdownMenu.Item>
36
+ <DropdownMenu.Item disabled>Export as .dot</DropdownMenu.Item>
37
+ <DropdownMenu.Item disabled>Export as .mmd</DropdownMenu.Item>
38
+ <DropdownMenu.Item disabled>Export as .d2</DropdownMenu.Item>
33
39
  </DropdownMenu.Group>
34
40
  <DropdownMenu.Separator />
35
41
  <DropdownMenu.Label>
36
42
  <Text weight='medium'>All views</Text>
37
43
  </DropdownMenu.Label>
38
44
  <DropdownMenu.Group>
39
- <DropdownMenu.Item>Download as ZIP</DropdownMenu.Item>
45
+ <DropdownMenu.Item disabled>Download as ZIP</DropdownMenu.Item>
40
46
  </DropdownMenu.Group>
41
47
  </DropdownMenu.Content>
42
48
  </DropdownMenu.Root>);
43
- export const ViewActionsToolbar = ({ diagramApi, diagram }) => {
44
- return (<Flex position='fixed' top='0' right='0' p='2' gap={'3'} justify='end'>
49
+ export const ViewActionsToolbar = ({ diagram }) => {
50
+ const [exportTo, setExportTo] = useState(null);
51
+ return (<Flex position='fixed' top='0' right='0' p='2' gap={'3'} justify='end' align='center'>
52
+ <Flex display={{
53
+ initial: 'none',
54
+ md: 'flex'
55
+ }} gap='3' align='center'>
56
+ <Button variant='solid' size='1'>
57
+ React
58
+ </Button>
59
+ <Button variant='ghost' size='1'>
60
+ Graphviz
61
+ </Button>
62
+ <Button variant='ghost' size='1'>
63
+ Mermaid
64
+ </Button>
65
+ <IconButton variant='ghost' size='1'>
66
+ <CaretDownIcon />
67
+ </IconButton>
68
+ <Separator orientation='vertical'/>
69
+ </Flex>
45
70
  <Dialog.Root>
46
71
  <Dialog.Trigger>
47
72
  <Button variant='solid'>
@@ -51,12 +76,13 @@ export const ViewActionsToolbar = ({ diagramApi, diagram }) => {
51
76
  </Dialog.Trigger>
52
77
  <ShareDialog diagram={diagram}/>
53
78
  </Dialog.Root>
54
- <ExportMenu diagramApi={diagramApi}>
79
+ <ExportMenu onExport={setExportTo}>
55
80
  <Button variant='soft' color='gray'>
56
81
  <Text>Export</Text>
57
82
  <CaretDownIcon />
58
83
  </Button>
59
84
  </ExportMenu>
60
- <ThemePanelToggle />
85
+ {exportTo === 'png' && (<ExportDiagram key={'export-diagram-png'} diagram={diagram} onCompleted={() => setExportTo(null)}/>)}
86
+ {/* <ThemePanelToggle /> */}
61
87
  </Flex>);
62
88
  };