roadmap-kit 1.0.1 → 1.0.3
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/cli.js +612 -27
- package/dashboard/dist/assets/index-BDNWoUOj.js +521 -0
- package/dashboard/dist/assets/index-BHRTkw53.css +1 -0
- package/dashboard/dist/index.html +9 -7
- package/dashboard/index.html +7 -5
- package/dashboard/server.js +35 -10
- package/dashboard/src/App.jsx +678 -218
- package/dashboard/src/components/SharedResources.jsx +16 -16
- package/dashboard/src/components/TechnicalDebt.jsx +14 -11
- package/dashboard/src/index.css +795 -275
- package/dashboard/src/main.jsx +2 -2
- package/dashboard/src/themes.js +50 -0
- package/dashboard/tailwind.config.js +7 -1
- package/dashboard/vite.config.js +3 -0
- package/package.json +1 -1
- package/dashboard/dist/assets/index-BzYzLB7u.css +0 -1
- package/dashboard/dist/assets/index-DIonhzlK.js +0 -506
|
@@ -17,9 +17,9 @@ export default function SharedResources({ resources = {} }) {
|
|
|
17
17
|
if (total === 0) {
|
|
18
18
|
return (
|
|
19
19
|
<div className="card-dark rounded-2xl p-12 text-center">
|
|
20
|
-
<Package className="w-12 h-12 mx-auto mb-4 text-
|
|
21
|
-
<h3 className="text-lg font-semibold text-
|
|
22
|
-
<p className="text-
|
|
20
|
+
<Package className="w-12 h-12 mx-auto mb-4 text-theme-muted" />
|
|
21
|
+
<h3 className="text-lg font-semibold text-theme-secondary mb-2">Sin recursos compartidos</h3>
|
|
22
|
+
<p className="text-theme-muted text-sm">Agrega componentes en roadmap.json</p>
|
|
23
23
|
</div>
|
|
24
24
|
);
|
|
25
25
|
}
|
|
@@ -118,7 +118,7 @@ function StatCard({ icon: Icon, label, value, gradient }) {
|
|
|
118
118
|
<div className="card-dark rounded-2xl p-5 hover:scale-[1.02] transition-all">
|
|
119
119
|
<div className="flex items-center justify-between">
|
|
120
120
|
<div>
|
|
121
|
-
<p className="text-xs text-
|
|
121
|
+
<p className="text-xs text-theme-muted uppercase tracking-wider mb-1">{label}</p>
|
|
122
122
|
<p className={`text-3xl font-bold bg-gradient-to-r ${gradient} bg-clip-text text-transparent`}>{value}</p>
|
|
123
123
|
</div>
|
|
124
124
|
<div className={`w-12 h-12 rounded-xl bg-gradient-to-br ${gradient} flex items-center justify-center opacity-80`}>
|
|
@@ -146,9 +146,9 @@ function Section({ title, icon: Icon, color, isOpen, onToggle, children }) {
|
|
|
146
146
|
<Icon className={`w-5 h-5 ${colors[color]}`} />
|
|
147
147
|
<h3 className={`text-lg font-semibold ${colors[color]}`}>{title}</h3>
|
|
148
148
|
</div>
|
|
149
|
-
<ChevronDown className={`w-5 h-5 text-
|
|
149
|
+
<ChevronDown className={`w-5 h-5 text-theme-muted transition-transform ${isOpen ? 'rotate-180' : ''}`} />
|
|
150
150
|
</button>
|
|
151
|
-
{isOpen && <div className="px-6 pb-6 pt-2 border-t border-
|
|
151
|
+
{isOpen && <div className="px-6 pb-6 pt-2 border-t border-theme">{children}</div>}
|
|
152
152
|
</div>
|
|
153
153
|
);
|
|
154
154
|
}
|
|
@@ -169,16 +169,16 @@ function ResourceItem({ path, description, usage, exports, warning, color, copyI
|
|
|
169
169
|
<FileCode className={`w-4 h-4 flex-shrink-0 ${colors[color].split(' ')[0]}`} />
|
|
170
170
|
<div className="flex-1 min-w-0">
|
|
171
171
|
<code className={`text-sm ${colors[color].split(' ')[0]}`}>{path}</code>
|
|
172
|
-
<p className="text-xs text-
|
|
172
|
+
<p className="text-xs text-theme-muted truncate mt-0.5">{description}</p>
|
|
173
173
|
</div>
|
|
174
|
-
<ChevronDown className={`w-4 h-4 text-
|
|
174
|
+
<ChevronDown className={`w-4 h-4 text-theme-muted transition-transform ${open ? 'rotate-180' : ''}`} />
|
|
175
175
|
</button>
|
|
176
176
|
|
|
177
177
|
{open && (
|
|
178
|
-
<div className="px-4 pb-4 pt-2 border-t border-
|
|
178
|
+
<div className="px-4 pb-4 pt-2 border-t border-theme space-y-3 animate-fade-in">
|
|
179
179
|
{exports?.length > 0 && (
|
|
180
180
|
<div>
|
|
181
|
-
<span className="text-[10px] text-
|
|
181
|
+
<span className="text-[10px] text-theme-muted uppercase tracking-wider">Exports:</span>
|
|
182
182
|
<div className="flex flex-wrap gap-1.5 mt-1.5">
|
|
183
183
|
{exports.map((e, i) => (
|
|
184
184
|
<span key={i} className="px-2 py-1 text-xs bg-white/5 text-blue-400 rounded border border-blue-500/20">{e}</span>
|
|
@@ -189,12 +189,12 @@ function ResourceItem({ path, description, usage, exports, warning, color, copyI
|
|
|
189
189
|
{usage && (
|
|
190
190
|
<div>
|
|
191
191
|
<div className="flex items-center justify-between mb-1.5">
|
|
192
|
-
<span className="text-[10px] text-
|
|
192
|
+
<span className="text-[10px] text-theme-muted uppercase tracking-wider">Uso:</span>
|
|
193
193
|
<button onClick={() => onCopy(usage, copyId)} className="text-xs text-blue-400 hover:text-blue-300 flex items-center gap-1">
|
|
194
194
|
{copiedItem === copyId ? <><Check className="w-3 h-3" /> Copiado</> : <><Copy className="w-3 h-3" /> Copiar</>}
|
|
195
195
|
</button>
|
|
196
196
|
</div>
|
|
197
|
-
<div className="bg-white/5 rounded-lg p-3 border border-
|
|
197
|
+
<div className="bg-white/5 rounded-lg p-3 border border-theme">
|
|
198
198
|
<code className="text-sm text-blue-400">{usage}</code>
|
|
199
199
|
</div>
|
|
200
200
|
</div>
|
|
@@ -220,16 +220,16 @@ function TableCard({ table, copyId, copiedItem, onCopy }) {
|
|
|
220
220
|
<code className="text-base font-semibold text-emerald-400">{table.name}</code>
|
|
221
221
|
</div>
|
|
222
222
|
<button onClick={() => onCopy(table.name, copyId)} className="p-1.5 hover:bg-white/5 rounded-lg transition-colors">
|
|
223
|
-
{copiedItem === copyId ? <Check className="w-3.5 h-3.5 text-emerald-400" /> : <Copy className="w-3.5 h-3.5 text-
|
|
223
|
+
{copiedItem === copyId ? <Check className="w-3.5 h-3.5 text-emerald-400" /> : <Copy className="w-3.5 h-3.5 text-theme-muted" />}
|
|
224
224
|
</button>
|
|
225
225
|
</div>
|
|
226
|
-
<p className="text-sm text-
|
|
226
|
+
<p className="text-sm text-theme-secondary mb-3">{table.description}</p>
|
|
227
227
|
{table.fields?.length > 0 && (
|
|
228
228
|
<div>
|
|
229
|
-
<span className="text-[10px] text-
|
|
229
|
+
<span className="text-[10px] text-theme-muted uppercase tracking-wider">Campos:</span>
|
|
230
230
|
<div className="flex flex-wrap gap-1 mt-1.5">
|
|
231
231
|
{table.fields.map((f, i) => (
|
|
232
|
-
<span key={i} className="text-xs bg-white/5 px-2 py-1 rounded text-
|
|
232
|
+
<span key={i} className="text-xs bg-white/5 px-2 py-1 rounded text-theme-secondary border border-emerald-500/10">{f}</span>
|
|
233
233
|
))}
|
|
234
234
|
</div>
|
|
235
235
|
</div>
|
|
@@ -28,11 +28,11 @@ export default function TechnicalDebt({ roadmap = {} }) {
|
|
|
28
28
|
if (allDebts.length === 0) {
|
|
29
29
|
return (
|
|
30
30
|
<div className="card-dark rounded-2xl p-12 text-center">
|
|
31
|
-
<div className="w-16 h-16 mx-auto mb-4 rounded-full bg-
|
|
32
|
-
<TrendingDown className="w-8 h-8 text-
|
|
31
|
+
<div className="w-16 h-16 mx-auto mb-4 rounded-full bg-matrix/10 flex items-center justify-center">
|
|
32
|
+
<TrendingDown className="w-8 h-8 text-matrix" />
|
|
33
33
|
</div>
|
|
34
|
-
<h3 className="text-lg font-semibold text-
|
|
35
|
-
<p className="text-
|
|
34
|
+
<h3 className="text-lg font-semibold text-matrix mb-2">Sin deuda técnica</h3>
|
|
35
|
+
<p className="text-theme-secondary text-sm">No hay deuda técnica registrada</p>
|
|
36
36
|
</div>
|
|
37
37
|
);
|
|
38
38
|
}
|
|
@@ -49,7 +49,7 @@ export default function TechnicalDebt({ roadmap = {} }) {
|
|
|
49
49
|
|
|
50
50
|
{/* Distribution Bar */}
|
|
51
51
|
<div className="card-dark rounded-2xl p-6">
|
|
52
|
-
<h3 className="text-sm text-
|
|
52
|
+
<h3 className="text-sm text-theme-secondary uppercase tracking-wider mb-4">Distribución</h3>
|
|
53
53
|
<div className="flex h-4 rounded-full overflow-hidden bg-white/5">
|
|
54
54
|
{grouped.high.length > 0 && (
|
|
55
55
|
<div
|
|
@@ -92,7 +92,7 @@ function StatCard({ label, value, gradient, icon: Icon }) {
|
|
|
92
92
|
<div className="card-dark rounded-2xl p-5 hover:scale-[1.02] transition-all">
|
|
93
93
|
<div className="flex items-center justify-between">
|
|
94
94
|
<div>
|
|
95
|
-
<p className="text-xs text-
|
|
95
|
+
<p className="text-xs text-theme-muted uppercase tracking-wider mb-1">{label}</p>
|
|
96
96
|
<p className={`text-3xl font-bold bg-gradient-to-r ${gradient} bg-clip-text text-transparent`}>{value}</p>
|
|
97
97
|
</div>
|
|
98
98
|
<Icon className={`w-8 h-8 opacity-50 bg-gradient-to-r ${gradient} bg-clip-text`} style={{ color: 'currentColor' }} />
|
|
@@ -105,6 +105,7 @@ function DebtSection({ severity, debts }) {
|
|
|
105
105
|
const config = {
|
|
106
106
|
high: {
|
|
107
107
|
title: 'Severidad Alta',
|
|
108
|
+
label: 'Alta',
|
|
108
109
|
textColor: 'text-rose-400',
|
|
109
110
|
bgColor: 'bg-rose-500/5',
|
|
110
111
|
borderColor: 'border-rose-500/20',
|
|
@@ -112,6 +113,7 @@ function DebtSection({ severity, debts }) {
|
|
|
112
113
|
},
|
|
113
114
|
medium: {
|
|
114
115
|
title: 'Severidad Media',
|
|
116
|
+
label: 'Media',
|
|
115
117
|
textColor: 'text-amber-400',
|
|
116
118
|
bgColor: 'bg-amber-500/5',
|
|
117
119
|
borderColor: 'border-amber-500/20',
|
|
@@ -119,6 +121,7 @@ function DebtSection({ severity, debts }) {
|
|
|
119
121
|
},
|
|
120
122
|
low: {
|
|
121
123
|
title: 'Severidad Baja',
|
|
124
|
+
label: 'Baja',
|
|
122
125
|
textColor: 'text-cyan-400',
|
|
123
126
|
bgColor: 'bg-cyan-500/5',
|
|
124
127
|
borderColor: 'border-cyan-500/20',
|
|
@@ -149,17 +152,17 @@ function DebtSection({ severity, debts }) {
|
|
|
149
152
|
<AlertTriangle className={`w-5 h-5 ${cfg.textColor}`} />
|
|
150
153
|
</div>
|
|
151
154
|
<div className="flex-1 min-w-0">
|
|
152
|
-
<p className="text-
|
|
155
|
+
<p className="text-theme-primary font-medium mb-2">{debt.description}</p>
|
|
153
156
|
<div className="flex flex-wrap items-center gap-x-4 gap-y-2 text-sm">
|
|
154
|
-
<span className="text-
|
|
155
|
-
<span className="text-
|
|
156
|
-
<span className="flex items-center gap-1 text-
|
|
157
|
+
<span className="text-theme-muted">Característica: <span className="text-cyber">{debt.featureName}</span></span>
|
|
158
|
+
<span className="text-theme-muted">Tarea: <span className="text-cyber">{debt.taskName}</span></span>
|
|
159
|
+
<span className="flex items-center gap-1 text-theme-muted">
|
|
157
160
|
<Clock className="w-3.5 h-3.5" /> {debt.estimated_effort}
|
|
158
161
|
</span>
|
|
159
162
|
</div>
|
|
160
163
|
</div>
|
|
161
164
|
<span className={`flex-shrink-0 px-2.5 py-1 text-[10px] font-bold text-white rounded-full uppercase tracking-wider ${cfg.badgeBg}`}>
|
|
162
|
-
{
|
|
165
|
+
{cfg.label}
|
|
163
166
|
</span>
|
|
164
167
|
</div>
|
|
165
168
|
</div>
|