@industry-theme/github-panels 0.1.7 → 0.1.9
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.
- package/dist/components/GitHubProjectCard.stories.d.ts +2 -2
- package/dist/components/GitHubProjectCard.stories.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/panels/GitHubProjectsPanel.stories.d.ts +2 -2
- package/dist/panels/GitHubProjectsPanel.stories.d.ts.map +1 -1
- package/dist/panels/OwnerRepositoriesPanel.d.ts +28 -0
- package/dist/panels/OwnerRepositoriesPanel.d.ts.map +1 -0
- package/dist/panels.bundle.js +710 -23
- package/dist/panels.bundle.js.map +1 -1
- package/package.json +10 -14
package/dist/panels.bundle.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import React2, { createContext, useState, useEffect, useContext, forwardRef, createElement, useRef, useCallback, useMemo } from "react";
|
|
3
3
|
var terminalTheme = {
|
|
4
4
|
space: [0, 4, 8, 16, 32, 64, 128, 256, 512],
|
|
@@ -320,7 +320,20 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
320
320
|
* This source code is licensed under the ISC license.
|
|
321
321
|
* See the LICENSE file in the root directory of this source tree.
|
|
322
322
|
*/
|
|
323
|
-
const __iconNode$
|
|
323
|
+
const __iconNode$f = [
|
|
324
|
+
["path", { d: "m21 16-4 4-4-4", key: "f6ql7i" }],
|
|
325
|
+
["path", { d: "M17 20V4", key: "1ejh1v" }],
|
|
326
|
+
["path", { d: "m3 8 4-4 4 4", key: "11wl7u" }],
|
|
327
|
+
["path", { d: "M7 4v16", key: "1glfcx" }]
|
|
328
|
+
];
|
|
329
|
+
const ArrowUpDown = createLucideIcon("arrow-up-down", __iconNode$f);
|
|
330
|
+
/**
|
|
331
|
+
* @license lucide-react v0.552.0 - ISC
|
|
332
|
+
*
|
|
333
|
+
* This source code is licensed under the ISC license.
|
|
334
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
335
|
+
*/
|
|
336
|
+
const __iconNode$e = [
|
|
324
337
|
["path", { d: "M10 12h4", key: "a56b0p" }],
|
|
325
338
|
["path", { d: "M10 8h4", key: "1sr2af" }],
|
|
326
339
|
["path", { d: "M14 21v-3a2 2 0 0 0-4 0v3", key: "1rgiei" }],
|
|
@@ -333,42 +346,55 @@ const __iconNode$a = [
|
|
|
333
346
|
],
|
|
334
347
|
["path", { d: "M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16", key: "16ra0t" }]
|
|
335
348
|
];
|
|
336
|
-
const Building2 = createLucideIcon("building-2", __iconNode$
|
|
349
|
+
const Building2 = createLucideIcon("building-2", __iconNode$e);
|
|
337
350
|
/**
|
|
338
351
|
* @license lucide-react v0.552.0 - ISC
|
|
339
352
|
*
|
|
340
353
|
* This source code is licensed under the ISC license.
|
|
341
354
|
* See the LICENSE file in the root directory of this source tree.
|
|
342
355
|
*/
|
|
343
|
-
const __iconNode$
|
|
344
|
-
|
|
356
|
+
const __iconNode$d = [
|
|
357
|
+
["path", { d: "M8 2v4", key: "1cmpym" }],
|
|
358
|
+
["path", { d: "M16 2v4", key: "4m81vk" }],
|
|
359
|
+
["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
|
|
360
|
+
["path", { d: "M3 10h18", key: "8toen8" }]
|
|
361
|
+
];
|
|
362
|
+
const Calendar = createLucideIcon("calendar", __iconNode$d);
|
|
345
363
|
/**
|
|
346
364
|
* @license lucide-react v0.552.0 - ISC
|
|
347
365
|
*
|
|
348
366
|
* This source code is licensed under the ISC license.
|
|
349
367
|
* See the LICENSE file in the root directory of this source tree.
|
|
350
368
|
*/
|
|
351
|
-
const __iconNode$
|
|
352
|
-
const
|
|
369
|
+
const __iconNode$c = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
370
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$c);
|
|
353
371
|
/**
|
|
354
372
|
* @license lucide-react v0.552.0 - ISC
|
|
355
373
|
*
|
|
356
374
|
* This source code is licensed under the ISC license.
|
|
357
375
|
* See the LICENSE file in the root directory of this source tree.
|
|
358
376
|
*/
|
|
359
|
-
const __iconNode$
|
|
377
|
+
const __iconNode$b = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
378
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$b);
|
|
379
|
+
/**
|
|
380
|
+
* @license lucide-react v0.552.0 - ISC
|
|
381
|
+
*
|
|
382
|
+
* This source code is licensed under the ISC license.
|
|
383
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
384
|
+
*/
|
|
385
|
+
const __iconNode$a = [
|
|
360
386
|
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
361
387
|
["path", { d: "M10 14 21 3", key: "gplh6r" }],
|
|
362
388
|
["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
|
|
363
389
|
];
|
|
364
|
-
const ExternalLink = createLucideIcon("external-link", __iconNode$
|
|
390
|
+
const ExternalLink = createLucideIcon("external-link", __iconNode$a);
|
|
365
391
|
/**
|
|
366
392
|
* @license lucide-react v0.552.0 - ISC
|
|
367
393
|
*
|
|
368
394
|
* This source code is licensed under the ISC license.
|
|
369
395
|
* See the LICENSE file in the root directory of this source tree.
|
|
370
396
|
*/
|
|
371
|
-
const __iconNode$
|
|
397
|
+
const __iconNode$9 = [
|
|
372
398
|
[
|
|
373
399
|
"path",
|
|
374
400
|
{
|
|
@@ -377,28 +403,44 @@ const __iconNode$6 = [
|
|
|
377
403
|
}
|
|
378
404
|
]
|
|
379
405
|
];
|
|
380
|
-
const Folder = createLucideIcon("folder", __iconNode$
|
|
406
|
+
const Folder = createLucideIcon("folder", __iconNode$9);
|
|
381
407
|
/**
|
|
382
408
|
* @license lucide-react v0.552.0 - ISC
|
|
383
409
|
*
|
|
384
410
|
* This source code is licensed under the ISC license.
|
|
385
411
|
* See the LICENSE file in the root directory of this source tree.
|
|
386
412
|
*/
|
|
387
|
-
const __iconNode$
|
|
413
|
+
const __iconNode$8 = [
|
|
414
|
+
[
|
|
415
|
+
"path",
|
|
416
|
+
{
|
|
417
|
+
d: "M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",
|
|
418
|
+
key: "sc7q7i"
|
|
419
|
+
}
|
|
420
|
+
]
|
|
421
|
+
];
|
|
422
|
+
const Funnel = createLucideIcon("funnel", __iconNode$8);
|
|
423
|
+
/**
|
|
424
|
+
* @license lucide-react v0.552.0 - ISC
|
|
425
|
+
*
|
|
426
|
+
* This source code is licensed under the ISC license.
|
|
427
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
428
|
+
*/
|
|
429
|
+
const __iconNode$7 = [
|
|
388
430
|
["circle", { cx: "12", cy: "18", r: "3", key: "1mpf1b" }],
|
|
389
431
|
["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
|
|
390
432
|
["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
|
|
391
433
|
["path", { d: "M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9", key: "1uq4wg" }],
|
|
392
434
|
["path", { d: "M12 12v3", key: "158kv8" }]
|
|
393
435
|
];
|
|
394
|
-
const GitFork = createLucideIcon("git-fork", __iconNode$
|
|
436
|
+
const GitFork = createLucideIcon("git-fork", __iconNode$7);
|
|
395
437
|
/**
|
|
396
438
|
* @license lucide-react v0.552.0 - ISC
|
|
397
439
|
*
|
|
398
440
|
* This source code is licensed under the ISC license.
|
|
399
441
|
* See the LICENSE file in the root directory of this source tree.
|
|
400
442
|
*/
|
|
401
|
-
const __iconNode$
|
|
443
|
+
const __iconNode$6 = [
|
|
402
444
|
[
|
|
403
445
|
"path",
|
|
404
446
|
{
|
|
@@ -408,48 +450,61 @@ const __iconNode$4 = [
|
|
|
408
450
|
],
|
|
409
451
|
["path", { d: "M9 18c-4.51 2-5-2-7-2", key: "9comsn" }]
|
|
410
452
|
];
|
|
411
|
-
const Github = createLucideIcon("github", __iconNode$
|
|
453
|
+
const Github = createLucideIcon("github", __iconNode$6);
|
|
412
454
|
/**
|
|
413
455
|
* @license lucide-react v0.552.0 - ISC
|
|
414
456
|
*
|
|
415
457
|
* This source code is licensed under the ISC license.
|
|
416
458
|
* See the LICENSE file in the root directory of this source tree.
|
|
417
459
|
*/
|
|
418
|
-
const __iconNode$
|
|
460
|
+
const __iconNode$5 = [
|
|
419
461
|
["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
|
|
420
462
|
["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }]
|
|
421
463
|
];
|
|
422
|
-
const Lock = createLucideIcon("lock", __iconNode$
|
|
464
|
+
const Lock = createLucideIcon("lock", __iconNode$5);
|
|
423
465
|
/**
|
|
424
466
|
* @license lucide-react v0.552.0 - ISC
|
|
425
467
|
*
|
|
426
468
|
* This source code is licensed under the ISC license.
|
|
427
469
|
* See the LICENSE file in the root directory of this source tree.
|
|
428
470
|
*/
|
|
429
|
-
const __iconNode$
|
|
471
|
+
const __iconNode$4 = [
|
|
430
472
|
["path", { d: "m10 17 5-5-5-5", key: "1bsop3" }],
|
|
431
473
|
["path", { d: "M15 12H3", key: "6jk70r" }],
|
|
432
474
|
["path", { d: "M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4", key: "u53s6r" }]
|
|
433
475
|
];
|
|
434
|
-
const LogIn = createLucideIcon("log-in", __iconNode$
|
|
476
|
+
const LogIn = createLucideIcon("log-in", __iconNode$4);
|
|
435
477
|
/**
|
|
436
478
|
* @license lucide-react v0.552.0 - ISC
|
|
437
479
|
*
|
|
438
480
|
* This source code is licensed under the ISC license.
|
|
439
481
|
* See the LICENSE file in the root directory of this source tree.
|
|
440
482
|
*/
|
|
441
|
-
const __iconNode$
|
|
483
|
+
const __iconNode$3 = [
|
|
484
|
+
["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
|
|
485
|
+
["path", { d: "M21 3v5h-5", key: "1q7to0" }],
|
|
486
|
+
["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
|
|
487
|
+
["path", { d: "M8 16H3v5", key: "1cv678" }]
|
|
488
|
+
];
|
|
489
|
+
const RefreshCw = createLucideIcon("refresh-cw", __iconNode$3);
|
|
490
|
+
/**
|
|
491
|
+
* @license lucide-react v0.552.0 - ISC
|
|
492
|
+
*
|
|
493
|
+
* This source code is licensed under the ISC license.
|
|
494
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
495
|
+
*/
|
|
496
|
+
const __iconNode$2 = [
|
|
442
497
|
["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
|
|
443
498
|
["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
|
|
444
499
|
];
|
|
445
|
-
const Search = createLucideIcon("search", __iconNode$
|
|
500
|
+
const Search = createLucideIcon("search", __iconNode$2);
|
|
446
501
|
/**
|
|
447
502
|
* @license lucide-react v0.552.0 - ISC
|
|
448
503
|
*
|
|
449
504
|
* This source code is licensed under the ISC license.
|
|
450
505
|
* See the LICENSE file in the root directory of this source tree.
|
|
451
506
|
*/
|
|
452
|
-
const __iconNode = [
|
|
507
|
+
const __iconNode$1 = [
|
|
453
508
|
[
|
|
454
509
|
"path",
|
|
455
510
|
{
|
|
@@ -458,7 +513,18 @@ const __iconNode = [
|
|
|
458
513
|
}
|
|
459
514
|
]
|
|
460
515
|
];
|
|
461
|
-
const Star = createLucideIcon("star", __iconNode);
|
|
516
|
+
const Star = createLucideIcon("star", __iconNode$1);
|
|
517
|
+
/**
|
|
518
|
+
* @license lucide-react v0.552.0 - ISC
|
|
519
|
+
*
|
|
520
|
+
* This source code is licensed under the ISC license.
|
|
521
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
522
|
+
*/
|
|
523
|
+
const __iconNode = [
|
|
524
|
+
["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }],
|
|
525
|
+
["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }]
|
|
526
|
+
];
|
|
527
|
+
const User = createLucideIcon("user", __iconNode);
|
|
462
528
|
function getLanguageColor(language) {
|
|
463
529
|
const colors = {
|
|
464
530
|
TypeScript: "#3178c6",
|
|
@@ -1545,6 +1611,616 @@ const GitHubSearchPanelMetadata = {
|
|
|
1545
1611
|
slices: [],
|
|
1546
1612
|
surfaces: ["panel"]
|
|
1547
1613
|
};
|
|
1614
|
+
const OwnerRepositoriesPanelContent = ({
|
|
1615
|
+
events,
|
|
1616
|
+
context,
|
|
1617
|
+
owner: propOwner
|
|
1618
|
+
}) => {
|
|
1619
|
+
var _a, _b;
|
|
1620
|
+
const { theme: theme2 } = useTheme();
|
|
1621
|
+
const [repositories, setRepositories] = useState([]);
|
|
1622
|
+
const [ownerInfo, setOwnerInfo] = useState(null);
|
|
1623
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
1624
|
+
const [error, setError] = useState(null);
|
|
1625
|
+
const [selectedRepoId, setSelectedRepoId] = useState(null);
|
|
1626
|
+
const [sortField, setSortField] = useState("updated");
|
|
1627
|
+
const [sortOrder, setSortOrder] = useState("desc");
|
|
1628
|
+
const [languageFilter, setLanguageFilter] = useState(null);
|
|
1629
|
+
const [languages, setLanguages] = useState([]);
|
|
1630
|
+
const owner = propOwner || ((_b = (_a = context == null ? void 0 : context.currentScope) == null ? void 0 : _a.repository) == null ? void 0 : _b.name);
|
|
1631
|
+
const fetchOwnerData = useCallback(async () => {
|
|
1632
|
+
if (!owner) {
|
|
1633
|
+
setError("No owner specified");
|
|
1634
|
+
setIsLoading(false);
|
|
1635
|
+
return;
|
|
1636
|
+
}
|
|
1637
|
+
setIsLoading(true);
|
|
1638
|
+
setError(null);
|
|
1639
|
+
try {
|
|
1640
|
+
const userResponse = await fetch(`https://api.github.com/users/${owner}`);
|
|
1641
|
+
if (!userResponse.ok) {
|
|
1642
|
+
if (userResponse.status === 404) {
|
|
1643
|
+
throw new Error(`User or organization "${owner}" not found`);
|
|
1644
|
+
}
|
|
1645
|
+
throw new Error("Failed to fetch owner info");
|
|
1646
|
+
}
|
|
1647
|
+
const userData = await userResponse.json();
|
|
1648
|
+
setOwnerInfo({
|
|
1649
|
+
login: userData.login,
|
|
1650
|
+
avatar_url: userData.avatar_url,
|
|
1651
|
+
name: userData.name,
|
|
1652
|
+
bio: userData.bio,
|
|
1653
|
+
type: userData.type,
|
|
1654
|
+
public_repos: userData.public_repos,
|
|
1655
|
+
followers: userData.followers,
|
|
1656
|
+
following: userData.following
|
|
1657
|
+
});
|
|
1658
|
+
const reposResponse = await fetch(
|
|
1659
|
+
`https://api.github.com/users/${owner}/repos?per_page=100&sort=updated`
|
|
1660
|
+
);
|
|
1661
|
+
if (!reposResponse.ok) {
|
|
1662
|
+
throw new Error("Failed to fetch repositories");
|
|
1663
|
+
}
|
|
1664
|
+
const reposData = await reposResponse.json();
|
|
1665
|
+
setRepositories(reposData);
|
|
1666
|
+
const uniqueLanguages = [...new Set(
|
|
1667
|
+
reposData.map((r) => r.language).filter((lang) => lang !== null)
|
|
1668
|
+
)].sort();
|
|
1669
|
+
setLanguages(uniqueLanguages);
|
|
1670
|
+
} catch (err) {
|
|
1671
|
+
setError(err instanceof Error ? err.message : "Failed to load data");
|
|
1672
|
+
} finally {
|
|
1673
|
+
setIsLoading(false);
|
|
1674
|
+
}
|
|
1675
|
+
}, [owner]);
|
|
1676
|
+
useEffect(() => {
|
|
1677
|
+
fetchOwnerData();
|
|
1678
|
+
}, [fetchOwnerData]);
|
|
1679
|
+
const sortedAndFilteredRepos = React2.useMemo(() => {
|
|
1680
|
+
let filtered = repositories;
|
|
1681
|
+
if (languageFilter) {
|
|
1682
|
+
filtered = filtered.filter((r) => r.language === languageFilter);
|
|
1683
|
+
}
|
|
1684
|
+
return [...filtered].sort((a, b) => {
|
|
1685
|
+
let comparison = 0;
|
|
1686
|
+
switch (sortField) {
|
|
1687
|
+
case "updated":
|
|
1688
|
+
comparison = new Date(b.updated_at || 0).getTime() - new Date(a.updated_at || 0).getTime();
|
|
1689
|
+
break;
|
|
1690
|
+
case "stars":
|
|
1691
|
+
comparison = (b.stargazers_count || 0) - (a.stargazers_count || 0);
|
|
1692
|
+
break;
|
|
1693
|
+
case "name":
|
|
1694
|
+
comparison = a.name.localeCompare(b.name);
|
|
1695
|
+
break;
|
|
1696
|
+
case "created":
|
|
1697
|
+
comparison = new Date(b.created_at || 0).getTime() - new Date(a.created_at || 0).getTime();
|
|
1698
|
+
break;
|
|
1699
|
+
}
|
|
1700
|
+
return sortOrder === "desc" ? comparison : -comparison;
|
|
1701
|
+
});
|
|
1702
|
+
}, [repositories, sortField, sortOrder, languageFilter]);
|
|
1703
|
+
const handleSelectRepository = (repo) => {
|
|
1704
|
+
setSelectedRepoId(repo.id);
|
|
1705
|
+
events.emit({
|
|
1706
|
+
type: "repository:preview",
|
|
1707
|
+
source: "owner-repositories-panel",
|
|
1708
|
+
timestamp: Date.now(),
|
|
1709
|
+
payload: {
|
|
1710
|
+
repository: repo,
|
|
1711
|
+
source: "click"
|
|
1712
|
+
}
|
|
1713
|
+
});
|
|
1714
|
+
};
|
|
1715
|
+
const handleOpenRepository = (repo) => {
|
|
1716
|
+
events.emit({
|
|
1717
|
+
type: "repository:selected",
|
|
1718
|
+
source: "owner-repositories-panel",
|
|
1719
|
+
timestamp: Date.now(),
|
|
1720
|
+
payload: {
|
|
1721
|
+
repository: repo,
|
|
1722
|
+
source: "click"
|
|
1723
|
+
}
|
|
1724
|
+
});
|
|
1725
|
+
};
|
|
1726
|
+
const formatNumber = (num) => {
|
|
1727
|
+
if (num >= 1e6) return `${(num / 1e6).toFixed(1)}M`;
|
|
1728
|
+
if (num >= 1e3) return `${(num / 1e3).toFixed(1)}K`;
|
|
1729
|
+
return num.toString();
|
|
1730
|
+
};
|
|
1731
|
+
const formatRelativeTime = (dateString) => {
|
|
1732
|
+
const date = new Date(dateString);
|
|
1733
|
+
const now = /* @__PURE__ */ new Date();
|
|
1734
|
+
const diffMs = now.getTime() - date.getTime();
|
|
1735
|
+
const diffDays = Math.floor(diffMs / (1e3 * 60 * 60 * 24));
|
|
1736
|
+
if (diffDays === 0) return "today";
|
|
1737
|
+
if (diffDays === 1) return "yesterday";
|
|
1738
|
+
if (diffDays < 7) return `${diffDays} days ago`;
|
|
1739
|
+
if (diffDays < 30) return `${Math.floor(diffDays / 7)} weeks ago`;
|
|
1740
|
+
if (diffDays < 365) return `${Math.floor(diffDays / 30)} months ago`;
|
|
1741
|
+
return `${Math.floor(diffDays / 365)} years ago`;
|
|
1742
|
+
};
|
|
1743
|
+
const handleSort = (field) => {
|
|
1744
|
+
if (sortField === field) {
|
|
1745
|
+
setSortOrder((prev) => prev === "desc" ? "asc" : "desc");
|
|
1746
|
+
} else {
|
|
1747
|
+
setSortField(field);
|
|
1748
|
+
setSortOrder("desc");
|
|
1749
|
+
}
|
|
1750
|
+
};
|
|
1751
|
+
return /* @__PURE__ */ jsxs(
|
|
1752
|
+
"div",
|
|
1753
|
+
{
|
|
1754
|
+
style: {
|
|
1755
|
+
height: "100%",
|
|
1756
|
+
display: "flex",
|
|
1757
|
+
flexDirection: "column",
|
|
1758
|
+
backgroundColor: theme2.colors.background,
|
|
1759
|
+
color: theme2.colors.text,
|
|
1760
|
+
fontFamily: theme2.fonts.body
|
|
1761
|
+
},
|
|
1762
|
+
children: [
|
|
1763
|
+
/* @__PURE__ */ jsx(
|
|
1764
|
+
"div",
|
|
1765
|
+
{
|
|
1766
|
+
style: {
|
|
1767
|
+
padding: "16px",
|
|
1768
|
+
borderBottom: `1px solid ${theme2.colors.border}`,
|
|
1769
|
+
display: "flex",
|
|
1770
|
+
alignItems: "center",
|
|
1771
|
+
gap: "12px"
|
|
1772
|
+
},
|
|
1773
|
+
children: ownerInfo ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1774
|
+
/* @__PURE__ */ jsx(
|
|
1775
|
+
"img",
|
|
1776
|
+
{
|
|
1777
|
+
src: ownerInfo.avatar_url,
|
|
1778
|
+
alt: ownerInfo.login,
|
|
1779
|
+
style: {
|
|
1780
|
+
width: 48,
|
|
1781
|
+
height: 48,
|
|
1782
|
+
borderRadius: ownerInfo.type === "Organization" ? 8 : "50%",
|
|
1783
|
+
border: `2px solid ${theme2.colors.border}`
|
|
1784
|
+
}
|
|
1785
|
+
}
|
|
1786
|
+
),
|
|
1787
|
+
/* @__PURE__ */ jsxs("div", { style: { flex: 1 }, children: [
|
|
1788
|
+
/* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
|
|
1789
|
+
/* @__PURE__ */ jsx(
|
|
1790
|
+
"h2",
|
|
1791
|
+
{
|
|
1792
|
+
style: {
|
|
1793
|
+
margin: 0,
|
|
1794
|
+
fontSize: `${theme2.fontSizes[4]}px`,
|
|
1795
|
+
fontWeight: theme2.fontWeights.bold
|
|
1796
|
+
},
|
|
1797
|
+
children: ownerInfo.name || ownerInfo.login
|
|
1798
|
+
}
|
|
1799
|
+
),
|
|
1800
|
+
ownerInfo.type === "Organization" ? /* @__PURE__ */ jsx(Building2, { size: 16, color: theme2.colors.textSecondary }) : /* @__PURE__ */ jsx(User, { size: 16, color: theme2.colors.textSecondary })
|
|
1801
|
+
] }),
|
|
1802
|
+
ownerInfo.bio && /* @__PURE__ */ jsx(
|
|
1803
|
+
"p",
|
|
1804
|
+
{
|
|
1805
|
+
style: {
|
|
1806
|
+
margin: "4px 0 0",
|
|
1807
|
+
fontSize: `${theme2.fontSizes[1]}px`,
|
|
1808
|
+
color: theme2.colors.textSecondary
|
|
1809
|
+
},
|
|
1810
|
+
children: ownerInfo.bio
|
|
1811
|
+
}
|
|
1812
|
+
),
|
|
1813
|
+
/* @__PURE__ */ jsxs(
|
|
1814
|
+
"div",
|
|
1815
|
+
{
|
|
1816
|
+
style: {
|
|
1817
|
+
display: "flex",
|
|
1818
|
+
gap: "12px",
|
|
1819
|
+
marginTop: "4px",
|
|
1820
|
+
fontSize: `${theme2.fontSizes[1]}px`,
|
|
1821
|
+
color: theme2.colors.textSecondary
|
|
1822
|
+
},
|
|
1823
|
+
children: [
|
|
1824
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
1825
|
+
ownerInfo.public_repos,
|
|
1826
|
+
" repositories"
|
|
1827
|
+
] }),
|
|
1828
|
+
ownerInfo.followers !== void 0 && /* @__PURE__ */ jsxs("span", { children: [
|
|
1829
|
+
formatNumber(ownerInfo.followers),
|
|
1830
|
+
" followers"
|
|
1831
|
+
] })
|
|
1832
|
+
]
|
|
1833
|
+
}
|
|
1834
|
+
)
|
|
1835
|
+
] }),
|
|
1836
|
+
/* @__PURE__ */ jsx(
|
|
1837
|
+
"button",
|
|
1838
|
+
{
|
|
1839
|
+
onClick: fetchOwnerData,
|
|
1840
|
+
style: {
|
|
1841
|
+
padding: "8px",
|
|
1842
|
+
borderRadius: "6px",
|
|
1843
|
+
border: `1px solid ${theme2.colors.border}`,
|
|
1844
|
+
background: "transparent",
|
|
1845
|
+
cursor: "pointer",
|
|
1846
|
+
color: theme2.colors.textSecondary
|
|
1847
|
+
},
|
|
1848
|
+
title: "Refresh",
|
|
1849
|
+
children: /* @__PURE__ */ jsx(RefreshCw, { size: 16 })
|
|
1850
|
+
}
|
|
1851
|
+
)
|
|
1852
|
+
] }) : /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "12px" }, children: [
|
|
1853
|
+
/* @__PURE__ */ jsx(Github, { size: 24, color: theme2.colors.primary }),
|
|
1854
|
+
/* @__PURE__ */ jsx(
|
|
1855
|
+
"h2",
|
|
1856
|
+
{
|
|
1857
|
+
style: {
|
|
1858
|
+
margin: 0,
|
|
1859
|
+
fontSize: `${theme2.fontSizes[3]}px`,
|
|
1860
|
+
fontWeight: theme2.fontWeights.semibold
|
|
1861
|
+
},
|
|
1862
|
+
children: owner || "Repositories"
|
|
1863
|
+
}
|
|
1864
|
+
)
|
|
1865
|
+
] })
|
|
1866
|
+
}
|
|
1867
|
+
),
|
|
1868
|
+
!isLoading && !error && repositories.length > 0 && /* @__PURE__ */ jsxs(
|
|
1869
|
+
"div",
|
|
1870
|
+
{
|
|
1871
|
+
style: {
|
|
1872
|
+
padding: "8px 16px",
|
|
1873
|
+
borderBottom: `1px solid ${theme2.colors.border}`,
|
|
1874
|
+
display: "flex",
|
|
1875
|
+
alignItems: "center",
|
|
1876
|
+
gap: "8px",
|
|
1877
|
+
flexWrap: "wrap"
|
|
1878
|
+
},
|
|
1879
|
+
children: [
|
|
1880
|
+
/* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
|
|
1881
|
+
/* @__PURE__ */ jsx(ArrowUpDown, { size: 14, color: theme2.colors.textSecondary }),
|
|
1882
|
+
["updated", "stars", "name"].map((field) => /* @__PURE__ */ jsxs(
|
|
1883
|
+
"button",
|
|
1884
|
+
{
|
|
1885
|
+
onClick: () => handleSort(field),
|
|
1886
|
+
style: {
|
|
1887
|
+
padding: "4px 8px",
|
|
1888
|
+
borderRadius: "4px",
|
|
1889
|
+
border: "none",
|
|
1890
|
+
background: sortField === field ? theme2.colors.primary : theme2.colors.backgroundSecondary,
|
|
1891
|
+
color: sortField === field ? theme2.colors.background : theme2.colors.text,
|
|
1892
|
+
fontSize: `${theme2.fontSizes[1]}px`,
|
|
1893
|
+
cursor: "pointer",
|
|
1894
|
+
textTransform: "capitalize"
|
|
1895
|
+
},
|
|
1896
|
+
children: [
|
|
1897
|
+
field,
|
|
1898
|
+
sortField === field && (sortOrder === "desc" ? " ↓" : " ↑")
|
|
1899
|
+
]
|
|
1900
|
+
},
|
|
1901
|
+
field
|
|
1902
|
+
))
|
|
1903
|
+
] }),
|
|
1904
|
+
languages.length > 0 && /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "4px", marginLeft: "auto" }, children: [
|
|
1905
|
+
/* @__PURE__ */ jsx(Funnel, { size: 14, color: theme2.colors.textSecondary }),
|
|
1906
|
+
/* @__PURE__ */ jsxs(
|
|
1907
|
+
"select",
|
|
1908
|
+
{
|
|
1909
|
+
value: languageFilter || "",
|
|
1910
|
+
onChange: (e) => setLanguageFilter(e.target.value || null),
|
|
1911
|
+
style: {
|
|
1912
|
+
padding: "4px 8px",
|
|
1913
|
+
borderRadius: "4px",
|
|
1914
|
+
border: `1px solid ${theme2.colors.border}`,
|
|
1915
|
+
background: theme2.colors.backgroundSecondary,
|
|
1916
|
+
color: theme2.colors.text,
|
|
1917
|
+
fontSize: `${theme2.fontSizes[1]}px`,
|
|
1918
|
+
cursor: "pointer"
|
|
1919
|
+
},
|
|
1920
|
+
children: [
|
|
1921
|
+
/* @__PURE__ */ jsx("option", { value: "", children: "All languages" }),
|
|
1922
|
+
languages.map((lang) => /* @__PURE__ */ jsx("option", { value: lang, children: lang }, lang))
|
|
1923
|
+
]
|
|
1924
|
+
}
|
|
1925
|
+
)
|
|
1926
|
+
] })
|
|
1927
|
+
]
|
|
1928
|
+
}
|
|
1929
|
+
),
|
|
1930
|
+
isLoading && /* @__PURE__ */ jsxs(
|
|
1931
|
+
"div",
|
|
1932
|
+
{
|
|
1933
|
+
style: {
|
|
1934
|
+
flex: 1,
|
|
1935
|
+
display: "flex",
|
|
1936
|
+
flexDirection: "column",
|
|
1937
|
+
alignItems: "center",
|
|
1938
|
+
justifyContent: "center",
|
|
1939
|
+
gap: "16px",
|
|
1940
|
+
color: theme2.colors.textSecondary
|
|
1941
|
+
},
|
|
1942
|
+
children: [
|
|
1943
|
+
/* @__PURE__ */ jsx(
|
|
1944
|
+
"div",
|
|
1945
|
+
{
|
|
1946
|
+
style: {
|
|
1947
|
+
width: 32,
|
|
1948
|
+
height: 32,
|
|
1949
|
+
border: `3px solid ${theme2.colors.border}`,
|
|
1950
|
+
borderTopColor: theme2.colors.primary,
|
|
1951
|
+
borderRadius: "50%",
|
|
1952
|
+
animation: "spin 1s linear infinite"
|
|
1953
|
+
}
|
|
1954
|
+
}
|
|
1955
|
+
),
|
|
1956
|
+
/* @__PURE__ */ jsx("span", { children: "Loading repositories..." })
|
|
1957
|
+
]
|
|
1958
|
+
}
|
|
1959
|
+
),
|
|
1960
|
+
error && /* @__PURE__ */ jsxs(
|
|
1961
|
+
"div",
|
|
1962
|
+
{
|
|
1963
|
+
style: {
|
|
1964
|
+
flex: 1,
|
|
1965
|
+
display: "flex",
|
|
1966
|
+
flexDirection: "column",
|
|
1967
|
+
alignItems: "center",
|
|
1968
|
+
justifyContent: "center",
|
|
1969
|
+
padding: "32px",
|
|
1970
|
+
textAlign: "center"
|
|
1971
|
+
},
|
|
1972
|
+
children: [
|
|
1973
|
+
/* @__PURE__ */ jsx(
|
|
1974
|
+
"div",
|
|
1975
|
+
{
|
|
1976
|
+
style: {
|
|
1977
|
+
padding: "16px 24px",
|
|
1978
|
+
borderRadius: "8px",
|
|
1979
|
+
backgroundColor: `${theme2.colors.error}15`,
|
|
1980
|
+
color: theme2.colors.error,
|
|
1981
|
+
marginBottom: "16px"
|
|
1982
|
+
},
|
|
1983
|
+
children: error
|
|
1984
|
+
}
|
|
1985
|
+
),
|
|
1986
|
+
/* @__PURE__ */ jsx(
|
|
1987
|
+
"button",
|
|
1988
|
+
{
|
|
1989
|
+
onClick: fetchOwnerData,
|
|
1990
|
+
style: {
|
|
1991
|
+
padding: "8px 16px",
|
|
1992
|
+
borderRadius: "6px",
|
|
1993
|
+
border: "none",
|
|
1994
|
+
background: theme2.colors.primary,
|
|
1995
|
+
color: theme2.colors.background,
|
|
1996
|
+
cursor: "pointer",
|
|
1997
|
+
fontWeight: theme2.fontWeights.medium
|
|
1998
|
+
},
|
|
1999
|
+
children: "Try Again"
|
|
2000
|
+
}
|
|
2001
|
+
)
|
|
2002
|
+
]
|
|
2003
|
+
}
|
|
2004
|
+
),
|
|
2005
|
+
!isLoading && !error && repositories.length === 0 && /* @__PURE__ */ jsxs(
|
|
2006
|
+
"div",
|
|
2007
|
+
{
|
|
2008
|
+
style: {
|
|
2009
|
+
flex: 1,
|
|
2010
|
+
display: "flex",
|
|
2011
|
+
flexDirection: "column",
|
|
2012
|
+
alignItems: "center",
|
|
2013
|
+
justifyContent: "center",
|
|
2014
|
+
padding: "32px",
|
|
2015
|
+
color: theme2.colors.textSecondary
|
|
2016
|
+
},
|
|
2017
|
+
children: [
|
|
2018
|
+
/* @__PURE__ */ jsx(Github, { size: 48, color: theme2.colors.border, style: { marginBottom: 16 } }),
|
|
2019
|
+
/* @__PURE__ */ jsx("p", { style: { margin: 0 }, children: "No public repositories found" })
|
|
2020
|
+
]
|
|
2021
|
+
}
|
|
2022
|
+
),
|
|
2023
|
+
!isLoading && !error && sortedAndFilteredRepos.length > 0 && /* @__PURE__ */ jsx(
|
|
2024
|
+
"div",
|
|
2025
|
+
{
|
|
2026
|
+
style: {
|
|
2027
|
+
flex: 1,
|
|
2028
|
+
overflowY: "auto",
|
|
2029
|
+
padding: "8px"
|
|
2030
|
+
},
|
|
2031
|
+
children: sortedAndFilteredRepos.map((repo) => /* @__PURE__ */ jsxs(
|
|
2032
|
+
"button",
|
|
2033
|
+
{
|
|
2034
|
+
type: "button",
|
|
2035
|
+
onClick: () => handleSelectRepository(repo),
|
|
2036
|
+
onDoubleClick: () => handleOpenRepository(repo),
|
|
2037
|
+
style: {
|
|
2038
|
+
width: "100%",
|
|
2039
|
+
padding: "12px",
|
|
2040
|
+
margin: "4px 0",
|
|
2041
|
+
borderRadius: "8px",
|
|
2042
|
+
border: selectedRepoId === repo.id ? `2px solid ${theme2.colors.primary}` : `1px solid ${theme2.colors.border}`,
|
|
2043
|
+
backgroundColor: selectedRepoId === repo.id ? `${theme2.colors.primary}10` : theme2.colors.surface,
|
|
2044
|
+
cursor: "pointer",
|
|
2045
|
+
textAlign: "left",
|
|
2046
|
+
display: "flex",
|
|
2047
|
+
flexDirection: "column",
|
|
2048
|
+
gap: "8px",
|
|
2049
|
+
transition: "all 0.15s ease"
|
|
2050
|
+
},
|
|
2051
|
+
children: [
|
|
2052
|
+
/* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
|
|
2053
|
+
/* @__PURE__ */ jsx(
|
|
2054
|
+
"span",
|
|
2055
|
+
{
|
|
2056
|
+
style: {
|
|
2057
|
+
fontSize: `${theme2.fontSizes[2]}px`,
|
|
2058
|
+
fontWeight: theme2.fontWeights.semibold,
|
|
2059
|
+
color: theme2.colors.primary
|
|
2060
|
+
},
|
|
2061
|
+
children: repo.name
|
|
2062
|
+
}
|
|
2063
|
+
),
|
|
2064
|
+
repo.archived && /* @__PURE__ */ jsx(
|
|
2065
|
+
"span",
|
|
2066
|
+
{
|
|
2067
|
+
style: {
|
|
2068
|
+
fontSize: `${theme2.fontSizes[0]}px`,
|
|
2069
|
+
padding: "2px 6px",
|
|
2070
|
+
borderRadius: "4px",
|
|
2071
|
+
backgroundColor: theme2.colors.warning + "20",
|
|
2072
|
+
color: theme2.colors.warning
|
|
2073
|
+
},
|
|
2074
|
+
children: "Archived"
|
|
2075
|
+
}
|
|
2076
|
+
),
|
|
2077
|
+
repo.fork && /* @__PURE__ */ jsx(
|
|
2078
|
+
"span",
|
|
2079
|
+
{
|
|
2080
|
+
style: {
|
|
2081
|
+
fontSize: `${theme2.fontSizes[0]}px`,
|
|
2082
|
+
padding: "2px 6px",
|
|
2083
|
+
borderRadius: "4px",
|
|
2084
|
+
backgroundColor: theme2.colors.backgroundTertiary,
|
|
2085
|
+
color: theme2.colors.textSecondary
|
|
2086
|
+
},
|
|
2087
|
+
children: "Fork"
|
|
2088
|
+
}
|
|
2089
|
+
)
|
|
2090
|
+
] }),
|
|
2091
|
+
repo.description && /* @__PURE__ */ jsx(
|
|
2092
|
+
"p",
|
|
2093
|
+
{
|
|
2094
|
+
style: {
|
|
2095
|
+
margin: 0,
|
|
2096
|
+
fontSize: `${theme2.fontSizes[1]}px`,
|
|
2097
|
+
color: theme2.colors.textSecondary,
|
|
2098
|
+
overflow: "hidden",
|
|
2099
|
+
textOverflow: "ellipsis",
|
|
2100
|
+
display: "-webkit-box",
|
|
2101
|
+
WebkitLineClamp: 2,
|
|
2102
|
+
WebkitBoxOrient: "vertical"
|
|
2103
|
+
},
|
|
2104
|
+
children: repo.description
|
|
2105
|
+
}
|
|
2106
|
+
),
|
|
2107
|
+
/* @__PURE__ */ jsxs(
|
|
2108
|
+
"div",
|
|
2109
|
+
{
|
|
2110
|
+
style: {
|
|
2111
|
+
display: "flex",
|
|
2112
|
+
alignItems: "center",
|
|
2113
|
+
gap: "16px",
|
|
2114
|
+
fontSize: `${theme2.fontSizes[1]}px`,
|
|
2115
|
+
color: theme2.colors.textSecondary
|
|
2116
|
+
},
|
|
2117
|
+
children: [
|
|
2118
|
+
repo.language && /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
|
|
2119
|
+
/* @__PURE__ */ jsx(
|
|
2120
|
+
"span",
|
|
2121
|
+
{
|
|
2122
|
+
style: {
|
|
2123
|
+
width: 10,
|
|
2124
|
+
height: 10,
|
|
2125
|
+
borderRadius: "50%",
|
|
2126
|
+
backgroundColor: theme2.colors.info
|
|
2127
|
+
}
|
|
2128
|
+
}
|
|
2129
|
+
),
|
|
2130
|
+
repo.language
|
|
2131
|
+
] }),
|
|
2132
|
+
/* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
|
|
2133
|
+
/* @__PURE__ */ jsx(Star, { size: 14 }),
|
|
2134
|
+
formatNumber(repo.stargazers_count || 0)
|
|
2135
|
+
] }),
|
|
2136
|
+
/* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
|
|
2137
|
+
/* @__PURE__ */ jsx(GitFork, { size: 14 }),
|
|
2138
|
+
formatNumber(repo.forks_count || 0)
|
|
2139
|
+
] }),
|
|
2140
|
+
repo.updated_at && /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
|
|
2141
|
+
/* @__PURE__ */ jsx(Calendar, { size: 14 }),
|
|
2142
|
+
formatRelativeTime(repo.updated_at)
|
|
2143
|
+
] }),
|
|
2144
|
+
/* @__PURE__ */ jsx(
|
|
2145
|
+
"a",
|
|
2146
|
+
{
|
|
2147
|
+
href: repo.html_url,
|
|
2148
|
+
target: "_blank",
|
|
2149
|
+
rel: "noopener noreferrer",
|
|
2150
|
+
onClick: (e) => e.stopPropagation(),
|
|
2151
|
+
style: {
|
|
2152
|
+
marginLeft: "auto",
|
|
2153
|
+
color: theme2.colors.textSecondary,
|
|
2154
|
+
display: "flex",
|
|
2155
|
+
alignItems: "center"
|
|
2156
|
+
},
|
|
2157
|
+
children: /* @__PURE__ */ jsx(ExternalLink, { size: 14 })
|
|
2158
|
+
}
|
|
2159
|
+
)
|
|
2160
|
+
]
|
|
2161
|
+
}
|
|
2162
|
+
)
|
|
2163
|
+
]
|
|
2164
|
+
},
|
|
2165
|
+
repo.id
|
|
2166
|
+
))
|
|
2167
|
+
}
|
|
2168
|
+
),
|
|
2169
|
+
!isLoading && !error && repositories.length > 0 && sortedAndFilteredRepos.length === 0 && /* @__PURE__ */ jsxs(
|
|
2170
|
+
"div",
|
|
2171
|
+
{
|
|
2172
|
+
style: {
|
|
2173
|
+
flex: 1,
|
|
2174
|
+
display: "flex",
|
|
2175
|
+
flexDirection: "column",
|
|
2176
|
+
alignItems: "center",
|
|
2177
|
+
justifyContent: "center",
|
|
2178
|
+
padding: "32px",
|
|
2179
|
+
color: theme2.colors.textSecondary
|
|
2180
|
+
},
|
|
2181
|
+
children: [
|
|
2182
|
+
/* @__PURE__ */ jsx(Funnel, { size: 48, color: theme2.colors.border, style: { marginBottom: 16 } }),
|
|
2183
|
+
/* @__PURE__ */ jsx("p", { style: { margin: 0 }, children: "No repositories match the current filter" }),
|
|
2184
|
+
/* @__PURE__ */ jsx(
|
|
2185
|
+
"button",
|
|
2186
|
+
{
|
|
2187
|
+
onClick: () => setLanguageFilter(null),
|
|
2188
|
+
style: {
|
|
2189
|
+
marginTop: "12px",
|
|
2190
|
+
padding: "8px 16px",
|
|
2191
|
+
borderRadius: "6px",
|
|
2192
|
+
border: `1px solid ${theme2.colors.border}`,
|
|
2193
|
+
background: "transparent",
|
|
2194
|
+
color: theme2.colors.text,
|
|
2195
|
+
cursor: "pointer"
|
|
2196
|
+
},
|
|
2197
|
+
children: "Clear filter"
|
|
2198
|
+
}
|
|
2199
|
+
)
|
|
2200
|
+
]
|
|
2201
|
+
}
|
|
2202
|
+
),
|
|
2203
|
+
/* @__PURE__ */ jsx("style", { children: `
|
|
2204
|
+
@keyframes spin {
|
|
2205
|
+
to { transform: rotate(360deg); }
|
|
2206
|
+
}
|
|
2207
|
+
` })
|
|
2208
|
+
]
|
|
2209
|
+
}
|
|
2210
|
+
);
|
|
2211
|
+
};
|
|
2212
|
+
const OwnerRepositoriesPanel = (props) => {
|
|
2213
|
+
return /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(OwnerRepositoriesPanelContent, { ...props }) });
|
|
2214
|
+
};
|
|
2215
|
+
const OwnerRepositoriesPanelMetadata = {
|
|
2216
|
+
id: "owner-repositories",
|
|
2217
|
+
name: "Owner Repositories",
|
|
2218
|
+
description: "Browse repositories for a GitHub user or organization",
|
|
2219
|
+
icon: "github",
|
|
2220
|
+
version: "0.1.0",
|
|
2221
|
+
slices: [],
|
|
2222
|
+
surfaces: ["panel"]
|
|
2223
|
+
};
|
|
1548
2224
|
const listRepositoriesTool = {
|
|
1549
2225
|
name: "list_repositories",
|
|
1550
2226
|
description: "Get a list of GitHub repositories the user has access to, including owned repos, starred repos, and organization repos.",
|
|
@@ -1723,6 +2399,16 @@ const panels = [
|
|
|
1723
2399
|
onUnmount: async (_context) => {
|
|
1724
2400
|
console.log("GitHub Search Panel unmounting");
|
|
1725
2401
|
}
|
|
2402
|
+
},
|
|
2403
|
+
{
|
|
2404
|
+
metadata: OwnerRepositoriesPanelMetadata,
|
|
2405
|
+
component: OwnerRepositoriesPanel,
|
|
2406
|
+
onMount: async (_context) => {
|
|
2407
|
+
console.log("Owner Repositories Panel mounted");
|
|
2408
|
+
},
|
|
2409
|
+
onUnmount: async (_context) => {
|
|
2410
|
+
console.log("Owner Repositories Panel unmounting");
|
|
2411
|
+
}
|
|
1726
2412
|
}
|
|
1727
2413
|
];
|
|
1728
2414
|
const onPackageLoad = async () => {
|
|
@@ -1735,6 +2421,7 @@ export {
|
|
|
1735
2421
|
GitHubProjectCard,
|
|
1736
2422
|
GitHubProjectsPanel,
|
|
1737
2423
|
GitHubSearchPanel,
|
|
2424
|
+
OwnerRepositoriesPanel,
|
|
1738
2425
|
githubTools,
|
|
1739
2426
|
githubToolsMetadata,
|
|
1740
2427
|
listRepositoriesTool,
|