create-bunspace 0.1.1 → 0.2.1

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 (84) hide show
  1. package/dist/bin.js +132 -1
  2. package/dist/templates/fumadocs/.env.example +49 -0
  3. package/dist/templates/fumadocs/.github/workflows/deploy.yml +89 -0
  4. package/dist/templates/fumadocs/CLAUDE.md +164 -0
  5. package/dist/templates/fumadocs/LICENSE +21 -0
  6. package/dist/templates/fumadocs/MUST-FOLLOW-GUIDELINES.md +269 -0
  7. package/dist/templates/fumadocs/README.md +319 -0
  8. package/dist/templates/fumadocs/biome.json +41 -0
  9. package/dist/templates/fumadocs/bun.lock +883 -0
  10. package/dist/templates/fumadocs/content-template/docs/getting-started/index.mdx +92 -0
  11. package/dist/templates/fumadocs/content-template/docs/getting-started/installation.mdx +168 -0
  12. package/dist/templates/fumadocs/content-template/docs/getting-started/quick-start.mdx +168 -0
  13. package/dist/templates/fumadocs/content-template/docs/index.mdx +70 -0
  14. package/dist/templates/fumadocs/content-template/en/docs/getting-started/index.mdx +92 -0
  15. package/dist/templates/fumadocs/content-template/en/docs/getting-started/installation.mdx +168 -0
  16. package/dist/templates/fumadocs/content-template/en/docs/getting-started/quick-start.mdx +168 -0
  17. package/dist/templates/fumadocs/content-template/en/docs/index.mdx +69 -0
  18. package/dist/templates/fumadocs/messages/en.json +14 -0
  19. package/dist/templates/fumadocs/messages/es.json +14 -0
  20. package/dist/templates/fumadocs/next.config.mjs +35 -0
  21. package/dist/templates/fumadocs/oxlint.json +14 -0
  22. package/dist/templates/fumadocs/package.json +35 -0
  23. package/dist/templates/fumadocs/postcss.config.mjs +5 -0
  24. package/dist/templates/fumadocs/source.config.ts +31 -0
  25. package/dist/templates/fumadocs/src/app/(home)/layout.tsx +6 -0
  26. package/dist/templates/fumadocs/src/app/(home)/page.tsx +132 -0
  27. package/dist/templates/fumadocs/src/app/api/search/route.ts +9 -0
  28. package/dist/templates/fumadocs/src/app/docs/[[...slug]]/page.tsx +62 -0
  29. package/dist/templates/fumadocs/src/app/docs/layout.tsx +11 -0
  30. package/dist/templates/fumadocs/src/app/en/docs/[[...slug]]/page.tsx +61 -0
  31. package/dist/templates/fumadocs/src/app/en/docs/layout.tsx +11 -0
  32. package/dist/templates/fumadocs/src/app/global.css +3 -0
  33. package/dist/templates/fumadocs/src/app/layout.tsx +47 -0
  34. package/dist/templates/fumadocs/src/app/llms-full.txt/route.ts +10 -0
  35. package/dist/templates/fumadocs/src/app/og/docs/[...slug]/route.tsx +27 -0
  36. package/dist/templates/fumadocs/src/components/language-selector.tsx +56 -0
  37. package/dist/templates/fumadocs/src/components/markdown-actions.tsx +61 -0
  38. package/dist/templates/fumadocs/src/config/site.config.ts +115 -0
  39. package/dist/templates/fumadocs/src/lib/layout.shared.tsx +23 -0
  40. package/dist/templates/fumadocs/src/lib/source.ts +91 -0
  41. package/dist/templates/fumadocs/src/mdx-components.tsx +14 -0
  42. package/dist/templates/fumadocs/tsconfig.json +46 -0
  43. package/package.json +1 -1
  44. package/templates/fumadocs/.env.example +49 -0
  45. package/templates/fumadocs/.github/workflows/deploy.yml +89 -0
  46. package/templates/fumadocs/CLAUDE.md +164 -0
  47. package/templates/fumadocs/LICENSE +21 -0
  48. package/templates/fumadocs/MUST-FOLLOW-GUIDELINES.md +269 -0
  49. package/templates/fumadocs/README.md +319 -0
  50. package/templates/fumadocs/biome.json +41 -0
  51. package/templates/fumadocs/bun.lock +883 -0
  52. package/templates/fumadocs/content-template/docs/getting-started/index.mdx +92 -0
  53. package/templates/fumadocs/content-template/docs/getting-started/installation.mdx +168 -0
  54. package/templates/fumadocs/content-template/docs/getting-started/quick-start.mdx +168 -0
  55. package/templates/fumadocs/content-template/docs/index.mdx +70 -0
  56. package/templates/fumadocs/content-template/en/docs/getting-started/index.mdx +92 -0
  57. package/templates/fumadocs/content-template/en/docs/getting-started/installation.mdx +168 -0
  58. package/templates/fumadocs/content-template/en/docs/getting-started/quick-start.mdx +168 -0
  59. package/templates/fumadocs/content-template/en/docs/index.mdx +69 -0
  60. package/templates/fumadocs/messages/en.json +14 -0
  61. package/templates/fumadocs/messages/es.json +14 -0
  62. package/templates/fumadocs/next.config.mjs +35 -0
  63. package/templates/fumadocs/oxlint.json +14 -0
  64. package/templates/fumadocs/package.json +35 -0
  65. package/templates/fumadocs/postcss.config.mjs +5 -0
  66. package/templates/fumadocs/source.config.ts +31 -0
  67. package/templates/fumadocs/src/app/(home)/layout.tsx +6 -0
  68. package/templates/fumadocs/src/app/(home)/page.tsx +132 -0
  69. package/templates/fumadocs/src/app/api/search/route.ts +9 -0
  70. package/templates/fumadocs/src/app/docs/[[...slug]]/page.tsx +62 -0
  71. package/templates/fumadocs/src/app/docs/layout.tsx +11 -0
  72. package/templates/fumadocs/src/app/en/docs/[[...slug]]/page.tsx +61 -0
  73. package/templates/fumadocs/src/app/en/docs/layout.tsx +11 -0
  74. package/templates/fumadocs/src/app/global.css +3 -0
  75. package/templates/fumadocs/src/app/layout.tsx +47 -0
  76. package/templates/fumadocs/src/app/llms-full.txt/route.ts +10 -0
  77. package/templates/fumadocs/src/app/og/docs/[...slug]/route.tsx +27 -0
  78. package/templates/fumadocs/src/components/language-selector.tsx +56 -0
  79. package/templates/fumadocs/src/components/markdown-actions.tsx +61 -0
  80. package/templates/fumadocs/src/config/site.config.ts +115 -0
  81. package/templates/fumadocs/src/lib/layout.shared.tsx +23 -0
  82. package/templates/fumadocs/src/lib/source.ts +91 -0
  83. package/templates/fumadocs/src/mdx-components.tsx +14 -0
  84. package/templates/fumadocs/tsconfig.json +46 -0
@@ -0,0 +1,269 @@
1
+ # MUST-FOLLOW-GUIDELINES.md
2
+
3
+ > **IMPORTANTE**: Este documento es la fuente de verdad para todas las reglas de desarrollo en este proyecto.
4
+ > **El incumplimiento de estas reglas sera motivo de correccion obligatoria en code review.**
5
+
6
+ ---
7
+
8
+ ## Stack Definitivo
9
+
10
+ | Herramienta | Version/Configuracion | Uso |
11
+ |-------------|----------------------|-----|
12
+ | **Runtime** | Bun v1.1.43+ | Package manager + runtime |
13
+ | **Bundling** | Rolldown v1.0.0-beta.58 | Build de packages |
14
+ | **Type Checking** | TSGO v7.0.0-dev (@typescript/native-preview) | TypeScript compiler |
15
+ | **Linting** | Oxlint v0.11.1 | Linting rapido (OxC-based) |
16
+ | **Formatting** | Prettier v3.4.2 + organize-imports | Formato de codigo |
17
+ | **Validation** | Arktype | Validacion de esquemas |
18
+ | **Versioning** | Changesets v2.27.11 | Versionado de packages |
19
+ | **Logging** | @mks2508/better-logger v4.0.0 | Logging estructurado |
20
+ | **Error Handling** | @mks2508/no-throw v0.1.0 | Result pattern |
21
+
22
+ ---
23
+
24
+ ## Estructura de Carpetas Obligatoria
25
+
26
+ ### Root del Monorepo
27
+ ```
28
+ mks-fumadocs-template/
29
+ ├── docs/ # Documentacion del proyecto
30
+ ├── tools/ # Scripts y herramientas de desarrollo
31
+ ├── core/
32
+ │ └── packages/
33
+ │ ├── main/
34
+ │ └── utils/
35
+ └── apps/
36
+ └── example/
37
+ ```
38
+
39
+ ### Estructura de un Package
40
+ ```
41
+ core/packages/main/
42
+ ├── src/
43
+ │ ├── utils/ # Utilidades locales del package
44
+ │ │ └── index.ts # Barrel export
45
+ │ ├── types/ # Tipos del dominio del package
46
+ │ │ ├── *.types.ts # Tipos especificos
47
+ │ │ ├── constants.ts # Constantes del package
48
+ │ │ └── index.ts # Barrel export
49
+ │ ├── *.ts # Codigo fuente principal
50
+ │ └── index.ts # Export principal
51
+ ├── dist/ # Build output
52
+ ├── package.json
53
+ ├── rolldown.config.ts
54
+ └── tsconfig.json
55
+ ```
56
+
57
+ ---
58
+
59
+ ## REGLA 1: JSDoc Completo Profesional
60
+
61
+ ### Requerimientos Obligatorios
62
+
63
+ TODA funcion, clase, metodo, interface, type, y constante exportada DEBE tener JSDoc completo:
64
+
65
+ ```typescript
66
+ /**
67
+ * Descripcion clara y concisa de que hace y por que.
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * // Codigo ejecutable que demuestra uso tipico
72
+ * const result = await myFunction('example');
73
+ * if (result.isErr()) {
74
+ * log.error('Failed', result.error);
75
+ * return;
76
+ * }
77
+ * console.log(result.value);
78
+ * ```
79
+ *
80
+ * @param paramName - Descripcion del parametro
81
+ * @returns Result<T, E> Descripcion del valor de retorno
82
+ * @throws {AppError} Cuando y por que se lanza este error
83
+ * @see {@link IOptions} Referencias a tipos relacionados
84
+ */
85
+ export async function myFunction(
86
+ param: string,
87
+ options?: IOptions
88
+ ): Promise<Result<string, AppError>> {
89
+ // ...
90
+ }
91
+ ```
92
+
93
+ ### Tags Obligatorios
94
+
95
+ | Tag | Cuando usar | Formato |
96
+ |-----|-------------|---------|
97
+ | `@description` | Siempre | Primera linea (implicita) |
98
+ | `@param` | Cada parametro | `@param name - Description` |
99
+ | `@returns` | Siempre | `@returns Type - Description` |
100
+ | `@example` | Funciones publicas | Codigo TypeScript ejecutable |
101
+ | `@throws` | Si puede lanzar | `@throws {ErrorType} Cuando` |
102
+ | `@see` | Referencias | `@see {@link ISomething}` |
103
+
104
+ ---
105
+
106
+ ## REGLA 2: Logging - NUNCA console.log
107
+
108
+ ### Obligatorio
109
+
110
+ ```typescript
111
+ import { createLogger } from 'mks-fumadocs-template/utils/logger';
112
+
113
+ const log = createLogger('MyComponent');
114
+
115
+ // CORRECTO
116
+ log.info('Started');
117
+ log.success('Completed');
118
+ log.warn('High memory usage');
119
+ log.error('Failed to connect', { error });
120
+ log.critical('System failure');
121
+ ```
122
+
123
+ ### Prohibido
124
+
125
+ ```typescript
126
+ // INCORRECTO
127
+ console.log('Started');
128
+ console.error('Failed');
129
+ console.info('Info');
130
+ console.warn('Warning');
131
+ ```
132
+
133
+ ---
134
+
135
+ ## REGLA 3: Result Pattern - SIEMPRE
136
+
137
+ ### Obligatorio
138
+
139
+ TODA operacion que pueda fallar DEBE usar `Result<T, E>` del package `mks-fumadocs-template/utils/result`:
140
+
141
+ ```typescript
142
+ import {
143
+ ok,
144
+ tryCatch,
145
+ type Result
146
+ } from 'mks-fumadocs-template/utils/result';
147
+ import {
148
+ createAppError,
149
+ AppErrorCode
150
+ } from 'mks-fumadocs-template/utils/result';
151
+
152
+ async function fetchData(
153
+ url: string
154
+ ): Promise<Result<string, AppError>> {
155
+ const result = await tryCatch(
156
+ async () => {
157
+ const response = await fetch(url);
158
+ if (!response.ok) {
159
+ throw new Error(`HTTP ${response.status}`);
160
+ }
161
+ return await response.text();
162
+ },
163
+ AppErrorCode.NetworkError
164
+ );
165
+
166
+ if (result.isErr()) {
167
+ return createAppError(
168
+ AppErrorCode.NetworkError,
169
+ `Failed to fetch from ${url}`,
170
+ result.error
171
+ );
172
+ }
173
+
174
+ return ok(result.value);
175
+ }
176
+ ```
177
+
178
+ ---
179
+
180
+ ## REGLA 4: Nomenclatura - Prefijo I
181
+
182
+ ### Interfaces
183
+
184
+ ```typescript
185
+ // CORRECTO - Prefijo I
186
+ export interface IOptions {
187
+ url: string;
188
+ timeout?: number;
189
+ }
190
+
191
+ export interface ICallback {
192
+ onSuccess: () => void;
193
+ onError: (error: Error) => void;
194
+ }
195
+ ```
196
+
197
+ ### Types (sin prefijo)
198
+
199
+ ```typescript
200
+ // CORRECTO - Sin prefijo
201
+ export type Options = {
202
+ url: string;
203
+ timeout?: number;
204
+ };
205
+
206
+ export type ErrorCode =
207
+ | 'NETWORK_ERROR'
208
+ | 'NOT_FOUND'
209
+ | 'PERMISSION_DENIED';
210
+ ```
211
+
212
+ ---
213
+
214
+ ## REGLA 5: Barrel Exports - SIEMPRE
215
+
216
+ TODA carpeta con multiples archivos DEBE tener un `index.ts` que exporte todo:
217
+
218
+ ```typescript
219
+ // src/types/index.ts
220
+ export * from './main.types';
221
+ export * from './constants';
222
+ ```
223
+
224
+ ---
225
+
226
+ ## REGLA 6: Async/Await - Preferencia
227
+
228
+ ```typescript
229
+ // CORRECTO - Async/await
230
+ async function processFile(path: string): Promise<void> {
231
+ const content = await readFile(path);
232
+ const processed = await transform(content);
233
+ await writeFile(path, processed);
234
+ }
235
+
236
+ // INCORRECTO - Promise chaining
237
+ function processFile(path: string) {
238
+ return readFile(path)
239
+ .then(content => transform(content))
240
+ .then(processed => writeFile(path, processed));
241
+ }
242
+ ```
243
+
244
+ ---
245
+
246
+ ## Checklist Pre-Commit
247
+
248
+ Antes de hacer commit de codigo, verificar:
249
+
250
+ - [ ] Todo codigo nuevo tiene JSDoc completo
251
+ - [ ] No hay `console.log/debug/error/info/warn`
252
+ - [ ] Todo lo que puede fallar usa `Result<T, E>`
253
+ - [ ] Interfaces tienen prefijo `I`
254
+ - [ ] Barrel exports en todas las carpetas
255
+ - [ ] Async/await en lugar de Promise chaining
256
+ - [ ] `bun run typecheck` pasa
257
+ - [ ] `bun run lint` pasa
258
+ - [ ] `bun run format` aplicado
259
+
260
+ ---
261
+
262
+ ## Fuentes de Referencia
263
+
264
+ - **CLAUDE.md** - Guia de arquitectura del monorepo
265
+ - **@mks2508/better-logger** - Documentacion del logger
266
+ - **@mks2508/no-throw** - Documentacion del Result pattern
267
+ - **Arktype** - https://arktype.io/
268
+ - **Rolldown** - https://rollup.rs/
269
+ - **Oxlint** - https://oxlint.com/
@@ -0,0 +1,319 @@
1
+ # {{PROJECT_NAME}} - Documentation Template
2
+
3
+ > {{DESCRIPTION}}
4
+
5
+ ## 🚀 Quick Start
6
+
7
+ Este es un template de documentación basado en **Fumadocs** (Next.js + MDX) listo para usar con:
8
+
9
+ - ✅ Soporte bilingüe (Español/Inglés)
10
+ - ✅ Búsqueda integrada
11
+ - ✅ Tema oscuro/claro automático
12
+ - ✅ GitHub Pages ready
13
+ - ✅ MDX con componentes de React
14
+ - ✅ Pipeline de CI/CD configurado
15
+
16
+ ## 📋 Requisitos Previos
17
+
18
+ - **Bun** v1.1.43+ (recomendado) o Node.js v20+
19
+ - **GitHub** (para despliegue)
20
+
21
+ ## 🔧 Instalación
22
+
23
+ ### Opción 1: Usando mks-scaffolder (Recomendado)
24
+
25
+ ```bash
26
+ bunx mks-scaffolder create mi-proyecto --template fumadocs
27
+ ```
28
+
29
+ Sigue las instrucciones interactivas para configurar tu proyecto.
30
+
31
+ ### Opción 2: Manual
32
+
33
+ ```bash
34
+ git clone https://github.com/{{GITHUB_REPO}}.git mi-proyecto
35
+ cd mi-proyecto
36
+ bun install
37
+ ```
38
+
39
+ ## ⚙️ Configuración
40
+
41
+ ### 1. Variables de Entorno
42
+
43
+ Crea `.env.local` en la raíz:
44
+
45
+ ```bash
46
+ # Copia el template
47
+ cp .env.example .env.local
48
+
49
+ # Edita con tus valores
50
+ PROJECT_NAME=Mi Proyecto
51
+ DESCRIPTION=Descripción de mi proyecto
52
+ AUTHOR=Tu Nombre
53
+ BASE_PATH=/mi-proyecto
54
+ ```
55
+
56
+ ### 2. Contenido Placeholder
57
+
58
+ El template incluye contenido de ejemplo en `content-template/`:
59
+
60
+ ```
61
+ content-template/
62
+ ├── docs/
63
+ │ ├── index.mdx # Página principal (ES)
64
+ │ └── getting-started/
65
+ │ ├── index.mdx
66
+ │ ├── installation.mdx
67
+ │ └── quick-start.mdx
68
+ └── en/docs/ # Versión en inglés
69
+ └── (misma estructura)
70
+ ```
71
+
72
+ **Para usarlo:**
73
+
74
+ ```bash
75
+ # Opción A: Copiar todo el contenido
76
+ cp -r content-template/* content/
77
+
78
+ # Opción B: Copiar solo lo que necesitas
79
+ # Los archivos usan variables {{PLACEHOLDER}} que debes reemplazar
80
+ ```
81
+
82
+ ### 3. Reemplazar Placeholders
83
+
84
+ Los archivos de contenido usan **placeholders** que debes reemplazar:
85
+
86
+ - `{{PROJECT_NAME}}` - Nombre de tu proyecto
87
+ - `{{DESCRIPTION}}` - Descripción del proyecto
88
+ - `{{AUTHOR}}` - Tu nombre
89
+ - `{{GITHUB_REPO}}` - `usuario/repo`
90
+ - `{{BASE_PATH}}` - Path para GitHub Pages
91
+
92
+ **Ejemplo de búsqueda y reemplazo:**
93
+
94
+ ```bash
95
+ # Con sed (Linux/macOS)
96
+ find content/ -type f -name "*.mdx" -exec sed -i '' 's/{{PROJECT_NAME}}/Mi Proyecto/g' {} +
97
+ find content/ -type f -name "*.mdx" -exec sed -i '' 's/{{DESCRIPTION}}/Mi descripción/g' {} +
98
+
99
+ # O edita manualmente cada archivo
100
+ ```
101
+
102
+ ## 🏃 Desarrollo
103
+
104
+ ```bash
105
+ # Instalar dependencias
106
+ bun install
107
+
108
+ # Servidor de desarrollo
109
+ bun run dev
110
+
111
+ # Build para producción
112
+ bun run build
113
+
114
+ # Previsualizar build
115
+ bun run start
116
+ ```
117
+
118
+ Abre [http://localhost:3000](http://localhost:3000).
119
+
120
+ ## 🚀 Deploy a GitHub Pages
121
+
122
+ ### Pipeline Automático
123
+
124
+ El template incluye un workflow de GitHub Actions en `.github/workflows/deploy.yml` que:
125
+
126
+ 1. ✅ Se ejecuta en cada push a `main`
127
+ 2. ✅ Build del sitio con `bun run build`
128
+ 3. ✅ Deploy automático a GitHub Pages
129
+ 4. ✅ Soporte para rutas con `basePath`
130
+
131
+ ### Configuración del Repositorio
132
+
133
+ 1. **Activa GitHub Pages:**
134
+ - Ve a `Settings` > `Pages`
135
+ - Source: `GitHub Actions`
136
+
137
+ 2. **Configura `BASE_PATH`:**
138
+ - Si tu repo es `usuario/mi-proyecto`, usa `/mi-proyecto`
139
+ - Si usas dominio custom, usa `/`
140
+
141
+ 3. **Push a main:**
142
+ ```bash
143
+ git add .
144
+ git commit -m "feat: initial docs"
145
+ git push origin main
146
+ ```
147
+
148
+ 4. **Espera el workflow:**
149
+ - Ve a la pestaña `Actions`
150
+ - Espera a que el workflow termine
151
+ - Tu documentación estará en `https://usuario.github.io/mi-proyecto/`
152
+
153
+ ## 📁 Estructura del Proyecto
154
+
155
+ ```
156
+ .
157
+ ├── content/ # Tu documentación (MDX)
158
+ │ ├── docs/ # Versión en español
159
+ │ └── en/docs/ # Versión en inglés
160
+ ├── content-template/ # Contenido placeholder (ejemplos)
161
+ ├── messages/ # Traducciones de la UI
162
+ │ ├── es.json
163
+ │ └── en.json
164
+ ├── src/
165
+ │ ├── app/ # Next.js app directory
166
+ │ ├── components/ # Componentes React reutilizables
167
+ │ ├── config/ # Configuración centralizada
168
+ │ │ └── site.config.ts # Configuración del sitio
169
+ │ └── lib/ # Utilidades y configuración
170
+ ├── public/ # Archivos estáticos
171
+ ├── .github/workflows/ # Workflows de CI/CD
172
+ │ └── deploy.yml # Deploy automático a GH Pages
173
+ ├── .env.example # Template de variables de entorno
174
+ ├── next.config.mjs # Configuración de Next.js
175
+ └── package.json
176
+ ```
177
+
178
+ ## 🎨 Personalización
179
+
180
+ ### Configuración del Sitio
181
+
182
+ Edita `src/config/site.config.ts` o usa variables de entorno:
183
+
184
+ ```typescript
185
+ // src/config/site.config.ts
186
+ export const siteConfig = {
187
+ name: process.env.PROJECT_NAME || 'Mi Documentación',
188
+ description: process.env.DESCRIPTION || 'Descripción',
189
+ author: process.env.AUTHOR || 'Autor',
190
+ // ...
191
+ };
192
+ ```
193
+
194
+ ### Logo
195
+
196
+ Opción 1: SVG en `.env.local`:
197
+
198
+ ```bash
199
+ LOGO_SVG='<svg viewBox="0 0 24 24">...</svg>'
200
+ ```
201
+
202
+ Opción 2: Texto:
203
+
204
+ ```bash
205
+ LOGO_TEXT="Mi Proyecto"
206
+ ```
207
+
208
+ Opción 3: Editar `src/lib/layout.shared.tsx` directamente.
209
+
210
+ ### Colores
211
+
212
+ Edita `src/app/global.css`:
213
+
214
+ ```css
215
+ :root {
216
+ --color-primary: #0088cc; /* Tu color primario */
217
+ --color-dark: #0f172a;
218
+ --color-light: #ffffff;
219
+ }
220
+ ```
221
+
222
+ ## 📝 Escribir Contenido
223
+
224
+ ### Formato MDX
225
+
226
+ Los archivos usan **frontmatter** obligatorio:
227
+
228
+ ```mdx
229
+ ---
230
+ title: Título de la Página
231
+ description: Descripción para SEO
232
+ ---
233
+
234
+ # Contenido aquí
235
+
236
+ Puedes usar **markdown** estándar y componentes de React.
237
+ ```
238
+
239
+ ### Componentes Disponibles
240
+
241
+ ```mdx
242
+ import { Callout, Steps, Tabs } from 'fumadocs-ui/components';
243
+
244
+ <Callout type="info">
245
+ Información importante
246
+ </Callout>
247
+
248
+ <Steps>
249
+ ### Paso 1
250
+ ### Paso 2
251
+ </Steps>
252
+
253
+ <Tabs items={['Tab 1', 'Tab 2']}>
254
+ <Tab>Contenido 1</Tab>
255
+ <Tab>Contenido 2</Tab>
256
+ </Tabs>
257
+ ```
258
+
259
+ ## 🌍 i18n (Internacionalización)
260
+
261
+ ### Agregar idiomas
262
+
263
+ 1. Agrega el archivo de traducción en `messages/`:
264
+
265
+ ```json
266
+ // messages/fr.json
267
+ {
268
+ "nav": {
269
+ "gettingStarted": "Pour Commencer"
270
+ }
271
+ }
272
+ ```
273
+
274
+ 2. Actualiza `.env.local`:
275
+
276
+ ```bash
277
+ NEXT_PUBLIC_SUPPORTED_LOCALES=es,en,fr
278
+ ```
279
+
280
+ ### Traducir contenido
281
+
282
+ Crea la estructura equivalente en `content/fr/docs/`.
283
+
284
+ ## 📚 Recursos
285
+
286
+ - [Fumadocs Documentation](https://fumadocs.vercel.app/)
287
+ - [Fumadocs UI Components](https://fumadocs.vercel.app/ui)
288
+ - [Next.js Documentation](https://nextjs.org/docs)
289
+ - [MDX Documentation](https://mdxjs.com/)
290
+
291
+ ## 🐛 Troubleshooting
292
+
293
+ ### Build falla
294
+
295
+ ```bash
296
+ # Limpia cache
297
+ rm -rf .next out node_modules bun.lockb
298
+ bun install
299
+ bun run build
300
+ ```
301
+
302
+ ### GitHub Pages retorna 404
303
+
304
+ - Verifica que `BASE_PATH` en `.env.local` coincida con tu repo name
305
+ - Activa GitHub Pages desde `GitHub Actions` (no desde `Deploy from a branch`)
306
+ - Espera unos minutos después del deploy
307
+
308
+ ### Buscador no funciona
309
+
310
+ - Verifica que `src/app/api/search/route.ts` existe
311
+ - Rebuild después de agregar contenido nuevo
312
+
313
+ ## 📄 Licencia
314
+
315
+ MIT
316
+
317
+ ---
318
+
319
+ **Generado con [mks-fumadocs-template](https://github.com/mks2508/mks-fumadocs-template)**
@@ -0,0 +1,41 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.2.0/schema.json",
3
+ "vcs": {
4
+ "enabled": true,
5
+ "clientKind": "git",
6
+ "useIgnoreFile": true
7
+ },
8
+ "files": {
9
+ "ignoreUnknown": true,
10
+ "includes": [
11
+ "**",
12
+ "!node_modules",
13
+ "!.next",
14
+ "!dist",
15
+ "!build",
16
+ "!.source"
17
+ ]
18
+ },
19
+ "formatter": {
20
+ "enabled": true,
21
+ "indentStyle": "space",
22
+ "indentWidth": 2
23
+ },
24
+ "linter": {
25
+ "enabled": true,
26
+ "rules": {
27
+ "recommended": true
28
+ },
29
+ "domains": {
30
+ "next": "recommended",
31
+ "react": "recommended"
32
+ }
33
+ },
34
+ "assist": {
35
+ "actions": {
36
+ "source": {
37
+ "organizeImports": "on"
38
+ }
39
+ }
40
+ }
41
+ }