@likec4/diagram 1.59.2 → 1.59.4

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 (233) hide show
  1. package/README.md +53 -0
  2. package/dist/LikeC4Diagram.d.ts +1 -1
  3. package/dist/LikeC4Diagram.js +36 -21
  4. package/dist/LikeC4Diagram.props.d.ts +23 -0
  5. package/dist/LikeC4MantineProvider.d.ts +24 -0
  6. package/dist/LikeC4MantineProvider.js +156 -0
  7. package/dist/LikeC4ProjectsOverview.js +1 -1
  8. package/dist/LikeC4ProjectsProvider.d.ts +17 -2
  9. package/dist/LikeC4Styles.d.ts +13 -3
  10. package/dist/LikeC4Styles.js +10 -6
  11. package/dist/LikeC4View.js +2 -2
  12. package/dist/StaticLikeC4Diagram.d.ts +1 -1
  13. package/dist/base/BaseXYFlow.d.ts +1 -1
  14. package/dist/base/BaseXYFlow.js +19 -9
  15. package/dist/base/const.d.ts +1 -0
  16. package/dist/base/const.js +3 -1
  17. package/dist/base-primitives/Markdown.d.ts +3 -3
  18. package/dist/base-primitives/compound/CompoundNodeContainer.js +2 -3
  19. package/dist/base-primitives/compound/CompoundTitle.js +5 -4
  20. package/dist/base-primitives/compound/actionbtns.css.d.ts +3 -3
  21. package/dist/base-primitives/compound/actionbtns.css.js +3 -3
  22. package/dist/base-primitives/element/ElementData.js +6 -1
  23. package/dist/base-primitives/element/ElementShape.js +9 -10
  24. package/dist/base-primitives/element/ElementTags.d.ts +2 -2
  25. package/dist/base-primitives/element/ElementTags.js +5 -5
  26. package/dist/components/EmptyBox.d.ts +3 -0
  27. package/dist/components/EmptyBox.js +9 -0
  28. package/dist/components/ErrorFallback.js +7 -6
  29. package/dist/components/FloatingWindow.d.ts +18 -0
  30. package/dist/components/FloatingWindow.js +89 -0
  31. package/dist/components/Link.js +7 -7
  32. package/dist/components/NavigationPanel.d.ts +2 -2
  33. package/dist/components/NavigationPanel.js +5 -6
  34. package/dist/components/SearchControl.css.js +10 -12
  35. package/dist/components/ViewIcon.d.ts +11 -0
  36. package/dist/components/ViewIcon.js +71 -0
  37. package/dist/context/CurrentViewModelProvider.js +2 -1
  38. package/dist/context/DiagramEventHandlers.js +4 -2
  39. package/dist/context/EnsureMantine.js +3 -3
  40. package/dist/context/IconRenderer.d.ts +2 -1
  41. package/dist/context/IconRenderer.js +78 -26
  42. package/dist/context/LikeC4ProjectsContext.d.ts +3 -2
  43. package/dist/context/TagStylesContext.d.ts +11 -4
  44. package/dist/context/TagStylesContext.js +39 -27
  45. package/dist/custom/index.d.ts +3 -0
  46. package/dist/custom/index.js +7 -4
  47. package/dist/editor/LikeC4EditorCallbacks.d.ts +20 -1
  48. package/dist/editor/LikeC4EditorCallbacks.js +4 -1
  49. package/dist/editor/actor/setup.d.ts +1 -0
  50. package/dist/editor/actor/setup.js +17 -12
  51. package/dist/editor/actor/state.sync-queue.js +1 -0
  52. package/dist/editor/applyChangesToManualLayout.js +5 -2
  53. package/dist/editor/index.d.ts +1 -1
  54. package/dist/editor/useEditorActorLogic.js +10 -3
  55. package/dist/hooks/safeContext.d.ts +12 -4
  56. package/dist/hooks/safeContext.js +2 -2
  57. package/dist/hooks/useCurrentView.js +5 -5
  58. package/dist/hooks/useDiagram.js +3 -23
  59. package/dist/hooks/useDiagramCompareLayout.d.ts +16 -6
  60. package/dist/hooks/useDiagramCompareLayout.js +20 -17
  61. package/dist/hooks/useEditorActor.js +3 -5
  62. package/dist/hooks/useLikeC4Model.js +8 -3
  63. package/dist/hooks/useLikeC4Project.d.ts +4 -3
  64. package/dist/hooks/useOverlaysActor.d.ts +1 -1
  65. package/dist/hooks/useUpdateEffect.js +2 -1
  66. package/dist/index.d.ts +6 -4
  67. package/dist/index.js +8 -6
  68. package/dist/likec4diagram/DiagramUI.js +4 -3
  69. package/dist/likec4diagram/DiagramXYFlow.d.ts +6 -0
  70. package/dist/likec4diagram/DiagramXYFlow.js +33 -19
  71. package/dist/likec4diagram/custom/edges/EdgeDrifts.js +4 -4
  72. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +2 -4
  73. package/dist/likec4diagram/custom/edges/SequenceStepEdge.js +1 -3
  74. package/dist/likec4diagram/custom/edges/edges.css.js +13 -13
  75. package/dist/likec4diagram/custom/edges/useRelationshipEdgePath.js +3 -2
  76. package/dist/likec4diagram/custom/nodes/NodeDrifts.js +2 -2
  77. package/dist/likec4diagram/custom/nodes/NodeNotes.js +4 -4
  78. package/dist/likec4diagram/custom/nodes/SequenceActorNode.js +2 -2
  79. package/dist/likec4diagram/custom/nodes/SequenceSubFlow.js +8 -5
  80. package/dist/likec4diagram/custom/nodes/nodes.js +8 -5
  81. package/dist/likec4diagram/custom/nodes/toolbar/ColorButton.js +2 -2
  82. package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.js +9 -8
  83. package/dist/likec4diagram/custom/nodes/toolbar/styles.css.js +1 -1
  84. package/dist/likec4diagram/relationship-popover/RelationshipPopover.js +3 -2
  85. package/dist/likec4diagram/relationship-popover/components.d.ts +1 -1
  86. package/dist/likec4diagram/relationship-popover/components.js +6 -2
  87. package/dist/likec4diagram/state/DiagramActorProvider.d.ts +7 -2
  88. package/dist/likec4diagram/state/DiagramActorProvider.js +20 -4
  89. package/dist/likec4diagram/state/assign.js +1 -1
  90. package/dist/likec4diagram/state/createViewChange.js +1 -6
  91. package/dist/likec4diagram/state/diagram-api.d.ts +2 -2
  92. package/dist/likec4diagram/state/diagram-api.js +3 -2
  93. package/dist/likec4diagram/state/machine.actions.js +15 -8
  94. package/dist/likec4diagram/state/machine.actions.layout.d.ts +1 -0
  95. package/dist/likec4diagram/state/machine.actions.layout.js +7 -5
  96. package/dist/likec4diagram/state/machine.setup.d.ts +10 -1
  97. package/dist/likec4diagram/state/machine.setup.js +15 -9
  98. package/dist/likec4diagram/state/machine.state.initializing.d.ts +2 -26
  99. package/dist/likec4diagram/state/machine.state.initializing.js +9 -6
  100. package/dist/likec4diagram/state/machine.state.navigating.js +1 -1
  101. package/dist/likec4diagram/state/machine.state.ready.d.ts +134 -3
  102. package/dist/likec4diagram/state/machine.state.ready.js +2 -1
  103. package/dist/likec4diagram/state/machine.state.ready.walkthrough.d.ts +106 -1
  104. package/dist/likec4diagram/state/machine.state.ready.walkthrough.js +40 -7
  105. package/dist/likec4diagram/state/utils.d.ts +1 -1
  106. package/dist/likec4diagram/state/utils.js +7 -4
  107. package/dist/likec4diagram/ui/FloatingSequenceActors.js +2 -1
  108. package/dist/likec4diagram/ui/LayoutDriftFrame.js +16 -10
  109. package/dist/likec4diagram/ui/index.d.ts +1 -1
  110. package/dist/likec4diagram/ui/notation/NotationPanel.css.js +13 -15
  111. package/dist/likec4diagram/ui/notation/NotationPanel.js +9 -9
  112. package/dist/likec4diagram/ui/sequence-outline/ActiveTrail.d.ts +9 -0
  113. package/dist/likec4diagram/ui/sequence-outline/ActiveTrail.js +81 -0
  114. package/dist/likec4diagram/ui/sequence-outline/FlowRow.d.ts +11 -0
  115. package/dist/likec4diagram/ui/sequence-outline/FlowRow.js +70 -0
  116. package/dist/likec4diagram/ui/sequence-outline/OutlineBody.d.ts +2 -0
  117. package/dist/likec4diagram/ui/sequence-outline/OutlineBody.js +106 -0
  118. package/dist/likec4diagram/ui/sequence-outline/OutlineHeader.d.ts +2 -0
  119. package/dist/likec4diagram/ui/sequence-outline/OutlineHeader.js +140 -0
  120. package/dist/likec4diagram/ui/sequence-outline/OutlineNodes.d.ts +17 -0
  121. package/dist/likec4diagram/ui/sequence-outline/OutlineNodes.js +83 -0
  122. package/dist/likec4diagram/ui/sequence-outline/SequenceOutlinePanel.d.ts +4 -0
  123. package/dist/likec4diagram/ui/sequence-outline/SequenceOutlinePanel.js +49 -525
  124. package/dist/likec4diagram/ui/sequence-outline/StepBadge.d.ts +8 -0
  125. package/dist/likec4diagram/ui/sequence-outline/StepBadge.js +52 -0
  126. package/dist/likec4diagram/ui/sequence-outline/StepRow.d.ts +7 -0
  127. package/dist/likec4diagram/ui/sequence-outline/StepRow.js +190 -0
  128. package/dist/likec4diagram/ui/sequence-outline/StoreProvider.d.ts +238 -0
  129. package/dist/likec4diagram/ui/sequence-outline/StoreProvider.js +94 -0
  130. package/dist/likec4diagram/ui/sequence-outline/depth-of-field.d.ts +21 -0
  131. package/dist/likec4diagram/ui/sequence-outline/depth-of-field.js +71 -0
  132. package/dist/likec4diagram/ui/sequence-outline/index.d.ts +2 -0
  133. package/dist/likec4diagram/ui/sequence-outline/motion.d.ts +13 -0
  134. package/dist/likec4diagram/ui/sequence-outline/motion.js +21 -0
  135. package/dist/likec4diagram/ui/sequence-outline/presentation.d.ts +10 -0
  136. package/dist/likec4diagram/ui/sequence-outline/presentation.js +80 -0
  137. package/dist/likec4diagram/ui/sequence-outline/tree.d.ts +9 -0
  138. package/dist/likec4diagram/ui/sequence-outline/tree.js +67 -0
  139. package/dist/likec4diagram/ui/sequence-outline/{state.d.ts → types.d.ts} +4 -2
  140. package/dist/likec4diagram/ui/sequence-outline/types.js +12 -0
  141. package/dist/likec4diagram/useLayoutConstraints.js +13 -1
  142. package/dist/likec4diagram/xyflow-sequence/layouter.js +8 -10
  143. package/dist/likec4diagram/xyflow-sequence/sequence-view-to-xy.js +1 -0
  144. package/dist/likec4diagram/xyflow-sequence/utils.js +0 -1
  145. package/dist/navigationpanel/NavigationPanel.js +45 -41
  146. package/dist/navigationpanel/NavigationPanelControls.js +102 -63
  147. package/dist/navigationpanel/NavigationPanelDropdown.js +52 -77
  148. package/dist/navigationpanel/_common.d.ts +6 -6
  149. package/dist/navigationpanel/_common.js +31 -42
  150. package/dist/navigationpanel/actor.actions.js +6 -5
  151. package/dist/navigationpanel/actor.js +2 -2
  152. package/dist/navigationpanel/actor.setup.d.ts +6 -6
  153. package/dist/navigationpanel/actor.setup.js +2 -1
  154. package/dist/navigationpanel/comparepanel/CompareActionsMenu.js +2 -4
  155. package/dist/navigationpanel/comparepanel/ComparePanel.js +8 -10
  156. package/dist/navigationpanel/comparepanel/DriftsSummary.d.ts +1 -1
  157. package/dist/navigationpanel/comparepanel/DriftsSummary.js +11 -9
  158. package/dist/navigationpanel/controls/LayoutWarning.js +69 -72
  159. package/dist/navigationpanel/controls/NavigationButtons.d.ts +1 -1
  160. package/dist/navigationpanel/controls/NavigationButtons.js +8 -8
  161. package/dist/navigationpanel/controls/OpenSource.d.ts +1 -1
  162. package/dist/navigationpanel/controls/OpenSource.js +5 -8
  163. package/dist/navigationpanel/controls/SearchControl.js +24 -9
  164. package/dist/navigationpanel/controls/ToggleReadonly.d.ts +4 -1
  165. package/dist/navigationpanel/controls/ToggleReadonly.js +56 -76
  166. package/dist/navigationpanel/controls/ViewDetailsButton.d.ts +5 -0
  167. package/dist/navigationpanel/controls/ViewDetailsButton.js +121 -0
  168. package/dist/navigationpanel/controls/index.d.ts +1 -1
  169. package/dist/navigationpanel/dropdown/ProjectsMenu.js +27 -16
  170. package/dist/navigationpanel/editorpanel/ApplySemanticLayout.js +2 -1
  171. package/dist/navigationpanel/editorpanel/ChangeAutoLayoutButton.js +12 -10
  172. package/dist/navigationpanel/editorpanel/ManualLayoutToolsButton.d.ts +2 -0
  173. package/dist/navigationpanel/editorpanel/ManualLayoutToolsButton.js +19 -10
  174. package/dist/navigationpanel/editorpanel/styles.js +8 -15
  175. package/dist/navigationpanel/hooks.d.ts +6 -2
  176. package/dist/navigationpanel/styles.css.d.ts +2 -2
  177. package/dist/navigationpanel/styles.css.js +0 -1
  178. package/dist/navigationpanel/walkthrough/ActiveWalkthroughControls.js +3 -2
  179. package/dist/navigationpanel/walkthrough/DynamicViewControls.d.ts +5 -4
  180. package/dist/navigationpanel/walkthrough/DynamicViewControls.js +10 -39
  181. package/dist/navigationpanel/walkthrough/DynamicViewModeSwitcher.d.ts +1 -0
  182. package/dist/navigationpanel/walkthrough/DynamicViewModeSwitcher.js +49 -0
  183. package/dist/navigationpanel/walkthrough/WalkthroughPanel.js +8 -8
  184. package/dist/navigationpanel/windows/ViewDetailsWindow.d.ts +1 -0
  185. package/dist/navigationpanel/windows/ViewDetailsWindow.js +379 -0
  186. package/dist/overlays/Overlays.js +29 -17
  187. package/dist/overlays/element-details/ElementDetailsCard.css.js +28 -36
  188. package/dist/overlays/element-details/ElementDetailsCard.js +3 -3
  189. package/dist/overlays/element-details/MetadataValue.js +18 -16
  190. package/dist/overlays/element-details/TabPanelDeployments.css.js +6 -14
  191. package/dist/overlays/element-details/TabPanelRelationships.css.js +8 -12
  192. package/dist/overlays/element-details/TabPanelStructure.css.js +4 -8
  193. package/dist/overlays/hooks.d.ts +3 -1
  194. package/dist/overlays/overlay/Overlay.js +8 -7
  195. package/dist/overlays/overlaysActor.js +20 -17
  196. package/dist/overlays/relationship-details/RelationshipDetails.js +2 -1
  197. package/dist/overlays/relationship-details/SelectEdge.css.js +14 -9
  198. package/dist/overlays/relationship-details/actor.js +1 -1
  199. package/dist/overlays/relationship-details/hooks.js +2 -1
  200. package/dist/overlays/relationships-browser/RelationshipsBrowser.d.ts +6 -0
  201. package/dist/overlays/relationships-browser/RelationshipsBrowser.js +15 -8
  202. package/dist/overlays/relationships-browser/SelectElement.css.js +2 -8
  203. package/dist/overlays/relationships-browser/SelectElement.js +5 -1
  204. package/dist/overlays/relationships-browser/actor.js +3 -2
  205. package/dist/overlays/relationships-browser/custom/ElementActions.js +39 -38
  206. package/dist/overlays/relationships-browser/custom/EmptyNode.js +7 -9
  207. package/dist/overlays/relationships-browser/hooks.js +2 -1
  208. package/dist/projects-overview/ProjectsOverview.js +8 -7
  209. package/dist/projects-overview/actor.js +1 -1
  210. package/dist/projects-overview/hooks.js +2 -1
  211. package/dist/search/Search.js +9 -7
  212. package/dist/search/components/ElementsColumn.css.js +6 -5
  213. package/dist/search/components/ElementsColumn.js +4 -3
  214. package/dist/search/components/SearchByTags.js +3 -3
  215. package/dist/search/components/ViewsColum.js +46 -43
  216. package/dist/search/components/ViewsColumn.css.js +4 -4
  217. package/dist/search/components/_shared.css.d.ts +2 -2
  218. package/dist/search/components/_shared.css.js +31 -46
  219. package/dist/search/components/styles.css.js +4 -4
  220. package/dist/search/hooks.js +2 -1
  221. package/dist/shadowroot/ShadowRoot.js +6 -5
  222. package/dist/styles2.js +1 -1
  223. package/dist/utils/index.js +3 -3
  224. package/package.json +29 -29
  225. package/panda.buildinfo.json +342 -299
  226. package/styles-min.css +1 -1
  227. package/styles-xyflow.css +1 -1
  228. package/styles.css +1 -1
  229. package/dist/context/DefaultMantineProvider.d.ts +0 -2
  230. package/dist/context/DefaultMantineProvider.js +0 -48
  231. package/dist/likec4diagram/ui/sequence-outline/state.js +0 -55
  232. package/dist/navigationpanel/controls/DetailsControls.d.ts +0 -2
  233. package/dist/navigationpanel/controls/DetailsControls.js +0 -223
@@ -1,21 +1,25 @@
1
1
  import "../_virtual/_rolldown/runtime.js";
2
2
  import { useOnDiagramEvent } from "../hooks/useDiagram.js";
3
+ import { useOptionalCurrentViewModel } from "../context/LikeC4ModelContext.js";
3
4
  import { useLikeC4Model } from "../hooks/useLikeC4Model.js";
4
5
  import { Tooltip as Tooltip$1 } from "./_common.js";
5
6
  import { selectNavigationContext, useNavigationActor, useNavigationActorRef, useNavigationActorSelector } from "./hooks.js";
7
+ import { EmptyBox } from "../components/EmptyBox.js";
8
+ import { viewIcon } from "../components/ViewIcon.js";
6
9
  import { breadcrumbTitle } from "./styles.css.js";
7
10
  import { NavigationLink } from "../components/NavigationLink.js";
8
11
  import { ProjectsMenu } from "./dropdown/ProjectsMenu.js";
9
12
  import { css, cx } from "@likec4/styles/css";
10
- import { IconChevronRight, IconDirectionSignFilled, IconFolderFilled, IconSearch, IconStack2, IconStarFilled, IconZoomScan } from "@tabler/icons-react";
13
+ import { IconChevronRight, IconFolderFilled, IconSearch } from "@tabler/icons-react";
11
14
  import { memo, useDeferredValue, useEffect, useRef, useState } from "react";
12
15
  import { jsx, jsxs } from "react/jsx-runtime";
13
16
  import { useMountEffect } from "@react-hookz/web";
14
- import { deepEqual, shallowEqual } from "fast-equals";
17
+ import { shallowEqual } from "fast-equals";
15
18
  import { isArray, isEmpty, pipe, sort } from "remeda";
16
19
  import { Breadcrumbs, Button, Divider, Highlight, Input, PopoverDropdown, ScrollAreaAutosize, UnstyledButton, createScopedKeydownHandler } from "@mantine/core";
17
20
  import { compareNaturalHierarchically, ifilter, ifirst, nonexhaustive, toArray } from "@likec4/core/utils";
18
- import { useSelector } from "@xstate/react";
21
+ import "motion/react";
22
+ import "@xstate/react";
19
23
  import { useThrottledCallback, useUncontrolled } from "@mantine/hooks";
20
24
  import { Box as Box$1, HStack, VStack } from "@likec4/styles/jsx";
21
25
  import { hstack, vstack } from "@likec4/styles/patterns";
@@ -28,10 +32,11 @@ var scopedKeydownHandler = createScopedKeydownHandler({
28
32
  loop: true,
29
33
  orientation: "vertical"
30
34
  });
31
- var hasSearchQuerySelector = selectNavigationContext((s) => s.searchQuery.trim().length >= 2);
35
+ var hasSearchQuerySelector = selectNavigationContext((s) => s.searchQuery);
32
36
  var NavigationPanelDropdown = memo(() => {
33
37
  const actor = useNavigationActor();
34
- const hasSearchQuery = useNavigationActorSelector(hasSearchQuerySelector);
38
+ const searchQuery = useNavigationActorSelector(hasSearchQuerySelector);
39
+ const hasSearchQuery = searchQuery.trim().length >= 2;
35
40
  useOnDiagramEvent("paneClick", () => {
36
41
  actor.closeDropdown();
37
42
  });
@@ -61,7 +66,7 @@ var NavigationPanelDropdown = memo(() => {
61
66
  /* @__PURE__ */ jsx(HStack, {
62
67
  gap: "xs",
63
68
  children: /* @__PURE__ */ jsx(SearchInput, {
64
- defaultValue: actor.actorRef.getSnapshot().context.searchQuery,
69
+ defaultValue: searchQuery,
65
70
  onChange: setSearchQuery
66
71
  })
67
72
  }),
@@ -77,14 +82,13 @@ var NavigationPanelDropdown = memo(() => {
77
82
  });
78
83
  });
79
84
  NavigationPanelDropdown.displayName = "NavigationPanelDropdown";
80
- function selectSearchQuery(s) {
81
- return normalizeViewPath(s.context.searchQuery);
82
- }
85
+ var selectSearchQuery = selectNavigationContext((s) => normalizeViewPath(s.searchQuery));
83
86
  var compare = compareNaturalHierarchically(VIEW_FOLDERS_SEPARATOR);
84
87
  var SearchResults = memo(() => {
85
88
  const likec4model = useLikeC4Model();
86
89
  const actor = useNavigationActor();
87
- const deferredSearchQuery = useDeferredValue(useSelector(actor.actorRef, selectSearchQuery));
90
+ const searchQuery = useNavigationActorSelector(selectSearchQuery);
91
+ const deferredSearchQuery = useDeferredValue(searchQuery);
88
92
  const isSearchByPath = deferredSearchQuery.includes(VIEW_FOLDERS_SEPARATOR);
89
93
  const highlight = isSearchByPath ? deferredSearchQuery.split(VIEW_FOLDERS_SEPARATOR) : deferredSearchQuery;
90
94
  const [found, setFound] = useState([]);
@@ -101,7 +105,10 @@ var SearchResults = memo(() => {
101
105
  deferredSearchQuery,
102
106
  isSearchByPath
103
107
  ]);
104
- if (found.length === 0) return /* @__PURE__ */ jsx("div", { children: "no results" });
108
+ if (found.length === 0) return /* @__PURE__ */ jsx(EmptyBox, {
109
+ style: { minWidth: 200 },
110
+ children: "no results"
111
+ });
105
112
  return /* @__PURE__ */ jsx(ScrollAreaAutosize, {
106
113
  scrollbars: "xy",
107
114
  offsetScrollbars: false,
@@ -136,8 +143,8 @@ var foundedViewClass = hstack({
136
143
  } },
137
144
  _focus: {
138
145
  outline: "none",
139
- color: "mantine.primary.lightColor!",
140
- backgroundColor: "mantine.primary.lightHover!"
146
+ color: "primary.text.light!",
147
+ backgroundColor: "primary.body.lightHover!"
141
148
  }
142
149
  });
143
150
  var inheritColor = css({ _groupFocus: {
@@ -146,16 +153,15 @@ var inheritColor = css({ _groupFocus: {
146
153
  } });
147
154
  function FoundedView({ view, highlight, ...props }) {
148
155
  const folder = view.folder;
149
- const viewIcon = ViewTypeIcon[view.id === "index" ? "index" : view._type];
156
+ const icon = viewIcon(view.id === "index" ? "index" : view._type);
150
157
  const viewLabel = /* @__PURE__ */ jsx(Highlight, {
151
158
  component: "div",
152
159
  className: cx(inheritColor, breadcrumbTitle({ truncate: true }), css({ "& > mark": {
153
160
  backgroundColor: {
154
- base: "mantine.yellow[2]/90",
155
- _dark: "mantine.yellow[5]/80",
156
- _groupFocus: "[transparent]"
161
+ base: "highlight.body/80",
162
+ _groupFocus: "transparent"
157
163
  },
158
- color: { _groupFocus: "[inherit!]" }
164
+ color: { _groupFocus: "inherit!" }
159
165
  } })),
160
166
  maw: 350,
161
167
  highlight,
@@ -165,7 +171,7 @@ function FoundedView({ view, highlight, ...props }) {
165
171
  if (folder.isRoot) return /* @__PURE__ */ jsxs(UnstyledButton, {
166
172
  ...props,
167
173
  className,
168
- children: [viewIcon, viewLabel]
174
+ children: [icon, viewLabel]
169
175
  });
170
176
  const breadcrumbs = folder.breadcrumbs.map((b) => /* @__PURE__ */ jsx(Highlight, {
171
177
  component: "div",
@@ -179,7 +185,7 @@ function FoundedView({ view, highlight, ...props }) {
179
185
  }, b.path));
180
186
  breadcrumbs.push(/* @__PURE__ */ jsxs(HStack, {
181
187
  gap: "[4px]",
182
- children: [viewIcon, viewLabel]
188
+ children: [icon, viewLabel]
183
189
  }));
184
190
  return /* @__PURE__ */ jsxs(UnstyledButton, {
185
191
  ...props,
@@ -199,39 +205,12 @@ var btnRightSection = /* @__PURE__ */ jsx(IconChevronRight, {
199
205
  var folderIcon = /* @__PURE__ */ jsx(IconFolderFilled, {
200
206
  size: 16,
201
207
  className: css({ opacity: {
202
- base: .3,
203
- _groupHover: .5,
204
- _groupActive: .5,
205
- _groupFocus: .5
208
+ base: "0.3",
209
+ _groupHover: "0.5",
210
+ _groupActive: "0.5",
211
+ _groupFocus: "0.5"
206
212
  } })
207
213
  });
208
- var viewTypeIconCss = css({ opacity: {
209
- base: .3,
210
- _dark: .5,
211
- _groupHover: .8,
212
- _groupActive: .8,
213
- _groupFocus: .8
214
- } });
215
- var ViewTypeIcon = {
216
- index: /* @__PURE__ */ jsx(IconStarFilled, {
217
- size: 16,
218
- className: viewTypeIconCss
219
- }),
220
- element: /* @__PURE__ */ jsx(IconZoomScan, {
221
- size: 18,
222
- stroke: 2,
223
- className: viewTypeIconCss
224
- }),
225
- deployment: /* @__PURE__ */ jsx(IconStack2, {
226
- size: 16,
227
- stroke: 1.5,
228
- className: viewTypeIconCss
229
- }),
230
- dynamic: /* @__PURE__ */ jsx(IconDirectionSignFilled, {
231
- size: 18,
232
- className: viewTypeIconCss
233
- })
234
- };
235
214
  var ColumnScrollArea = ScrollAreaAutosize.withProps({
236
215
  scrollbars: "y",
237
216
  className: css({ maxHeight: ["[calc(100vh - 160px)]", "[calc(100cqh - 160px)]"] })
@@ -248,23 +227,28 @@ function folderColumn(folder, context) {
248
227
  type: "view",
249
228
  viewType: s.id === "index" ? "index" : s._type,
250
229
  viewId: s.id,
251
- title: s.title ?? s.id,
230
+ title: s.titleOrId,
252
231
  description: s.description.nonEmpty && s.description.text || null,
253
- selected: s.id === context.viewModel?.id
232
+ selected: s.id === context.viewModel.id
254
233
  }))]
255
234
  };
256
235
  }
257
- var selectColumns = selectNavigationContext((ctx) => {
258
- const viewModel = ctx.viewModel;
236
+ var selectColumns = (viewModel, selectedFolder) => {
259
237
  if (!viewModel) return [];
238
+ const ctx = {
239
+ selectedFolder,
240
+ viewModel
241
+ };
260
242
  const likec4model = viewModel.$model;
261
243
  const columns = [folderColumn(likec4model.rootViewFolder, ctx)];
262
244
  const folder = likec4model.viewFolder(ctx.selectedFolder);
263
245
  if (!folder.isRoot) for (const b of folder.breadcrumbs) columns.push(folderColumn(b, ctx));
264
246
  return columns;
265
- }, deepEqual);
247
+ };
248
+ var selectState = selectNavigationContext((c) => c.selectedFolder);
266
249
  var FolderColumns = memo(() => {
267
- const columns = useNavigationActorSelector(selectColumns);
250
+ const selectedFolder = useNavigationActorSelector(selectState);
251
+ const columns = selectColumns(useOptionalCurrentViewModel(), selectedFolder);
268
252
  return /* @__PURE__ */ jsx(HStack, {
269
253
  gap: "xs",
270
254
  alignItems: "stretch",
@@ -285,7 +269,8 @@ function FolderColumn({ data, isLast }) {
285
269
  });
286
270
  else actor.send({
287
271
  type: "select.view",
288
- viewId: item.viewId
272
+ viewId: item.viewId,
273
+ viewFolder: data.folderPath
289
274
  });
290
275
  };
291
276
  useMountEffect(() => {
@@ -302,7 +287,9 @@ function FolderColumn({ data, isLast }) {
302
287
  gap: "0.5",
303
288
  children: data.items.map((item, i) => /* @__PURE__ */ jsx(FolderColumnItem, {
304
289
  columnItem: item,
305
- onClick: onItemClicked(item)
290
+ onClick: onItemClicked(item),
291
+ miw: "250px",
292
+ maw: "clamp(300px, 30cqw, 400px)"
306
293
  }, `${data.folderPath}/${item.type}/${i}`))
307
294
  }) })
308
295
  });
@@ -315,8 +302,6 @@ function FolderColumnItem({ columnItem, ...props }) {
315
302
  label: columnItem.title,
316
303
  leftSection: folderIcon,
317
304
  rightSection: btnRightSection,
318
- maw: "300px",
319
- miw: "200px",
320
305
  ...props
321
306
  }, columnItem.folderPath);
322
307
  case "view": return /* @__PURE__ */ jsx(Tooltip$1, {
@@ -331,9 +316,7 @@ function FolderColumnItem({ columnItem, ...props }) {
331
316
  active: columnItem.selected,
332
317
  label: columnItem.title,
333
318
  description: columnItem.description,
334
- leftSection: ViewTypeIcon[columnItem.viewType],
335
- maw: "300px",
336
- miw: "200px",
319
+ leftSection: viewIcon(columnItem.viewType),
337
320
  ...props
338
321
  }, columnItem.viewId)
339
322
  });
@@ -345,6 +328,9 @@ function SearchInput(props) {
345
328
  ...props,
346
329
  finalValue: ""
347
330
  });
331
+ useEffect(() => {
332
+ handleChange(props.defaultValue);
333
+ }, [props.defaultValue]);
348
334
  return /* @__PURE__ */ jsx(Input, {
349
335
  size: "xs",
350
336
  placeholder: "Search by title or id",
@@ -357,18 +343,7 @@ function SearchInput(props) {
357
343
  classNames: {
358
344
  wrapper: css({
359
345
  flexGrow: 1,
360
- backgroundColor: {
361
- base: "mantine.gray[1]",
362
- _dark: "mantine.dark[5]/80",
363
- _hover: {
364
- base: "mantine.gray[2]",
365
- _dark: "mantine.dark[4]"
366
- },
367
- _focus: {
368
- base: "mantine.gray[2]",
369
- _dark: "mantine.dark[4]"
370
- }
371
- },
346
+ layerStyle: "surface.field",
372
347
  rounded: "sm"
373
348
  }),
374
349
  input: css({
@@ -380,7 +355,7 @@ function SearchInput(props) {
380
355
  leftSection: /* @__PURE__ */ jsx(IconSearch, { size: 14 }),
381
356
  rightSectionPointerEvents: "all",
382
357
  rightSectionWidth: "min-content",
383
- rightSection: !props.value || isEmpty(props.value) ? null : /* @__PURE__ */ jsx(Button, {
358
+ rightSection: isEmpty(_value) ? null : /* @__PURE__ */ jsx(Button, {
384
359
  variant: "subtle",
385
360
  h: "100%",
386
361
  size: "compact-xs",
@@ -1,9 +1,9 @@
1
- import { NavigationPanelActionIconVariant } from '../../styled-system/recipes';
2
- import { ActionIconProps, TooltipProps, PlaceholderPolymorphicProps, BreadcrumbsProps } from '@mantine/core';
1
+ import { NavigationPanelActionIconVariant } from '@likec4/styles/recipes';
2
+ import { ActionIconProps, TooltipProps, PlaceholderPolymorphicProps } from '@mantine/core';
3
3
  import { HTMLMotionProps } from 'motion/react';
4
- import { NamedExoticComponent, RefAttributes, ForwardRefExoticComponent } from 'react';
4
+ import { ReactNode, NamedExoticComponent, RefAttributes, ForwardRefExoticComponent } from 'react';
5
5
  export declare const Tooltip: NamedExoticComponent< TooltipProps & RefAttributes<HTMLDivElement> & PlaceholderPolymorphicProps>;
6
- export declare const BreadcrumbsSeparator: () => import("react").JSX.Element;
7
- export declare const Breadcrumbs: NamedExoticComponent< BreadcrumbsProps & RefAttributes<HTMLDivElement> & PlaceholderPolymorphicProps>;
8
- export type PanelActionIconProps = Partial<NavigationPanelActionIconVariant> & Omit<ActionIconProps, keyof NavigationPanelActionIconVariant> & Omit<HTMLMotionProps<'button'>, keyof NavigationPanelActionIconVariant>;
6
+ export type PanelActionIconProps = Partial<NavigationPanelActionIconVariant> & Omit<ActionIconProps, keyof NavigationPanelActionIconVariant> & Omit<HTMLMotionProps<'button'>, keyof NavigationPanelActionIconVariant> & {
7
+ tooltip?: ReactNode;
8
+ };
9
9
  export declare const PanelActionIcon: ForwardRefExoticComponent<Omit<PanelActionIconProps, "ref"> & RefAttributes<HTMLButtonElement>>;
@@ -1,9 +1,9 @@
1
1
  import "../_virtual/_rolldown/runtime.js";
2
- import { css, cx } from "@likec4/styles/css";
3
- import { IconChevronRight } from "@tabler/icons-react";
2
+ import { cx } from "@likec4/styles/css";
3
+ import "@tabler/icons-react";
4
4
  import { forwardRef } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
- import { ActionIcon, Breadcrumbs, ThemeIcon, Tooltip } from "@mantine/core";
6
+ import { ActionIcon, Tooltip } from "@mantine/core";
7
7
  import * as m from "motion/react-m";
8
8
  import { navigationPanelActionIcon } from "@likec4/styles/recipes";
9
9
  //#region src/navigationpanel/_common.tsx
@@ -17,44 +17,33 @@ var Tooltip$1 = Tooltip.withProps({
17
17
  offset: 8,
18
18
  withinPortal: false
19
19
  });
20
- var BreadcrumbsSeparator = () => /* @__PURE__ */ jsx(ThemeIcon, {
21
- variant: "transparent",
22
- size: 16,
23
- className: css({
24
- display: {
25
- base: "none",
26
- "@/md": "flex"
27
- },
28
- color: {
29
- base: "mantine.gray[5]",
30
- _dark: "mantine.dark[3]"
31
- }
32
- }),
33
- children: /* @__PURE__ */ jsx(IconChevronRight, {})
20
+ var panelActionIconAnimation = {
21
+ whileHover: { scale: 1.085 },
22
+ whileTap: {
23
+ scale: 1,
24
+ translateY: 1
25
+ }
26
+ };
27
+ var PanelActionIcon = forwardRef(({ variant = "default", className, disabled = false, type, tooltip, ...others }, ref) => {
28
+ const content = /* @__PURE__ */ jsx(ActionIcon, {
29
+ size: "md",
30
+ variant: "transparent",
31
+ radius: "sm",
32
+ component: m.button,
33
+ ...!disabled ? panelActionIconAnimation : void 0,
34
+ disabled,
35
+ ...others,
36
+ className: cx(className, navigationPanelActionIcon({
37
+ variant,
38
+ type
39
+ })),
40
+ ref
41
+ });
42
+ if (tooltip) return /* @__PURE__ */ jsx(Tooltip$1, {
43
+ label: tooltip,
44
+ children: content
45
+ });
46
+ return content;
34
47
  });
35
- Breadcrumbs.withProps({
36
- separator: /* @__PURE__ */ jsx(BreadcrumbsSeparator, {}),
37
- separatorMargin: 4
38
- });
39
- var PanelActionIcon = forwardRef(({ variant = "default", className, disabled = false, type, ...others }, ref) => /* @__PURE__ */ jsx(ActionIcon, {
40
- size: "md",
41
- variant: "transparent",
42
- radius: "sm",
43
- component: m.button,
44
- ...!disabled && {
45
- whileHover: { scale: 1.085 },
46
- whileTap: {
47
- scale: 1,
48
- translateY: 1
49
- }
50
- },
51
- disabled,
52
- ...others,
53
- className: cx(className, navigationPanelActionIcon({
54
- variant,
55
- type
56
- })),
57
- ref
58
- }));
59
48
  //#endregion
60
- export { BreadcrumbsSeparator, PanelActionIcon, Tooltip$1 as Tooltip };
49
+ export { PanelActionIcon, Tooltip$1 as Tooltip };
@@ -13,18 +13,19 @@ var updateActivatedBy = () => actor.assign({ activatedBy: ({ context, event }) =
13
13
  var keepDropdownOpen = () => actor.assign({ activatedBy: "click" });
14
14
  var updateSelectedFolder = () => actor.assign(({ event }) => {
15
15
  if (event.type === "breadcrumbs.click.root") return { selectedFolder: "" };
16
+ if (event.type === "select.view") return { selectedFolder: event.viewFolder ?? "" };
16
17
  assertEvent(event, ["breadcrumbs.click.folder", "select.folder"]);
17
18
  return { selectedFolder: event.folderPath };
18
19
  });
19
- var resetSelectedFolder = () => actor.assign({ selectedFolder: ({ context }) => context.viewModel?.folder.path ?? "" });
20
+ var resetSelectedFolder = () => actor.assign({ selectedFolder: ({ context }) => context.viewFolder });
20
21
  var updateInputs = () => actor.assign(({ context, event }) => {
21
22
  assertEvent(event, "update.inputs");
22
- const viewChanged = event.inputs.viewModel?.id !== context.viewModel?.id;
23
+ const viewChanged = event.inputs.viewId !== context.viewId;
23
24
  let selectedFolder = context.selectedFolder;
24
- if (!event.inputs.viewModel?.folder.path.startsWith(selectedFolder)) selectedFolder = event.inputs.viewModel?.folder.path ?? "";
25
+ if (event.inputs.viewFolder && !event.inputs.viewFolder.startsWith(selectedFolder)) selectedFolder = event.inputs.viewFolder;
25
26
  return {
26
- view: event.inputs.view,
27
- viewModel: event.inputs.viewModel,
27
+ viewId: event.inputs.viewId,
28
+ viewFolder: event.inputs.viewFolder ?? context.viewFolder,
28
29
  selectedFolder,
29
30
  activatedBy: viewChanged ? "hover" : context.activatedBy
30
31
  };
@@ -65,7 +65,7 @@ var navigationPanelActorLogic = actor.createMachine({
65
65
  "breadcrumbs.click.viewtitle": { actions: resetSelectedFolder() },
66
66
  "breadcrumbs.click.*": { actions: updateSelectedFolder() },
67
67
  "select.folder": { actions: [keepDropdownOpen(), updateSelectedFolder()] },
68
- "select.view": { actions: emitNavigateTo() }
68
+ "select.view": { actions: [emitNavigateTo(), updateSelectedFolder()] }
69
69
  } },
70
70
  search: { on: {
71
71
  "breadcrumbs.click.viewtitle": {
@@ -76,7 +76,7 @@ var navigationPanelActorLogic = actor.createMachine({
76
76
  actions: [resetSearchQuery(), updateSelectedFolder()],
77
77
  target: "opened"
78
78
  },
79
- "select.view": { actions: emitNavigateTo() }
79
+ "select.view": { actions: [emitNavigateTo(), updateSelectedFolder()] }
80
80
  } },
81
81
  closing: {
82
82
  on: {
@@ -1,9 +1,8 @@
1
- import { LayoutedView, ViewId } from '@likec4/core/types';
2
- import { CurrentViewModel } from '../hooks/useCurrentViewModel';
1
+ import { ViewId } from '@likec4/core/types';
3
2
  import { SetupReturn, NonReducibleUnknown, EventObject, MetaObject } from 'xstate';
4
3
  export interface Input {
5
- view: LayoutedView;
6
- viewModel: CurrentViewModel | null;
4
+ viewId: ViewId;
5
+ viewFolder?: string | undefined;
7
6
  }
8
7
  export type Events = {
9
8
  type: 'update.inputs';
@@ -19,6 +18,7 @@ export type Events = {
19
18
  } | {
20
19
  type: 'select.view';
21
20
  viewId: ViewId;
21
+ viewFolder?: string | undefined;
22
22
  } | {
23
23
  type: 'breadcrumbs.mouseLeave';
24
24
  } | {
@@ -72,8 +72,8 @@ export type DropdownColumnItem = {
72
72
  selected: boolean;
73
73
  };
74
74
  export interface Context {
75
- view: LayoutedView;
76
- viewModel: CurrentViewModel | null;
75
+ viewId: ViewId;
76
+ viewFolder: string;
77
77
  /**
78
78
  * Who activated the dropdown
79
79
  * (if `click` then the dropdown is always open until dismissed)
@@ -4,7 +4,8 @@ import { setup } from "xstate";
4
4
  //#region src/navigationpanel/actor.setup.ts
5
5
  function Context({ input }) {
6
6
  return {
7
- ...input,
7
+ viewId: input.viewId,
8
+ viewFolder: input.viewFolder ?? "",
8
9
  activatedBy: "hover",
9
10
  selectedFolder: "",
10
11
  searchQuery: ""
@@ -14,9 +14,7 @@ function CompareActionsMenu({ disabled = false, onApplyLatestToManual, onResetMa
14
14
  shadow: "lg",
15
15
  position: "bottom-start",
16
16
  offset: { mainAxis: 4 },
17
- disabled,
18
17
  children: [/* @__PURE__ */ jsx(Menu.Target, { children: /* @__PURE__ */ jsxs(UnstyledButton, {
19
- disabled,
20
18
  className: cx("mantine-active", hstack({
21
19
  gap: "2",
22
20
  py: "1.5",
@@ -33,7 +31,7 @@ function CompareActionsMenu({ disabled = false, onApplyLatestToManual, onResetMa
33
31
  opacity: .7
34
32
  })]
35
33
  }) }), /* @__PURE__ */ jsxs(Menu.Dropdown, { children: [/* @__PURE__ */ jsxs(Menu.Item, {
36
- disabled: !onApplyLatestToManual,
34
+ disabled,
37
35
  onClick: onApplyLatestToManual,
38
36
  rightSection: onApplyLatestToManual && /* @__PURE__ */ jsx(Tooltip, {
39
37
  onClick: stopPropagation,
@@ -60,7 +58,7 @@ function CompareActionsMenu({ disabled = false, onApplyLatestToManual, onResetMa
60
58
  })]
61
59
  }), /* @__PURE__ */ jsx(Menu.Item, {
62
60
  onClick: onResetManualLayout,
63
- children: "Remove manual layout"
61
+ children: "Reset layout"
64
62
  })] })]
65
63
  });
66
64
  }
@@ -1,6 +1,5 @@
1
1
  import "../../_virtual/_rolldown/runtime.js";
2
2
  import { useCallbackRef } from "../../hooks/useCallbackRef.js";
3
- import { useEnabledFeatures } from "../../context/DiagramFeatures.js";
4
3
  import { useMantinePortalProps } from "../../hooks/useMantinePortalProps.js";
5
4
  import { useDiagramCompareLayout } from "../../hooks/useDiagramCompareLayout.js";
6
5
  import { Tooltip as Tooltip$1 } from "../_common.js";
@@ -33,7 +32,6 @@ var variants = {
33
32
  var ComparePanel = memo(() => {
34
33
  const portalProps = useMantinePortalProps();
35
34
  const isMounted = useIsMounted();
36
- const { enableCompareWithLatest } = useEnabledFeatures();
37
35
  const [ctx, ops] = useDiagramCompareLayout();
38
36
  const [isProcessing, setIsProcessing] = useState(false);
39
37
  const resetProcessing = () => {
@@ -61,9 +59,9 @@ var ComparePanel = memo(() => {
61
59
  resetProcessing();
62
60
  }, 200);
63
61
  });
64
- return /* @__PURE__ */ jsx(AnimatePresence, { children: enableCompareWithLatest && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(m$1.div, {
62
+ return /* @__PURE__ */ jsx(AnimatePresence, { children: ctx.state === "comparing" && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(m$1.div, {
65
63
  layout: "size",
66
- layoutDependency: ctx.drifts || ctx.layout,
64
+ layoutDependency: ctx.layout,
67
65
  className: hstack({
68
66
  gap: "2",
69
67
  layerStyle: "likec4.panel",
@@ -80,7 +78,7 @@ var ComparePanel = memo(() => {
80
78
  children: /* @__PURE__ */ jsx(ComparePanelControls, {})
81
79
  }, "ComparePanel"), /* @__PURE__ */ jsxs(m$1.div, {
82
80
  layout: "size",
83
- layoutDependency: ctx.drifts || ctx.layout,
81
+ layoutDependency: ctx.layout,
84
82
  variants,
85
83
  initial: "initial",
86
84
  animate: "animate",
@@ -93,12 +91,12 @@ var ComparePanel = memo(() => {
93
91
  pointerEvents: "all",
94
92
  height: "auto",
95
93
  overflow: "hidden",
96
- maxHeight: "calc(100cqh - 180px)",
97
- "@/md": { minWidth: "200px" }
94
+ maxHeight: "[calc(100cqh - 180px)]",
95
+ "@/md": { minWidth: "[200px]" }
98
96
  }),
99
97
  children: [/* @__PURE__ */ jsx(DriftsSummary, {}), ctx.canApplyLatest && /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsxs(m$1.div, {
100
98
  layout: "position",
101
- className: css({ flex: "0" }),
99
+ className: css({ flex: "[0]" }),
102
100
  children: [/* @__PURE__ */ jsx(Divider, {
103
101
  orientation: "horizontal",
104
102
  size: "xs",
@@ -117,13 +115,13 @@ var ComparePanel = memo(() => {
117
115
  disabled: ctx.layout === "auto",
118
116
  children: "Apply changes"
119
117
  })
120
- }), !isProcessing && /* @__PURE__ */ jsx(Tooltip$1, {
118
+ }), /* @__PURE__ */ jsx(Tooltip$1, {
121
119
  openDelay: 100,
122
120
  disabled: ctx.layout !== "manual",
123
121
  label: "Reset manual layout",
124
122
  ...portalProps,
125
123
  children: /* @__PURE__ */ jsx(Button, {
126
- hidden: isProcessing,
124
+ disabled: isProcessing,
127
125
  size: "xs",
128
126
  color: "orange",
129
127
  variant: "subtle",
@@ -1 +1 @@
1
- export declare function DriftsSummary(): import("react").JSX.Element | null;
1
+ export declare function DriftsSummary(): import("react").JSX.Element;
@@ -84,8 +84,8 @@ function DriftsSummary() {
84
84
  })
85
85
  };
86
86
  const { view, nodes, edges } = selected;
87
- if (view.length === 0 && nodes.length === 0 && edges.length === 0) return null;
88
- return /* @__PURE__ */ jsx(AnimatePresence, { children: /* @__PURE__ */ jsxs(m.div, {
87
+ const hasDrifts = view.length > 0 || nodes.length > 0 || edges.length > 0;
88
+ return /* @__PURE__ */ jsx(AnimatePresence, { children: hasDrifts && /* @__PURE__ */ jsxs(m.div, {
89
89
  layout: "size",
90
90
  variants,
91
91
  initial: "initial",
@@ -146,15 +146,15 @@ function NodeDrifts({ id, name, drifts, ...handlers }) {
146
146
  ...handlers,
147
147
  children: [/* @__PURE__ */ jsx(Txt, {
148
148
  truncate: true,
149
+ medium: true,
149
150
  css: { maxWidth: {
150
- base: 160,
151
- "@/sm": 180,
152
- "@/md": 250
151
+ base: "[160px]",
152
+ "@/sm": "[180px]",
153
+ "@/md": "[250px]"
153
154
  } },
154
- color: "likec4.compare.manual.outline",
155
+ color: "likec4.compare.outline",
155
156
  fontSize: "xs",
156
157
  lineHeight: "sm",
157
- fontWeight: "medium",
158
158
  children: name
159
159
  }), map(drifts, (drift, i) => /* @__PURE__ */ jsx(DriftLabel, { children: drift }, key + drift + i))]
160
160
  }, key);
@@ -175,10 +175,12 @@ var DriftsGroup = styled(m.div, { base: vstack.raw({
175
175
  cursor: "default",
176
176
  rounded: "sm",
177
177
  backgroundColor: "likec4.compare.manual/10",
178
- border: "1px solid {colors.likec4.compare.manual.outline/20}",
178
+ borderWidth: "default",
179
+ borderStyle: "solid",
180
+ borderColor: "likec4.compare.outline/20",
179
181
  _hover: {
180
182
  backgroundColor: "likec4.compare.manual/20",
181
- borderColor: "likec4.compare.manual.outline/25"
183
+ borderColor: "likec4.compare.outline/25"
182
184
  }
183
185
  }) }, { defaultProps: {
184
186
  className: "group",