@industry-theme/alexandria-panels 0.1.31 → 0.1.32

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panels/LocalProjectsPanel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAGzE,OAAO,0BAA0B,CAAC;AAClC,OAAO,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAoBvD,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AA+iBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAEhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EA6C7C,CAAC;AAGF,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panels/LocalProjectsPanel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAGzE,OAAO,0BAA0B,CAAC;AAClC,OAAO,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAoBvD,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AA2lBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAEhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EA6C7C,CAAC;AAGF,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -3,7 +3,7 @@
3
3
  try {
4
4
  if (typeof document != "undefined") {
5
5
  var elementStyle = document.createElement("style");
6
- elementStyle.appendChild(document.createTextNode("/* Container query for responsive LocalProjectCard */\n.local-projects-panel {\n container-type: inline-size;\n container-name: local-projects;\n height: 100%;\n}\n\n/* Animated underline that grows from left on hover */\n.local-project-card .project-name-underline {\n position: relative;\n text-decoration: none;\n}\n\n.local-project-card .project-name-underline::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: -3px;\n width: 0;\n height: 2px;\n background-color: var(--underline-color);\n transition: width 0.2s ease-out;\n}\n\n.local-project-card:hover .project-name-underline::after {\n width: 100%;\n}\n\n/* Compact mode when container is 400px or less */\n@container local-projects (max-width: 400px) {\n .local-projects-panel {\n padding: 8px !important;\n gap: 8px !important;\n }\n\n .local-projects-list {\n gap: 8px !important;\n }\n\n .local-project-card {\n padding: 8px !important;\n }\n}\n/* Shared Panel Styles */\n\n/* Header button hover states */\n.header-button {\n transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;\n}\n\n.header-button:not(.active):hover {\n color: var(--theme-text) !important;\n}\n\n/* Search input focus state */\n.search-input:focus {\n border-color: var(--theme-primary) !important;\n}\n\n/* Clear filter button hover */\n.clear-filter-button {\n transition: color 0.2s ease;\n}\n\n.clear-filter-button:hover {\n color: var(--theme-text) !important;\n}\n\n/* Search overlay animation - grows from right to left */\n.search-overlay {\n animation: searchExpand 0.2s ease-out forwards;\n}\n\n@keyframes searchExpand {\n from {\n clip-path: inset(0 0 0 100%);\n }\n to {\n clip-path: inset(0 0 0 0);\n }\n}"));
6
+ elementStyle.appendChild(document.createTextNode("/* Spin animation for scanning button */\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Container query for responsive LocalProjectCard */\n.local-projects-panel {\n container-type: inline-size;\n container-name: local-projects;\n height: 100%;\n}\n\n/* Animated underline that grows from left on hover */\n.local-project-card .project-name-underline {\n position: relative;\n text-decoration: none;\n}\n\n.local-project-card .project-name-underline::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: -3px;\n width: 0;\n height: 2px;\n background-color: var(--underline-color);\n transition: width 0.2s ease-out;\n}\n\n.local-project-card:hover .project-name-underline::after {\n width: 100%;\n}\n\n/* Compact mode when container is 400px or less */\n@container local-projects (max-width: 400px) {\n .local-projects-panel {\n padding: 8px !important;\n gap: 8px !important;\n }\n\n .local-projects-list {\n gap: 8px !important;\n }\n\n .local-project-card {\n padding: 8px !important;\n }\n}\n/* Shared Panel Styles */\n\n/* Header button hover states */\n.header-button {\n transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;\n}\n\n.header-button:not(.active):hover {\n color: var(--theme-text) !important;\n}\n\n/* Search input focus state */\n.search-input:focus {\n border-color: var(--theme-primary) !important;\n}\n\n/* Clear filter button hover */\n.clear-filter-button {\n transition: color 0.2s ease;\n}\n\n.clear-filter-button:hover {\n color: var(--theme-text) !important;\n}\n\n/* Search overlay animation - grows from right to left */\n.search-overlay {\n animation: searchExpand 0.2s ease-out forwards;\n}\n\n@keyframes searchExpand {\n from {\n clip-path: inset(0 0 0 100%);\n }\n to {\n clip-path: inset(0 0 0 0);\n }\n}"));
7
7
  document.head.appendChild(elementStyle);
8
8
  }
9
9
  } catch (e) {
@@ -1201,6 +1201,7 @@ const LocalProjectsPanelContent = ({
1201
1201
  const [filter, setFilter] = useState("");
1202
1202
  const [showSearch, setShowSearch] = useState(defaultShowSearch);
1203
1203
  const [isAdding, setIsAdding] = useState(false);
1204
+ const [isScanning, setIsScanning] = useState(false);
1204
1205
  const [selectedEntry, setSelectedEntry] = useState(null);
1205
1206
  const [windowStates, setWindowStates] = useState(/* @__PURE__ */ new Map());
1206
1207
  const [sortByOrg, setSortByOrg] = useState(false);
@@ -1350,6 +1351,19 @@ const LocalProjectsPanelContent = ({
1350
1351
  console.error("Failed to track repository:", error);
1351
1352
  }
1352
1353
  };
1354
+ const handleScanForRepos = async () => {
1355
+ setIsScanning(true);
1356
+ try {
1357
+ await context.refresh("repository", "alexandriaRepositories");
1358
+ events.emit(createPanelEvent$7(`${PANEL_ID$f}:scan-completed`, {
1359
+ discoveredCount: discoveredRepositories.length
1360
+ }));
1361
+ } catch (error) {
1362
+ console.error("Failed to scan for repositories:", error);
1363
+ } finally {
1364
+ setIsScanning(false);
1365
+ }
1366
+ };
1353
1367
  const handleSelectRepository = (entry) => {
1354
1368
  setSelectedEntry(entry);
1355
1369
  events.emit(createPanelEvent$7(`${PANEL_ID$f}:repository-selected`, { entry }));
@@ -1530,6 +1544,37 @@ const LocalProjectsPanelContent = ({
1530
1544
  children: sortByOrg ? /* @__PURE__ */ jsx(Building2, { size: 16 }) : /* @__PURE__ */ jsx(FolderGit2, { size: 16 })
1531
1545
  }
1532
1546
  ),
1547
+ /* @__PURE__ */ jsx(
1548
+ "button",
1549
+ {
1550
+ onClick: handleScanForRepos,
1551
+ disabled: isScanning,
1552
+ title: "Scan for repositories",
1553
+ style: {
1554
+ padding: "4px",
1555
+ borderRadius: "4px",
1556
+ border: `1px solid ${theme.colors.border}`,
1557
+ backgroundColor: theme.colors.backgroundSecondary,
1558
+ color: theme.colors.textSecondary,
1559
+ cursor: isScanning ? "default" : "pointer",
1560
+ display: "flex",
1561
+ alignItems: "center",
1562
+ justifyContent: "center",
1563
+ opacity: isScanning ? 0.6 : 1,
1564
+ transition: "all 0.2s",
1565
+ flexShrink: 0
1566
+ },
1567
+ children: /* @__PURE__ */ jsx(
1568
+ RefreshCw,
1569
+ {
1570
+ size: 16,
1571
+ style: {
1572
+ animation: isScanning ? "spin 1s linear infinite" : "none"
1573
+ }
1574
+ }
1575
+ )
1576
+ }
1577
+ ),
1533
1578
  panelActions.selectDirectory && /* @__PURE__ */ jsx(
1534
1579
  "button",
1535
1580
  {