@manojkmfsi/monodog 1.1.37 → 1.1.39
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/CHANGELOG.md +12 -0
- package/monodog-dashboard/dist/assets/index-C08ciT3A.js +20 -0
- package/monodog-dashboard/dist/assets/index-C08ciT3A.js.map +1 -0
- package/monodog-dashboard/dist/assets/index-Dc2vaUOq.css +1 -0
- package/monodog-dashboard/{index.html → dist/index.html} +2 -1
- package/monodog-dashboard/package.json +0 -3
- package/package.json +2 -2
- package/monodog-dashboard/THEME_SYSTEM.md +0 -309
- package/monodog-dashboard/__tests__/AuthCallbackPage.test.ts +0 -138
- package/monodog-dashboard/__tests__/ConfigInspector.test.ts +0 -33
- package/monodog-dashboard/__tests__/DependencyGraph.test.ts +0 -72
- package/monodog-dashboard/__tests__/HealthStatus.test.ts +0 -69
- package/monodog-dashboard/__tests__/LoginPage.test.ts +0 -79
- package/monodog-dashboard/__tests__/PackageDetail.test.ts +0 -22
- package/monodog-dashboard/__tests__/ReleaseManager.test.tsx +0 -510
- package/monodog-dashboard/__tests__/api-client.test.ts +0 -475
- package/monodog-dashboard/__tests__/components.test.ts +0 -117
- package/monodog-dashboard/__tests__/dashboard.utils.test.ts +0 -144
- package/monodog-dashboard/__tests__/dependency.utils.test.ts +0 -125
- package/monodog-dashboard/__tests__/monorepoService.unit.test.ts +0 -103
- package/monodog-dashboard/__tests__/packages.utils.test.ts +0 -37
- package/monodog-dashboard/__tests__/pages.test.ts +0 -103
- package/monodog-dashboard/package-lock.json +0 -4587
- package/monodog-dashboard/postcss.config.js +0 -6
- package/monodog-dashboard/src/components/App.tsx +0 -36
- package/monodog-dashboard/src/components/LoadingState.tsx +0 -18
- package/monodog-dashboard/src/components/PermissionGuard.tsx +0 -92
- package/monodog-dashboard/src/components/ProtectedRoute.tsx +0 -24
- package/monodog-dashboard/src/components/configuration/Configuration.tsx +0 -91
- package/monodog-dashboard/src/components/configuration/components/BrandingSettings.tsx +0 -128
- package/monodog-dashboard/src/components/configuration/components/ConfigurationHeader.tsx +0 -34
- package/monodog-dashboard/src/components/configuration/components/ConfigurationModal.tsx +0 -20
- package/monodog-dashboard/src/components/configuration/components/ConfigurationTabs.tsx +0 -30
- package/monodog-dashboard/src/components/configuration/components/FeatureToggles.tsx +0 -66
- package/monodog-dashboard/src/components/configuration/components/GeneralSettings.tsx +0 -77
- package/monodog-dashboard/src/components/configuration/components/MonorepoSettings.tsx +0 -179
- package/monodog-dashboard/src/components/configuration/components/index.ts +0 -8
- package/monodog-dashboard/src/components/configuration/types/config.types.ts +0 -52
- package/monodog-dashboard/src/components/configuration/utils/config.utils.tsx +0 -115
- package/monodog-dashboard/src/components/main-dashboard/Dashboard.tsx +0 -242
- package/monodog-dashboard/src/components/main-dashboard/Layout.tsx +0 -112
- package/monodog-dashboard/src/components/main-dashboard/components/Header.tsx +0 -47
- package/monodog-dashboard/src/components/main-dashboard/components/PackageDistribution.tsx +0 -35
- package/monodog-dashboard/src/components/main-dashboard/components/PackageSearchFilter.tsx +0 -47
- package/monodog-dashboard/src/components/main-dashboard/components/PackageTable.tsx +0 -87
- package/monodog-dashboard/src/components/main-dashboard/components/QuickActions.tsx +0 -60
- package/monodog-dashboard/src/components/main-dashboard/components/StatsCards.tsx +0 -73
- package/monodog-dashboard/src/components/main-dashboard/components/index.ts +0 -7
- package/monodog-dashboard/src/components/main-dashboard/types/dashboard.types.ts +0 -33
- package/monodog-dashboard/src/components/main-dashboard/utils/dashboard.utils.tsx +0 -70
- package/monodog-dashboard/src/components/modules/ci-integration/CIIntegration.tsx +0 -277
- package/monodog-dashboard/src/components/modules/ci-integration/components/BuildDetails.tsx +0 -228
- package/monodog-dashboard/src/components/modules/ci-integration/components/BuildList.tsx +0 -212
- package/monodog-dashboard/src/components/modules/ci-integration/components/BuildOverview.tsx +0 -158
- package/monodog-dashboard/src/components/modules/ci-integration/components/CIIntegrationHeader.tsx +0 -38
- package/monodog-dashboard/src/components/modules/ci-integration/components/ErrorState.tsx +0 -25
- package/monodog-dashboard/src/components/modules/ci-integration/components/LoadingState.tsx +0 -16
- package/monodog-dashboard/src/components/modules/ci-integration/components/PipelineStatus.tsx +0 -223
- package/monodog-dashboard/src/components/modules/ci-integration/components/index.ts +0 -8
- package/monodog-dashboard/src/components/modules/ci-integration/types/ci.types.ts +0 -97
- package/monodog-dashboard/src/components/modules/ci-integration/utils/ci.utils.tsx +0 -264
- package/monodog-dashboard/src/components/modules/config-inspector/ConfigInspector.tsx +0 -324
- package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigEditor.tsx +0 -93
- package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigInspectorHeader.tsx +0 -36
- package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigPreview.tsx +0 -89
- package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigSidebar.tsx +0 -141
- package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigToolbar.tsx +0 -184
- package/monodog-dashboard/src/components/modules/config-inspector/components/ErrorState.tsx +0 -25
- package/monodog-dashboard/src/components/modules/config-inspector/components/LoadingState.tsx +0 -16
- package/monodog-dashboard/src/components/modules/config-inspector/components/ValidationPanel.tsx +0 -155
- package/monodog-dashboard/src/components/modules/config-inspector/components/index.ts +0 -9
- package/monodog-dashboard/src/components/modules/config-inspector/types/config.types.ts +0 -100
- package/monodog-dashboard/src/components/modules/config-inspector/utils/config.utils.tsx +0 -704
- package/monodog-dashboard/src/components/modules/dependency-graph/DependencyGraph.tsx +0 -224
- package/monodog-dashboard/src/components/modules/dependency-graph/components/CircularDependencies.tsx +0 -177
- package/monodog-dashboard/src/components/modules/dependency-graph/components/DependencyDetails.tsx +0 -192
- package/monodog-dashboard/src/components/modules/dependency-graph/components/DependencyGraphHeader.tsx +0 -30
- package/monodog-dashboard/src/components/modules/dependency-graph/components/DependencyList.tsx +0 -177
- package/monodog-dashboard/src/components/modules/dependency-graph/components/ErrorState.tsx +0 -25
- package/monodog-dashboard/src/components/modules/dependency-graph/components/GraphLegend.tsx +0 -89
- package/monodog-dashboard/src/components/modules/dependency-graph/components/GraphStats.tsx +0 -141
- package/monodog-dashboard/src/components/modules/dependency-graph/components/GraphToolbar.tsx +0 -107
- package/monodog-dashboard/src/components/modules/dependency-graph/components/GraphVisualization.tsx +0 -179
- package/monodog-dashboard/src/components/modules/dependency-graph/components/LoadingState.tsx +0 -16
- package/monodog-dashboard/src/components/modules/dependency-graph/components/index.ts +0 -11
- package/monodog-dashboard/src/components/modules/dependency-graph/types/dependency.types.ts +0 -105
- package/monodog-dashboard/src/components/modules/dependency-graph/utils/dependency.utils.tsx +0 -433
- package/monodog-dashboard/src/components/modules/health-status/HealthStatus.tsx +0 -739
- package/monodog-dashboard/src/components/modules/health-status/components/ErrorState.tsx +0 -25
- package/monodog-dashboard/src/components/modules/health-status/components/HealthActions.tsx +0 -122
- package/monodog-dashboard/src/components/modules/health-status/components/HealthAlerts.tsx +0 -151
- package/monodog-dashboard/src/components/modules/health-status/components/HealthMetrics.tsx +0 -132
- package/monodog-dashboard/src/components/modules/health-status/components/HealthStatusHeader.tsx +0 -30
- package/monodog-dashboard/src/components/modules/health-status/components/LoadingState.tsx +0 -16
- package/monodog-dashboard/src/components/modules/health-status/components/OverallHealthScore.tsx +0 -122
- package/monodog-dashboard/src/components/modules/health-status/components/PackageHealthList.tsx +0 -195
- package/monodog-dashboard/src/components/modules/health-status/types/health.types.ts +0 -80
- package/monodog-dashboard/src/components/modules/health-status/utils/health.utils.tsx +0 -220
- package/monodog-dashboard/src/components/modules/packages/PackageDetail.tsx +0 -255
- package/monodog-dashboard/src/components/modules/packages/PackagesOverview.tsx +0 -166
- package/monodog-dashboard/src/components/modules/packages/components/ConfigurationTab.tsx +0 -311
- package/monodog-dashboard/src/components/modules/packages/components/DependenciesTab.tsx +0 -154
- package/monodog-dashboard/src/components/modules/packages/components/ErrorState.tsx +0 -21
- package/monodog-dashboard/src/components/modules/packages/components/HealthMetricsTab.tsx +0 -275
- package/monodog-dashboard/src/components/modules/packages/components/LoadingState.tsx +0 -14
- package/monodog-dashboard/src/components/modules/packages/components/PackageDetailHeader.tsx +0 -167
- package/monodog-dashboard/src/components/modules/packages/components/PackageDetailTabs.tsx +0 -49
- package/monodog-dashboard/src/components/modules/packages/components/PackageStats.tsx +0 -70
- package/monodog-dashboard/src/components/modules/packages/components/PackagesTable.tsx +0 -163
- package/monodog-dashboard/src/components/modules/packages/components/RecentCommitsTab.tsx +0 -90
- package/monodog-dashboard/src/components/modules/packages/components/SearchAndFilter.tsx +0 -66
- package/monodog-dashboard/src/components/modules/packages/components/index.ts +0 -12
- package/monodog-dashboard/src/components/modules/packages/types/packages.types.ts +0 -101
- package/monodog-dashboard/src/components/modules/packages/utils/packages.utils.tsx +0 -178
- package/monodog-dashboard/src/components/pipeline/JobsList.tsx +0 -83
- package/monodog-dashboard/src/components/pipeline/LogViewer.tsx +0 -392
- package/monodog-dashboard/src/components/pipeline/PipelineManager.tsx +0 -562
- package/monodog-dashboard/src/components/pipeline/WorkflowRunsList.tsx +0 -272
- package/monodog-dashboard/src/components/pipeline/WorkflowTrigger.tsx +0 -182
- package/monodog-dashboard/src/components/pipeline/utils/pipeline.utils.tsx +0 -11
- package/monodog-dashboard/src/components/publish-control/PublishControl.tsx +0 -229
- package/monodog-dashboard/src/components/publish-control/components/ChangelogViewer.tsx +0 -103
- package/monodog-dashboard/src/components/publish-control/components/ErrorState.tsx +0 -23
- package/monodog-dashboard/src/components/publish-control/components/LoadingState.tsx +0 -10
- package/monodog-dashboard/src/components/publish-control/components/PackageReleaseTable.tsx +0 -140
- package/monodog-dashboard/src/components/publish-control/components/PublishHeader.tsx +0 -30
- package/monodog-dashboard/src/components/publish-control/components/QuickActionCards.tsx +0 -56
- package/monodog-dashboard/src/components/publish-control/components/ReleaseSchedule.tsx +0 -104
- package/monodog-dashboard/src/components/publish-control/components/index.ts +0 -8
- package/monodog-dashboard/src/components/publish-control/types/publish.types.ts +0 -39
- package/monodog-dashboard/src/components/publish-control/utils/publish.utils.ts +0 -59
- package/monodog-dashboard/src/components/release-manager/ReleaseManager.tsx +0 -342
- package/monodog-dashboard/src/components/release-manager/components/ChangesetPreview.tsx +0 -123
- package/monodog-dashboard/src/components/release-manager/components/ErrorState.tsx +0 -38
- package/monodog-dashboard/src/components/release-manager/components/LoadingState.tsx +0 -18
- package/monodog-dashboard/src/components/release-manager/components/PackageSelector.tsx +0 -137
- package/monodog-dashboard/src/components/release-manager/components/PublishConfirmation.tsx +0 -150
- package/monodog-dashboard/src/components/release-manager/components/ReleaseValidation.tsx +0 -138
- package/monodog-dashboard/src/components/release-manager/components/VersionBumpSelector.tsx +0 -142
- package/monodog-dashboard/src/components/release-manager/types/index.ts +0 -9
- package/monodog-dashboard/src/components/release-manager/types/release-manager.types.ts +0 -29
- package/monodog-dashboard/src/components/setup-guide/SetupGuide.tsx +0 -96
- package/monodog-dashboard/src/components/setup-guide/components/SetupHeader.tsx +0 -24
- package/monodog-dashboard/src/components/setup-guide/components/SetupModal.tsx +0 -24
- package/monodog-dashboard/src/components/setup-guide/components/SetupProgress.tsx +0 -29
- package/monodog-dashboard/src/components/setup-guide/components/StepContent.tsx +0 -272
- package/monodog-dashboard/src/components/setup-guide/components/StepNavigation.tsx +0 -62
- package/monodog-dashboard/src/components/setup-guide/components/index.ts +0 -6
- package/monodog-dashboard/src/components/setup-guide/types/setup.types.ts +0 -38
- package/monodog-dashboard/src/components/setup-guide/utils/setup.utils.ts +0 -79
- package/monodog-dashboard/src/constants/api-config.ts +0 -81
- package/monodog-dashboard/src/constants/index.ts +0 -9
- package/monodog-dashboard/src/constants/messages.ts +0 -40
- package/monodog-dashboard/src/icons/heroicons.ts +0 -65
- package/monodog-dashboard/src/icons/index.tsx +0 -1788
- package/monodog-dashboard/src/index.css +0 -175
- package/monodog-dashboard/src/main.tsx +0 -9
- package/monodog-dashboard/src/pages/AuthCallbackPage.tsx +0 -103
- package/monodog-dashboard/src/pages/CIPage.tsx +0 -6
- package/monodog-dashboard/src/pages/ConfigPage.tsx +0 -6
- package/monodog-dashboard/src/pages/DashboardPage.tsx +0 -6
- package/monodog-dashboard/src/pages/DependenciesPage.tsx +0 -6
- package/monodog-dashboard/src/pages/HealthPage.tsx +0 -6
- package/monodog-dashboard/src/pages/LoginPage.tsx +0 -77
- package/monodog-dashboard/src/pages/PackageDetailPage.tsx +0 -6
- package/monodog-dashboard/src/pages/PackagesPage.tsx +0 -6
- package/monodog-dashboard/src/pages/PipelinePage.tsx +0 -22
- package/monodog-dashboard/src/pages/PublishPage.tsx +0 -6
- package/monodog-dashboard/src/pages/ReleaseManagerPage.tsx +0 -9
- package/monodog-dashboard/src/pages/index.ts +0 -28
- package/monodog-dashboard/src/routes/AppRouter.tsx +0 -89
- package/monodog-dashboard/src/routes/AppRouterPages.tsx +0 -56
- package/monodog-dashboard/src/routes/index.ts +0 -10
- package/monodog-dashboard/src/routes/routes.config.ts +0 -94
- package/monodog-dashboard/src/services/api/api-client.ts +0 -189
- package/monodog-dashboard/src/services/api/index.ts +0 -30
- package/monodog-dashboard/src/services/api/types/api.types.ts +0 -63
- package/monodog-dashboard/src/services/auth-context.tsx +0 -344
- package/monodog-dashboard/src/services/monorepoService.ts +0 -733
- package/monodog-dashboard/src/services/permission-context.tsx +0 -193
- package/monodog-dashboard/src/theme/COMPONENT_UPDATES.md +0 -273
- package/monodog-dashboard/src/theme/INTEGRATION.md +0 -381
- package/monodog-dashboard/src/theme/README.md +0 -239
- package/monodog-dashboard/src/theme/examples.tsx +0 -386
- package/monodog-dashboard/src/theme/index.ts +0 -402
- package/monodog-dashboard/src/theme/migration-guide.md +0 -335
- package/monodog-dashboard/src/types/auth-context.types.ts +0 -51
- package/monodog-dashboard/src/types/component.types.ts +0 -96
- package/monodog-dashboard/src/types/icons.types.ts +0 -13
- package/monodog-dashboard/src/types/index.ts +0 -68
- package/monodog-dashboard/src/types/monorepo-service.types.ts +0 -53
- package/monodog-dashboard/src/types/permission-context.types.ts +0 -49
- package/monodog-dashboard/src/types/pipeline.types.ts +0 -89
- package/monodog-dashboard/src/types/routes.types.ts +0 -12
- package/monodog-dashboard/src/utils/cookies.ts +0 -47
- package/monodog-dashboard/tailwind.config.js +0 -68
- package/monodog-dashboard/tsconfig.app.json +0 -14
- package/monodog-dashboard/tsconfig.json +0 -17
- package/monodog-dashboard/tsconfig.node.json +0 -10
- package/monodog-dashboard/vite.config.ts +0 -9
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { Link, useLocation } from 'react-router-dom';
|
|
2
|
-
import {
|
|
3
|
-
HomeIcon,
|
|
4
|
-
CubeIcon,
|
|
5
|
-
ChartBarIcon,
|
|
6
|
-
HeartIcon,
|
|
7
|
-
CloudArrowUpIcon,
|
|
8
|
-
CpuChipIcon,
|
|
9
|
-
Cog6ToothIcon,
|
|
10
|
-
RocketLaunchIcon,
|
|
11
|
-
LogoutIcon,
|
|
12
|
-
} from '../../icons/index';
|
|
13
|
-
import { useAuth } from '../../services/auth-context';
|
|
14
|
-
|
|
15
|
-
const navigation = [
|
|
16
|
-
{ name: 'Dashboard', href: '/', icon: HomeIcon },
|
|
17
|
-
{ name: 'Packages', href: '/packages', icon: CubeIcon },
|
|
18
|
-
{ name: 'Dependencies', href: '/dependencies', icon: ChartBarIcon },
|
|
19
|
-
{ name: 'Health Status', href: '/health', icon: HeartIcon },
|
|
20
|
-
{ name: 'Release', href: '/release', icon: CloudArrowUpIcon },
|
|
21
|
-
{ name: 'Pipeline', href: '/pipeline', icon: RocketLaunchIcon },
|
|
22
|
-
// { name: 'Publish Control', href: '/publish', icon: CloudArrowUpIcon },
|
|
23
|
-
// { name: 'CI/CD', href: '/ci', icon: CpuChipIcon },
|
|
24
|
-
{ name: 'Configuration', href: '/config', icon: Cog6ToothIcon },
|
|
25
|
-
];
|
|
26
|
-
|
|
27
|
-
interface LayoutProps {
|
|
28
|
-
children: React.ReactNode;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export default function Layout({ children }: LayoutProps) {
|
|
32
|
-
const location = useLocation();
|
|
33
|
-
const { session, logout } = useAuth();
|
|
34
|
-
|
|
35
|
-
return (
|
|
36
|
-
<div className="min-h-screen bg-neutral-50">
|
|
37
|
-
{/* Sidebar */}
|
|
38
|
-
<div className="fixed inset-y-0 left-0 z-50 w-64 bg-white shadow-medium">
|
|
39
|
-
<div className="flex h-16 items-center justify-center border-b border-neutral-200">
|
|
40
|
-
<h1 className="text-heading text-xl text-primary-700">MonoDog</h1>
|
|
41
|
-
</div>
|
|
42
|
-
<nav className="mt-8 px-4">
|
|
43
|
-
<ul className="space-y-2">
|
|
44
|
-
{navigation.map(item => {
|
|
45
|
-
const isActive = location.pathname === item.href;
|
|
46
|
-
return (
|
|
47
|
-
<li key={item.name}>
|
|
48
|
-
<Link
|
|
49
|
-
to={item.href}
|
|
50
|
-
className={`nav-link ${
|
|
51
|
-
isActive ? 'nav-link-active' : 'nav-link-inactive'
|
|
52
|
-
}`}
|
|
53
|
-
>
|
|
54
|
-
<item.icon className="mr-3 h-5 w-5" />
|
|
55
|
-
{item.name}
|
|
56
|
-
</Link>
|
|
57
|
-
</li>
|
|
58
|
-
);
|
|
59
|
-
})}
|
|
60
|
-
</ul>
|
|
61
|
-
</nav>
|
|
62
|
-
</div>
|
|
63
|
-
|
|
64
|
-
{/* Main content */}
|
|
65
|
-
<div className="pl-64">
|
|
66
|
-
{/* Header */}
|
|
67
|
-
<header className="bg-white shadow-soft border-b border-neutral-200 flex items-center justify-between px-6 py-4">
|
|
68
|
-
<div className="flex items-center gap-4">
|
|
69
|
-
<h2 className="text-heading text-lg font-semibold">
|
|
70
|
-
{navigation.find(item => item.href === location.pathname)?.name ||
|
|
71
|
-
'Dashboard'}
|
|
72
|
-
</h2>
|
|
73
|
-
{/* System stats */}
|
|
74
|
-
{/* <div className="flex items-center gap-6 ml-8">
|
|
75
|
-
<div className="flex items-center gap-2 text-sm text-neutral-700">
|
|
76
|
-
<CpuChipIcon className="h-5 w-5 text-primary-500" />
|
|
77
|
-
<span>
|
|
78
|
-
CPU: <span className="font-medium">32%</span>
|
|
79
|
-
</span>
|
|
80
|
-
</div>
|
|
81
|
-
<div className="flex items-center gap-2 text-sm text-neutral-700">
|
|
82
|
-
<ChartBarIcon className="h-5 w-5 text-primary-500" />
|
|
83
|
-
<span>
|
|
84
|
-
Memory: <span className="font-medium">2.1 GB / 8 GB</span>
|
|
85
|
-
</span>
|
|
86
|
-
</div>
|
|
87
|
-
</div> */}
|
|
88
|
-
</div>
|
|
89
|
-
{/* User info */}
|
|
90
|
-
<div className="flex items-center gap-3">
|
|
91
|
-
<div className="flex flex-col items-end text-sm">
|
|
92
|
-
<button className="font-medium" onClick={logout} title="Logout"><LogoutIcon></LogoutIcon></button>
|
|
93
|
-
</div>
|
|
94
|
-
<div className="flex flex-col items-end text-sm">
|
|
95
|
-
{session && <span className="font-medium text-primary-700">{session.user?.login ?? 'anonymous'}</span>}
|
|
96
|
-
|
|
97
|
-
{session && <span className="text-neutral-500">{session.permission?.role ?? 'Denied'}</span>}
|
|
98
|
-
</div>
|
|
99
|
-
<img
|
|
100
|
-
src={session.user?.avatar_url ?? ''}
|
|
101
|
-
alt="User Avatar"
|
|
102
|
-
className="h-8 w-8 rounded-full border border-neutral-200"
|
|
103
|
-
/>
|
|
104
|
-
</div>
|
|
105
|
-
</header>
|
|
106
|
-
|
|
107
|
-
{/* Page content */}
|
|
108
|
-
<main className="p-6">{children}</main>
|
|
109
|
-
</div>
|
|
110
|
-
</div>
|
|
111
|
-
);
|
|
112
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { ArrowPathIcon, CogIcon } from '../../../icons/heroicons';
|
|
2
|
-
import { DashboardConfig } from '../../configuration/Configuration';
|
|
3
|
-
|
|
4
|
-
interface HeaderProps {
|
|
5
|
-
config: DashboardConfig;
|
|
6
|
-
onShowSetupGuide: () => void;
|
|
7
|
-
onShowConfig: () => void;
|
|
8
|
-
onRefresh: () => void;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export default function Header({
|
|
12
|
-
config,
|
|
13
|
-
onShowSetupGuide,
|
|
14
|
-
onShowConfig,
|
|
15
|
-
onRefresh,
|
|
16
|
-
}: HeaderProps) {
|
|
17
|
-
return (
|
|
18
|
-
<div className="flex items-center justify-between">
|
|
19
|
-
<div>
|
|
20
|
-
<h1 className="text-heading text-3xl">{config.title}</h1>
|
|
21
|
-
<p className="text-body mt-2">{config.description}</p>
|
|
22
|
-
<button
|
|
23
|
-
onClick={onShowSetupGuide}
|
|
24
|
-
className="hidden text-primary-600 hover:text-primary-700 text-sm font-medium mt-2"
|
|
25
|
-
>
|
|
26
|
-
First time? Run the setup guide
|
|
27
|
-
</button>
|
|
28
|
-
</div>
|
|
29
|
-
<div className="flex space-x-3">
|
|
30
|
-
<button
|
|
31
|
-
onClick={onRefresh}
|
|
32
|
-
className="btn-primary flex items-center space-x-2"
|
|
33
|
-
>
|
|
34
|
-
<ArrowPathIcon className="w-5 h-5" />
|
|
35
|
-
<span>Refresh</span>
|
|
36
|
-
</button>
|
|
37
|
-
<button
|
|
38
|
-
onClick={onShowConfig}
|
|
39
|
-
className="hidden btn-ghost flex items-center space-x-2"
|
|
40
|
-
>
|
|
41
|
-
<CogIcon className="w-5 h-5" />
|
|
42
|
-
<span>Configure</span>
|
|
43
|
-
</button>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
);
|
|
47
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Package } from '../types/dashboard.types';
|
|
3
|
-
|
|
4
|
-
interface PackageDistributionProps {
|
|
5
|
-
packages: Package[];
|
|
6
|
-
packageTypes: string[];
|
|
7
|
-
getTypeIcon: (type: string) => React.ReactNode;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export default function PackageDistribution({
|
|
11
|
-
packages,
|
|
12
|
-
packageTypes,
|
|
13
|
-
getTypeIcon,
|
|
14
|
-
}: PackageDistributionProps) {
|
|
15
|
-
return (
|
|
16
|
-
<div className="bg-white p-6 rounded-lg shadow border">
|
|
17
|
-
<h3 className="text-lg font-semibold text-gray-900 mb-4">
|
|
18
|
-
Package Distribution
|
|
19
|
-
</h3>
|
|
20
|
-
<div className="grid grid-cols-2 md:grid-cols-4 gap-4">
|
|
21
|
-
{packageTypes.map(type => (
|
|
22
|
-
<div key={type} className="text-center p-4 bg-gray-50 rounded-lg">
|
|
23
|
-
<div className="text-3xl mb-2 flex justify-center">{getTypeIcon(type)}</div>
|
|
24
|
-
<div className="text-sm font-medium text-gray-600 capitalize flex justify-center">
|
|
25
|
-
{type}
|
|
26
|
-
</div>
|
|
27
|
-
<div className="text-2xl font-bold text-gray-900">
|
|
28
|
-
{packages.filter(p => p.type === type).length}
|
|
29
|
-
</div>
|
|
30
|
-
</div>
|
|
31
|
-
))}
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
|
-
);
|
|
35
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { MagnifyingGlassIcon, FunnelIcon } from '../../../icons/heroicons';
|
|
2
|
-
|
|
3
|
-
interface PackageSearchFilterProps {
|
|
4
|
-
searchTerm: string;
|
|
5
|
-
selectedType: string;
|
|
6
|
-
packageTypes: string[];
|
|
7
|
-
onSearchChange: (value: string) => void;
|
|
8
|
-
onTypeChange: (value: string) => void;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export default function PackageSearchFilter({
|
|
12
|
-
searchTerm,
|
|
13
|
-
selectedType,
|
|
14
|
-
packageTypes,
|
|
15
|
-
onSearchChange,
|
|
16
|
-
onTypeChange,
|
|
17
|
-
}: PackageSearchFilterProps) {
|
|
18
|
-
return (
|
|
19
|
-
<div className="flex flex-col md:flex-row gap-4 mb-6">
|
|
20
|
-
<div className="flex-1 relative">
|
|
21
|
-
<MagnifyingGlassIcon className="w-5 h-5 absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400" />
|
|
22
|
-
<input
|
|
23
|
-
type="text"
|
|
24
|
-
placeholder="Search packages..."
|
|
25
|
-
value={searchTerm}
|
|
26
|
-
onChange={e => onSearchChange(e.target.value)}
|
|
27
|
-
className="w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
|
|
28
|
-
/>
|
|
29
|
-
</div>
|
|
30
|
-
<div className="flex items-center space-x-2">
|
|
31
|
-
<FunnelIcon className="w-5 h-5 text-gray-400" />
|
|
32
|
-
<select
|
|
33
|
-
value={selectedType}
|
|
34
|
-
onChange={e => onTypeChange(e.target.value)}
|
|
35
|
-
className="px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
|
|
36
|
-
>
|
|
37
|
-
<option value="all">All Types</option>
|
|
38
|
-
{packageTypes.map(type => (
|
|
39
|
-
<option key={type} value={type} className="capitalize">
|
|
40
|
-
{type}
|
|
41
|
-
</option>
|
|
42
|
-
))}
|
|
43
|
-
</select>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
);
|
|
47
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Link } from 'react-router-dom';
|
|
3
|
-
import { Package } from '../types/dashboard.types';
|
|
4
|
-
|
|
5
|
-
interface PackageTableProps {
|
|
6
|
-
packages: Package[];
|
|
7
|
-
getTypeIcon: (type: string) => React.ReactNode;
|
|
8
|
-
getStatusColor: (type: string) => string;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export default function PackageTable({
|
|
12
|
-
packages,
|
|
13
|
-
getTypeIcon,
|
|
14
|
-
getStatusColor,
|
|
15
|
-
}: PackageTableProps) {
|
|
16
|
-
return (
|
|
17
|
-
<div className="overflow-x-auto">
|
|
18
|
-
<table className="min-w-full divide-y divide-gray-200">
|
|
19
|
-
<thead className="bg-gray-50">
|
|
20
|
-
<tr>
|
|
21
|
-
<th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
22
|
-
Package
|
|
23
|
-
</th>
|
|
24
|
-
<th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
25
|
-
Type
|
|
26
|
-
</th>
|
|
27
|
-
<th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
28
|
-
Version
|
|
29
|
-
</th>
|
|
30
|
-
<th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
31
|
-
Dependencies
|
|
32
|
-
</th>
|
|
33
|
-
<th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
34
|
-
Description
|
|
35
|
-
</th>
|
|
36
|
-
<th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
37
|
-
Actions
|
|
38
|
-
</th>
|
|
39
|
-
</tr>
|
|
40
|
-
</thead>
|
|
41
|
-
<tbody className="bg-white divide-y divide-gray-200">
|
|
42
|
-
{packages.map(pkg => (
|
|
43
|
-
<tr key={pkg.name} className="hover:bg-gray-50">
|
|
44
|
-
<td className="px-6 py-4 whitespace-nowrap">
|
|
45
|
-
<div className="flex items-center">
|
|
46
|
-
<div className="text-2xl mr-3">{getTypeIcon(pkg.type)}</div>
|
|
47
|
-
<div>
|
|
48
|
-
<div className="text-sm font-medium text-gray-900">
|
|
49
|
-
{pkg.name}
|
|
50
|
-
</div>
|
|
51
|
-
<div className="text-sm text-gray-500">{pkg.path}</div>
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
</td>
|
|
55
|
-
<td className="px-6 py-4 whitespace-nowrap">
|
|
56
|
-
<span
|
|
57
|
-
className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(pkg.type)}`}
|
|
58
|
-
>
|
|
59
|
-
{pkg.type}
|
|
60
|
-
</span>
|
|
61
|
-
</td>
|
|
62
|
-
<td className="px-6 py-4 whitespace-nowrap text-sm text-gray-900">
|
|
63
|
-
{pkg.version}
|
|
64
|
-
</td>
|
|
65
|
-
<td className="px-6 py-4 whitespace-nowrap text-sm text-gray-900">
|
|
66
|
-
{Object.keys(pkg.dependencies).length +
|
|
67
|
-
Object.keys(pkg.devDependencies).length +
|
|
68
|
-
Object.keys(pkg.peerDependencies).length}
|
|
69
|
-
</td>
|
|
70
|
-
<td className="px-6 py-4 text-sm text-gray-900 max-w-xs truncate">
|
|
71
|
-
{pkg.description || 'No description'}
|
|
72
|
-
</td>
|
|
73
|
-
<td className="px-6 py-4 whitespace-nowrap text-sm font-medium">
|
|
74
|
-
<Link
|
|
75
|
-
to={`/packages/${encodeURIComponent(pkg.name)}`}
|
|
76
|
-
className="text-blue-600 hover:text-blue-500"
|
|
77
|
-
>
|
|
78
|
-
View Details
|
|
79
|
-
</Link>
|
|
80
|
-
</td>
|
|
81
|
-
</tr>
|
|
82
|
-
))}
|
|
83
|
-
</tbody>
|
|
84
|
-
</table>
|
|
85
|
-
</div>
|
|
86
|
-
);
|
|
87
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { Link } from 'react-router-dom';
|
|
2
|
-
import { ChartBarIcon, HeartIcon } from '../../../icons/heroicons';
|
|
3
|
-
|
|
4
|
-
export default function QuickActions() {
|
|
5
|
-
return (
|
|
6
|
-
<div className="bg-white p-6 rounded-lg shadow border">
|
|
7
|
-
<h3 className="text-lg font-semibold text-gray-900 mb-4">
|
|
8
|
-
Quick Actions
|
|
9
|
-
</h3>
|
|
10
|
-
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
|
|
11
|
-
<Link
|
|
12
|
-
to="/dependencies"
|
|
13
|
-
className="p-4 border border-gray-200 rounded-lg hover:border-blue-300 hover:bg-blue-50 transition-colors"
|
|
14
|
-
>
|
|
15
|
-
<div className="flex items-center space-x-3">
|
|
16
|
-
<div className="p-2 bg-blue-100 rounded-lg">
|
|
17
|
-
<ChartBarIcon className="w-6 h-6 text-primary-600" />
|
|
18
|
-
</div>
|
|
19
|
-
<div>
|
|
20
|
-
<h4 className="font-medium text-gray-900">Dependency Graph</h4>
|
|
21
|
-
<p className="text-sm text-gray-600">
|
|
22
|
-
Visualize package relationships
|
|
23
|
-
</p>
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
</Link>
|
|
27
|
-
|
|
28
|
-
<Link
|
|
29
|
-
to="/health"
|
|
30
|
-
className="p-4 border border-gray-200 rounded-lg hover:border-green-300 hover:bg-green-50 transition-colors"
|
|
31
|
-
>
|
|
32
|
-
<div className="flex items-center space-x-3">
|
|
33
|
-
<div className="p-2 bg-green-100 rounded-lg">
|
|
34
|
-
<HeartIcon className="w-6 h-6 text-primary-600" />
|
|
35
|
-
</div>
|
|
36
|
-
<div>
|
|
37
|
-
<h4 className="font-medium text-gray-900">Health Check</h4>
|
|
38
|
-
<p className="text-sm text-gray-600">Monitor package health</p>
|
|
39
|
-
</div>
|
|
40
|
-
</div>
|
|
41
|
-
</Link>
|
|
42
|
-
|
|
43
|
-
<Link
|
|
44
|
-
to="/ci"
|
|
45
|
-
className="hidden p-4 border border-gray-200 rounded-lg hover:border-purple-300 hover:bg-purple-50 transition-colors"
|
|
46
|
-
>
|
|
47
|
-
<div className="flex items-center space-x-3">
|
|
48
|
-
<div className="p-2 bg-purple-100 rounded-lg">
|
|
49
|
-
<span className="text-2xl">🧪</span>
|
|
50
|
-
</div>
|
|
51
|
-
<div>
|
|
52
|
-
<h4 className="font-medium text-gray-900">CI/CD Status</h4>
|
|
53
|
-
<p className="text-sm text-gray-600">View build status</p>
|
|
54
|
-
</div>
|
|
55
|
-
</div>
|
|
56
|
-
</Link>
|
|
57
|
-
</div>
|
|
58
|
-
</div>
|
|
59
|
-
);
|
|
60
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
CubeIcon,
|
|
3
|
-
RocketLaunchIcon,
|
|
4
|
-
BuildingLibraryIcon,
|
|
5
|
-
LinkIcon,
|
|
6
|
-
} from '../../../icons/heroicons';
|
|
7
|
-
|
|
8
|
-
interface PackageStats {
|
|
9
|
-
total: number;
|
|
10
|
-
apps: number;
|
|
11
|
-
libs: number;
|
|
12
|
-
tools: number;
|
|
13
|
-
custom: number;
|
|
14
|
-
totalDependencies: number;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
interface StatsCardsProps {
|
|
18
|
-
stats: PackageStats;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export default function StatsCards({ stats }: StatsCardsProps) {
|
|
22
|
-
return (
|
|
23
|
-
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
|
|
24
|
-
<div className="card p-6 bg-gray-100">
|
|
25
|
-
<div className="flex items-center">
|
|
26
|
-
<div className="p-2 rounded-lg">
|
|
27
|
-
<CubeIcon className="w-6 h-6 text-primary-600" />
|
|
28
|
-
</div>
|
|
29
|
-
<div className="ml-4">
|
|
30
|
-
<p className="text-caption font-medium">Total Packages</p>
|
|
31
|
-
<p className="text-heading text-2xl">{stats.total}</p>
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
|
-
</div>
|
|
35
|
-
|
|
36
|
-
<div className="card p-6 bg-green-100">
|
|
37
|
-
<div className="flex items-center">
|
|
38
|
-
<div className="p-2 bg-secondary-100 rounded-lg">
|
|
39
|
-
<RocketLaunchIcon className="w-6 h-6 text-primary-600" />
|
|
40
|
-
</div>
|
|
41
|
-
<div className="ml-4">
|
|
42
|
-
<p className="text-caption font-medium">Applications</p>
|
|
43
|
-
<p className="text-heading text-2xl">{stats.apps}</p>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
</div>
|
|
47
|
-
|
|
48
|
-
<div className="card p-6 bg-yellow-100">
|
|
49
|
-
<div className="flex items-center">
|
|
50
|
-
<div className="p-2 bg-accent-100 rounded-lg">
|
|
51
|
-
<BuildingLibraryIcon className="w-6 h-6 text-primary-600" />
|
|
52
|
-
</div>
|
|
53
|
-
<div className="ml-4">
|
|
54
|
-
<p className="text-caption font-medium">Libraries</p>
|
|
55
|
-
<p className="text-heading text-2xl">{stats.libs}</p>
|
|
56
|
-
</div>
|
|
57
|
-
</div>
|
|
58
|
-
</div>
|
|
59
|
-
|
|
60
|
-
<div className="card p-6 bg-blue-100">
|
|
61
|
-
<div className="flex items-center">
|
|
62
|
-
<div className="p-2 rounded-lg">
|
|
63
|
-
<LinkIcon className="w-6 h-6 text-primary-600" />
|
|
64
|
-
</div>
|
|
65
|
-
<div className="ml-4">
|
|
66
|
-
<p className="text-caption font-medium">Dependencies</p>
|
|
67
|
-
<p className="text-heading text-2xl">{stats.totalDependencies}</p>
|
|
68
|
-
</div>
|
|
69
|
-
</div>
|
|
70
|
-
</div>
|
|
71
|
-
</div>
|
|
72
|
-
);
|
|
73
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// Export all dashboard components for easier imports
|
|
2
|
-
export { default as Header } from './Header';
|
|
3
|
-
export { default as StatsCards } from './StatsCards';
|
|
4
|
-
export { default as PackageDistribution } from './PackageDistribution';
|
|
5
|
-
export { default as QuickActions } from './QuickActions';
|
|
6
|
-
export { default as PackageSearchFilter } from './PackageSearchFilter';
|
|
7
|
-
export { default as PackageTable } from './PackageTable';
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
// Shared types for the dashboard components
|
|
2
|
-
|
|
3
|
-
export interface Package {
|
|
4
|
-
name: string;
|
|
5
|
-
version: string;
|
|
6
|
-
type: 'app' | 'lib' | 'tool' | 'service';
|
|
7
|
-
status: 'healthy' | 'warning' | 'error' | 'building';
|
|
8
|
-
description: string;
|
|
9
|
-
lastUpdated: string;
|
|
10
|
-
dependencies: string[];
|
|
11
|
-
tags: string[];
|
|
12
|
-
maintainers: string[];
|
|
13
|
-
devDependencies: string[];
|
|
14
|
-
peerDependencies: string[];
|
|
15
|
-
path: string;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export interface PackageStats {
|
|
19
|
-
total: number;
|
|
20
|
-
apps: number;
|
|
21
|
-
libs: number;
|
|
22
|
-
tools: number;
|
|
23
|
-
custom: number;
|
|
24
|
-
totalDependencies: number;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface DashboardState {
|
|
28
|
-
packages: Package[];
|
|
29
|
-
searchTerm: string;
|
|
30
|
-
selectedType: string;
|
|
31
|
-
showConfig: boolean;
|
|
32
|
-
showSetupGuide: boolean;
|
|
33
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { Package, PackageStats } from '../types/dashboard.types';
|
|
2
|
-
import { RocketLaunchIcon, BuildingLibraryIcon, CubeIcon } from '../../../icons/heroicons';
|
|
3
|
-
|
|
4
|
-
// Calculate package statistics
|
|
5
|
-
export const calculatePackageStats = (packages: Package[]): PackageStats => {
|
|
6
|
-
return {
|
|
7
|
-
total: packages.length,
|
|
8
|
-
apps: packages.filter(p => p.type === 'app').length,
|
|
9
|
-
libs: packages.filter(p => p.type === 'lib').length,
|
|
10
|
-
tools: packages.filter(p => p.type === 'tool').length,
|
|
11
|
-
custom: packages.filter(p => !['app', 'Plib', 'tool'].includes(p.type))
|
|
12
|
-
.length,
|
|
13
|
-
totalDependencies: packages.reduce(
|
|
14
|
-
(sum, pkg) =>
|
|
15
|
-
sum +
|
|
16
|
-
Object.keys(pkg.dependencies).length +
|
|
17
|
-
Object.keys(pkg.peerDependencies).length +
|
|
18
|
-
Object.keys(pkg.devDependencies).length,
|
|
19
|
-
0
|
|
20
|
-
),
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// Get unique package types for filtering
|
|
25
|
-
export const getUniquePackageTypes = (packages: Package[]): string[] => {
|
|
26
|
-
return [...new Set(packages.map(pkg => pkg.type))];
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
// Filter packages based on search and type
|
|
30
|
-
export const filterPackages = (
|
|
31
|
-
packages: Package[],
|
|
32
|
-
searchTerm: string,
|
|
33
|
-
selectedType: string
|
|
34
|
-
): Package[] => {
|
|
35
|
-
return packages.filter(pkg => {
|
|
36
|
-
const matchesSearch =
|
|
37
|
-
pkg.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
|
|
38
|
-
pkg.description?.toLowerCase().includes(searchTerm.toLowerCase());
|
|
39
|
-
const matchesType = selectedType === 'all' || pkg.type === selectedType;
|
|
40
|
-
return matchesSearch && matchesType;
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
// Get status color for package type
|
|
45
|
-
export const getStatusColor = (type: string): string => {
|
|
46
|
-
switch (type) {
|
|
47
|
-
case 'app':
|
|
48
|
-
return 'bg-blue-100 text-blue-800';
|
|
49
|
-
case 'lib':
|
|
50
|
-
return 'bg-green-100 text-green-800';
|
|
51
|
-
case 'tool':
|
|
52
|
-
return 'bg-purple-100 text-purple-800';
|
|
53
|
-
default:
|
|
54
|
-
return 'bg-gray-100 text-gray-800';
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
// Get icon for package type
|
|
59
|
-
export const getTypeIcon = (type: string): React.ReactNode => {
|
|
60
|
-
switch (type) {
|
|
61
|
-
case 'app':
|
|
62
|
-
return <RocketLaunchIcon className="w-6 h-6 text-primary-600" />;
|
|
63
|
-
case 'lib':
|
|
64
|
-
return <BuildingLibraryIcon className="w-6 h-6 text-primary-600" />;
|
|
65
|
-
case 'tool':
|
|
66
|
-
return '🔧';
|
|
67
|
-
default:
|
|
68
|
-
return <CubeIcon className="w-6 h-6 text-primary-600" />;
|
|
69
|
-
}
|
|
70
|
-
};
|