@manojkmfsi/monodog 1.1.38 → 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 (199) hide show
  1. package/CHANGELOG.md +6 -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/package.json +2 -2
  7. package/monodog-dashboard/THEME_SYSTEM.md +0 -309
  8. package/monodog-dashboard/__tests__/AuthCallbackPage.test.ts +0 -138
  9. package/monodog-dashboard/__tests__/ConfigInspector.test.ts +0 -33
  10. package/monodog-dashboard/__tests__/DependencyGraph.test.ts +0 -72
  11. package/monodog-dashboard/__tests__/HealthStatus.test.ts +0 -69
  12. package/monodog-dashboard/__tests__/LoginPage.test.ts +0 -79
  13. package/monodog-dashboard/__tests__/PackageDetail.test.ts +0 -22
  14. package/monodog-dashboard/__tests__/ReleaseManager.test.tsx +0 -510
  15. package/monodog-dashboard/__tests__/api-client.test.ts +0 -475
  16. package/monodog-dashboard/__tests__/components.test.ts +0 -117
  17. package/monodog-dashboard/__tests__/dashboard.utils.test.ts +0 -144
  18. package/monodog-dashboard/__tests__/dependency.utils.test.ts +0 -125
  19. package/monodog-dashboard/__tests__/monorepoService.unit.test.ts +0 -103
  20. package/monodog-dashboard/__tests__/packages.utils.test.ts +0 -37
  21. package/monodog-dashboard/__tests__/pages.test.ts +0 -103
  22. package/monodog-dashboard/package-lock.json +0 -4587
  23. package/monodog-dashboard/postcss.config.js +0 -6
  24. package/monodog-dashboard/src/components/App.tsx +0 -36
  25. package/monodog-dashboard/src/components/LoadingState.tsx +0 -18
  26. package/monodog-dashboard/src/components/PermissionGuard.tsx +0 -92
  27. package/monodog-dashboard/src/components/ProtectedRoute.tsx +0 -24
  28. package/monodog-dashboard/src/components/configuration/Configuration.tsx +0 -91
  29. package/monodog-dashboard/src/components/configuration/components/BrandingSettings.tsx +0 -128
  30. package/monodog-dashboard/src/components/configuration/components/ConfigurationHeader.tsx +0 -34
  31. package/monodog-dashboard/src/components/configuration/components/ConfigurationModal.tsx +0 -20
  32. package/monodog-dashboard/src/components/configuration/components/ConfigurationTabs.tsx +0 -30
  33. package/monodog-dashboard/src/components/configuration/components/FeatureToggles.tsx +0 -66
  34. package/monodog-dashboard/src/components/configuration/components/GeneralSettings.tsx +0 -77
  35. package/monodog-dashboard/src/components/configuration/components/MonorepoSettings.tsx +0 -179
  36. package/monodog-dashboard/src/components/configuration/components/index.ts +0 -8
  37. package/monodog-dashboard/src/components/configuration/types/config.types.ts +0 -52
  38. package/monodog-dashboard/src/components/configuration/utils/config.utils.tsx +0 -115
  39. package/monodog-dashboard/src/components/main-dashboard/Dashboard.tsx +0 -242
  40. package/monodog-dashboard/src/components/main-dashboard/Layout.tsx +0 -112
  41. package/monodog-dashboard/src/components/main-dashboard/components/Header.tsx +0 -47
  42. package/monodog-dashboard/src/components/main-dashboard/components/PackageDistribution.tsx +0 -35
  43. package/monodog-dashboard/src/components/main-dashboard/components/PackageSearchFilter.tsx +0 -47
  44. package/monodog-dashboard/src/components/main-dashboard/components/PackageTable.tsx +0 -87
  45. package/monodog-dashboard/src/components/main-dashboard/components/QuickActions.tsx +0 -60
  46. package/monodog-dashboard/src/components/main-dashboard/components/StatsCards.tsx +0 -73
  47. package/monodog-dashboard/src/components/main-dashboard/components/index.ts +0 -7
  48. package/monodog-dashboard/src/components/main-dashboard/types/dashboard.types.ts +0 -33
  49. package/monodog-dashboard/src/components/main-dashboard/utils/dashboard.utils.tsx +0 -70
  50. package/monodog-dashboard/src/components/modules/ci-integration/CIIntegration.tsx +0 -277
  51. package/monodog-dashboard/src/components/modules/ci-integration/components/BuildDetails.tsx +0 -228
  52. package/monodog-dashboard/src/components/modules/ci-integration/components/BuildList.tsx +0 -212
  53. package/monodog-dashboard/src/components/modules/ci-integration/components/BuildOverview.tsx +0 -158
  54. package/monodog-dashboard/src/components/modules/ci-integration/components/CIIntegrationHeader.tsx +0 -38
  55. package/monodog-dashboard/src/components/modules/ci-integration/components/ErrorState.tsx +0 -25
  56. package/monodog-dashboard/src/components/modules/ci-integration/components/LoadingState.tsx +0 -16
  57. package/monodog-dashboard/src/components/modules/ci-integration/components/PipelineStatus.tsx +0 -223
  58. package/monodog-dashboard/src/components/modules/ci-integration/components/index.ts +0 -8
  59. package/monodog-dashboard/src/components/modules/ci-integration/types/ci.types.ts +0 -97
  60. package/monodog-dashboard/src/components/modules/ci-integration/utils/ci.utils.tsx +0 -264
  61. package/monodog-dashboard/src/components/modules/config-inspector/ConfigInspector.tsx +0 -324
  62. package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigEditor.tsx +0 -93
  63. package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigInspectorHeader.tsx +0 -36
  64. package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigPreview.tsx +0 -89
  65. package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigSidebar.tsx +0 -141
  66. package/monodog-dashboard/src/components/modules/config-inspector/components/ConfigToolbar.tsx +0 -184
  67. package/monodog-dashboard/src/components/modules/config-inspector/components/ErrorState.tsx +0 -25
  68. package/monodog-dashboard/src/components/modules/config-inspector/components/LoadingState.tsx +0 -16
  69. package/monodog-dashboard/src/components/modules/config-inspector/components/ValidationPanel.tsx +0 -155
  70. package/monodog-dashboard/src/components/modules/config-inspector/components/index.ts +0 -9
  71. package/monodog-dashboard/src/components/modules/config-inspector/types/config.types.ts +0 -100
  72. package/monodog-dashboard/src/components/modules/config-inspector/utils/config.utils.tsx +0 -704
  73. package/monodog-dashboard/src/components/modules/dependency-graph/DependencyGraph.tsx +0 -224
  74. package/monodog-dashboard/src/components/modules/dependency-graph/components/CircularDependencies.tsx +0 -177
  75. package/monodog-dashboard/src/components/modules/dependency-graph/components/DependencyDetails.tsx +0 -192
  76. package/monodog-dashboard/src/components/modules/dependency-graph/components/DependencyGraphHeader.tsx +0 -30
  77. package/monodog-dashboard/src/components/modules/dependency-graph/components/DependencyList.tsx +0 -177
  78. package/monodog-dashboard/src/components/modules/dependency-graph/components/ErrorState.tsx +0 -25
  79. package/monodog-dashboard/src/components/modules/dependency-graph/components/GraphLegend.tsx +0 -89
  80. package/monodog-dashboard/src/components/modules/dependency-graph/components/GraphStats.tsx +0 -141
  81. package/monodog-dashboard/src/components/modules/dependency-graph/components/GraphToolbar.tsx +0 -107
  82. package/monodog-dashboard/src/components/modules/dependency-graph/components/GraphVisualization.tsx +0 -179
  83. package/monodog-dashboard/src/components/modules/dependency-graph/components/LoadingState.tsx +0 -16
  84. package/monodog-dashboard/src/components/modules/dependency-graph/components/index.ts +0 -11
  85. package/monodog-dashboard/src/components/modules/dependency-graph/types/dependency.types.ts +0 -105
  86. package/monodog-dashboard/src/components/modules/dependency-graph/utils/dependency.utils.tsx +0 -433
  87. package/monodog-dashboard/src/components/modules/health-status/HealthStatus.tsx +0 -739
  88. package/monodog-dashboard/src/components/modules/health-status/components/ErrorState.tsx +0 -25
  89. package/monodog-dashboard/src/components/modules/health-status/components/HealthActions.tsx +0 -122
  90. package/monodog-dashboard/src/components/modules/health-status/components/HealthAlerts.tsx +0 -151
  91. package/monodog-dashboard/src/components/modules/health-status/components/HealthMetrics.tsx +0 -132
  92. package/monodog-dashboard/src/components/modules/health-status/components/HealthStatusHeader.tsx +0 -30
  93. package/monodog-dashboard/src/components/modules/health-status/components/LoadingState.tsx +0 -16
  94. package/monodog-dashboard/src/components/modules/health-status/components/OverallHealthScore.tsx +0 -122
  95. package/monodog-dashboard/src/components/modules/health-status/components/PackageHealthList.tsx +0 -195
  96. package/monodog-dashboard/src/components/modules/health-status/types/health.types.ts +0 -80
  97. package/monodog-dashboard/src/components/modules/health-status/utils/health.utils.tsx +0 -220
  98. package/monodog-dashboard/src/components/modules/packages/PackageDetail.tsx +0 -255
  99. package/monodog-dashboard/src/components/modules/packages/PackagesOverview.tsx +0 -166
  100. package/monodog-dashboard/src/components/modules/packages/components/ConfigurationTab.tsx +0 -311
  101. package/monodog-dashboard/src/components/modules/packages/components/DependenciesTab.tsx +0 -154
  102. package/monodog-dashboard/src/components/modules/packages/components/ErrorState.tsx +0 -21
  103. package/monodog-dashboard/src/components/modules/packages/components/HealthMetricsTab.tsx +0 -275
  104. package/monodog-dashboard/src/components/modules/packages/components/LoadingState.tsx +0 -14
  105. package/monodog-dashboard/src/components/modules/packages/components/PackageDetailHeader.tsx +0 -167
  106. package/monodog-dashboard/src/components/modules/packages/components/PackageDetailTabs.tsx +0 -49
  107. package/monodog-dashboard/src/components/modules/packages/components/PackageStats.tsx +0 -70
  108. package/monodog-dashboard/src/components/modules/packages/components/PackagesTable.tsx +0 -163
  109. package/monodog-dashboard/src/components/modules/packages/components/RecentCommitsTab.tsx +0 -90
  110. package/monodog-dashboard/src/components/modules/packages/components/SearchAndFilter.tsx +0 -66
  111. package/monodog-dashboard/src/components/modules/packages/components/index.ts +0 -12
  112. package/monodog-dashboard/src/components/modules/packages/types/packages.types.ts +0 -101
  113. package/monodog-dashboard/src/components/modules/packages/utils/packages.utils.tsx +0 -178
  114. package/monodog-dashboard/src/components/pipeline/JobsList.tsx +0 -83
  115. package/monodog-dashboard/src/components/pipeline/LogViewer.tsx +0 -392
  116. package/monodog-dashboard/src/components/pipeline/PipelineManager.tsx +0 -562
  117. package/monodog-dashboard/src/components/pipeline/WorkflowRunsList.tsx +0 -272
  118. package/monodog-dashboard/src/components/pipeline/WorkflowTrigger.tsx +0 -182
  119. package/monodog-dashboard/src/components/pipeline/utils/pipeline.utils.tsx +0 -11
  120. package/monodog-dashboard/src/components/publish-control/PublishControl.tsx +0 -229
  121. package/monodog-dashboard/src/components/publish-control/components/ChangelogViewer.tsx +0 -103
  122. package/monodog-dashboard/src/components/publish-control/components/ErrorState.tsx +0 -23
  123. package/monodog-dashboard/src/components/publish-control/components/LoadingState.tsx +0 -10
  124. package/monodog-dashboard/src/components/publish-control/components/PackageReleaseTable.tsx +0 -140
  125. package/monodog-dashboard/src/components/publish-control/components/PublishHeader.tsx +0 -30
  126. package/monodog-dashboard/src/components/publish-control/components/QuickActionCards.tsx +0 -56
  127. package/monodog-dashboard/src/components/publish-control/components/ReleaseSchedule.tsx +0 -104
  128. package/monodog-dashboard/src/components/publish-control/components/index.ts +0 -8
  129. package/monodog-dashboard/src/components/publish-control/types/publish.types.ts +0 -39
  130. package/monodog-dashboard/src/components/publish-control/utils/publish.utils.ts +0 -59
  131. package/monodog-dashboard/src/components/release-manager/ReleaseManager.tsx +0 -342
  132. package/monodog-dashboard/src/components/release-manager/components/ChangesetPreview.tsx +0 -123
  133. package/monodog-dashboard/src/components/release-manager/components/ErrorState.tsx +0 -38
  134. package/monodog-dashboard/src/components/release-manager/components/LoadingState.tsx +0 -18
  135. package/monodog-dashboard/src/components/release-manager/components/PackageSelector.tsx +0 -137
  136. package/monodog-dashboard/src/components/release-manager/components/PublishConfirmation.tsx +0 -150
  137. package/monodog-dashboard/src/components/release-manager/components/ReleaseValidation.tsx +0 -138
  138. package/monodog-dashboard/src/components/release-manager/components/VersionBumpSelector.tsx +0 -142
  139. package/monodog-dashboard/src/components/release-manager/types/index.ts +0 -9
  140. package/monodog-dashboard/src/components/release-manager/types/release-manager.types.ts +0 -29
  141. package/monodog-dashboard/src/components/setup-guide/SetupGuide.tsx +0 -96
  142. package/monodog-dashboard/src/components/setup-guide/components/SetupHeader.tsx +0 -24
  143. package/monodog-dashboard/src/components/setup-guide/components/SetupModal.tsx +0 -24
  144. package/monodog-dashboard/src/components/setup-guide/components/SetupProgress.tsx +0 -29
  145. package/monodog-dashboard/src/components/setup-guide/components/StepContent.tsx +0 -272
  146. package/monodog-dashboard/src/components/setup-guide/components/StepNavigation.tsx +0 -62
  147. package/monodog-dashboard/src/components/setup-guide/components/index.ts +0 -6
  148. package/monodog-dashboard/src/components/setup-guide/types/setup.types.ts +0 -38
  149. package/monodog-dashboard/src/components/setup-guide/utils/setup.utils.ts +0 -79
  150. package/monodog-dashboard/src/constants/api-config.ts +0 -81
  151. package/monodog-dashboard/src/constants/index.ts +0 -9
  152. package/monodog-dashboard/src/constants/messages.ts +0 -40
  153. package/monodog-dashboard/src/icons/heroicons.ts +0 -65
  154. package/monodog-dashboard/src/icons/index.tsx +0 -1788
  155. package/monodog-dashboard/src/index.css +0 -175
  156. package/monodog-dashboard/src/main.tsx +0 -9
  157. package/monodog-dashboard/src/pages/AuthCallbackPage.tsx +0 -103
  158. package/monodog-dashboard/src/pages/CIPage.tsx +0 -6
  159. package/monodog-dashboard/src/pages/ConfigPage.tsx +0 -6
  160. package/monodog-dashboard/src/pages/DashboardPage.tsx +0 -6
  161. package/monodog-dashboard/src/pages/DependenciesPage.tsx +0 -6
  162. package/monodog-dashboard/src/pages/HealthPage.tsx +0 -6
  163. package/monodog-dashboard/src/pages/LoginPage.tsx +0 -77
  164. package/monodog-dashboard/src/pages/PackageDetailPage.tsx +0 -6
  165. package/monodog-dashboard/src/pages/PackagesPage.tsx +0 -6
  166. package/monodog-dashboard/src/pages/PipelinePage.tsx +0 -22
  167. package/monodog-dashboard/src/pages/PublishPage.tsx +0 -6
  168. package/monodog-dashboard/src/pages/ReleaseManagerPage.tsx +0 -9
  169. package/monodog-dashboard/src/pages/index.ts +0 -28
  170. package/monodog-dashboard/src/routes/AppRouter.tsx +0 -89
  171. package/monodog-dashboard/src/routes/AppRouterPages.tsx +0 -56
  172. package/monodog-dashboard/src/routes/index.ts +0 -10
  173. package/monodog-dashboard/src/routes/routes.config.ts +0 -94
  174. package/monodog-dashboard/src/services/api/api-client.ts +0 -189
  175. package/monodog-dashboard/src/services/api/index.ts +0 -30
  176. package/monodog-dashboard/src/services/api/types/api.types.ts +0 -63
  177. package/monodog-dashboard/src/services/auth-context.tsx +0 -344
  178. package/monodog-dashboard/src/services/monorepoService.ts +0 -733
  179. package/monodog-dashboard/src/services/permission-context.tsx +0 -193
  180. package/monodog-dashboard/src/theme/COMPONENT_UPDATES.md +0 -273
  181. package/monodog-dashboard/src/theme/INTEGRATION.md +0 -381
  182. package/monodog-dashboard/src/theme/README.md +0 -239
  183. package/monodog-dashboard/src/theme/examples.tsx +0 -386
  184. package/monodog-dashboard/src/theme/index.ts +0 -402
  185. package/monodog-dashboard/src/theme/migration-guide.md +0 -335
  186. package/monodog-dashboard/src/types/auth-context.types.ts +0 -51
  187. package/monodog-dashboard/src/types/component.types.ts +0 -96
  188. package/monodog-dashboard/src/types/icons.types.ts +0 -13
  189. package/monodog-dashboard/src/types/index.ts +0 -68
  190. package/monodog-dashboard/src/types/monorepo-service.types.ts +0 -53
  191. package/monodog-dashboard/src/types/permission-context.types.ts +0 -49
  192. package/monodog-dashboard/src/types/pipeline.types.ts +0 -89
  193. package/monodog-dashboard/src/types/routes.types.ts +0 -12
  194. package/monodog-dashboard/src/utils/cookies.ts +0 -47
  195. package/monodog-dashboard/tailwind.config.js +0 -68
  196. package/monodog-dashboard/tsconfig.app.json +0 -14
  197. package/monodog-dashboard/tsconfig.json +0 -17
  198. package/monodog-dashboard/tsconfig.node.json +0 -10
  199. 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
- };