@industry-theme/repository-composition-panels 0.6.20 → 0.6.22

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 (32) hide show
  1. package/dist/{BufferResource-FYx9GSx8.js → BufferResource-DrudEmhP.js} +2 -2
  2. package/dist/{BufferResource-FYx9GSx8.js.map → BufferResource-DrudEmhP.js.map} +1 -1
  3. package/dist/{CanvasRenderer-C98pDXJk.js → CanvasRenderer-B20Bru0X.js} +3 -3
  4. package/dist/{CanvasRenderer-C98pDXJk.js.map → CanvasRenderer-B20Bru0X.js.map} +1 -1
  5. package/dist/{Filter-CVgxmWSf.js → Filter-swlEv30u.js} +2 -2
  6. package/dist/{Filter-CVgxmWSf.js.map → Filter-swlEv30u.js.map} +1 -1
  7. package/dist/{RenderTargetSystem-D0EoJPdu.js → RenderTargetSystem-Bs_JVqUx.js} +3 -3
  8. package/dist/{RenderTargetSystem-D0EoJPdu.js.map → RenderTargetSystem-Bs_JVqUx.js.map} +1 -1
  9. package/dist/{WebGLRenderer-B1Wm0Fg0.js → WebGLRenderer-D5BVc_7m.js} +4 -4
  10. package/dist/{WebGLRenderer-B1Wm0Fg0.js.map → WebGLRenderer-D5BVc_7m.js.map} +1 -1
  11. package/dist/{WebGPURenderer-DjwoM27K.js → WebGPURenderer-BEq5wl8w.js} +4 -4
  12. package/dist/{WebGPURenderer-DjwoM27K.js.map → WebGPURenderer-BEq5wl8w.js.map} +1 -1
  13. package/dist/{browserAll-CXemTuGz.js → browserAll-DpC1Pe_C.js} +3 -3
  14. package/dist/{browserAll-CXemTuGz.js.map → browserAll-DpC1Pe_C.js.map} +1 -1
  15. package/dist/{index-CFyVQhEt.js → index-B88alco-.js} +993 -477
  16. package/dist/{index-CFyVQhEt.js.map → index-B88alco-.js.map} +1 -1
  17. package/dist/{init-BRGELyXI.js → init-DkrxW351.js} +3 -3
  18. package/dist/{init-BRGELyXI.js.map → init-DkrxW351.js.map} +1 -1
  19. package/dist/panels/CollectionMapPanel.d.ts.map +1 -1
  20. package/dist/panels/GitChangesPanel.d.ts.map +1 -1
  21. package/dist/panels/PackageCompositionPanel.d.ts.map +1 -1
  22. package/dist/panels/SearchPanel.d.ts.map +1 -1
  23. package/dist/panels/TelemetryCoveragePanel.d.ts.map +1 -1
  24. package/dist/panels/dependency-graph/DependencyGraphPanel.d.ts.map +1 -1
  25. package/dist/panels.bundle.js +1 -1
  26. package/dist/types/index.d.ts +1 -1
  27. package/dist/types/index.d.ts.map +1 -1
  28. package/dist/webworkerAll-UMZmwtee.js +3 -0
  29. package/dist/webworkerAll-UMZmwtee.js.map +1 -0
  30. package/package.json +1 -1
  31. package/dist/webworkerAll-D8Y_PhHL.js +0 -3
  32. package/dist/webworkerAll-D8Y_PhHL.js.map +0 -1
@@ -730,22 +730,40 @@ const GitChangesPanelContent = ({
730
730
  navigator.clipboard.writeText(fullPath);
731
731
  onContextMenuAction == null ? void 0 : onContextMenuAction({ type: "copyFullPath", path: fullPath });
732
732
  closeContextMenu();
733
- }, [contextMenu.nodePath, getFullPath, onContextMenuAction, closeContextMenu]);
733
+ }, [
734
+ contextMenu.nodePath,
735
+ getFullPath,
736
+ onContextMenuAction,
737
+ closeContextMenu
738
+ ]);
734
739
  const handleCopyRelativePath = useCallback(() => {
735
740
  navigator.clipboard.writeText(contextMenu.nodePath);
736
- onContextMenuAction == null ? void 0 : onContextMenuAction({ type: "copyRelativePath", path: contextMenu.nodePath });
741
+ onContextMenuAction == null ? void 0 : onContextMenuAction({
742
+ type: "copyRelativePath",
743
+ path: contextMenu.nodePath
744
+ });
737
745
  closeContextMenu();
738
746
  }, [contextMenu.nodePath, onContextMenuAction, closeContextMenu]);
739
747
  const handleOpenFile = useCallback(() => {
740
748
  const fullPath = getFullPath(contextMenu.nodePath);
741
749
  onContextMenuAction == null ? void 0 : onContextMenuAction({ type: "openFile", path: fullPath });
742
750
  closeContextMenu();
743
- }, [contextMenu.nodePath, getFullPath, onContextMenuAction, closeContextMenu]);
751
+ }, [
752
+ contextMenu.nodePath,
753
+ getFullPath,
754
+ onContextMenuAction,
755
+ closeContextMenu
756
+ ]);
744
757
  const handleOpenFolder = useCallback(() => {
745
758
  const fullPath = getFullPath(contextMenu.nodePath);
746
759
  onContextMenuAction == null ? void 0 : onContextMenuAction({ type: "openFolder", path: fullPath });
747
760
  closeContextMenu();
748
- }, [contextMenu.nodePath, getFullPath, onContextMenuAction, closeContextMenu]);
761
+ }, [
762
+ contextMenu.nodePath,
763
+ getFullPath,
764
+ onContextMenuAction,
765
+ closeContextMenu
766
+ ]);
749
767
  const gitChangesData = useMemo(() => {
750
768
  if (isLoading) {
751
769
  return null;
@@ -819,8 +837,12 @@ const GitChangesPanelContent = ({
819
837
  }
820
838
  });
821
839
  matchingPaths.add(rootPath2);
822
- const filteredAllFiles = fileTree.allFiles.filter((file) => matchingPaths.has(file.path));
823
- const filteredAllDirectories = fileTree.allDirectories.filter((dir) => matchingPaths.has(dir.path));
840
+ const filteredAllFiles = fileTree.allFiles.filter(
841
+ (file) => matchingPaths.has(file.path)
842
+ );
843
+ const filteredAllDirectories = fileTree.allDirectories.filter(
844
+ (dir) => matchingPaths.has(dir.path)
845
+ );
824
846
  const filterDirectoryTree = (dir) => {
825
847
  const filteredChildren = dir.children.filter((child) => matchingPaths.has(child.path)).map((child) => {
826
848
  if ("children" in child) {
@@ -1083,7 +1105,10 @@ const GitChangesPanelPreview = () => {
1083
1105
  }
1084
1106
  );
1085
1107
  };
1086
- const GitChangesPanel = ({ context: context2, events }) => {
1108
+ const GitChangesPanel = ({
1109
+ context: context2,
1110
+ events
1111
+ }) => {
1087
1112
  var _a;
1088
1113
  const gitSlice = context2.gitStatusWithFiles;
1089
1114
  const fileTreeSlice = context2.fileTree;
@@ -2590,7 +2615,12 @@ function findInternalDependencies(pkg, allPackages) {
2590
2615
  });
2591
2616
  return { dependsOn, usedBy };
2592
2617
  }
2593
- const PackageSummaryCard = ({ pkg, allPackages, onClick, onHover }) => {
2618
+ const PackageSummaryCard = ({
2619
+ pkg,
2620
+ allPackages,
2621
+ onClick,
2622
+ onHover
2623
+ }) => {
2594
2624
  var _a, _b;
2595
2625
  const { theme: theme2 } = useTheme();
2596
2626
  const deps = pkg.packageData.dependencies || {};
@@ -2599,7 +2629,9 @@ const PackageSummaryCard = ({ pkg, allPackages, onClick, onHover }) => {
2599
2629
  const totalDeps = Object.keys(deps).length + Object.keys(devDeps).length + Object.keys(peerDeps).length;
2600
2630
  const configFilesArray = pkg.configFiles ? Object.values(pkg.configFiles).filter((c2) => c2 == null ? void 0 : c2.exists) : [];
2601
2631
  configFilesArray.filter((c2) => !(c2 == null ? void 0 : c2.isInherited)).length;
2602
- const inheritedConfigs = configFilesArray.filter((c2) => c2 == null ? void 0 : c2.isInherited).length;
2632
+ const inheritedConfigs = configFilesArray.filter(
2633
+ (c2) => c2 == null ? void 0 : c2.isInherited
2634
+ ).length;
2603
2635
  const commands = ((_a = pkg.packageData.availableCommands) == null ? void 0 : _a.length) || 0;
2604
2636
  const { dependsOn, usedBy } = useMemo(
2605
2637
  () => findInternalDependencies(pkg, allPackages),
@@ -2647,7 +2679,13 @@ const PackageSummaryCard = ({ pkg, allPackages, onClick, onHover }) => {
2647
2679
  },
2648
2680
  children: [
2649
2681
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
2650
- /* @__PURE__ */ jsx(PackageManagerIcon, { packageManager: pkg.packageData.packageManager, size: 20 }),
2682
+ /* @__PURE__ */ jsx(
2683
+ PackageManagerIcon,
2684
+ {
2685
+ packageManager: pkg.packageData.packageManager,
2686
+ size: 20
2687
+ }
2688
+ ),
2651
2689
  /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
2652
2690
  /* @__PURE__ */ jsx(
2653
2691
  "div",
@@ -2774,45 +2812,88 @@ const PackageSummaryCard = ({ pkg, allPackages, onClick, onHover }) => {
2774
2812
  fontSize: theme2.fontSizes[0]
2775
2813
  },
2776
2814
  children: [
2777
- dependsOn.length > 0 && /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "6px", flexWrap: "wrap" }, children: [
2778
- /* @__PURE__ */ jsxs("span", { style: { color: theme2.colors.textSecondary, fontFamily: theme2.fonts.body, display: "flex", alignItems: "center", gap: "2px" }, children: [
2779
- /* @__PURE__ */ jsx(ArrowRight$1, { size: 10 }),
2780
- "uses"
2781
- ] }),
2782
- dependsOn.map((dep) => /* @__PURE__ */ jsx(
2783
- "span",
2784
- {
2785
- style: {
2786
- padding: "2px 6px",
2787
- backgroundColor: theme2.colors.primary + "15",
2788
- color: theme2.colors.primary,
2789
- borderRadius: "4px",
2790
- fontWeight: theme2.fontWeights.medium,
2791
- fontFamily: theme2.fonts.body
2792
- },
2793
- children: dep.packageData.name
2815
+ dependsOn.length > 0 && /* @__PURE__ */ jsxs(
2816
+ "div",
2817
+ {
2818
+ style: {
2819
+ display: "flex",
2820
+ alignItems: "center",
2821
+ gap: "6px",
2822
+ flexWrap: "wrap"
2794
2823
  },
2795
- dep.id
2796
- ))
2797
- ] }),
2798
- usedBy.length > 0 && /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "6px", flexWrap: "wrap" }, children: [
2799
- /* @__PURE__ */ jsx("span", { style: { color: theme2.colors.textSecondary, fontFamily: theme2.fonts.body }, children: "used by" }),
2800
- usedBy.map((dep) => /* @__PURE__ */ jsx(
2801
- "span",
2802
- {
2803
- style: {
2804
- padding: "2px 6px",
2805
- backgroundColor: theme2.colors.textSecondary + "20",
2806
- color: theme2.colors.textSecondary,
2807
- borderRadius: "4px",
2808
- fontWeight: theme2.fontWeights.medium,
2809
- fontFamily: theme2.fonts.body
2810
- },
2811
- children: dep.packageData.name
2824
+ children: [
2825
+ /* @__PURE__ */ jsxs(
2826
+ "span",
2827
+ {
2828
+ style: {
2829
+ color: theme2.colors.textSecondary,
2830
+ fontFamily: theme2.fonts.body,
2831
+ display: "flex",
2832
+ alignItems: "center",
2833
+ gap: "2px"
2834
+ },
2835
+ children: [
2836
+ /* @__PURE__ */ jsx(ArrowRight$1, { size: 10 }),
2837
+ "uses"
2838
+ ]
2839
+ }
2840
+ ),
2841
+ dependsOn.map((dep) => /* @__PURE__ */ jsx(
2842
+ "span",
2843
+ {
2844
+ style: {
2845
+ padding: "2px 6px",
2846
+ backgroundColor: theme2.colors.primary + "15",
2847
+ color: theme2.colors.primary,
2848
+ borderRadius: "4px",
2849
+ fontWeight: theme2.fontWeights.medium,
2850
+ fontFamily: theme2.fonts.body
2851
+ },
2852
+ children: dep.packageData.name
2853
+ },
2854
+ dep.id
2855
+ ))
2856
+ ]
2857
+ }
2858
+ ),
2859
+ usedBy.length > 0 && /* @__PURE__ */ jsxs(
2860
+ "div",
2861
+ {
2862
+ style: {
2863
+ display: "flex",
2864
+ alignItems: "center",
2865
+ gap: "6px",
2866
+ flexWrap: "wrap"
2812
2867
  },
2813
- dep.id
2814
- ))
2815
- ] })
2868
+ children: [
2869
+ /* @__PURE__ */ jsx(
2870
+ "span",
2871
+ {
2872
+ style: {
2873
+ color: theme2.colors.textSecondary,
2874
+ fontFamily: theme2.fonts.body
2875
+ },
2876
+ children: "used by"
2877
+ }
2878
+ ),
2879
+ usedBy.map((dep) => /* @__PURE__ */ jsx(
2880
+ "span",
2881
+ {
2882
+ style: {
2883
+ padding: "2px 6px",
2884
+ backgroundColor: theme2.colors.textSecondary + "20",
2885
+ color: theme2.colors.textSecondary,
2886
+ borderRadius: "4px",
2887
+ fontWeight: theme2.fontWeights.medium,
2888
+ fontFamily: theme2.fonts.body
2889
+ },
2890
+ children: dep.packageData.name
2891
+ },
2892
+ dep.id
2893
+ ))
2894
+ ]
2895
+ }
2896
+ )
2816
2897
  ]
2817
2898
  }
2818
2899
  ),
@@ -2840,7 +2921,8 @@ const PackageSummaryCard = ({ pkg, allPackages, onClick, onHover }) => {
2840
2921
  configFilesArray.length,
2841
2922
  " configs",
2842
2923
  inheritedConfigs > 0 && /* @__PURE__ */ jsxs("span", { style: { color: theme2.colors.primary }, children: [
2843
- " (",
2924
+ " ",
2925
+ "(",
2844
2926
  inheritedConfigs,
2845
2927
  "↑)"
2846
2928
  ] })
@@ -2886,12 +2968,19 @@ const PackageCard = ({
2886
2968
  }, [configFiles]);
2887
2969
  const commands = pkg.packageData.availableCommands || [];
2888
2970
  const dependencyItems = useMemo(() => extractDependencies(pkg), [pkg]);
2889
- const depCounts = useMemo(() => ({
2890
- all: dependencyItems.length,
2891
- production: dependencyItems.filter((d2) => d2.dependencyType === "production").length,
2892
- development: dependencyItems.filter((d2) => d2.dependencyType === "development").length,
2893
- peer: dependencyItems.filter((d2) => d2.dependencyType === "peer").length
2894
- }), [dependencyItems]);
2971
+ const depCounts = useMemo(
2972
+ () => ({
2973
+ all: dependencyItems.length,
2974
+ production: dependencyItems.filter(
2975
+ (d2) => d2.dependencyType === "production"
2976
+ ).length,
2977
+ development: dependencyItems.filter(
2978
+ (d2) => d2.dependencyType === "development"
2979
+ ).length,
2980
+ peer: dependencyItems.filter((d2) => d2.dependencyType === "peer").length
2981
+ }),
2982
+ [dependencyItems]
2983
+ );
2895
2984
  const handleToggleFilter = (type2) => {
2896
2985
  setActiveFilters((prev) => {
2897
2986
  const next2 = new Set(prev);
@@ -2907,13 +2996,21 @@ const PackageCard = ({
2907
2996
  let filtered = [...dependencyItems];
2908
2997
  if (searchQuery.trim()) {
2909
2998
  const query = searchQuery.toLowerCase();
2910
- filtered = filtered.filter((dep) => dep.name.toLowerCase().includes(query));
2999
+ filtered = filtered.filter(
3000
+ (dep) => dep.name.toLowerCase().includes(query)
3001
+ );
2911
3002
  }
2912
- const allTypes = ["production", "development", "peer"];
3003
+ const allTypes = [
3004
+ "production",
3005
+ "development",
3006
+ "peer"
3007
+ ];
2913
3008
  const availableTypes = allTypes.filter((t2) => depCounts[t2] > 0);
2914
3009
  const isAllSelected = activeFilters.size === 0 || availableTypes.every((t2) => activeFilters.has(t2));
2915
3010
  if (!isAllSelected && activeFilters.size > 0) {
2916
- filtered = filtered.filter((dep) => activeFilters.has(dep.dependencyType));
3011
+ filtered = filtered.filter(
3012
+ (dep) => activeFilters.has(dep.dependencyType)
3013
+ );
2917
3014
  }
2918
3015
  return filtered;
2919
3016
  }, [dependencyItems, searchQuery, activeFilters, depCounts]);
@@ -2930,7 +3027,13 @@ const PackageCard = ({
2930
3027
  borderBottom: `1px solid ${theme2.colors.border}`
2931
3028
  },
2932
3029
  children: [
2933
- /* @__PURE__ */ jsx(PackageManagerIcon, { packageManager: pkg.packageData.packageManager, size: 18 }),
3030
+ /* @__PURE__ */ jsx(
3031
+ PackageManagerIcon,
3032
+ {
3033
+ packageManager: pkg.packageData.packageManager,
3034
+ size: 18
3035
+ }
3036
+ ),
2934
3037
  /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
2935
3038
  /* @__PURE__ */ jsx(
2936
3039
  "div",
@@ -3012,37 +3115,48 @@ const PackageCard = ({
3012
3115
  children: pkg.packageData.description
3013
3116
  }
3014
3117
  ),
3015
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap", alignItems: "center" }, children: [
3016
- pkg.packageData.license && /* @__PURE__ */ jsx(
3017
- "span",
3018
- {
3019
- style: {
3020
- padding: "2px 8px",
3021
- backgroundColor: theme2.colors.textSecondary + "15",
3022
- color: theme2.colors.textSecondary,
3023
- borderRadius: "4px",
3024
- fontSize: theme2.fontSizes[0],
3025
- fontWeight: theme2.fontWeights.medium,
3026
- fontFamily: theme2.fonts.body
3027
- },
3028
- children: pkg.packageData.license
3029
- }
3030
- ),
3031
- (pkg.packageData.author || ((_a = pkg.packageData.authors) == null ? void 0 : _a[0])) && /* @__PURE__ */ jsxs(
3032
- "span",
3033
- {
3034
- style: {
3035
- fontSize: theme2.fontSizes[0],
3036
- fontFamily: theme2.fonts.body,
3037
- color: theme2.colors.textSecondary
3038
- },
3039
- children: [
3040
- "by ",
3041
- pkg.packageData.author || ((_b = pkg.packageData.authors) == null ? void 0 : _b[0])
3042
- ]
3043
- }
3044
- )
3045
- ] })
3118
+ /* @__PURE__ */ jsxs(
3119
+ "div",
3120
+ {
3121
+ style: {
3122
+ display: "flex",
3123
+ gap: "8px",
3124
+ flexWrap: "wrap",
3125
+ alignItems: "center"
3126
+ },
3127
+ children: [
3128
+ pkg.packageData.license && /* @__PURE__ */ jsx(
3129
+ "span",
3130
+ {
3131
+ style: {
3132
+ padding: "2px 8px",
3133
+ backgroundColor: theme2.colors.textSecondary + "15",
3134
+ color: theme2.colors.textSecondary,
3135
+ borderRadius: "4px",
3136
+ fontSize: theme2.fontSizes[0],
3137
+ fontWeight: theme2.fontWeights.medium,
3138
+ fontFamily: theme2.fonts.body
3139
+ },
3140
+ children: pkg.packageData.license
3141
+ }
3142
+ ),
3143
+ (pkg.packageData.author || ((_a = pkg.packageData.authors) == null ? void 0 : _a[0])) && /* @__PURE__ */ jsxs(
3144
+ "span",
3145
+ {
3146
+ style: {
3147
+ fontSize: theme2.fontSizes[0],
3148
+ fontFamily: theme2.fonts.body,
3149
+ color: theme2.colors.textSecondary
3150
+ },
3151
+ children: [
3152
+ "by ",
3153
+ pkg.packageData.author || ((_b = pkg.packageData.authors) == null ? void 0 : _b[0])
3154
+ ]
3155
+ }
3156
+ )
3157
+ ]
3158
+ }
3159
+ )
3046
3160
  ]
3047
3161
  }
3048
3162
  ),
@@ -3055,9 +3169,25 @@ const PackageCard = ({
3055
3169
  borderBottom: `1px solid ${theme2.colors.border}`
3056
3170
  },
3057
3171
  children: [
3058
- { id: "dependencies", label: "Dependencies", count: dependencyItems.length },
3059
- { id: "configs", label: "Configs", count: configCounts.total, inherited: configCounts.inherited },
3060
- { id: "lenses", label: "Lenses", count: ((_c = pkg.qualityMetrics) == null ? void 0 : _c.lensReadiness) ? Object.values(pkg.qualityMetrics.lensReadiness).filter((l2) => l2.ready).length : 0, total: ((_d = pkg.qualityMetrics) == null ? void 0 : _d.lensReadiness) ? Object.keys(pkg.qualityMetrics.lensReadiness).length : 0 }
3172
+ {
3173
+ id: "dependencies",
3174
+ label: "Dependencies",
3175
+ count: dependencyItems.length
3176
+ },
3177
+ {
3178
+ id: "configs",
3179
+ label: "Configs",
3180
+ count: configCounts.total,
3181
+ inherited: configCounts.inherited
3182
+ },
3183
+ {
3184
+ id: "lenses",
3185
+ label: "Lenses",
3186
+ count: ((_c = pkg.qualityMetrics) == null ? void 0 : _c.lensReadiness) ? Object.values(pkg.qualityMetrics.lensReadiness).filter(
3187
+ (l2) => l2.ready
3188
+ ).length : 0,
3189
+ total: ((_d = pkg.qualityMetrics) == null ? void 0 : _d.lensReadiness) ? Object.keys(pkg.qualityMetrics.lensReadiness).length : 0
3190
+ }
3061
3191
  ].map((tab2) => /* @__PURE__ */ jsxs(
3062
3192
  "button",
3063
3193
  {
@@ -3098,102 +3228,157 @@ const PackageCard = ({
3098
3228
  ))
3099
3229
  }
3100
3230
  ),
3101
- /* @__PURE__ */ jsxs("div", { style: { flex: 1, padding: activeTab === "dependencies" ? "0" : "0", overflow: "auto" }, children: [
3102
- activeTab === "configs" && /* @__PURE__ */ jsx("div", { style: { padding: "12px" }, children: /* @__PURE__ */ jsx(
3103
- ConfigList,
3104
- {
3105
- configs: configFiles,
3106
- onConfigClick
3107
- }
3108
- ) }),
3109
- activeTab === "lenses" && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", height: "100%" }, children: [
3110
- /* @__PURE__ */ jsx(LensReadinessSection, { lensReadiness: (_e2 = pkg.qualityMetrics) == null ? void 0 : _e2.lensReadiness }),
3111
- /* @__PURE__ */ jsx(
3112
- OtherScriptsSection,
3113
- {
3114
- commands,
3115
- onCommandClick: (cmd) => onCommandClick == null ? void 0 : onCommandClick(cmd, pkg.packageData.path)
3116
- }
3117
- )
3118
- ] }),
3119
- activeTab === "dependencies" && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", height: "100%" }, children: [
3120
- dependencyItems.length === 0 ? /* @__PURE__ */ jsxs(
3121
- "div",
3122
- {
3123
- style: {
3124
- padding: "12px",
3125
- color: theme2.colors.textSecondary,
3126
- fontSize: theme2.fontSizes[1],
3127
- fontFamily: theme2.fonts.body,
3128
- display: "flex",
3129
- alignItems: "center",
3130
- justifyContent: "center",
3131
- gap: "8px"
3132
- },
3133
- children: [
3134
- /* @__PURE__ */ jsx(Package$1, { size: 16 }),
3135
- "No dependencies"
3136
- ]
3137
- }
3138
- ) : /* @__PURE__ */ jsxs(Fragment, { children: [
3139
- /* @__PURE__ */ jsx("div", { style: { padding: "12px", borderBottom: `1px solid ${theme2.colors.border}` }, children: /* @__PURE__ */ jsx(
3140
- FilterBar,
3231
+ /* @__PURE__ */ jsxs(
3232
+ "div",
3233
+ {
3234
+ style: {
3235
+ flex: 1,
3236
+ padding: activeTab === "dependencies" ? "0" : "0",
3237
+ overflow: "auto"
3238
+ },
3239
+ children: [
3240
+ activeTab === "configs" && /* @__PURE__ */ jsx("div", { style: { padding: "12px" }, children: /* @__PURE__ */ jsx(ConfigList, { configs: configFiles, onConfigClick }) }),
3241
+ activeTab === "lenses" && /* @__PURE__ */ jsxs(
3242
+ "div",
3141
3243
  {
3142
- activeFilters,
3143
- onToggleFilter: handleToggleFilter,
3144
- searchQuery,
3145
- onSearchChange: setSearchQuery,
3146
- counts: depCounts
3244
+ style: {
3245
+ display: "flex",
3246
+ flexDirection: "column",
3247
+ height: "100%"
3248
+ },
3249
+ children: [
3250
+ /* @__PURE__ */ jsx(
3251
+ LensReadinessSection,
3252
+ {
3253
+ lensReadiness: (_e2 = pkg.qualityMetrics) == null ? void 0 : _e2.lensReadiness
3254
+ }
3255
+ ),
3256
+ /* @__PURE__ */ jsx(
3257
+ OtherScriptsSection,
3258
+ {
3259
+ commands,
3260
+ onCommandClick: (cmd) => onCommandClick == null ? void 0 : onCommandClick(cmd, pkg.packageData.path)
3261
+ }
3262
+ )
3263
+ ]
3147
3264
  }
3148
- ) }),
3149
- /* @__PURE__ */ jsxs("div", { style: { flex: 1, overflow: "auto", padding: "8px 12px" }, children: [
3150
- /* @__PURE__ */ jsxs(
3151
- "div",
3152
- {
3153
- style: {
3154
- fontSize: theme2.fontSizes[0],
3155
- fontFamily: theme2.fonts.body,
3156
- color: theme2.colors.textSecondary,
3157
- marginBottom: "8px"
3158
- },
3159
- children: [
3160
- "Showing ",
3161
- filteredDependencies.length,
3162
- " of ",
3163
- dependencyItems.length
3164
- ]
3165
- }
3166
- ),
3167
- /* @__PURE__ */ jsx("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: filteredDependencies.length === 0 ? /* @__PURE__ */ jsx(
3168
- "div",
3169
- {
3170
- style: {
3171
- padding: "12px",
3172
- textAlign: "center",
3173
- color: theme2.colors.textSecondary,
3174
- fontSize: theme2.fontSizes[1],
3175
- fontFamily: theme2.fonts.body
3176
- },
3177
- children: "No dependencies match your filters"
3178
- }
3179
- ) : filteredDependencies.map((dep) => /* @__PURE__ */ jsx(
3180
- DependencyRow,
3181
- {
3182
- dependency: dep
3265
+ ),
3266
+ activeTab === "dependencies" && /* @__PURE__ */ jsxs(
3267
+ "div",
3268
+ {
3269
+ style: {
3270
+ display: "flex",
3271
+ flexDirection: "column",
3272
+ height: "100%"
3183
3273
  },
3184
- `${dep.name}-${dep.dependencyType}`
3185
- )) })
3186
- ] })
3187
- ] }),
3188
- /* @__PURE__ */ jsx(
3189
- DependencyInfoModal,
3190
- {
3191
- isOpen: showInfoModal,
3192
- onClose: () => setShowInfoModal(false)
3193
- }
3194
- )
3195
- ] })
3196
- ] })
3274
+ children: [
3275
+ dependencyItems.length === 0 ? /* @__PURE__ */ jsxs(
3276
+ "div",
3277
+ {
3278
+ style: {
3279
+ padding: "12px",
3280
+ color: theme2.colors.textSecondary,
3281
+ fontSize: theme2.fontSizes[1],
3282
+ fontFamily: theme2.fonts.body,
3283
+ display: "flex",
3284
+ alignItems: "center",
3285
+ justifyContent: "center",
3286
+ gap: "8px"
3287
+ },
3288
+ children: [
3289
+ /* @__PURE__ */ jsx(Package$1, { size: 16 }),
3290
+ "No dependencies"
3291
+ ]
3292
+ }
3293
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
3294
+ /* @__PURE__ */ jsx(
3295
+ "div",
3296
+ {
3297
+ style: {
3298
+ padding: "12px",
3299
+ borderBottom: `1px solid ${theme2.colors.border}`
3300
+ },
3301
+ children: /* @__PURE__ */ jsx(
3302
+ FilterBar,
3303
+ {
3304
+ activeFilters,
3305
+ onToggleFilter: handleToggleFilter,
3306
+ searchQuery,
3307
+ onSearchChange: setSearchQuery,
3308
+ counts: depCounts
3309
+ }
3310
+ )
3311
+ }
3312
+ ),
3313
+ /* @__PURE__ */ jsxs(
3314
+ "div",
3315
+ {
3316
+ style: { flex: 1, overflow: "auto", padding: "8px 12px" },
3317
+ children: [
3318
+ /* @__PURE__ */ jsxs(
3319
+ "div",
3320
+ {
3321
+ style: {
3322
+ fontSize: theme2.fontSizes[0],
3323
+ fontFamily: theme2.fonts.body,
3324
+ color: theme2.colors.textSecondary,
3325
+ marginBottom: "8px"
3326
+ },
3327
+ children: [
3328
+ "Showing ",
3329
+ filteredDependencies.length,
3330
+ " of",
3331
+ " ",
3332
+ dependencyItems.length
3333
+ ]
3334
+ }
3335
+ ),
3336
+ /* @__PURE__ */ jsx(
3337
+ "div",
3338
+ {
3339
+ style: {
3340
+ display: "flex",
3341
+ flexDirection: "column",
3342
+ gap: "4px"
3343
+ },
3344
+ children: filteredDependencies.length === 0 ? /* @__PURE__ */ jsx(
3345
+ "div",
3346
+ {
3347
+ style: {
3348
+ padding: "12px",
3349
+ textAlign: "center",
3350
+ color: theme2.colors.textSecondary,
3351
+ fontSize: theme2.fontSizes[1],
3352
+ fontFamily: theme2.fonts.body
3353
+ },
3354
+ children: "No dependencies match your filters"
3355
+ }
3356
+ ) : filteredDependencies.map((dep) => /* @__PURE__ */ jsx(
3357
+ DependencyRow,
3358
+ {
3359
+ dependency: dep
3360
+ },
3361
+ `${dep.name}-${dep.dependencyType}`
3362
+ ))
3363
+ }
3364
+ )
3365
+ ]
3366
+ }
3367
+ )
3368
+ ] }),
3369
+ /* @__PURE__ */ jsx(
3370
+ DependencyInfoModal,
3371
+ {
3372
+ isOpen: showInfoModal,
3373
+ onClose: () => setShowInfoModal(false)
3374
+ }
3375
+ )
3376
+ ]
3377
+ }
3378
+ )
3379
+ ]
3380
+ }
3381
+ )
3197
3382
  ] });
3198
3383
  }
3199
3384
  return /* @__PURE__ */ jsxs(
@@ -3224,7 +3409,13 @@ const PackageCard = ({
3224
3409
  },
3225
3410
  children: [
3226
3411
  isExpanded ? /* @__PURE__ */ jsx(ChevronDown$1, { size: 16, color: theme2.colors.textSecondary }) : /* @__PURE__ */ jsx(ChevronRight$1, { size: 16, color: theme2.colors.textSecondary }),
3227
- /* @__PURE__ */ jsx(PackageManagerIcon, { packageManager: pkg.packageData.packageManager, size: 18 }),
3412
+ /* @__PURE__ */ jsx(
3413
+ PackageManagerIcon,
3414
+ {
3415
+ packageManager: pkg.packageData.packageManager,
3416
+ size: 18
3417
+ }
3418
+ ),
3228
3419
  /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
3229
3420
  /* @__PURE__ */ jsx(
3230
3421
  "div",
@@ -3295,9 +3486,25 @@ const PackageCard = ({
3295
3486
  borderBottom: `1px solid ${theme2.colors.border}`
3296
3487
  },
3297
3488
  children: [
3298
- { id: "dependencies", label: "Deps", count: dependencyItems.length },
3299
- { id: "configs", label: "Configs", count: configCounts.total, inherited: configCounts.inherited },
3300
- { id: "lenses", label: "Lenses", count: ((_f = pkg.qualityMetrics) == null ? void 0 : _f.lensReadiness) ? Object.values(pkg.qualityMetrics.lensReadiness).filter((l2) => l2.ready).length : 0, total: ((_g = pkg.qualityMetrics) == null ? void 0 : _g.lensReadiness) ? Object.keys(pkg.qualityMetrics.lensReadiness).length : 0 }
3489
+ {
3490
+ id: "dependencies",
3491
+ label: "Deps",
3492
+ count: dependencyItems.length
3493
+ },
3494
+ {
3495
+ id: "configs",
3496
+ label: "Configs",
3497
+ count: configCounts.total,
3498
+ inherited: configCounts.inherited
3499
+ },
3500
+ {
3501
+ id: "lenses",
3502
+ label: "Lenses",
3503
+ count: ((_f = pkg.qualityMetrics) == null ? void 0 : _f.lensReadiness) ? Object.values(pkg.qualityMetrics.lensReadiness).filter(
3504
+ (l2) => l2.ready
3505
+ ).length : 0,
3506
+ total: ((_g = pkg.qualityMetrics) == null ? void 0 : _g.lensReadiness) ? Object.keys(pkg.qualityMetrics.lensReadiness).length : 0
3507
+ }
3301
3508
  ].map((tab2) => /* @__PURE__ */ jsxs(
3302
3509
  "button",
3303
3510
  {
@@ -3338,102 +3545,153 @@ const PackageCard = ({
3338
3545
  ))
3339
3546
  }
3340
3547
  ),
3341
- /* @__PURE__ */ jsxs("div", { style: { padding: activeTab === "dependencies" ? "0" : "0", maxHeight: "300px", overflow: "auto" }, children: [
3342
- activeTab === "configs" && /* @__PURE__ */ jsx("div", { style: { padding: "12px" }, children: /* @__PURE__ */ jsx(
3343
- ConfigList,
3344
- {
3345
- configs: configFiles,
3346
- onConfigClick
3347
- }
3348
- ) }),
3349
- activeTab === "lenses" && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column" }, children: [
3350
- /* @__PURE__ */ jsx(LensReadinessSection, { lensReadiness: (_h = pkg.qualityMetrics) == null ? void 0 : _h.lensReadiness }),
3351
- /* @__PURE__ */ jsx(
3352
- OtherScriptsSection,
3353
- {
3354
- commands,
3355
- onCommandClick: (cmd) => onCommandClick == null ? void 0 : onCommandClick(cmd, pkg.packageData.path)
3356
- }
3357
- )
3358
- ] }),
3359
- activeTab === "dependencies" && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", height: "100%" }, children: [
3360
- dependencyItems.length === 0 ? /* @__PURE__ */ jsxs(
3361
- "div",
3362
- {
3363
- style: {
3364
- padding: "12px",
3365
- color: theme2.colors.textSecondary,
3366
- fontSize: theme2.fontSizes[1],
3367
- fontFamily: theme2.fonts.body,
3368
- display: "flex",
3369
- alignItems: "center",
3370
- justifyContent: "center",
3371
- gap: "8px"
3372
- },
3373
- children: [
3374
- /* @__PURE__ */ jsx(Package$1, { size: 16 }),
3375
- "No dependencies"
3376
- ]
3377
- }
3378
- ) : /* @__PURE__ */ jsxs(Fragment, { children: [
3379
- /* @__PURE__ */ jsx("div", { style: { padding: "12px", borderBottom: `1px solid ${theme2.colors.border}` }, children: /* @__PURE__ */ jsx(
3380
- FilterBar,
3548
+ /* @__PURE__ */ jsxs(
3549
+ "div",
3550
+ {
3551
+ style: {
3552
+ padding: activeTab === "dependencies" ? "0" : "0",
3553
+ maxHeight: "300px",
3554
+ overflow: "auto"
3555
+ },
3556
+ children: [
3557
+ activeTab === "configs" && /* @__PURE__ */ jsx("div", { style: { padding: "12px" }, children: /* @__PURE__ */ jsx(
3558
+ ConfigList,
3381
3559
  {
3382
- activeFilters,
3383
- onToggleFilter: handleToggleFilter,
3384
- searchQuery,
3385
- onSearchChange: setSearchQuery,
3386
- counts: depCounts
3560
+ configs: configFiles,
3561
+ onConfigClick
3387
3562
  }
3388
3563
  ) }),
3389
- /* @__PURE__ */ jsxs("div", { style: { flex: 1, overflow: "auto", padding: "8px 12px" }, children: [
3390
- /* @__PURE__ */ jsxs(
3391
- "div",
3564
+ activeTab === "lenses" && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column" }, children: [
3565
+ /* @__PURE__ */ jsx(
3566
+ LensReadinessSection,
3392
3567
  {
3393
- style: {
3394
- fontSize: theme2.fontSizes[0],
3395
- fontFamily: theme2.fonts.body,
3396
- color: theme2.colors.textSecondary,
3397
- marginBottom: "8px"
3398
- },
3399
- children: [
3400
- "Showing ",
3401
- filteredDependencies.length,
3402
- " of ",
3403
- dependencyItems.length
3404
- ]
3568
+ lensReadiness: (_h = pkg.qualityMetrics) == null ? void 0 : _h.lensReadiness
3405
3569
  }
3406
3570
  ),
3407
- /* @__PURE__ */ jsx("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: filteredDependencies.length === 0 ? /* @__PURE__ */ jsx(
3408
- "div",
3571
+ /* @__PURE__ */ jsx(
3572
+ OtherScriptsSection,
3409
3573
  {
3410
- style: {
3411
- padding: "12px",
3412
- textAlign: "center",
3413
- color: theme2.colors.textSecondary,
3414
- fontSize: theme2.fontSizes[1],
3415
- fontFamily: theme2.fonts.body
3416
- },
3417
- children: "No dependencies match your filters"
3574
+ commands,
3575
+ onCommandClick: (cmd) => onCommandClick == null ? void 0 : onCommandClick(cmd, pkg.packageData.path)
3418
3576
  }
3419
- ) : filteredDependencies.map((dep) => /* @__PURE__ */ jsx(
3420
- DependencyRow,
3421
- {
3422
- dependency: dep
3577
+ )
3578
+ ] }),
3579
+ activeTab === "dependencies" && /* @__PURE__ */ jsxs(
3580
+ "div",
3581
+ {
3582
+ style: {
3583
+ display: "flex",
3584
+ flexDirection: "column",
3585
+ height: "100%"
3423
3586
  },
3424
- `${dep.name}-${dep.dependencyType}`
3425
- )) })
3426
- ] })
3427
- ] }),
3428
- /* @__PURE__ */ jsx(
3429
- DependencyInfoModal,
3430
- {
3431
- isOpen: showInfoModal,
3432
- onClose: () => setShowInfoModal(false)
3433
- }
3434
- )
3435
- ] })
3436
- ] })
3587
+ children: [
3588
+ dependencyItems.length === 0 ? /* @__PURE__ */ jsxs(
3589
+ "div",
3590
+ {
3591
+ style: {
3592
+ padding: "12px",
3593
+ color: theme2.colors.textSecondary,
3594
+ fontSize: theme2.fontSizes[1],
3595
+ fontFamily: theme2.fonts.body,
3596
+ display: "flex",
3597
+ alignItems: "center",
3598
+ justifyContent: "center",
3599
+ gap: "8px"
3600
+ },
3601
+ children: [
3602
+ /* @__PURE__ */ jsx(Package$1, { size: 16 }),
3603
+ "No dependencies"
3604
+ ]
3605
+ }
3606
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
3607
+ /* @__PURE__ */ jsx(
3608
+ "div",
3609
+ {
3610
+ style: {
3611
+ padding: "12px",
3612
+ borderBottom: `1px solid ${theme2.colors.border}`
3613
+ },
3614
+ children: /* @__PURE__ */ jsx(
3615
+ FilterBar,
3616
+ {
3617
+ activeFilters,
3618
+ onToggleFilter: handleToggleFilter,
3619
+ searchQuery,
3620
+ onSearchChange: setSearchQuery,
3621
+ counts: depCounts
3622
+ }
3623
+ )
3624
+ }
3625
+ ),
3626
+ /* @__PURE__ */ jsxs(
3627
+ "div",
3628
+ {
3629
+ style: { flex: 1, overflow: "auto", padding: "8px 12px" },
3630
+ children: [
3631
+ /* @__PURE__ */ jsxs(
3632
+ "div",
3633
+ {
3634
+ style: {
3635
+ fontSize: theme2.fontSizes[0],
3636
+ fontFamily: theme2.fonts.body,
3637
+ color: theme2.colors.textSecondary,
3638
+ marginBottom: "8px"
3639
+ },
3640
+ children: [
3641
+ "Showing ",
3642
+ filteredDependencies.length,
3643
+ " of",
3644
+ " ",
3645
+ dependencyItems.length
3646
+ ]
3647
+ }
3648
+ ),
3649
+ /* @__PURE__ */ jsx(
3650
+ "div",
3651
+ {
3652
+ style: {
3653
+ display: "flex",
3654
+ flexDirection: "column",
3655
+ gap: "4px"
3656
+ },
3657
+ children: filteredDependencies.length === 0 ? /* @__PURE__ */ jsx(
3658
+ "div",
3659
+ {
3660
+ style: {
3661
+ padding: "12px",
3662
+ textAlign: "center",
3663
+ color: theme2.colors.textSecondary,
3664
+ fontSize: theme2.fontSizes[1],
3665
+ fontFamily: theme2.fonts.body
3666
+ },
3667
+ children: "No dependencies match your filters"
3668
+ }
3669
+ ) : filteredDependencies.map((dep) => /* @__PURE__ */ jsx(
3670
+ DependencyRow,
3671
+ {
3672
+ dependency: dep
3673
+ },
3674
+ `${dep.name}-${dep.dependencyType}`
3675
+ ))
3676
+ }
3677
+ )
3678
+ ]
3679
+ }
3680
+ )
3681
+ ] }),
3682
+ /* @__PURE__ */ jsx(
3683
+ DependencyInfoModal,
3684
+ {
3685
+ isOpen: showInfoModal,
3686
+ onClose: () => setShowInfoModal(false)
3687
+ }
3688
+ )
3689
+ ]
3690
+ }
3691
+ )
3692
+ ]
3693
+ }
3694
+ )
3437
3695
  ] })
3438
3696
  ]
3439
3697
  }
@@ -3451,11 +3709,15 @@ const PackageCompositionPanelContent = ({
3451
3709
  events
3452
3710
  }) => {
3453
3711
  const { theme: theme2 } = useTheme();
3454
- const [selectedPackageId, setSelectedPackageId] = useState(null);
3712
+ const [selectedPackageId, setSelectedPackageId] = useState(
3713
+ null
3714
+ );
3455
3715
  const sortedPackages = useMemo(() => {
3456
3716
  return [...packages].sort((a2, b2) => {
3457
- if (a2.packageData.isMonorepoRoot && !b2.packageData.isMonorepoRoot) return -1;
3458
- if (!a2.packageData.isMonorepoRoot && b2.packageData.isMonorepoRoot) return 1;
3717
+ if (a2.packageData.isMonorepoRoot && !b2.packageData.isMonorepoRoot)
3718
+ return -1;
3719
+ if (!a2.packageData.isMonorepoRoot && b2.packageData.isMonorepoRoot)
3720
+ return 1;
3459
3721
  return a2.packageData.path.localeCompare(b2.packageData.path);
3460
3722
  });
3461
3723
  }, [packages]);
@@ -3552,10 +3814,21 @@ const PackageCompositionPanelContent = ({
3552
3814
  },
3553
3815
  children: [
3554
3816
  /* @__PURE__ */ jsx(FileCode$1, { size: 16, color: theme2.colors.primary }),
3555
- /* @__PURE__ */ jsxs("span", { style: { fontSize: theme2.fontSizes[1], fontFamily: theme2.fonts.body, color: theme2.colors.textSecondary, flex: 1 }, children: [
3556
- packages.length,
3557
- " packages"
3558
- ] }),
3817
+ /* @__PURE__ */ jsxs(
3818
+ "span",
3819
+ {
3820
+ style: {
3821
+ fontSize: theme2.fontSizes[1],
3822
+ fontFamily: theme2.fonts.body,
3823
+ color: theme2.colors.textSecondary,
3824
+ flex: 1
3825
+ },
3826
+ children: [
3827
+ packages.length,
3828
+ " packages"
3829
+ ]
3830
+ }
3831
+ ),
3559
3832
  packages.length > 1 && /* @__PURE__ */ jsxs(
3560
3833
  "button",
3561
3834
  {
@@ -3724,18 +3997,51 @@ const PackageCompositionPanelPreview = () => {
3724
3997
  /* @__PURE__ */ jsx(PackageManagerIcon, { packageManager: "npm", size: 14 }),
3725
3998
  /* @__PURE__ */ jsx("span", { children: "my-app" })
3726
3999
  ] }),
3727
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "6px", paddingLeft: "8px" }, children: [
3728
- /* @__PURE__ */ jsx(Terminal$1, { size: 12, color: theme2.colors.textSecondary }),
3729
- /* @__PURE__ */ jsx("span", { style: { color: theme2.colors.textSecondary }, children: "5 commands" })
3730
- ] }),
3731
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "6px", paddingLeft: "8px" }, children: [
3732
- /* @__PURE__ */ jsx(Settings$1, { size: 12, color: theme2.colors.textSecondary }),
3733
- /* @__PURE__ */ jsx("span", { style: { color: theme2.colors.textSecondary }, children: "3 configs" })
3734
- ] }),
3735
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "6px", paddingLeft: "8px" }, children: [
3736
- /* @__PURE__ */ jsx(Package$1, { size: 12, color: theme2.colors.textSecondary }),
3737
- /* @__PURE__ */ jsx("span", { style: { color: theme2.colors.textSecondary }, children: "12 deps" })
3738
- ] })
4000
+ /* @__PURE__ */ jsxs(
4001
+ "div",
4002
+ {
4003
+ style: {
4004
+ display: "flex",
4005
+ alignItems: "center",
4006
+ gap: "6px",
4007
+ paddingLeft: "8px"
4008
+ },
4009
+ children: [
4010
+ /* @__PURE__ */ jsx(Terminal$1, { size: 12, color: theme2.colors.textSecondary }),
4011
+ /* @__PURE__ */ jsx("span", { style: { color: theme2.colors.textSecondary }, children: "5 commands" })
4012
+ ]
4013
+ }
4014
+ ),
4015
+ /* @__PURE__ */ jsxs(
4016
+ "div",
4017
+ {
4018
+ style: {
4019
+ display: "flex",
4020
+ alignItems: "center",
4021
+ gap: "6px",
4022
+ paddingLeft: "8px"
4023
+ },
4024
+ children: [
4025
+ /* @__PURE__ */ jsx(Settings$1, { size: 12, color: theme2.colors.textSecondary }),
4026
+ /* @__PURE__ */ jsx("span", { style: { color: theme2.colors.textSecondary }, children: "3 configs" })
4027
+ ]
4028
+ }
4029
+ ),
4030
+ /* @__PURE__ */ jsxs(
4031
+ "div",
4032
+ {
4033
+ style: {
4034
+ display: "flex",
4035
+ alignItems: "center",
4036
+ gap: "6px",
4037
+ paddingLeft: "8px"
4038
+ },
4039
+ children: [
4040
+ /* @__PURE__ */ jsx(Package$1, { size: 12, color: theme2.colors.textSecondary }),
4041
+ /* @__PURE__ */ jsx("span", { style: { color: theme2.colors.textSecondary }, children: "12 deps" })
4042
+ ]
4043
+ }
4044
+ )
3739
4045
  ]
3740
4046
  }
3741
4047
  );
@@ -4161,38 +4467,48 @@ const SearchPanelContent = ({
4161
4467
  padding: "32px"
4162
4468
  },
4163
4469
  children: /* @__PURE__ */ jsxs("div", { style: { textAlign: "center", maxWidth: "320px" }, children: [
4164
- /* @__PURE__ */ jsx("div", { style: { marginBottom: "24px", position: "relative", display: "inline-block" }, children: /* @__PURE__ */ jsxs(
4165
- "svg",
4470
+ /* @__PURE__ */ jsx(
4471
+ "div",
4166
4472
  {
4167
- width: "64",
4168
- height: "64",
4169
- viewBox: "0 0 24 24",
4170
- fill: "none",
4171
- style: { color: theme2.colors.primary, opacity: 0.8 },
4172
- children: [
4173
- /* @__PURE__ */ jsx(
4174
- "circle",
4175
- {
4176
- cx: "11",
4177
- cy: "11",
4178
- r: "8",
4179
- stroke: "currentColor",
4180
- strokeWidth: "2",
4181
- strokeDasharray: "4 2"
4182
- }
4183
- ),
4184
- /* @__PURE__ */ jsx(
4185
- "path",
4186
- {
4187
- d: "m21 21-4.35-4.35",
4188
- stroke: "currentColor",
4189
- strokeWidth: "2",
4190
- strokeLinecap: "round"
4191
- }
4192
- )
4193
- ]
4473
+ style: {
4474
+ marginBottom: "24px",
4475
+ position: "relative",
4476
+ display: "inline-block"
4477
+ },
4478
+ children: /* @__PURE__ */ jsxs(
4479
+ "svg",
4480
+ {
4481
+ width: "64",
4482
+ height: "64",
4483
+ viewBox: "0 0 24 24",
4484
+ fill: "none",
4485
+ style: { color: theme2.colors.primary, opacity: 0.8 },
4486
+ children: [
4487
+ /* @__PURE__ */ jsx(
4488
+ "circle",
4489
+ {
4490
+ cx: "11",
4491
+ cy: "11",
4492
+ r: "8",
4493
+ stroke: "currentColor",
4494
+ strokeWidth: "2",
4495
+ strokeDasharray: "4 2"
4496
+ }
4497
+ ),
4498
+ /* @__PURE__ */ jsx(
4499
+ "path",
4500
+ {
4501
+ d: "m21 21-4.35-4.35",
4502
+ stroke: "currentColor",
4503
+ strokeWidth: "2",
4504
+ strokeLinecap: "round"
4505
+ }
4506
+ )
4507
+ ]
4508
+ }
4509
+ )
4194
4510
  }
4195
- ) }),
4511
+ ),
4196
4512
  /* @__PURE__ */ jsx(
4197
4513
  "h3",
4198
4514
  {
@@ -4218,10 +4534,42 @@ const SearchPanelContent = ({
4218
4534
  children: "Search through filenames to find what you need"
4219
4535
  }
4220
4536
  ),
4221
- /* @__PURE__ */ jsx("div", { style: { textAlign: "left" }, children: /* @__PURE__ */ jsx("div", { style: { display: "flex", alignItems: "flex-start", gap: "8px", marginBottom: "8px" }, children: /* @__PURE__ */ jsxs("div", { children: [
4222
- /* @__PURE__ */ jsx("div", { style: { fontSize: theme2.fontSizes[0], fontWeight: theme2.fontWeights.medium, fontFamily: theme2.fonts.body, color: theme2.colors.text }, children: "Quick search" }),
4223
- /* @__PURE__ */ jsx("div", { style: { fontSize: theme2.fontSizes[0], fontFamily: theme2.fonts.body, color: theme2.colors.textSecondary }, children: "Type to instantly filter by filename" })
4224
- ] }) }) })
4537
+ /* @__PURE__ */ jsx("div", { style: { textAlign: "left" }, children: /* @__PURE__ */ jsx(
4538
+ "div",
4539
+ {
4540
+ style: {
4541
+ display: "flex",
4542
+ alignItems: "flex-start",
4543
+ gap: "8px",
4544
+ marginBottom: "8px"
4545
+ },
4546
+ children: /* @__PURE__ */ jsxs("div", { children: [
4547
+ /* @__PURE__ */ jsx(
4548
+ "div",
4549
+ {
4550
+ style: {
4551
+ fontSize: theme2.fontSizes[0],
4552
+ fontWeight: theme2.fontWeights.medium,
4553
+ fontFamily: theme2.fonts.body,
4554
+ color: theme2.colors.text
4555
+ },
4556
+ children: "Quick search"
4557
+ }
4558
+ ),
4559
+ /* @__PURE__ */ jsx(
4560
+ "div",
4561
+ {
4562
+ style: {
4563
+ fontSize: theme2.fontSizes[0],
4564
+ fontFamily: theme2.fonts.body,
4565
+ color: theme2.colors.textSecondary
4566
+ },
4567
+ children: "Type to instantly filter by filename"
4568
+ }
4569
+ )
4570
+ ] })
4571
+ }
4572
+ ) })
4225
4573
  ] })
4226
4574
  }
4227
4575
  ) : searchQuery && searchResults.length === 0 ? /* @__PURE__ */ jsx(
@@ -4244,9 +4592,33 @@ const SearchPanelContent = ({
4244
4592
  fill: "none",
4245
4593
  style: { color: theme2.colors.textSecondary, opacity: 0.5 },
4246
4594
  children: [
4247
- /* @__PURE__ */ jsx("circle", { cx: "11", cy: "11", r: "8", stroke: "currentColor", strokeWidth: "2" }),
4248
- /* @__PURE__ */ jsx("path", { d: "m21 21-4.35-4.35", stroke: "currentColor", strokeWidth: "2" }),
4249
- /* @__PURE__ */ jsx("path", { d: "M8 11h6M11 8v6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
4595
+ /* @__PURE__ */ jsx(
4596
+ "circle",
4597
+ {
4598
+ cx: "11",
4599
+ cy: "11",
4600
+ r: "8",
4601
+ stroke: "currentColor",
4602
+ strokeWidth: "2"
4603
+ }
4604
+ ),
4605
+ /* @__PURE__ */ jsx(
4606
+ "path",
4607
+ {
4608
+ d: "m21 21-4.35-4.35",
4609
+ stroke: "currentColor",
4610
+ strokeWidth: "2"
4611
+ }
4612
+ ),
4613
+ /* @__PURE__ */ jsx(
4614
+ "path",
4615
+ {
4616
+ d: "M8 11h6M11 8v6",
4617
+ stroke: "currentColor",
4618
+ strokeWidth: "2",
4619
+ strokeLinecap: "round"
4620
+ }
4621
+ )
4250
4622
  ]
4251
4623
  }
4252
4624
  ) }),
@@ -4274,11 +4646,20 @@ const SearchPanelContent = ({
4274
4646
  children: [
4275
4647
  "No files match",
4276
4648
  " ",
4277
- /* @__PURE__ */ jsxs("span", { style: { fontFamily: theme2.fonts.monospace, color: theme2.colors.primary }, children: [
4278
- '"',
4279
- searchQuery,
4280
- '"'
4281
- ] })
4649
+ /* @__PURE__ */ jsxs(
4650
+ "span",
4651
+ {
4652
+ style: {
4653
+ fontFamily: theme2.fonts.monospace,
4654
+ color: theme2.colors.primary
4655
+ },
4656
+ children: [
4657
+ '"',
4658
+ searchQuery,
4659
+ '"'
4660
+ ]
4661
+ }
4662
+ )
4282
4663
  ]
4283
4664
  }
4284
4665
  )
@@ -4307,86 +4688,117 @@ const SearchPanelContent = ({
4307
4688
  onSearchResultHover == null ? void 0 : onSearchResultHover(result.relativePath);
4308
4689
  },
4309
4690
  onMouseLeave: () => onSearchResultHover == null ? void 0 : onSearchResultHover(null),
4310
- children: /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "flex-start", gap: "8px" }, children: [
4311
- /* @__PURE__ */ jsx("div", { style: { flexShrink: 0, marginTop: "2px" }, children: /* @__PURE__ */ jsx(FileText$1, { size: 14, color: theme2.colors.textSecondary }) }),
4312
- /* @__PURE__ */ jsx("div", { style: { flex: 1, minWidth: 0 }, children: /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: "8px" }, children: [
4313
- /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
4314
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
4315
- /* @__PURE__ */ jsx(
4316
- "div",
4317
- {
4318
- style: {
4319
- fontSize: theme2.fontSizes[1],
4320
- fontWeight: theme2.fontWeights.medium,
4321
- fontFamily: theme2.fonts.body,
4322
- color: theme2.colors.text
4323
- },
4324
- children: highlightMatch(result.name, searchQuery)
4325
- }
4326
- ),
4327
- isCurrentFile && /* @__PURE__ */ jsx(
4328
- "span",
4329
- {
4330
- style: {
4331
- fontSize: theme2.fontSizes[0],
4332
- fontFamily: theme2.fonts.body,
4333
- padding: "2px 6px",
4334
- borderRadius: "4px",
4335
- backgroundColor: `${theme2.colors.primary}20`,
4336
- color: theme2.colors.primary
4337
- },
4338
- children: "CURRENT"
4339
- }
4340
- )
4341
- ] }),
4342
- /* @__PURE__ */ jsx(
4691
+ children: /* @__PURE__ */ jsxs(
4692
+ "div",
4693
+ {
4694
+ style: {
4695
+ display: "flex",
4696
+ alignItems: "flex-start",
4697
+ gap: "8px"
4698
+ },
4699
+ children: [
4700
+ /* @__PURE__ */ jsx("div", { style: { flexShrink: 0, marginTop: "2px" }, children: /* @__PURE__ */ jsx(FileText$1, { size: 14, color: theme2.colors.textSecondary }) }),
4701
+ /* @__PURE__ */ jsx("div", { style: { flex: 1, minWidth: 0 }, children: /* @__PURE__ */ jsxs(
4343
4702
  "div",
4344
4703
  {
4345
4704
  style: {
4346
- fontSize: theme2.fontSizes[0],
4347
- fontFamily: theme2.fonts.body,
4348
- marginTop: "2px",
4349
- color: theme2.colors.textSecondary,
4350
- overflow: "hidden",
4351
- textOverflow: "ellipsis",
4352
- whiteSpace: "nowrap"
4705
+ display: "flex",
4706
+ alignItems: "center",
4707
+ justifyContent: "space-between",
4708
+ gap: "8px"
4353
4709
  },
4354
- children: result.relativePath
4710
+ children: [
4711
+ /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
4712
+ /* @__PURE__ */ jsxs(
4713
+ "div",
4714
+ {
4715
+ style: {
4716
+ display: "flex",
4717
+ alignItems: "center",
4718
+ gap: "8px"
4719
+ },
4720
+ children: [
4721
+ /* @__PURE__ */ jsx(
4722
+ "div",
4723
+ {
4724
+ style: {
4725
+ fontSize: theme2.fontSizes[1],
4726
+ fontWeight: theme2.fontWeights.medium,
4727
+ fontFamily: theme2.fonts.body,
4728
+ color: theme2.colors.text
4729
+ },
4730
+ children: highlightMatch(result.name, searchQuery)
4731
+ }
4732
+ ),
4733
+ isCurrentFile && /* @__PURE__ */ jsx(
4734
+ "span",
4735
+ {
4736
+ style: {
4737
+ fontSize: theme2.fontSizes[0],
4738
+ fontFamily: theme2.fonts.body,
4739
+ padding: "2px 6px",
4740
+ borderRadius: "4px",
4741
+ backgroundColor: `${theme2.colors.primary}20`,
4742
+ color: theme2.colors.primary
4743
+ },
4744
+ children: "CURRENT"
4745
+ }
4746
+ )
4747
+ ]
4748
+ }
4749
+ ),
4750
+ /* @__PURE__ */ jsx(
4751
+ "div",
4752
+ {
4753
+ style: {
4754
+ fontSize: theme2.fontSizes[0],
4755
+ fontFamily: theme2.fonts.body,
4756
+ marginTop: "2px",
4757
+ color: theme2.colors.textSecondary,
4758
+ overflow: "hidden",
4759
+ textOverflow: "ellipsis",
4760
+ whiteSpace: "nowrap"
4761
+ },
4762
+ children: result.relativePath
4763
+ }
4764
+ )
4765
+ ] }),
4766
+ /* @__PURE__ */ jsx(
4767
+ "button",
4768
+ {
4769
+ style: {
4770
+ flexShrink: 0,
4771
+ padding: "4px",
4772
+ borderRadius: "4px",
4773
+ border: `1px solid ${copiedPath === result.path ? theme2.colors.success : theme2.colors.border}`,
4774
+ backgroundColor: copiedPath === result.path ? `${theme2.colors.success}20` : theme2.colors.backgroundSecondary || theme2.colors.background,
4775
+ color: copiedPath === result.path ? theme2.colors.success : theme2.colors.textSecondary,
4776
+ cursor: "pointer",
4777
+ opacity: isSelected || isCurrentFile ? 0.7 : 0,
4778
+ transition: "opacity 0.15s"
4779
+ },
4780
+ onMouseEnter: (e2) => {
4781
+ e2.currentTarget.style.opacity = "1";
4782
+ },
4783
+ onMouseLeave: (e2) => {
4784
+ if (!isSelected && !isCurrentFile && copiedPath !== result.path) {
4785
+ e2.currentTarget.style.opacity = "0";
4786
+ }
4787
+ },
4788
+ onClick: (e2) => {
4789
+ e2.stopPropagation();
4790
+ handleCopyPath(result.path);
4791
+ },
4792
+ title: copiedPath === result.path ? "Copied!" : "Copy full path",
4793
+ children: copiedPath === result.path ? /* @__PURE__ */ jsx(Check$1, { size: 14 }) : /* @__PURE__ */ jsx(Copy$1, { size: 14 })
4794
+ }
4795
+ )
4796
+ ]
4355
4797
  }
4356
- )
4357
- ] }),
4358
- /* @__PURE__ */ jsx(
4359
- "button",
4360
- {
4361
- style: {
4362
- flexShrink: 0,
4363
- padding: "4px",
4364
- borderRadius: "4px",
4365
- border: `1px solid ${copiedPath === result.path ? theme2.colors.success : theme2.colors.border}`,
4366
- backgroundColor: copiedPath === result.path ? `${theme2.colors.success}20` : theme2.colors.backgroundSecondary || theme2.colors.background,
4367
- color: copiedPath === result.path ? theme2.colors.success : theme2.colors.textSecondary,
4368
- cursor: "pointer",
4369
- opacity: isSelected || isCurrentFile ? 0.7 : 0,
4370
- transition: "opacity 0.15s"
4371
- },
4372
- onMouseEnter: (e2) => {
4373
- e2.currentTarget.style.opacity = "1";
4374
- },
4375
- onMouseLeave: (e2) => {
4376
- if (!isSelected && !isCurrentFile && copiedPath !== result.path) {
4377
- e2.currentTarget.style.opacity = "0";
4378
- }
4379
- },
4380
- onClick: (e2) => {
4381
- e2.stopPropagation();
4382
- handleCopyPath(result.path);
4383
- },
4384
- title: copiedPath === result.path ? "Copied!" : "Copy full path",
4385
- children: copiedPath === result.path ? /* @__PURE__ */ jsx(Check$1, { size: 14 }) : /* @__PURE__ */ jsx(Copy$1, { size: 14 })
4386
- }
4387
- )
4388
- ] }) })
4389
- ] })
4798
+ ) })
4799
+ ]
4800
+ }
4801
+ )
4390
4802
  },
4391
4803
  `${result.path}-${index2}`
4392
4804
  );
@@ -4447,14 +4859,36 @@ const SearchPanelPreview = () => {
4447
4859
  children: "Search files..."
4448
4860
  }
4449
4861
  ),
4450
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "6px", opacity: 0.7 }, children: [
4451
- /* @__PURE__ */ jsx(FileText$1, { size: 12 }),
4452
- /* @__PURE__ */ jsx("span", { children: "index.tsx" })
4453
- ] }),
4454
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "6px", opacity: 0.7 }, children: [
4455
- /* @__PURE__ */ jsx(FileText$1, { size: 12 }),
4456
- /* @__PURE__ */ jsx("span", { children: "utils.ts" })
4457
- ] })
4862
+ /* @__PURE__ */ jsxs(
4863
+ "div",
4864
+ {
4865
+ style: {
4866
+ display: "flex",
4867
+ alignItems: "center",
4868
+ gap: "6px",
4869
+ opacity: 0.7
4870
+ },
4871
+ children: [
4872
+ /* @__PURE__ */ jsx(FileText$1, { size: 12 }),
4873
+ /* @__PURE__ */ jsx("span", { children: "index.tsx" })
4874
+ ]
4875
+ }
4876
+ ),
4877
+ /* @__PURE__ */ jsxs(
4878
+ "div",
4879
+ {
4880
+ style: {
4881
+ display: "flex",
4882
+ alignItems: "center",
4883
+ gap: "6px",
4884
+ opacity: 0.7
4885
+ },
4886
+ children: [
4887
+ /* @__PURE__ */ jsx(FileText$1, { size: 12 }),
4888
+ /* @__PURE__ */ jsx("span", { children: "utils.ts" })
4889
+ ]
4890
+ }
4891
+ )
4458
4892
  ]
4459
4893
  }
4460
4894
  );
@@ -103440,10 +103874,7 @@ const directionLabels = {
103440
103874
  LR: "Left → Right",
103441
103875
  RL: "Right → Left"
103442
103876
  };
103443
- const DependencyGraphPanelContent = ({
103444
- packages,
103445
- isLoading = false
103446
- }) => {
103877
+ const DependencyGraphPanelContent = ({ packages, isLoading = false }) => {
103447
103878
  var _a;
103448
103879
  const { theme: theme2 } = useTheme();
103449
103880
  const [showSettings, setShowSettings] = useState(false);
@@ -103593,14 +104024,36 @@ const DependencyGraphPanelContent = ({
103593
104024
  children: [
103594
104025
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
103595
104026
  /* @__PURE__ */ jsx(GitBranch$1, { size: 16, color: theme2.colors.primary }),
103596
- /* @__PURE__ */ jsx("span", { style: { fontSize: theme2.fontSizes[2], fontWeight: 500, color: theme2.colors.text, fontFamily: theme2.fonts.body }, children: "Dependency Graph" }),
103597
- /* @__PURE__ */ jsxs("span", { style: { fontSize: theme2.fontSizes[1], color: theme2.colors.textSecondary, fontFamily: theme2.fonts.body }, children: [
103598
- "(",
103599
- packages.length,
103600
- " packages, ",
103601
- ((_a = canvas.edges) == null ? void 0 : _a.length) || 0,
103602
- " dependencies)"
103603
- ] })
104027
+ /* @__PURE__ */ jsx(
104028
+ "span",
104029
+ {
104030
+ style: {
104031
+ fontSize: theme2.fontSizes[2],
104032
+ fontWeight: 500,
104033
+ color: theme2.colors.text,
104034
+ fontFamily: theme2.fonts.body
104035
+ },
104036
+ children: "Dependency Graph"
104037
+ }
104038
+ ),
104039
+ /* @__PURE__ */ jsxs(
104040
+ "span",
104041
+ {
104042
+ style: {
104043
+ fontSize: theme2.fontSizes[1],
104044
+ color: theme2.colors.textSecondary,
104045
+ fontFamily: theme2.fonts.body
104046
+ },
104047
+ children: [
104048
+ "(",
104049
+ packages.length,
104050
+ " packages, ",
104051
+ ((_a = canvas.edges) == null ? void 0 : _a.length) || 0,
104052
+ " ",
104053
+ "dependencies)"
104054
+ ]
104055
+ }
104056
+ )
103604
104057
  ] }),
103605
104058
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
103606
104059
  /* @__PURE__ */ jsx(
@@ -103662,12 +104115,24 @@ const DependencyGraphPanelContent = ({
103662
104115
  },
103663
104116
  children: [
103664
104117
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: [
103665
- /* @__PURE__ */ jsx("label", { style: { fontSize: theme2.fontSizes[1], color: theme2.colors.textSecondary, fontFamily: theme2.fonts.body }, children: "Direction" }),
104118
+ /* @__PURE__ */ jsx(
104119
+ "label",
104120
+ {
104121
+ style: {
104122
+ fontSize: theme2.fontSizes[1],
104123
+ color: theme2.colors.textSecondary,
104124
+ fontFamily: theme2.fonts.body
104125
+ },
104126
+ children: "Direction"
104127
+ }
104128
+ ),
103666
104129
  /* @__PURE__ */ jsx(
103667
104130
  "select",
103668
104131
  {
103669
104132
  value: layoutConfig.direction,
103670
- onChange: (e2) => handleDirectionChange(e2.target.value),
104133
+ onChange: (e2) => handleDirectionChange(
104134
+ e2.target.value
104135
+ ),
103671
104136
  style: {
103672
104137
  padding: "4px 8px",
103673
104138
  backgroundColor: theme2.colors.background,
@@ -103682,11 +104147,21 @@ const DependencyGraphPanelContent = ({
103682
104147
  )
103683
104148
  ] }),
103684
104149
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: [
103685
- /* @__PURE__ */ jsxs("label", { style: { fontSize: theme2.fontSizes[1], color: theme2.colors.textSecondary, fontFamily: theme2.fonts.body }, children: [
103686
- "H-Spacing: ",
103687
- layoutConfig.nodeSpacingX,
103688
- "px"
103689
- ] }),
104150
+ /* @__PURE__ */ jsxs(
104151
+ "label",
104152
+ {
104153
+ style: {
104154
+ fontSize: theme2.fontSizes[1],
104155
+ color: theme2.colors.textSecondary,
104156
+ fontFamily: theme2.fonts.body
104157
+ },
104158
+ children: [
104159
+ "H-Spacing: ",
104160
+ layoutConfig.nodeSpacingX,
104161
+ "px"
104162
+ ]
104163
+ }
104164
+ ),
103690
104165
  /* @__PURE__ */ jsx(
103691
104166
  "input",
103692
104167
  {
@@ -103701,11 +104176,21 @@ const DependencyGraphPanelContent = ({
103701
104176
  )
103702
104177
  ] }),
103703
104178
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: [
103704
- /* @__PURE__ */ jsxs("label", { style: { fontSize: theme2.fontSizes[1], color: theme2.colors.textSecondary, fontFamily: theme2.fonts.body }, children: [
103705
- "V-Spacing: ",
103706
- layoutConfig.nodeSpacingY,
103707
- "px"
103708
- ] }),
104179
+ /* @__PURE__ */ jsxs(
104180
+ "label",
104181
+ {
104182
+ style: {
104183
+ fontSize: theme2.fontSizes[1],
104184
+ color: theme2.colors.textSecondary,
104185
+ fontFamily: theme2.fonts.body
104186
+ },
104187
+ children: [
104188
+ "V-Spacing: ",
104189
+ layoutConfig.nodeSpacingY,
104190
+ "px"
104191
+ ]
104192
+ }
104193
+ ),
103709
104194
  /* @__PURE__ */ jsx(
103710
104195
  "input",
103711
104196
  {
@@ -103733,7 +104218,12 @@ const DependencyGraphPanelContent = ({
103733
104218
  "label",
103734
104219
  {
103735
104220
  htmlFor: "include-dev-deps",
103736
- style: { fontSize: theme2.fontSizes[1], color: theme2.colors.textSecondary, fontFamily: theme2.fonts.body, cursor: "pointer" },
104221
+ style: {
104222
+ fontSize: theme2.fontSizes[1],
104223
+ color: theme2.colors.textSecondary,
104224
+ fontFamily: theme2.fonts.body,
104225
+ cursor: "pointer"
104226
+ },
103737
104227
  children: "Include devDependencies"
103738
104228
  }
103739
104229
  )
@@ -103741,14 +104231,7 @@ const DependencyGraphPanelContent = ({
103741
104231
  ]
103742
104232
  }
103743
104233
  ),
103744
- /* @__PURE__ */ jsx("div", { style: { flex: 1, position: "relative" }, children: /* @__PURE__ */ jsx(
103745
- GraphRenderer,
103746
- {
103747
- canvas,
103748
- editable: false
103749
- },
103750
- layoutVersion
103751
- ) }),
104234
+ /* @__PURE__ */ jsx("div", { style: { flex: 1, position: "relative" }, children: /* @__PURE__ */ jsx(GraphRenderer, { canvas, editable: false }, layoutVersion) }),
103752
104235
  /* @__PURE__ */ jsxs(
103753
104236
  "div",
103754
104237
  {
@@ -103820,18 +104303,14 @@ const DependencyGraphPanelPreview = () => {
103820
104303
  }
103821
104304
  );
103822
104305
  };
103823
- const DependencyGraphPanel = ({ context: context2 }) => {
104306
+ const DependencyGraphPanel = ({
104307
+ context: context2
104308
+ }) => {
103824
104309
  var _a;
103825
104310
  const packagesSlice = context2.packages;
103826
104311
  const packages = ((_a = packagesSlice == null ? void 0 : packagesSlice.data) == null ? void 0 : _a.packages) ?? [];
103827
104312
  const isLoading = (packagesSlice == null ? void 0 : packagesSlice.loading) || false;
103828
- return /* @__PURE__ */ jsx(
103829
- DependencyGraphPanelContent,
103830
- {
103831
- packages,
103832
- isLoading
103833
- }
103834
- );
104313
+ return /* @__PURE__ */ jsx(DependencyGraphPanelContent, { packages, isLoading });
103835
104314
  };
103836
104315
  createContext(null);
103837
104316
  class PanelErrorBoundary extends React2__default.Component {
@@ -104904,7 +105383,7 @@ const browserExt = {
104904
105383
  },
104905
105384
  test: () => true,
104906
105385
  load: async () => {
104907
- await import("./browserAll-CXemTuGz.js");
105386
+ await import("./browserAll-DpC1Pe_C.js");
104908
105387
  }
104909
105388
  };
104910
105389
  const webworkerExt = {
@@ -104915,7 +105394,7 @@ const webworkerExt = {
104915
105394
  },
104916
105395
  test: () => typeof self !== "undefined" && self.WorkerGlobalScope !== void 0,
104917
105396
  load: async () => {
104918
- await import("./webworkerAll-D8Y_PhHL.js");
105397
+ await import("./webworkerAll-UMZmwtee.js");
104919
105398
  }
104920
105399
  };
104921
105400
  class ObservablePoint {
@@ -117158,19 +117637,19 @@ async function autoDetectRenderer(options) {
117158
117637
  for (let i2 = 0; i2 < preferredOrder.length; i2++) {
117159
117638
  const rendererType = preferredOrder[i2];
117160
117639
  if (rendererType === "webgpu" && await isWebGPUSupported()) {
117161
- const { WebGPURenderer } = await import("./WebGPURenderer-DjwoM27K.js");
117640
+ const { WebGPURenderer } = await import("./WebGPURenderer-BEq5wl8w.js");
117162
117641
  RendererClass = WebGPURenderer;
117163
117642
  finalOptions = { ...options, ...options.webgpu };
117164
117643
  break;
117165
117644
  } else if (rendererType === "webgl" && isWebGLSupported(
117166
117645
  options.failIfMajorPerformanceCaveat ?? AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat
117167
117646
  )) {
117168
- const { WebGLRenderer } = await import("./WebGLRenderer-B1Wm0Fg0.js");
117647
+ const { WebGLRenderer } = await import("./WebGLRenderer-D5BVc_7m.js");
117169
117648
  RendererClass = WebGLRenderer;
117170
117649
  finalOptions = { ...options, ...options.webgl };
117171
117650
  break;
117172
117651
  } else if (rendererType === "canvas") {
117173
- const { CanvasRenderer } = await import("./CanvasRenderer-C98pDXJk.js");
117652
+ const { CanvasRenderer } = await import("./CanvasRenderer-B20Bru0X.js");
117174
117653
  RendererClass = CanvasRenderer;
117175
117654
  finalOptions = { ...options, ...options.canvasOptions };
117176
117655
  break;
@@ -134397,13 +134876,18 @@ This indicates a sprite was rendered without valid backing data.`
134397
134876
  const regionRow = Math.floor(gridY / REGION_SIZE_TILES);
134398
134877
  const regionOrder = regionRow * 10 + regionCol;
134399
134878
  const targetRegion = customRegions.find((r2) => r2.order === regionOrder);
134400
- const newRegionId = targetRegion == null ? void 0 : targetRegion.id;
134879
+ let newRegionId = targetRegion == null ? void 0 : targetRegion.id;
134401
134880
  if (!newRegionId) {
134402
- console.warn(
134403
- "[CollectionMapPanel] ⚠️ Could not determine region for position:",
134881
+ console.log(
134882
+ "[CollectionMapPanel] Creating default region for drop position:",
134404
134883
  { gridX, gridY, regionOrder }
134405
134884
  );
134406
- return;
134885
+ const newRegion = await regionCallbacks.onRegionCreated(collection.id, {
134886
+ name: customRegions.length === 0 ? "Main" : `Region ${customRegions.length + 1}`,
134887
+ order: regionOrder,
134888
+ createdAt: 0
134889
+ });
134890
+ newRegionId = newRegion.id;
134407
134891
  }
134408
134892
  if (isFirstPlacement) {
134409
134893
  try {
@@ -134450,7 +134934,9 @@ This indicates a sprite was rendered without valid backing data.`
134450
134934
  projectId,
134451
134935
  layout
134452
134936
  );
134453
- const membership = collection.members.find((m2) => m2.repositoryId === projectId);
134937
+ const membership = collection.members.find(
134938
+ (m2) => m2.repositoryId === projectId
134939
+ );
134454
134940
  const oldRegionId = (_b = membership == null ? void 0 : membership.metadata) == null ? void 0 : _b.regionId;
134455
134941
  if (oldRegionId !== newRegionId) {
134456
134942
  await regionCallbacks.onRepositoryAssigned(
@@ -134460,7 +134946,13 @@ This indicates a sprite was rendered without valid backing data.`
134460
134946
  );
134461
134947
  }
134462
134948
  },
134463
- [collection.id, collection.members, regionCallbacks, customRegions, onProjectAdded]
134949
+ [
134950
+ collection.id,
134951
+ collection.members,
134952
+ regionCallbacks,
134953
+ customRegions,
134954
+ onProjectAdded
134955
+ ]
134464
134956
  );
134465
134957
  const handleProjectDrop = useCallback(
134466
134958
  async (data, event) => {
@@ -134500,12 +134992,39 @@ This indicates a sprite was rendered without valid backing data.`
134500
134992
  },
134501
134993
  [handleProjectMoved]
134502
134994
  );
134995
+ const handleGitHubDrop = useCallback(
134996
+ async (data, event) => {
134997
+ const fullName = data.primaryData;
134998
+ const metadata = data.metadata || {};
134999
+ const repoId = fullName;
135000
+ const repositoryMetadata = {
135001
+ name: metadata.name || fullName.split("/")[1] || fullName,
135002
+ path: fullName,
135003
+ // Use full_name as path for GitHub repos
135004
+ ...metadata
135005
+ };
135006
+ const gridCoords = domEventToGridCoords(
135007
+ event.clientX,
135008
+ event.clientY,
135009
+ viewportRef.current,
135010
+ canvasRef.current
135011
+ );
135012
+ const gridX = Math.round(gridCoords.gridX);
135013
+ const gridY = Math.round(gridCoords.gridY);
135014
+ await handleProjectMoved(repoId, gridX, gridY, repositoryMetadata);
135015
+ },
135016
+ [handleProjectMoved]
135017
+ );
134503
135018
  const { isDragOver, ...dropZoneProps } = useDropZone({
134504
135019
  handlers: [
134505
135020
  {
134506
135021
  dataType: "repository-project",
134507
135022
  onDrop: handleProjectDrop
134508
135023
  },
135024
+ {
135025
+ dataType: "repository-github",
135026
+ onDrop: handleGitHubDrop
135027
+ },
134509
135028
  {
134510
135029
  dataType: "application/x-unplaced-node",
134511
135030
  onDrop: async (data, event) => {
@@ -135709,10 +136228,7 @@ const TelemetryCoveragePanelPreview = () => {
135709
136228
  }
135710
136229
  );
135711
136230
  };
135712
- const TelemetryCoveragePanel = ({
135713
- context: context2,
135714
- events
135715
- }) => {
136231
+ const TelemetryCoveragePanel = ({ context: context2, events }) => {
135716
136232
  var _a;
135717
136233
  const packagesSlice = context2.packages;
135718
136234
  const fileTreeSlice = context2.fileTree;
@@ -136079,4 +136595,4 @@ export {
136079
136595
  UPDATE_PRIORITY as y,
136080
136596
  removeItems as z
136081
136597
  };
136082
- //# sourceMappingURL=index-CFyVQhEt.js.map
136598
+ //# sourceMappingURL=index-B88alco-.js.map