create-huenei-frontend 0.1.2
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/bin/create-huenei-frontend.js +2 -0
- package/dist/index.js +99 -0
- package/dist/templates/clean/.cursor/skills/architecture/SKILL.md +26 -0
- package/dist/templates/clean/.cursor/skills/components-shadcn/SKILL.md +23 -0
- package/dist/templates/clean/.cursor/skills/daisyui/SKILL.md +98 -0
- package/dist/templates/clean/.cursor/skills/routing/SKILL.md +32 -0
- package/dist/templates/clean/.cursor/skills/testing/SKILL.md +55 -0
- package/dist/templates/clean/.cursor/skills/tooling-and-scripts/SKILL.md +24 -0
- package/dist/templates/clean/.cursor/skills/ui-and-styling/SKILL.md +32 -0
- package/dist/templates/clean/.cursor/skills/vibe-and-ia/SKILL.md +23 -0
- package/dist/templates/clean/.prettierrc +6 -0
- package/dist/templates/clean/.tanstack/tmp/c28007bb-2319511cf318e28129c8d8eb723db5fd +9 -0
- package/dist/templates/clean/.tanstack/tmp/c28007bb-bcef89e9e4593777e1c15ec4b4f32eea +9 -0
- package/dist/templates/clean/.vscode/extensions.json +7 -0
- package/dist/templates/clean/README.md +75 -0
- package/dist/templates/clean/components.json +22 -0
- package/dist/templates/clean/eslint.config.js +31 -0
- package/dist/templates/clean/index.html +13 -0
- package/dist/templates/clean/package.json +62 -0
- package/dist/templates/clean/pnpm-lock.yaml +4487 -0
- package/dist/templates/clean/pnpm-workspace.yaml +2 -0
- package/dist/templates/clean/src/assets/react.svg +1 -0
- package/dist/templates/clean/src/components/ui/badge.tsx +37 -0
- package/dist/templates/clean/src/components/ui/breadcrumb.tsx +106 -0
- package/dist/templates/clean/src/components/ui/button.tsx +58 -0
- package/dist/templates/clean/src/components/ui/card.tsx +72 -0
- package/dist/templates/clean/src/components/ui/form.tsx +165 -0
- package/dist/templates/clean/src/components/ui/input.tsx +22 -0
- package/dist/templates/clean/src/components/ui/label.tsx +24 -0
- package/dist/templates/clean/src/components/ui/password-input.tsx +41 -0
- package/dist/templates/clean/src/components/ui/separator.tsx +28 -0
- package/dist/templates/clean/src/components/ui/tabs.tsx +62 -0
- package/dist/templates/clean/src/components/ui/textarea.tsx +21 -0
- package/dist/templates/clean/src/index.css +104 -0
- package/dist/templates/clean/src/lib/queryClient.ts +11 -0
- package/dist/templates/clean/src/lib/utils.ts +6 -0
- package/dist/templates/clean/src/main.tsx +33 -0
- package/dist/templates/clean/src/routeTree.gen.ts +77 -0
- package/dist/templates/clean/src/router.tsx +13 -0
- package/dist/templates/clean/src/routes/__root.tsx +82 -0
- package/dist/templates/clean/src/routes/index.tsx +187 -0
- package/dist/templates/clean/src/routes/otra-ruta.tsx +319 -0
- package/dist/templates/clean/src/test/setup.ts +1 -0
- package/dist/templates/clean/tsconfig.app.json +34 -0
- package/dist/templates/clean/tsconfig.json +10 -0
- package/dist/templates/clean/tsconfig.node.json +26 -0
- package/dist/templates/clean/vite.config.ts +22 -0
- package/dist/templates/clean/vitest.config.ts +9 -0
- package/dist/templates/help/.cursor/skills/architecture/SKILL.md +26 -0
- package/dist/templates/help/.cursor/skills/components-shadcn/SKILL.md +23 -0
- package/dist/templates/help/.cursor/skills/daisyui/SKILL.md +98 -0
- package/dist/templates/help/.cursor/skills/routing/SKILL.md +32 -0
- package/dist/templates/help/.cursor/skills/testing/SKILL.md +55 -0
- package/dist/templates/help/.cursor/skills/tooling-and-scripts/SKILL.md +24 -0
- package/dist/templates/help/.cursor/skills/ui-and-styling/SKILL.md +32 -0
- package/dist/templates/help/.cursor/skills/vibe-and-ia/SKILL.md +23 -0
- package/dist/templates/help/.prettierrc +6 -0
- package/dist/templates/help/.tanstack/tmp/c28007bb-2319511cf318e28129c8d8eb723db5fd +9 -0
- package/dist/templates/help/.tanstack/tmp/c28007bb-bcef89e9e4593777e1c15ec4b4f32eea +9 -0
- package/dist/templates/help/.vscode/extensions.json +7 -0
- package/dist/templates/help/README.md +75 -0
- package/dist/templates/help/components.json +22 -0
- package/dist/templates/help/eslint.config.js +31 -0
- package/dist/templates/help/index.html +13 -0
- package/dist/templates/help/package.json +62 -0
- package/dist/templates/help/pnpm-lock.yaml +4487 -0
- package/dist/templates/help/pnpm-workspace.yaml +2 -0
- package/dist/templates/help/src/assets/react.svg +1 -0
- package/dist/templates/help/src/components/documentacion/entorno.tsx +99 -0
- package/dist/templates/help/src/components/documentacion/estructura.tsx +100 -0
- package/dist/templates/help/src/components/documentacion/figma-mcp.tsx +200 -0
- package/dist/templates/help/src/components/documentacion/inicio.tsx +69 -0
- package/dist/templates/help/src/components/documentacion/instalacion.tsx +72 -0
- package/dist/templates/help/src/components/documentacion/personalizacion.tsx +163 -0
- package/dist/templates/help/src/components/documentacion/rutas.tsx +138 -0
- package/dist/templates/help/src/components/documentacion/stack.tsx +401 -0
- package/dist/templates/help/src/components/ui/badge.tsx +37 -0
- package/dist/templates/help/src/components/ui/breadcrumb.tsx +106 -0
- package/dist/templates/help/src/components/ui/button.tsx +58 -0
- package/dist/templates/help/src/components/ui/card.tsx +72 -0
- package/dist/templates/help/src/components/ui/form.tsx +165 -0
- package/dist/templates/help/src/components/ui/input.tsx +22 -0
- package/dist/templates/help/src/components/ui/label.tsx +24 -0
- package/dist/templates/help/src/components/ui/password-input.tsx +41 -0
- package/dist/templates/help/src/components/ui/separator.tsx +28 -0
- package/dist/templates/help/src/components/ui/tabs.tsx +62 -0
- package/dist/templates/help/src/components/ui/textarea.tsx +21 -0
- package/dist/templates/help/src/data/proyectos.json +56 -0
- package/dist/templates/help/src/index.css +104 -0
- package/dist/templates/help/src/lib/queryClient.ts +11 -0
- package/dist/templates/help/src/lib/utils.ts +6 -0
- package/dist/templates/help/src/main.tsx +33 -0
- package/dist/templates/help/src/routeTree.gen.ts +241 -0
- package/dist/templates/help/src/router.tsx +13 -0
- package/dist/templates/help/src/routes/__root.tsx +92 -0
- package/dist/templates/help/src/routes/auth/iniciar-sesion.tsx +139 -0
- package/dist/templates/help/src/routes/auth/registro.tsx +205 -0
- package/dist/templates/help/src/routes/contacto.tsx +60 -0
- package/dist/templates/help/src/routes/dashbord.tsx +9 -0
- package/dist/templates/help/src/routes/documentacion.tsx +80 -0
- package/dist/templates/help/src/routes/index.test.tsx +42 -0
- package/dist/templates/help/src/routes/index.tsx +211 -0
- package/dist/templates/help/src/routes/perfil.tsx +9 -0
- package/dist/templates/help/src/routes/proyectos.$proyectoId.tsx +156 -0
- package/dist/templates/help/src/routes/proyectos.tsx +93 -0
- package/dist/templates/help/src/test/setup.ts +1 -0
- package/dist/templates/help/tsconfig.app.json +34 -0
- package/dist/templates/help/tsconfig.json +10 -0
- package/dist/templates/help/tsconfig.node.json +26 -0
- package/dist/templates/help/vite.config.ts +22 -0
- package/dist/templates/help/vitest.config.ts +9 -0
- package/dist/test-cli.js +48 -0
- package/package.json +25 -0
- package/templates/clean/.cursor/skills/architecture/SKILL.md +26 -0
- package/templates/clean/.cursor/skills/components-shadcn/SKILL.md +23 -0
- package/templates/clean/.cursor/skills/daisyui/SKILL.md +98 -0
- package/templates/clean/.cursor/skills/routing/SKILL.md +32 -0
- package/templates/clean/.cursor/skills/testing/SKILL.md +55 -0
- package/templates/clean/.cursor/skills/tooling-and-scripts/SKILL.md +24 -0
- package/templates/clean/.cursor/skills/ui-and-styling/SKILL.md +32 -0
- package/templates/clean/.cursor/skills/vibe-and-ia/SKILL.md +23 -0
- package/templates/clean/.prettierrc +6 -0
- package/templates/clean/.tanstack/tmp/c28007bb-2319511cf318e28129c8d8eb723db5fd +9 -0
- package/templates/clean/.tanstack/tmp/c28007bb-bcef89e9e4593777e1c15ec4b4f32eea +9 -0
- package/templates/clean/.vscode/extensions.json +7 -0
- package/templates/clean/README.md +75 -0
- package/templates/clean/components.json +22 -0
- package/templates/clean/eslint.config.js +31 -0
- package/templates/clean/index.html +13 -0
- package/templates/clean/package.json +62 -0
- package/templates/clean/pnpm-lock.yaml +4487 -0
- package/templates/clean/pnpm-workspace.yaml +2 -0
- package/templates/clean/src/assets/react.svg +1 -0
- package/templates/clean/src/components/ui/badge.tsx +37 -0
- package/templates/clean/src/components/ui/breadcrumb.tsx +106 -0
- package/templates/clean/src/components/ui/button.tsx +58 -0
- package/templates/clean/src/components/ui/card.tsx +72 -0
- package/templates/clean/src/components/ui/form.tsx +165 -0
- package/templates/clean/src/components/ui/input.tsx +22 -0
- package/templates/clean/src/components/ui/label.tsx +24 -0
- package/templates/clean/src/components/ui/password-input.tsx +41 -0
- package/templates/clean/src/components/ui/separator.tsx +28 -0
- package/templates/clean/src/components/ui/tabs.tsx +62 -0
- package/templates/clean/src/components/ui/textarea.tsx +21 -0
- package/templates/clean/src/index.css +104 -0
- package/templates/clean/src/lib/queryClient.ts +11 -0
- package/templates/clean/src/lib/utils.ts +6 -0
- package/templates/clean/src/main.tsx +33 -0
- package/templates/clean/src/routeTree.gen.ts +77 -0
- package/templates/clean/src/router.tsx +13 -0
- package/templates/clean/src/routes/__root.tsx +82 -0
- package/templates/clean/src/routes/index.tsx +187 -0
- package/templates/clean/src/routes/otra-ruta.tsx +319 -0
- package/templates/clean/src/test/setup.ts +1 -0
- package/templates/clean/tsconfig.app.json +34 -0
- package/templates/clean/tsconfig.json +10 -0
- package/templates/clean/tsconfig.node.json +26 -0
- package/templates/clean/vite.config.ts +22 -0
- package/templates/clean/vitest.config.ts +9 -0
- package/templates/help/.cursor/skills/architecture/SKILL.md +26 -0
- package/templates/help/.cursor/skills/components-shadcn/SKILL.md +23 -0
- package/templates/help/.cursor/skills/daisyui/SKILL.md +98 -0
- package/templates/help/.cursor/skills/routing/SKILL.md +32 -0
- package/templates/help/.cursor/skills/testing/SKILL.md +55 -0
- package/templates/help/.cursor/skills/tooling-and-scripts/SKILL.md +24 -0
- package/templates/help/.cursor/skills/ui-and-styling/SKILL.md +32 -0
- package/templates/help/.cursor/skills/vibe-and-ia/SKILL.md +23 -0
- package/templates/help/.prettierrc +6 -0
- package/templates/help/.tanstack/tmp/c28007bb-2319511cf318e28129c8d8eb723db5fd +9 -0
- package/templates/help/.tanstack/tmp/c28007bb-bcef89e9e4593777e1c15ec4b4f32eea +9 -0
- package/templates/help/.vscode/extensions.json +7 -0
- package/templates/help/README.md +75 -0
- package/templates/help/components.json +22 -0
- package/templates/help/eslint.config.js +31 -0
- package/templates/help/index.html +13 -0
- package/templates/help/package.json +62 -0
- package/templates/help/pnpm-lock.yaml +4487 -0
- package/templates/help/pnpm-workspace.yaml +2 -0
- package/templates/help/src/assets/react.svg +1 -0
- package/templates/help/src/components/documentacion/entorno.tsx +99 -0
- package/templates/help/src/components/documentacion/estructura.tsx +100 -0
- package/templates/help/src/components/documentacion/figma-mcp.tsx +200 -0
- package/templates/help/src/components/documentacion/inicio.tsx +69 -0
- package/templates/help/src/components/documentacion/instalacion.tsx +72 -0
- package/templates/help/src/components/documentacion/personalizacion.tsx +163 -0
- package/templates/help/src/components/documentacion/rutas.tsx +138 -0
- package/templates/help/src/components/documentacion/stack.tsx +401 -0
- package/templates/help/src/components/ui/badge.tsx +37 -0
- package/templates/help/src/components/ui/breadcrumb.tsx +106 -0
- package/templates/help/src/components/ui/button.tsx +58 -0
- package/templates/help/src/components/ui/card.tsx +72 -0
- package/templates/help/src/components/ui/form.tsx +165 -0
- package/templates/help/src/components/ui/input.tsx +22 -0
- package/templates/help/src/components/ui/label.tsx +24 -0
- package/templates/help/src/components/ui/password-input.tsx +41 -0
- package/templates/help/src/components/ui/separator.tsx +28 -0
- package/templates/help/src/components/ui/tabs.tsx +62 -0
- package/templates/help/src/components/ui/textarea.tsx +21 -0
- package/templates/help/src/data/proyectos.json +56 -0
- package/templates/help/src/index.css +104 -0
- package/templates/help/src/lib/queryClient.ts +11 -0
- package/templates/help/src/lib/utils.ts +6 -0
- package/templates/help/src/main.tsx +33 -0
- package/templates/help/src/routeTree.gen.ts +241 -0
- package/templates/help/src/router.tsx +13 -0
- package/templates/help/src/routes/__root.tsx +92 -0
- package/templates/help/src/routes/auth/iniciar-sesion.tsx +139 -0
- package/templates/help/src/routes/auth/registro.tsx +205 -0
- package/templates/help/src/routes/contacto.tsx +60 -0
- package/templates/help/src/routes/dashbord.tsx +9 -0
- package/templates/help/src/routes/documentacion.tsx +80 -0
- package/templates/help/src/routes/index.test.tsx +42 -0
- package/templates/help/src/routes/index.tsx +211 -0
- package/templates/help/src/routes/perfil.tsx +9 -0
- package/templates/help/src/routes/proyectos.$proyectoId.tsx +156 -0
- package/templates/help/src/routes/proyectos.tsx +93 -0
- package/templates/help/src/test/setup.ts +1 -0
- package/templates/help/tsconfig.app.json +34 -0
- package/templates/help/tsconfig.json +10 -0
- package/templates/help/tsconfig.node.json +26 -0
- package/templates/help/vite.config.ts +22 -0
- package/templates/help/vitest.config.ts +9 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
|
|
2
|
+
import { Separator } from "@/components/ui/separator";
|
|
3
|
+
import { Settings } from "lucide-react";
|
|
4
|
+
|
|
5
|
+
export function PersonalizacionTab() {
|
|
6
|
+
return (
|
|
7
|
+
<Card>
|
|
8
|
+
<CardHeader>
|
|
9
|
+
<div className="flex items-center gap-2">
|
|
10
|
+
<Settings className="h-5 w-5" />
|
|
11
|
+
<CardTitle>Personalización y Configuración</CardTitle>
|
|
12
|
+
</div>
|
|
13
|
+
<CardDescription>
|
|
14
|
+
Cómo personalizar el template según las necesidades del proyecto.
|
|
15
|
+
</CardDescription>
|
|
16
|
+
</CardHeader>
|
|
17
|
+
<CardContent className="space-y-4">
|
|
18
|
+
<div className="p-4 bg-slate-50 dark:bg-slate-800 rounded-lg border border-slate-200 dark:border-slate-700">
|
|
19
|
+
<h3 className="text-lg font-semibold mb-3">Índice</h3>
|
|
20
|
+
<ul className="space-y-2 text-sm">
|
|
21
|
+
<li>
|
|
22
|
+
<a href="#personalizacion-tema" className="text-blue-600 hover:underline">
|
|
23
|
+
Tema y colores
|
|
24
|
+
</a>
|
|
25
|
+
</li>
|
|
26
|
+
<li>
|
|
27
|
+
<a href="#personalizacion-tailwind" className="text-blue-600 hover:underline">
|
|
28
|
+
Configuración de Tailwind CSS v4
|
|
29
|
+
</a>
|
|
30
|
+
</li>
|
|
31
|
+
<li>
|
|
32
|
+
<a href="#personalizacion-alias" className="text-blue-600 hover:underline">
|
|
33
|
+
Alias de importación
|
|
34
|
+
</a>
|
|
35
|
+
</li>
|
|
36
|
+
<li>
|
|
37
|
+
<a href="#personalizacion-dependencias" className="text-blue-600 hover:underline">
|
|
38
|
+
Agregar nuevas dependencias
|
|
39
|
+
</a>
|
|
40
|
+
</li>
|
|
41
|
+
<li>
|
|
42
|
+
<a href="#personalizacion-skills" className="text-blue-600 hover:underline">
|
|
43
|
+
Skills y Reglas del Proyecto
|
|
44
|
+
</a>
|
|
45
|
+
</li>
|
|
46
|
+
<li>
|
|
47
|
+
<a href="#personalizacion-testing" className="text-blue-600 hover:underline">
|
|
48
|
+
Testing
|
|
49
|
+
</a>
|
|
50
|
+
</li>
|
|
51
|
+
</ul>
|
|
52
|
+
</div>
|
|
53
|
+
<Separator />
|
|
54
|
+
<div id="personalizacion-tema">
|
|
55
|
+
<h3 className="text-lg font-semibold mb-2">Tema y colores</h3>
|
|
56
|
+
<p className="text-slate-600 mb-3">
|
|
57
|
+
Los colores se configuran en{" "}
|
|
58
|
+
<code className="bg-slate-100 px-1 rounded">src/index.css</code> usando{" "}
|
|
59
|
+
<code className="bg-slate-100 px-1 rounded">@theme</code> y en{" "}
|
|
60
|
+
<code className="bg-slate-100 px-1 rounded">components.json</code> para shadcn/ui.
|
|
61
|
+
</p>
|
|
62
|
+
<div className="mt-3 p-3 bg-slate-50 dark:bg-slate-800 rounded-lg">
|
|
63
|
+
<p className="text-sm text-slate-600 dark:text-slate-400">
|
|
64
|
+
<strong>Nota:</strong> Los colores deben seguir el diseño de Figma. No inventar
|
|
65
|
+
paletas de colores.
|
|
66
|
+
</p>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
<Separator />
|
|
70
|
+
<div id="personalizacion-tailwind">
|
|
71
|
+
<h3 className="text-lg font-semibold mb-2">Configuración de Tailwind CSS v4</h3>
|
|
72
|
+
<p className="text-slate-600 mb-3">
|
|
73
|
+
Tailwind CSS v4 se configura directamente en el archivo CSS usando{" "}
|
|
74
|
+
<code className="bg-slate-100 px-1 rounded">@theme</code>:
|
|
75
|
+
</p>
|
|
76
|
+
<div className="bg-slate-100 rounded-lg p-4 font-mono text-sm">
|
|
77
|
+
<pre className="text-xs">
|
|
78
|
+
{`@theme {
|
|
79
|
+
--color-primary: #3b82f6;
|
|
80
|
+
--font-sans: system-ui, sans-serif;
|
|
81
|
+
/* ... más tokens */
|
|
82
|
+
}`}
|
|
83
|
+
</pre>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
<Separator />
|
|
87
|
+
<div id="personalizacion-alias">
|
|
88
|
+
<h3 className="text-lg font-semibold mb-2">Alias de importación</h3>
|
|
89
|
+
<p className="text-slate-600 mb-3">
|
|
90
|
+
Los alias están configurados en{" "}
|
|
91
|
+
<code className="bg-slate-100 px-1 rounded">tsconfig.json</code> y{" "}
|
|
92
|
+
<code className="bg-slate-100 px-1 rounded">vite.config.ts</code>:
|
|
93
|
+
</p>
|
|
94
|
+
<div className="bg-slate-100 rounded-lg p-4 font-mono text-sm space-y-1">
|
|
95
|
+
<div>
|
|
96
|
+
<code>@/components</code> → <code>src/components</code>
|
|
97
|
+
</div>
|
|
98
|
+
<div>
|
|
99
|
+
<code>@/lib</code> → <code>src/lib</code>
|
|
100
|
+
</div>
|
|
101
|
+
<div>
|
|
102
|
+
<code>@/routes</code> → <code>src/routes</code>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
<p className="text-sm text-slate-600 mt-2">
|
|
106
|
+
Evitar imports relativos profundos. Usar siempre el alias{" "}
|
|
107
|
+
<code className="bg-slate-100 px-1 rounded">@/</code>.
|
|
108
|
+
</p>
|
|
109
|
+
</div>
|
|
110
|
+
<Separator />
|
|
111
|
+
<div id="personalizacion-dependencias">
|
|
112
|
+
<h3 className="text-lg font-semibold mb-2">Agregar nuevas dependencias</h3>
|
|
113
|
+
<div className="bg-slate-100 rounded-lg p-4 font-mono text-sm mb-2">
|
|
114
|
+
<code>pnpm add [nombre-paquete]</code>
|
|
115
|
+
</div>
|
|
116
|
+
<p className="text-sm text-slate-600 mb-3">
|
|
117
|
+
Para dependencias de desarrollo, usa{" "}
|
|
118
|
+
<code className="bg-slate-100 px-1 rounded">-D</code>:
|
|
119
|
+
</p>
|
|
120
|
+
<div className="bg-slate-100 rounded-lg p-4 font-mono text-sm">
|
|
121
|
+
<code>pnpm add -D [nombre-paquete]</code>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
<Separator />
|
|
125
|
+
<div id="personalizacion-skills">
|
|
126
|
+
<h3 className="text-lg font-semibold mb-2">Skills y Reglas del Proyecto</h3>
|
|
127
|
+
<p className="text-slate-600 mb-3">
|
|
128
|
+
El proyecto incluye skills y reglas en{" "}
|
|
129
|
+
<code className="bg-slate-100 px-1 rounded">.cursor/skills/</code> que definen:
|
|
130
|
+
</p>
|
|
131
|
+
<ul className="list-disc list-inside space-y-2 text-slate-600">
|
|
132
|
+
<li>Arquitectura y estructura del proyecto</li>
|
|
133
|
+
<li>Reglas de routing con TanStack Router</li>
|
|
134
|
+
<li>Uso de componentes shadcn/ui</li>
|
|
135
|
+
<li>Reglas de UI y estilos con Tailwind</li>
|
|
136
|
+
<li>Configuración de testing</li>
|
|
137
|
+
<li>Comportamiento de la IA en el proyecto</li>
|
|
138
|
+
</ul>
|
|
139
|
+
<div className="mt-3 p-3 bg-blue-50 dark:bg-blue-900/20 rounded-lg border border-blue-200 dark:border-blue-800">
|
|
140
|
+
<p className="text-sm text-blue-800 dark:text-blue-200">
|
|
141
|
+
<strong>Importante:</strong> Estas skills guían a Cursor para mantener la consistencia
|
|
142
|
+
y seguir las mejores prácticas del proyecto.
|
|
143
|
+
</p>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
<Separator />
|
|
147
|
+
<div id="personalizacion-testing">
|
|
148
|
+
<h3 className="text-lg font-semibold mb-2">Testing</h3>
|
|
149
|
+
<p className="text-slate-600 mb-3">
|
|
150
|
+
El proyecto está configurado con Vitest y React Testing Library:
|
|
151
|
+
</p>
|
|
152
|
+
<div className="bg-slate-100 rounded-lg p-4 font-mono text-sm mb-2">
|
|
153
|
+
<code>pnpm test</code>
|
|
154
|
+
</div>
|
|
155
|
+
<p className="text-sm text-slate-600">
|
|
156
|
+
Los tests se encuentran junto a los componentes o en{" "}
|
|
157
|
+
<code className="bg-slate-100 px-1 rounded">src/test/</code>.
|
|
158
|
+
</p>
|
|
159
|
+
</div>
|
|
160
|
+
</CardContent>
|
|
161
|
+
</Card>
|
|
162
|
+
);
|
|
163
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
|
|
2
|
+
import { Separator } from "@/components/ui/separator";
|
|
3
|
+
import { Zap } from "lucide-react";
|
|
4
|
+
|
|
5
|
+
export function RutasTab() {
|
|
6
|
+
return (
|
|
7
|
+
<Card>
|
|
8
|
+
<CardHeader>
|
|
9
|
+
<div className="flex items-center gap-2">
|
|
10
|
+
<Zap className="h-5 w-5" />
|
|
11
|
+
<CardTitle>Rutas y Navegación</CardTitle>
|
|
12
|
+
</div>
|
|
13
|
+
<CardDescription>
|
|
14
|
+
Sistema de rutas type-safe con TanStack Router usando file-based routing.
|
|
15
|
+
</CardDescription>
|
|
16
|
+
</CardHeader>
|
|
17
|
+
<CardContent className="space-y-4">
|
|
18
|
+
<div className="p-4 bg-slate-50 dark:bg-slate-800 rounded-lg border border-slate-200 dark:border-slate-700">
|
|
19
|
+
<h3 className="text-lg font-semibold mb-3">Índice</h3>
|
|
20
|
+
<ul className="space-y-2 text-sm">
|
|
21
|
+
<li>
|
|
22
|
+
<a href="#rutas-principios" className="text-blue-600 hover:underline">
|
|
23
|
+
Principios
|
|
24
|
+
</a>
|
|
25
|
+
</li>
|
|
26
|
+
<li>
|
|
27
|
+
<a href="#rutas-crear" className="text-blue-600 hover:underline">
|
|
28
|
+
Crear una nueva ruta
|
|
29
|
+
</a>
|
|
30
|
+
</li>
|
|
31
|
+
<li>
|
|
32
|
+
<a href="#rutas-dinamicas" className="text-blue-600 hover:underline">
|
|
33
|
+
Rutas dinámicas
|
|
34
|
+
</a>
|
|
35
|
+
</li>
|
|
36
|
+
<li>
|
|
37
|
+
<a href="#rutas-navegacion" className="text-blue-600 hover:underline">
|
|
38
|
+
Navegación
|
|
39
|
+
</a>
|
|
40
|
+
</li>
|
|
41
|
+
<li>
|
|
42
|
+
<a href="#rutas-restricciones" className="text-blue-600 hover:underline">
|
|
43
|
+
Restricciones importantes
|
|
44
|
+
</a>
|
|
45
|
+
</li>
|
|
46
|
+
</ul>
|
|
47
|
+
</div>
|
|
48
|
+
<Separator />
|
|
49
|
+
<div id="rutas-principios">
|
|
50
|
+
<h3 className="text-lg font-semibold mb-2">Principios</h3>
|
|
51
|
+
<ul className="list-disc list-inside space-y-2 text-slate-600">
|
|
52
|
+
<li>Usar exclusivamente file-based routing</li>
|
|
53
|
+
<li>
|
|
54
|
+
Las rutas viven en <code className="bg-slate-100 px-1 rounded">src/routes/</code>
|
|
55
|
+
</li>
|
|
56
|
+
<li>La URL es fuente de verdad</li>
|
|
57
|
+
<li>Un componente por archivo</li>
|
|
58
|
+
</ul>
|
|
59
|
+
</div>
|
|
60
|
+
<Separator />
|
|
61
|
+
<div id="rutas-crear">
|
|
62
|
+
<h3 className="text-lg font-semibold mb-2">Crear una nueva ruta</h3>
|
|
63
|
+
<p className="text-slate-600 mb-3">
|
|
64
|
+
Las rutas se crean automáticamente basándose en la estructura de archivos:
|
|
65
|
+
</p>
|
|
66
|
+
<div className="bg-slate-100 rounded-lg p-4 font-mono text-sm">
|
|
67
|
+
<pre className="text-xs">
|
|
68
|
+
{`// src/routes/nueva-ruta.tsx
|
|
69
|
+
import { createFileRoute } from '@tanstack/react-router'
|
|
70
|
+
|
|
71
|
+
export const Route = createFileRoute('/nueva-ruta')({
|
|
72
|
+
component: NuevaRuta,
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
function NuevaRuta() {
|
|
76
|
+
return <div>Contenido de la ruta</div>
|
|
77
|
+
}`}
|
|
78
|
+
</pre>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
<Separator />
|
|
82
|
+
<div id="rutas-dinamicas">
|
|
83
|
+
<h3 className="text-lg font-semibold mb-2">Rutas dinámicas</h3>
|
|
84
|
+
<p className="text-slate-600 mb-3">
|
|
85
|
+
Para rutas con parámetros, usa el prefijo{" "}
|
|
86
|
+
<code className="bg-slate-100 px-1 rounded">$</code> en el nombre del archivo:
|
|
87
|
+
</p>
|
|
88
|
+
<div className="bg-slate-100 rounded-lg p-4 font-mono text-sm">
|
|
89
|
+
<pre className="text-xs">
|
|
90
|
+
{`// src/routes/usuario.$id.tsx
|
|
91
|
+
export const Route = createFileRoute('/usuario/$id')({
|
|
92
|
+
component: Usuario,
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
function Usuario() {
|
|
96
|
+
const { id } = Route.useParams()
|
|
97
|
+
return <div>Usuario: {id}</div>
|
|
98
|
+
}`}
|
|
99
|
+
</pre>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
<Separator />
|
|
103
|
+
<div id="rutas-navegacion">
|
|
104
|
+
<h3 className="text-lg font-semibold mb-2">Navegación</h3>
|
|
105
|
+
<p className="text-slate-600 mb-3">
|
|
106
|
+
Usar <code className="bg-slate-100 px-1 rounded">Link</code> de TanStack Router. No usar{" "}
|
|
107
|
+
<code className="bg-slate-100 px-1 rounded">useNavigate</code> directamente:
|
|
108
|
+
</p>
|
|
109
|
+
<div className="bg-slate-100 rounded-lg p-4 font-mono text-sm">
|
|
110
|
+
<pre className="text-xs">
|
|
111
|
+
{`import { Link } from '@tanstack/react-router'
|
|
112
|
+
|
|
113
|
+
<Link to="/proyectos">Proyectos</Link>
|
|
114
|
+
<Link
|
|
115
|
+
to="/proyectos/$proyectoId"
|
|
116
|
+
params={{ proyectoId: '1' }}
|
|
117
|
+
>
|
|
118
|
+
Ver Proyecto
|
|
119
|
+
</Link>`}
|
|
120
|
+
</pre>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
<Separator />
|
|
124
|
+
<div id="rutas-restricciones">
|
|
125
|
+
<h3 className="text-lg font-semibold mb-2">Restricciones importantes</h3>
|
|
126
|
+
<ul className="list-disc list-inside space-y-2 text-slate-600">
|
|
127
|
+
<li>
|
|
128
|
+
No usar <code className="bg-slate-100 px-1 rounded">useEffect</code> para sincronizar
|
|
129
|
+
URL o params
|
|
130
|
+
</li>
|
|
131
|
+
<li>Loaders y actions solo para datos</li>
|
|
132
|
+
<li>El router se regenera automáticamente al agregar/modificar rutas</li>
|
|
133
|
+
</ul>
|
|
134
|
+
</div>
|
|
135
|
+
</CardContent>
|
|
136
|
+
</Card>
|
|
137
|
+
);
|
|
138
|
+
}
|