@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.
Files changed (200) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/monodog-dashboard/dist/assets/index-C08ciT3A.js +20 -0
  3. package/monodog-dashboard/dist/assets/index-C08ciT3A.js.map +1 -0
  4. package/monodog-dashboard/dist/assets/index-Dc2vaUOq.css +1 -0
  5. package/monodog-dashboard/{index.html → dist/index.html} +2 -1
  6. package/monodog-dashboard/package.json +0 -3
  7. package/package.json +2 -2
  8. package/monodog-dashboard/THEME_SYSTEM.md +0 -309
  9. package/monodog-dashboard/__tests__/AuthCallbackPage.test.ts +0 -138
  10. package/monodog-dashboard/__tests__/ConfigInspector.test.ts +0 -33
  11. package/monodog-dashboard/__tests__/DependencyGraph.test.ts +0 -72
  12. package/monodog-dashboard/__tests__/HealthStatus.test.ts +0 -69
  13. package/monodog-dashboard/__tests__/LoginPage.test.ts +0 -79
  14. package/monodog-dashboard/__tests__/PackageDetail.test.ts +0 -22
  15. package/monodog-dashboard/__tests__/ReleaseManager.test.tsx +0 -510
  16. package/monodog-dashboard/__tests__/api-client.test.ts +0 -475
  17. package/monodog-dashboard/__tests__/components.test.ts +0 -117
  18. package/monodog-dashboard/__tests__/dashboard.utils.test.ts +0 -144
  19. package/monodog-dashboard/__tests__/dependency.utils.test.ts +0 -125
  20. package/monodog-dashboard/__tests__/monorepoService.unit.test.ts +0 -103
  21. package/monodog-dashboard/__tests__/packages.utils.test.ts +0 -37
  22. package/monodog-dashboard/__tests__/pages.test.ts +0 -103
  23. package/monodog-dashboard/package-lock.json +0 -4587
  24. package/monodog-dashboard/postcss.config.js +0 -6
  25. package/monodog-dashboard/src/components/App.tsx +0 -36
  26. package/monodog-dashboard/src/components/LoadingState.tsx +0 -18
  27. package/monodog-dashboard/src/components/PermissionGuard.tsx +0 -92
  28. package/monodog-dashboard/src/components/ProtectedRoute.tsx +0 -24
  29. package/monodog-dashboard/src/components/configuration/Configuration.tsx +0 -91
  30. package/monodog-dashboard/src/components/configuration/components/BrandingSettings.tsx +0 -128
  31. package/monodog-dashboard/src/components/configuration/components/ConfigurationHeader.tsx +0 -34
  32. package/monodog-dashboard/src/components/configuration/components/ConfigurationModal.tsx +0 -20
  33. package/monodog-dashboard/src/components/configuration/components/ConfigurationTabs.tsx +0 -30
  34. package/monodog-dashboard/src/components/configuration/components/FeatureToggles.tsx +0 -66
  35. package/monodog-dashboard/src/components/configuration/components/GeneralSettings.tsx +0 -77
  36. package/monodog-dashboard/src/components/configuration/components/MonorepoSettings.tsx +0 -179
  37. package/monodog-dashboard/src/components/configuration/components/index.ts +0 -8
  38. package/monodog-dashboard/src/components/configuration/types/config.types.ts +0 -52
  39. package/monodog-dashboard/src/components/configuration/utils/config.utils.tsx +0 -115
  40. package/monodog-dashboard/src/components/main-dashboard/Dashboard.tsx +0 -242
  41. package/monodog-dashboard/src/components/main-dashboard/Layout.tsx +0 -112
  42. package/monodog-dashboard/src/components/main-dashboard/components/Header.tsx +0 -47
  43. package/monodog-dashboard/src/components/main-dashboard/components/PackageDistribution.tsx +0 -35
  44. package/monodog-dashboard/src/components/main-dashboard/components/PackageSearchFilter.tsx +0 -47
  45. package/monodog-dashboard/src/components/main-dashboard/components/PackageTable.tsx +0 -87
  46. package/monodog-dashboard/src/components/main-dashboard/components/QuickActions.tsx +0 -60
  47. package/monodog-dashboard/src/components/main-dashboard/components/StatsCards.tsx +0 -73
  48. package/monodog-dashboard/src/components/main-dashboard/components/index.ts +0 -7
  49. package/monodog-dashboard/src/components/main-dashboard/types/dashboard.types.ts +0 -33
  50. package/monodog-dashboard/src/components/main-dashboard/utils/dashboard.utils.tsx +0 -70
  51. package/monodog-dashboard/src/components/modules/ci-integration/CIIntegration.tsx +0 -277
  52. package/monodog-dashboard/src/components/modules/ci-integration/components/BuildDetails.tsx +0 -228
  53. package/monodog-dashboard/src/components/modules/ci-integration/components/BuildList.tsx +0 -212
  54. package/monodog-dashboard/src/components/modules/ci-integration/components/BuildOverview.tsx +0 -158
  55. package/monodog-dashboard/src/components/modules/ci-integration/components/CIIntegrationHeader.tsx +0 -38
  56. package/monodog-dashboard/src/components/modules/ci-integration/components/ErrorState.tsx +0 -25
  57. package/monodog-dashboard/src/components/modules/ci-integration/components/LoadingState.tsx +0 -16
  58. package/monodog-dashboard/src/components/modules/ci-integration/components/PipelineStatus.tsx +0 -223
  59. package/monodog-dashboard/src/components/modules/ci-integration/components/index.ts +0 -8
  60. package/monodog-dashboard/src/components/modules/ci-integration/types/ci.types.ts +0 -97
  61. package/monodog-dashboard/src/components/modules/ci-integration/utils/ci.utils.tsx +0 -264
  62. package/monodog-dashboard/src/components/modules/config-inspector/ConfigInspector.tsx +0 -324
  63. package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigEditor.tsx +0 -93
  64. package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigInspectorHeader.tsx +0 -36
  65. package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigPreview.tsx +0 -89
  66. package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigSidebar.tsx +0 -141
  67. package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigToolbar.tsx +0 -184
  68. package/monodog-dashboard/src/components/modules/config-inspector/components/ErrorState.tsx +0 -25
  69. package/monodog-dashboard/src/components/modules/config-inspector/components/LoadingState.tsx +0 -16
  70. package/monodog-dashboard/src/components/modules/config-inspector/components/ValidationPanel.tsx +0 -155
  71. package/monodog-dashboard/src/components/modules/config-inspector/components/index.ts +0 -9
  72. package/monodog-dashboard/src/components/modules/config-inspector/types/config.types.ts +0 -100
  73. package/monodog-dashboard/src/components/modules/config-inspector/utils/config.utils.tsx +0 -704
  74. package/monodog-dashboard/src/components/modules/dependency-graph/DependencyGraph.tsx +0 -224
  75. package/monodog-dashboard/src/components/modules/dependency-graph/components/CircularDependencies.tsx +0 -177
  76. package/monodog-dashboard/src/components/modules/dependency-graph/components/DependencyDetails.tsx +0 -192
  77. package/monodog-dashboard/src/components/modules/dependency-graph/components/DependencyGraphHeader.tsx +0 -30
  78. package/monodog-dashboard/src/components/modules/dependency-graph/components/DependencyList.tsx +0 -177
  79. package/monodog-dashboard/src/components/modules/dependency-graph/components/ErrorState.tsx +0 -25
  80. package/monodog-dashboard/src/components/modules/dependency-graph/components/GraphLegend.tsx +0 -89
  81. package/monodog-dashboard/src/components/modules/dependency-graph/components/GraphStats.tsx +0 -141
  82. package/monodog-dashboard/src/components/modules/dependency-graph/components/GraphToolbar.tsx +0 -107
  83. package/monodog-dashboard/src/components/modules/dependency-graph/components/GraphVisualization.tsx +0 -179
  84. package/monodog-dashboard/src/components/modules/dependency-graph/components/LoadingState.tsx +0 -16
  85. package/monodog-dashboard/src/components/modules/dependency-graph/components/index.ts +0 -11
  86. package/monodog-dashboard/src/components/modules/dependency-graph/types/dependency.types.ts +0 -105
  87. package/monodog-dashboard/src/components/modules/dependency-graph/utils/dependency.utils.tsx +0 -433
  88. package/monodog-dashboard/src/components/modules/health-status/HealthStatus.tsx +0 -739
  89. package/monodog-dashboard/src/components/modules/health-status/components/ErrorState.tsx +0 -25
  90. package/monodog-dashboard/src/components/modules/health-status/components/HealthActions.tsx +0 -122
  91. package/monodog-dashboard/src/components/modules/health-status/components/HealthAlerts.tsx +0 -151
  92. package/monodog-dashboard/src/components/modules/health-status/components/HealthMetrics.tsx +0 -132
  93. package/monodog-dashboard/src/components/modules/health-status/components/HealthStatusHeader.tsx +0 -30
  94. package/monodog-dashboard/src/components/modules/health-status/components/LoadingState.tsx +0 -16
  95. package/monodog-dashboard/src/components/modules/health-status/components/OverallHealthScore.tsx +0 -122
  96. package/monodog-dashboard/src/components/modules/health-status/components/PackageHealthList.tsx +0 -195
  97. package/monodog-dashboard/src/components/modules/health-status/types/health.types.ts +0 -80
  98. package/monodog-dashboard/src/components/modules/health-status/utils/health.utils.tsx +0 -220
  99. package/monodog-dashboard/src/components/modules/packages/PackageDetail.tsx +0 -255
  100. package/monodog-dashboard/src/components/modules/packages/PackagesOverview.tsx +0 -166
  101. package/monodog-dashboard/src/components/modules/packages/components/ConfigurationTab.tsx +0 -311
  102. package/monodog-dashboard/src/components/modules/packages/components/DependenciesTab.tsx +0 -154
  103. package/monodog-dashboard/src/components/modules/packages/components/ErrorState.tsx +0 -21
  104. package/monodog-dashboard/src/components/modules/packages/components/HealthMetricsTab.tsx +0 -275
  105. package/monodog-dashboard/src/components/modules/packages/components/LoadingState.tsx +0 -14
  106. package/monodog-dashboard/src/components/modules/packages/components/PackageDetailHeader.tsx +0 -167
  107. package/monodog-dashboard/src/components/modules/packages/components/PackageDetailTabs.tsx +0 -49
  108. package/monodog-dashboard/src/components/modules/packages/components/PackageStats.tsx +0 -70
  109. package/monodog-dashboard/src/components/modules/packages/components/PackagesTable.tsx +0 -163
  110. package/monodog-dashboard/src/components/modules/packages/components/RecentCommitsTab.tsx +0 -90
  111. package/monodog-dashboard/src/components/modules/packages/components/SearchAndFilter.tsx +0 -66
  112. package/monodog-dashboard/src/components/modules/packages/components/index.ts +0 -12
  113. package/monodog-dashboard/src/components/modules/packages/types/packages.types.ts +0 -101
  114. package/monodog-dashboard/src/components/modules/packages/utils/packages.utils.tsx +0 -178
  115. package/monodog-dashboard/src/components/pipeline/JobsList.tsx +0 -83
  116. package/monodog-dashboard/src/components/pipeline/LogViewer.tsx +0 -392
  117. package/monodog-dashboard/src/components/pipeline/PipelineManager.tsx +0 -562
  118. package/monodog-dashboard/src/components/pipeline/WorkflowRunsList.tsx +0 -272
  119. package/monodog-dashboard/src/components/pipeline/WorkflowTrigger.tsx +0 -182
  120. package/monodog-dashboard/src/components/pipeline/utils/pipeline.utils.tsx +0 -11
  121. package/monodog-dashboard/src/components/publish-control/PublishControl.tsx +0 -229
  122. package/monodog-dashboard/src/components/publish-control/components/ChangelogViewer.tsx +0 -103
  123. package/monodog-dashboard/src/components/publish-control/components/ErrorState.tsx +0 -23
  124. package/monodog-dashboard/src/components/publish-control/components/LoadingState.tsx +0 -10
  125. package/monodog-dashboard/src/components/publish-control/components/PackageReleaseTable.tsx +0 -140
  126. package/monodog-dashboard/src/components/publish-control/components/PublishHeader.tsx +0 -30
  127. package/monodog-dashboard/src/components/publish-control/components/QuickActionCards.tsx +0 -56
  128. package/monodog-dashboard/src/components/publish-control/components/ReleaseSchedule.tsx +0 -104
  129. package/monodog-dashboard/src/components/publish-control/components/index.ts +0 -8
  130. package/monodog-dashboard/src/components/publish-control/types/publish.types.ts +0 -39
  131. package/monodog-dashboard/src/components/publish-control/utils/publish.utils.ts +0 -59
  132. package/monodog-dashboard/src/components/release-manager/ReleaseManager.tsx +0 -342
  133. package/monodog-dashboard/src/components/release-manager/components/ChangesetPreview.tsx +0 -123
  134. package/monodog-dashboard/src/components/release-manager/components/ErrorState.tsx +0 -38
  135. package/monodog-dashboard/src/components/release-manager/components/LoadingState.tsx +0 -18
  136. package/monodog-dashboard/src/components/release-manager/components/PackageSelector.tsx +0 -137
  137. package/monodog-dashboard/src/components/release-manager/components/PublishConfirmation.tsx +0 -150
  138. package/monodog-dashboard/src/components/release-manager/components/ReleaseValidation.tsx +0 -138
  139. package/monodog-dashboard/src/components/release-manager/components/VersionBumpSelector.tsx +0 -142
  140. package/monodog-dashboard/src/components/release-manager/types/index.ts +0 -9
  141. package/monodog-dashboard/src/components/release-manager/types/release-manager.types.ts +0 -29
  142. package/monodog-dashboard/src/components/setup-guide/SetupGuide.tsx +0 -96
  143. package/monodog-dashboard/src/components/setup-guide/components/SetupHeader.tsx +0 -24
  144. package/monodog-dashboard/src/components/setup-guide/components/SetupModal.tsx +0 -24
  145. package/monodog-dashboard/src/components/setup-guide/components/SetupProgress.tsx +0 -29
  146. package/monodog-dashboard/src/components/setup-guide/components/StepContent.tsx +0 -272
  147. package/monodog-dashboard/src/components/setup-guide/components/StepNavigation.tsx +0 -62
  148. package/monodog-dashboard/src/components/setup-guide/components/index.ts +0 -6
  149. package/monodog-dashboard/src/components/setup-guide/types/setup.types.ts +0 -38
  150. package/monodog-dashboard/src/components/setup-guide/utils/setup.utils.ts +0 -79
  151. package/monodog-dashboard/src/constants/api-config.ts +0 -81
  152. package/monodog-dashboard/src/constants/index.ts +0 -9
  153. package/monodog-dashboard/src/constants/messages.ts +0 -40
  154. package/monodog-dashboard/src/icons/heroicons.ts +0 -65
  155. package/monodog-dashboard/src/icons/index.tsx +0 -1788
  156. package/monodog-dashboard/src/index.css +0 -175
  157. package/monodog-dashboard/src/main.tsx +0 -9
  158. package/monodog-dashboard/src/pages/AuthCallbackPage.tsx +0 -103
  159. package/monodog-dashboard/src/pages/CIPage.tsx +0 -6
  160. package/monodog-dashboard/src/pages/ConfigPage.tsx +0 -6
  161. package/monodog-dashboard/src/pages/DashboardPage.tsx +0 -6
  162. package/monodog-dashboard/src/pages/DependenciesPage.tsx +0 -6
  163. package/monodog-dashboard/src/pages/HealthPage.tsx +0 -6
  164. package/monodog-dashboard/src/pages/LoginPage.tsx +0 -77
  165. package/monodog-dashboard/src/pages/PackageDetailPage.tsx +0 -6
  166. package/monodog-dashboard/src/pages/PackagesPage.tsx +0 -6
  167. package/monodog-dashboard/src/pages/PipelinePage.tsx +0 -22
  168. package/monodog-dashboard/src/pages/PublishPage.tsx +0 -6
  169. package/monodog-dashboard/src/pages/ReleaseManagerPage.tsx +0 -9
  170. package/monodog-dashboard/src/pages/index.ts +0 -28
  171. package/monodog-dashboard/src/routes/AppRouter.tsx +0 -89
  172. package/monodog-dashboard/src/routes/AppRouterPages.tsx +0 -56
  173. package/monodog-dashboard/src/routes/index.ts +0 -10
  174. package/monodog-dashboard/src/routes/routes.config.ts +0 -94
  175. package/monodog-dashboard/src/services/api/api-client.ts +0 -189
  176. package/monodog-dashboard/src/services/api/index.ts +0 -30
  177. package/monodog-dashboard/src/services/api/types/api.types.ts +0 -63
  178. package/monodog-dashboard/src/services/auth-context.tsx +0 -344
  179. package/monodog-dashboard/src/services/monorepoService.ts +0 -733
  180. package/monodog-dashboard/src/services/permission-context.tsx +0 -193
  181. package/monodog-dashboard/src/theme/COMPONENT_UPDATES.md +0 -273
  182. package/monodog-dashboard/src/theme/INTEGRATION.md +0 -381
  183. package/monodog-dashboard/src/theme/README.md +0 -239
  184. package/monodog-dashboard/src/theme/examples.tsx +0 -386
  185. package/monodog-dashboard/src/theme/index.ts +0 -402
  186. package/monodog-dashboard/src/theme/migration-guide.md +0 -335
  187. package/monodog-dashboard/src/types/auth-context.types.ts +0 -51
  188. package/monodog-dashboard/src/types/component.types.ts +0 -96
  189. package/monodog-dashboard/src/types/icons.types.ts +0 -13
  190. package/monodog-dashboard/src/types/index.ts +0 -68
  191. package/monodog-dashboard/src/types/monorepo-service.types.ts +0 -53
  192. package/monodog-dashboard/src/types/permission-context.types.ts +0 -49
  193. package/monodog-dashboard/src/types/pipeline.types.ts +0 -89
  194. package/monodog-dashboard/src/types/routes.types.ts +0 -12
  195. package/monodog-dashboard/src/utils/cookies.ts +0 -47
  196. package/monodog-dashboard/tailwind.config.js +0 -68
  197. package/monodog-dashboard/tsconfig.app.json +0 -14
  198. package/monodog-dashboard/tsconfig.json +0 -17
  199. package/monodog-dashboard/tsconfig.node.json +0 -10
  200. package/monodog-dashboard/vite.config.ts +0 -9
@@ -1,163 +0,0 @@
1
- import { Link } from 'react-router-dom';
2
- import { ArrowUpIcon, ArrowDownIcon } from '../../../../icons/heroicons';
3
- import { Package, PackageSorting } from '../types/packages.types';
4
- import type { PackagesTableProps } from '../../../../types';
5
- import {
6
- getStatusColor,
7
- getTypeColor,
8
- formatDate,
9
- formatVersion,
10
- getPackageTypeIcon,
11
- } from '../utils/packages.utils';
12
-
13
- export default function PackagesTable({
14
- packages,
15
- sorting,
16
- onSortChange,
17
- }: PackagesTableProps) {
18
- const handleSort = (field: PackageSorting['field']) => {
19
- const newOrder =
20
- sorting.field === field && sorting.order === 'asc' ? 'desc' : 'asc';
21
- onSortChange({ field, order: newOrder });
22
- };
23
-
24
- const getSortIcon = (field: string) => {
25
- if (sorting.field !== field) return null;
26
- return sorting.order === 'asc' ? (
27
- <ArrowUpIcon className="w-4 h-4" />
28
- ) : (
29
- <ArrowDownIcon className="w-4 h-4" />
30
- );
31
- };
32
-
33
- return (
34
- <div className="bg-white rounded-lg shadow border overflow-hidden">
35
- <div className="overflow-x-auto">
36
- <table className="w-full">
37
- <thead className="bg-gray-50">
38
- <tr>
39
- <th
40
- className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider cursor-pointer hover:bg-gray-100"
41
- onClick={() => handleSort('name')}
42
- >
43
- <div className="flex items-center space-x-1">
44
- <span>Package</span>
45
- {getSortIcon('name')}
46
- </div>
47
- </th>
48
- <th
49
- className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider cursor-pointer hover:bg-gray-100"
50
- onClick={() => handleSort('version')}
51
- >
52
- <div className="flex items-center space-x-1">
53
- <span>Version</span>
54
- {getSortIcon('version')}
55
- </div>
56
- </th>
57
- <th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
58
- Type
59
- </th>
60
- <th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
61
- Status
62
- </th>
63
- <th
64
- className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider cursor-pointer hover:bg-gray-100"
65
- onClick={() => handleSort('dependencies')}
66
- >
67
- <div className="flex items-center space-x-1">
68
- <span>Dependencies</span>
69
- {getSortIcon('dependencies')}
70
- </div>
71
- </th>
72
- <th
73
- className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider cursor-pointer hover:bg-gray-100"
74
- onClick={() => handleSort('lastUpdated')}
75
- >
76
- <div className="flex items-center space-x-1">
77
- <span>Last Updated</span>
78
- {getSortIcon('lastUpdated')}
79
- </div>
80
- </th>
81
- <th className="hidden px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
82
- Maintainers
83
- </th>
84
- </tr>
85
- </thead>
86
- <tbody className="bg-white divide-y divide-gray-200">
87
- {packages.map(pkg => (
88
- <tr key={pkg.name} className="hover:bg-gray-50">
89
- <td className="px-6 py-4 whitespace-nowrap">
90
- <div className="flex items-center">
91
- <div className="text-2xl mr-3">
92
- {getPackageTypeIcon(pkg.type)}
93
- </div>
94
- <div>
95
- <Link
96
- to={`/packages/${encodeURIComponent(pkg.name)}`}
97
- className="text-sm font-medium text-blue-600 hover:text-blue-500"
98
- >
99
- {pkg.name}
100
- </Link>
101
- <div className="text-sm text-gray-500">
102
- {pkg.description}
103
- </div>
104
- </div>
105
- </div>
106
- </td>
107
- <td className="px-6 py-4 whitespace-nowrap">
108
- <span className="text-sm font-mono text-gray-900">
109
- {formatVersion(pkg.version)}
110
- </span>
111
- </td>
112
- <td className="px-6 py-4 whitespace-nowrap">
113
- <span
114
- className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getTypeColor(pkg.type)}`}
115
- >
116
- {pkg.type}
117
- </span>
118
- </td>
119
- <td className="px-6 py-4 whitespace-nowrap">
120
- <span
121
- className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(pkg.status)}`}
122
- >
123
- {pkg.status}
124
- </span>
125
- </td>
126
- <td className="px-6 py-4 whitespace-nowrap text-sm text-gray-900">
127
- {Object.keys(pkg.dependencies).length > 0 && (
128
- <div className="text-xs text-gray-500 mt-1">
129
- {Object.keys(pkg.dependencies).slice(0, 3).join(', ')}
130
- {Object.keys(pkg.dependencies).length > 3 &&
131
- ` +${Object.keys(pkg.dependencies).length - 3} more`}
132
- </div>
133
- )}
134
- </td>
135
- <td className="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
136
- {formatDate(pkg.lastUpdated)}
137
- </td>
138
- <td className="px-6 py-4 whitespace-nowrap">
139
- <div className="flex -space-x-1">
140
- {pkg.maintainers.slice(0, 3).map((maintainer, index) => (
141
- <div
142
- key={maintainer}
143
- className="inline-flex items-center justify-center h-6 w-6 rounded-full bg-gray-500 text-xs font-medium text-white"
144
- title={maintainer}
145
- >
146
- {maintainer.charAt(0).toUpperCase()}
147
- </div>
148
- ))}
149
- {pkg.maintainers.length > 3 && (
150
- <div className="inline-flex items-center justify-center h-6 w-6 rounded-full bg-gray-300 text-xs font-medium text-gray-600">
151
- +{pkg.maintainers.length - 3}
152
- </div>
153
- )}
154
- </div>
155
- </td>
156
- </tr>
157
- ))}
158
- </tbody>
159
- </table>
160
- </div>
161
- </div>
162
- );
163
- }
@@ -1,90 +0,0 @@
1
- import { PackageDetail } from '../types/packages.types';
2
- import type { RecentCommitsTabProps } from '../../../../types';
3
- import { getCommitTypeColor, formatDate } from '../utils/packages.utils';
4
-
5
- export default function RecentCommitsTab({
6
- packageData,
7
- }: RecentCommitsTabProps) {
8
- return (
9
- <div className="py-6">
10
- <h3 className="text-lg font-medium text-gray-900 mb-4">Recent Commits</h3>
11
-
12
- <div className="space-y-4">
13
- {packageData.commits.map(commit => (
14
- <div
15
- key={commit.hash}
16
- className="bg-white border rounded-lg p-4 hover:shadow-md transition-shadow"
17
- >
18
- <div className="flex items-start justify-between">
19
- <div className="flex-1">
20
- <div className="flex items-center space-x-3 mb-2">
21
- <span
22
- className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getCommitTypeColor(commit.type)}`}
23
- >
24
- {commit.type}
25
- </span>
26
- <span className="text-sm font-mono text-gray-500">
27
- {commit.hash}
28
- </span>
29
- </div>
30
-
31
- <p className="text-sm font-medium text-gray-900 mb-2">
32
- {commit.message}
33
- </p>
34
-
35
- <div className="flex items-center space-x-4 text-sm text-gray-500">
36
- <span>by {commit.author}</span>
37
- <span>{formatDate(commit.date)}</span>
38
- </div>
39
- </div>
40
-
41
- <div className="hidden ml-4">
42
- <button className="text-blue-600 hover:text-blue-500 text-sm">
43
- View Diff
44
- </button>
45
- </div>
46
- </div>
47
- </div>
48
- ))}
49
- </div>
50
-
51
- {packageData.commits.length === 0 && (
52
- <div className="text-center py-8">
53
- <div className="text-gray-400 text-4xl mb-2">📝</div>
54
- <p className="text-gray-500">No recent commits found</p>
55
- </div>
56
- )}
57
-
58
- {/* Commit Summary */}
59
- <div className="mt-6 bg-gray-50 border border-gray-200 rounded-lg p-4">
60
- <h4 className="font-medium text-gray-900 mb-2">Commit Summary</h4>
61
- <div className="grid grid-cols-2 md:grid-cols-4 gap-4 text-sm">
62
- <div>
63
- <span className="font-medium text-gray-800">Features:</span>
64
- <span className="ml-2 text-gray-600">
65
- {packageData.commits.filter(c => c.type === 'feat').length}
66
- </span>
67
- </div>
68
- <div>
69
- <span className="font-medium text-gray-800">Fixes:</span>
70
- <span className="ml-2 text-gray-600">
71
- {packageData.commits.filter(c => c.type === 'fix').length}
72
- </span>
73
- </div>
74
- <div>
75
- <span className="font-medium text-gray-800">Chores:</span>
76
- <span className="ml-2 text-gray-600">
77
- {packageData.commits.filter(c => c.type === 'chore').length}
78
- </span>
79
- </div>
80
- <div>
81
- <span className="font-medium text-gray-800">Breaking:</span>
82
- <span className="ml-2 text-gray-600">
83
- {packageData.commits.filter(c => c.type === 'breaking').length}
84
- </span>
85
- </div>
86
- </div>
87
- </div>
88
- </div>
89
- );
90
- }
@@ -1,66 +0,0 @@
1
- import { MagnifyingGlassIcon, FunnelIcon } from '../../../../icons/heroicons';
2
- import { PackageFilters } from '../types/packages.types';
3
- import type { SearchAndFilterProps } from '../../../../types';
4
-
5
- export default function SearchAndFilter({
6
- filters,
7
- onFiltersChange,
8
- availableTypes,
9
- availableStatuses,
10
- }: SearchAndFilterProps) {
11
- return (
12
- <div className="bg-white p-6 rounded-lg shadow border">
13
- <div className="flex flex-col md:flex-row md:items-center md:justify-between space-y-4 md:space-y-0 md:space-x-4">
14
- {/* Search */}
15
- <div className="flex-1 relative">
16
- <MagnifyingGlassIcon className="absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 h-5 w-5" />
17
- <input
18
- type="text"
19
- placeholder="Search packages by name, description, or tags..."
20
- value={filters.search}
21
- onChange={e =>
22
- onFiltersChange({ ...filters, search: e.target.value })
23
- }
24
- 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"
25
- />
26
- </div>
27
-
28
- {/* Filters */}
29
- <div className="flex items-center space-x-4">
30
- <div className="flex items-center space-x-2">
31
- <FunnelIcon className="h-5 w-5 text-gray-400" />
32
- <select
33
- value={filters.type}
34
- onChange={e =>
35
- onFiltersChange({ ...filters, type: e.target.value })
36
- }
37
- className="border border-gray-300 rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-transparent"
38
- >
39
- <option value="all">All Types</option>
40
- {availableTypes.map(type => (
41
- <option key={type} value={type}>
42
- {type.charAt(0).toUpperCase() + type.slice(1)}
43
- </option>
44
- ))}
45
- </select>
46
- </div>
47
-
48
- <select
49
- value={filters.status}
50
- onChange={e =>
51
- onFiltersChange({ ...filters, status: e.target.value })
52
- }
53
- className="border border-gray-300 rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-transparent"
54
- >
55
- <option value="all">All Status</option>
56
- {availableStatuses.map(status => (
57
- <option key={status} value={status}>
58
- {status.charAt(0).toUpperCase() + status.slice(1)}
59
- </option>
60
- ))}
61
- </select>
62
- </div>
63
- </div>
64
- </div>
65
- );
66
- }
@@ -1,12 +0,0 @@
1
- // Export all packages module components for easier imports
2
- export { default as LoadingState } from './LoadingState';
3
- export { default as ErrorState } from './ErrorState';
4
- export { default as PackageStats } from './PackageStats';
5
- export { default as SearchAndFilter } from './SearchAndFilter';
6
- export { default as PackagesTable } from './PackagesTable';
7
- export { default as PackageDetailHeader } from './PackageDetailHeader';
8
- export { default as PackageDetailTabs } from './PackageDetailTabs';
9
- export { default as DependenciesTab } from './DependenciesTab';
10
- export { default as RecentCommitsTab } from './RecentCommitsTab';
11
- export { default as HealthMetricsTab } from './HealthMetricsTab';
12
- export { default as ConfigurationTab } from './ConfigurationTab';
@@ -1,101 +0,0 @@
1
- // Shared types for packages module components
2
-
3
- import type { DependencyInfo } from '@/services/monorepoService';
4
- import type { PackageHealth } from '../../health-status/types/health.types';
5
-
6
- export interface Package {
7
- name: string;
8
- version: string;
9
- type: 'app' | 'lib' | 'tool' | 'service';
10
- status: 'healthy' | 'warning' | 'error' | 'building';
11
- lastUpdated: string;
12
- dependencies: string[];
13
- maintainers: string[];
14
- tags: string[];
15
- description: string;
16
- path: string;
17
- private?: boolean;
18
- scripts?: Record<string, string>;
19
- peerDependencies?: string[];
20
- devDependencies?: string[];
21
- dependents: string[];
22
- packageHealth: PackageHealth;
23
- }
24
-
25
- export interface Dependency {
26
- name: string;
27
- version: string;
28
- latest: string;
29
- status: 'up-to-date' | 'outdated' | 'major-update';
30
- }
31
-
32
- export interface Commit {
33
- hash: string;
34
- message: string;
35
- author: string;
36
- date: string;
37
- type: 'feat' | 'fix' | 'chore' | 'breaking';
38
- }
39
-
40
- export interface PackageDetail {
41
- name: string;
42
- version: string;
43
- type: 'app' | 'lib' | 'tool';
44
- status: 'healthy' | 'warning' | 'error';
45
- description: string;
46
- lastUpdated: string;
47
- dependencies: Dependency[];
48
- devDependencies: Dependency[];
49
- peerDependencies: Dependency[];
50
- maintainers: string[];
51
- tags: string[];
52
- repository: string;
53
- license: string;
54
- scripts: Record<string, string>;
55
- commits: Commit[];
56
- packageHealth: PackageHealth;
57
- buildStatus: 'success' | 'failed' | 'running' | 'unknown';
58
- testCoverage: number;
59
- lintStatus: 'pass' | 'fail' | 'warning';
60
- dependenciesInfo: DependencyInfo[];
61
- path: string;
62
- }
63
-
64
- export interface PackageStats {
65
- total: number;
66
- healthy: number;
67
- warnings: number;
68
- errors: number;
69
- }
70
-
71
- export interface PackageFilters {
72
- search: string;
73
- type: string;
74
- status: string;
75
- }
76
-
77
- export interface PackageSorting {
78
- field: 'name' | 'version' | 'lastUpdated' | 'dependencies';
79
- order: 'asc' | 'desc';
80
- }
81
-
82
- export type PackageDetailTab =
83
- | 'overview'
84
- | 'dependencies'
85
- | 'commits'
86
- | 'health'
87
- | 'config';
88
-
89
- export interface PackageDetailTabsProps {
90
- activeTab: PackageDetailTab;
91
- onTabChange: (tab: PackageDetailTab) => void;
92
- }
93
-
94
- export interface LoadingStateProps {
95
- message?: string;
96
- }
97
-
98
- export interface ErrorStateProps {
99
- error: string;
100
- onRetry?: () => void;
101
- }
@@ -1,178 +0,0 @@
1
- import {
2
- Package,
3
- PackageStats,
4
- PackageFilters,
5
- PackageSorting,
6
- } from '../types/packages.types';
7
- import { BuildingLibraryIcon } from '../../../../icons/heroicons';
8
- import { RocketLaunchIcon } from '../../../../icons/heroicons';
9
- import { CubeIcon } from '../../../../icons/heroicons';
10
- // Calculate package statistics
11
- export const calculatePackageStats = (packages: Package[]): PackageStats => {
12
- return {
13
- total: packages.length,
14
- healthy: packages.filter(p => p.status === 'healthy').length,
15
- warnings: packages.filter(p => p.status === 'warning').length,
16
- errors: packages.filter(p => p.status === 'error').length,
17
- };
18
- };
19
-
20
- // Get unique package types
21
- export const getUniquePackageTypes = (packages: Package[]): string[] => {
22
- return [...new Set(packages.map(pkg => pkg.type))];
23
- };
24
-
25
- // Get unique package statuses
26
- export const getUniquePackageStatuses = (packages: Package[]): string[] => {
27
- return [...new Set(packages.map(pkg => pkg.status))];
28
- };
29
-
30
- // Filter packages based on search, type, and status
31
- export const filterPackages = (
32
- packages: Package[],
33
- filters: PackageFilters
34
- ): Package[] => {
35
- return packages.filter(pkg => {
36
- const matchesSearch =
37
- pkg.name.toLowerCase().includes(filters.search.toLowerCase()) ||
38
- pkg.description.toLowerCase().includes(filters.search.toLowerCase());
39
- // ||
40
- // pkg.tags.some(tag =>
41
- // tag.toLowerCase().includes(filters.search.toLowerCase())
42
- // )
43
- const matchesType = filters.type === 'all' || pkg.type === filters.type;
44
- const matchesStatus =
45
- filters.status === 'all' || pkg.status === filters.status;
46
-
47
- return matchesSearch && matchesType && matchesStatus;
48
- });
49
- };
50
-
51
- // Sort packages
52
- export const sortPackages = (
53
- packages: Package[],
54
- sorting: PackageSorting
55
- ): Package[] => {
56
- return [...packages].sort((a, b) => {
57
- let aValue: any;
58
- let bValue: any;
59
-
60
- switch (sorting.field) {
61
- case 'name':
62
- aValue = a.name.toLowerCase();
63
- bValue = b.name.toLowerCase();
64
- break;
65
- case 'version':
66
- aValue = a.version;
67
- bValue = b.version;
68
- break;
69
- case 'lastUpdated':
70
- aValue = new Date(a.lastUpdated);
71
- bValue = new Date(b.lastUpdated);
72
- break;
73
- case 'dependencies':
74
- aValue = Object.keys(a.dependencies).length;
75
- bValue = Object.keys(b.dependencies).length;
76
- break;
77
- default:
78
- return 0;
79
- }
80
-
81
- if (aValue < bValue) return sorting.order === 'asc' ? -1 : 1;
82
- if (aValue > bValue) return sorting.order === 'asc' ? 1 : -1;
83
- return 0;
84
- });
85
- };
86
-
87
- // Get status color classes
88
- export const getStatusColor = (status: string): string => {
89
- switch (status) {
90
- case 'healthy':
91
- return 'bg-green-100 text-green-800';
92
- case 'warning':
93
- return 'bg-yellow-100 text-yellow-800';
94
- case 'error':
95
- return 'bg-red-100 text-red-800';
96
- case 'building':
97
- return 'bg-blue-100 text-blue-800';
98
- default:
99
- return 'bg-gray-100 text-gray-800';
100
- }
101
- };
102
-
103
- // Get type color classes
104
- export const getTypeColor = (type: string): string => {
105
- switch (type) {
106
- case 'app':
107
- return 'bg-blue-100 text-blue-800';
108
- case 'lib':
109
- return 'bg-purple-100 text-purple-800';
110
- case 'tool':
111
- return 'bg-orange-100 text-orange-800';
112
- case 'service':
113
- return 'bg-green-100 text-green-800';
114
- default:
115
- return 'bg-gray-100 text-gray-800';
116
- }
117
- };
118
-
119
- // Get dependency status color classes
120
- export const getDependencyStatusColor = (status: string): string => {
121
- switch (status) {
122
- case 'up-to-date':
123
- return 'bg-green-100 text-green-800';
124
- case 'outdated':
125
- return 'bg-yellow-100 text-yellow-800';
126
- case 'major-update':
127
- return 'bg-red-100 text-red-800';
128
- default:
129
- return 'bg-gray-100 text-gray-800';
130
- }
131
- };
132
-
133
- // Get commit type color classes
134
- export const getCommitTypeColor = (type: string): string => {
135
- switch (type) {
136
- case 'feature':
137
- return 'bg-blue-100 text-blue-800';
138
- case 'fix':
139
- return 'bg-green-100 text-green-800';
140
- case 'chore':
141
- return 'bg-gray-100 text-gray-800';
142
- case 'breaking':
143
- return 'bg-red-100 text-red-800';
144
- default:
145
- return 'bg-gray-100 text-gray-800';
146
- }
147
- };
148
-
149
- // Format date for display
150
- export const formatDate = (dateString: string): string => {
151
- const date = new Date(dateString);
152
- return date.toLocaleDateString('en-US', {
153
- year: 'numeric',
154
- month: 'short',
155
- day: 'numeric',
156
- });
157
- };
158
-
159
- // Format version for display
160
- export const formatVersion = (version: string): string => {
161
- return version.startsWith('v') ? version : `v${version}`;
162
- };
163
-
164
- // Get package type icon
165
- export const getPackageTypeIcon = (type: string): React.ReactNode => {
166
- switch (type) {
167
- case 'app':
168
- return <RocketLaunchIcon className="w-6 h-6 text-primary-600" />;
169
- case 'lib':
170
- return <BuildingLibraryIcon className="w-6 h-6 text-primary-600" />;
171
- case 'tool':
172
- return '🔧';
173
- case 'service':
174
- return '🌐';
175
- default:
176
- return <CubeIcon className="w-6 h-6 text-primary-600" />;
177
- }
178
- };