@configjs/cli 1.1.3 → 1.1.5

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/README.fr.md CHANGED
@@ -359,7 +359,7 @@ Les contributions sont les bienvenues ! Consultez [CONTRIBUTING.md](./docs/CONTR
359
359
 
360
360
  ### Développer un Plugin
361
361
 
362
- Voir [PLUGIN_DEVELOPMENT.md](./docs/PLUGIN_DEVELOPMENT.md) pour créer vos propres plugins.
362
+ Voir [PLUGIN_DEVELOPMENT.md](./docs/PLUGIN_DEVELOPMENT.md) pour créer vos propres plugins (documentation de développement).
363
363
 
364
364
  ### Configuration de Développement
365
365
 
package/README.md CHANGED
@@ -49,13 +49,26 @@ npx @configjs/cli react
49
49
 
50
50
  **No installation required!** Use directly with `npx`:
51
51
 
52
+ ### For React Projects
52
53
  ```bash
53
54
  cd your-react-project
54
55
  npx @configjs/cli react
55
56
  ```
56
57
 
58
+ ### For Next.js Projects
59
+ ```bash
60
+ cd your-nextjs-project
61
+ npx @configjs/cli nextjs
62
+ ```
63
+
64
+ ### For Vue.js Projects
65
+ ```bash
66
+ cd your-vue-project
67
+ npx @configjs/cli vue
68
+ ```
69
+
57
70
  That's it! ConfigJS will:
58
- 1. 🔍 **Detect** your environment (React version, TypeScript, bundler)
71
+ 1. 🔍 **Detect** your environment (React/Next.js version, TypeScript, bundler)
59
72
  2. 🎯 **Guide** you through library selection by category
60
73
  3. 📦 **Install** all packages sequentially (no conflicts)
61
74
  4. ⚙️ **Configure** everything with working code
@@ -113,9 +126,10 @@ $ npx @configjs/cli react
113
126
  ### 🎯 Smart Detection
114
127
 
115
128
  ConfigJS automatically detects your project setup:
116
- - ✅ **Framework & Version** (React 18/19)
129
+ - ✅ **Framework & Version** (React 18/19, Next.js 13/14)
130
+ - ✅ **Router Type** (App Router vs Pages Router for Next.js)
117
131
  - ✅ **Language** (JavaScript/TypeScript)
118
- - ✅ **Bundler** (Vite, Webpack, Create React App)
132
+ - ✅ **Bundler** (Vite, Webpack, Create React App, Next.js)
119
133
  - ✅ **Package Manager** (npm, yarn, pnpm, bun)
120
134
  - ✅ **Already Installed Libraries** (skips duplicates)
121
135
  - ✅ **Project Structure** (adapts configuration)
@@ -263,9 +277,12 @@ ConfigJS creates a `.configjsrc` file to track installations and prevent conflic
263
277
  ### Commands
264
278
 
265
279
  ```bash
266
- # Interactive installation
280
+ # Interactive installation for React
267
281
  npx @configjs/cli react
268
282
 
283
+ # Interactive installation for Next.js
284
+ npx @configjs/cli nextjs
285
+
269
286
  # List available plugins
270
287
  npx @configjs/cli list
271
288
  npx @configjs/cli list --category routing
@@ -280,6 +297,23 @@ npx @configjs/cli remove <plugin-name>
280
297
  npx @configjs/cli check
281
298
  ```
282
299
 
300
+ ### Next.js Support
301
+
302
+ ConfigJS fully supports Next.js projects with automatic detection of:
303
+ - **App Router** vs **Pages Router**
304
+ - Next.js-specific plugins (Image Optimization, Font Optimization, Middleware, API Routes)
305
+ - Compatible libraries adapted for Next.js (TailwindCSS, Shadcn/ui, React Hot Toast)
306
+
307
+ ### Vue.js Support
308
+
309
+ ConfigJS fully supports Vue.js 3 projects with automatic detection of:
310
+ - **Composition API** vs **Options API**
311
+ - Vue.js-specific plugins (Vue Router, Pinia, VueUse, Vuetify)
312
+ - Compatible libraries adapted for Vue.js (TailwindCSS, Axios, ESLint Vue)
313
+ - Automatic project creation with Vite
314
+
315
+ See [Next.js Documentation](./DOCUMENTATION/NEXTJS.md) and [Vue.js Documentation](./DOCUMENTATION/VUE.md) for complete guides.
316
+
283
317
  ### CLI Options
284
318
 
285
319
  ```bash
@@ -359,7 +393,7 @@ Contributions are welcome! Check out [CONTRIBUTING.md](./docs/CONTRIBUTING.md) f
359
393
 
360
394
  ### Develop a Plugin
361
395
 
362
- See [PLUGIN_DEVELOPMENT.md](./docs/PLUGIN_DEVELOPMENT.md) to create your own plugins.
396
+ See [PLUGIN_DEVELOPMENT.md](./docs/PLUGIN_DEVELOPMENT.md) to create your own plugins (development documentation).
363
397
 
364
398
  ### Development Setup
365
399
 
@@ -411,7 +445,7 @@ npm run build
411
445
  - [ ] Conflict resolution wizard
412
446
 
413
447
  ### v2.0 (Q3 2025)
414
- - [ ] Support Next.js
448
+ - [x] Support Next.js
415
449
  - [ ] Support Remix
416
450
  - [ ] Support Astro
417
451
  - [ ] Web UI for configuration
@@ -1,13 +1,14 @@
1
1
  import {
2
2
  CompatibilityValidator,
3
- compatibilityRules
4
- } from "./chunk-VJ254HJY.js";
3
+ allCompatibilityRules
4
+ } from "./chunk-D37FHAGO.js";
5
5
  import {
6
6
  pluginRegistry
7
- } from "./chunk-OJGTPK6N.js";
7
+ } from "./chunk-V75HW2AM.js";
8
+ import "./chunk-MQV3WNMH.js";
8
9
  import {
9
10
  logger
10
- } from "./chunk-QRFLHLFE.js";
11
+ } from "./chunk-HM2JWJOO.js";
11
12
  import "./chunk-QGM4M3NI.js";
12
13
 
13
14
  // src/cli/commands/check.ts
@@ -71,7 +72,7 @@ async function checkCompatibility(options) {
71
72
  }
72
73
  }
73
74
  console.log("\n\u{1F50D} Analyse de compatibilit\xE9...\n");
74
- const validator = new CompatibilityValidator(compatibilityRules);
75
+ const validator = new CompatibilityValidator(allCompatibilityRules);
75
76
  const validation = validator.validate(
76
77
  selectedPlugins
77
78
  );
@@ -0,0 +1,383 @@
1
+ // src/cli/i18n/fr.ts
2
+ var fr = {
3
+ language: {
4
+ select: "Choisissez votre langue",
5
+ options: [
6
+ { value: "fr", name: "Fran\xE7ais" },
7
+ { value: "en", name: "English" },
8
+ { value: "es", name: "Espa\xF1ol" }
9
+ ]
10
+ },
11
+ common: {
12
+ continue: "Continuer",
13
+ cancel: "Annuler",
14
+ back: "Retour",
15
+ none: "Aucun",
16
+ selected: (count) => count === 0 ? "Aucune biblioth\xE8que s\xE9lectionn\xE9e" : count === 1 ? "1 biblioth\xE8que s\xE9lectionn\xE9e" : `${count} biblioth\xE8ques s\xE9lectionn\xE9es`
17
+ },
18
+ plugins: {
19
+ selectCategory: (category) => `S\xE9lectionnez vos biblioth\xE8ques : ${category}`,
20
+ selectMultiple: "S\xE9lection multiple",
21
+ pressSpace: "Appuyez sur <espace> pour s\xE9lectionner",
22
+ pressEnter: "Appuyez sur <entr\xE9e> pour valider",
23
+ description: "Description"
24
+ },
25
+ detection: {
26
+ detecting: "\u{1F50D} D\xE9tection du contexte...",
27
+ framework: "Framework",
28
+ typescript: "TypeScript",
29
+ bundler: "Bundler",
30
+ packageManager: "Gestionnaire de paquets"
31
+ },
32
+ confirmation: {
33
+ summary: "\u{1F4CB} R\xE9sum\xE9 de l'installation",
34
+ packagesToInstall: "\u{1F4E6} Packages \xE0 installer",
35
+ filesToCreate: "\u{1F4DD} Fichiers qui seront cr\xE9\xE9s",
36
+ filesToModify: "\u{1F4DD} Fichiers qui seront modifi\xE9s",
37
+ continueQuestion: "Continuer avec l'installation ?"
38
+ },
39
+ installation: {
40
+ installing: "Installation en cours...",
41
+ configuring: "Configuration en cours...",
42
+ success: "\u2728 Installation termin\xE9e !",
43
+ error: "\u274C Erreur lors de l'installation",
44
+ rollback: "\u21BA Rollback en cours..."
45
+ },
46
+ report: {
47
+ title: "\u2728 Installation termin\xE9e !",
48
+ packagesInstalled: "\u{1F4E6} Packages install\xE9s",
49
+ filesCreated: "\u{1F4DD} Fichiers cr\xE9\xE9s",
50
+ filesModified: "\u{1F4DD} Fichiers modifi\xE9s",
51
+ nextSteps: "\u{1F680} Prochaines \xE9tapes"
52
+ },
53
+ errors: {
54
+ detectionFailed: "\xC9chec de la d\xE9tection du contexte",
55
+ installationFailed: "\xC9chec de l'installation",
56
+ validationFailed: "\xC9chec de la validation",
57
+ incompatiblePlugins: (plugins) => `Plugins incompatibles d\xE9tect\xE9s : ${plugins.join(", ")}`
58
+ },
59
+ vite: {
60
+ noReactDetected: "\u26A0\uFE0F Aucun projet React d\xE9tect\xE9 dans le r\xE9pertoire actuel.",
61
+ proposeSetup: "Souhaitez-vous cr\xE9er un nouveau projet React avec Vite ?",
62
+ projectName: "Nom du projet",
63
+ projectNamePlaceholder: "mon-projet-react",
64
+ template: "Template",
65
+ templateOptions: [
66
+ { value: "react", name: "React (JavaScript)" },
67
+ { value: "react-ts", name: "React (TypeScript)" }
68
+ ],
69
+ creating: "Cr\xE9ation du projet React avec Vite...",
70
+ success: "\u2705 Projet cr\xE9\xE9 avec succ\xE8s !",
71
+ error: "\u274C Erreur lors de la cr\xE9ation du projet",
72
+ changingDirectory: "Changement vers le r\xE9pertoire du projet...",
73
+ validation: {
74
+ empty: "Le nom du projet ne peut pas \xEAtre vide",
75
+ invalid: "Le nom du projet ne peut contenir que des lettres, chiffres, tirets et underscores"
76
+ },
77
+ folderExists: (name) => `Le dossier "${name}" existe d\xE9j\xE0. Veuillez choisir un autre nom.`
78
+ },
79
+ nextjs: {
80
+ noNextjsDetected: "\u26A0\uFE0F Aucun projet Next.js d\xE9tect\xE9 dans le r\xE9pertoire actuel.",
81
+ proposeSetup: "Souhaitez-vous cr\xE9er un nouveau projet Next.js ?",
82
+ projectName: "Nom du projet",
83
+ projectNamePlaceholder: "mon-projet-nextjs",
84
+ typescript: "Utiliser TypeScript ?",
85
+ eslint: "Utiliser ESLint ?",
86
+ tailwind: "Utiliser TailwindCSS ?",
87
+ srcDir: "Utiliser le dossier src/ ?",
88
+ appRouter: "Utiliser App Router (recommand\xE9) ?",
89
+ importAlias: "Alias d'import (ex: @/*)",
90
+ creating: "Cr\xE9ation du projet Next.js...",
91
+ success: "\u2705 Projet cr\xE9\xE9 avec succ\xE8s !",
92
+ error: "\u274C Erreur lors de la cr\xE9ation du projet",
93
+ changingDirectory: "Changement vers le r\xE9pertoire du projet...",
94
+ validation: {
95
+ empty: "Le nom du projet ne peut pas \xEAtre vide",
96
+ invalid: "Le nom du projet ne peut contenir que des lettres, chiffres, tirets et underscores"
97
+ },
98
+ folderExists: (name) => `Le dossier "${name}" existe d\xE9j\xE0. Veuillez choisir un autre nom.`
99
+ },
100
+ vue: {
101
+ noVueDetected: "\u26A0\uFE0F Aucun projet Vue.js d\xE9tect\xE9 dans le r\xE9pertoire actuel.",
102
+ proposeSetup: "Souhaitez-vous cr\xE9er un nouveau projet Vue.js avec Vite ?",
103
+ projectName: "Nom du projet",
104
+ projectNamePlaceholder: "mon-projet-vue",
105
+ typescript: "Utiliser TypeScript ?",
106
+ router: "Utiliser Vue Router ?",
107
+ pinia: "Utiliser Pinia (state management) ?",
108
+ vitest: "Utiliser Vitest (testing) ?",
109
+ eslint: "Utiliser ESLint ?",
110
+ prettier: "Utiliser Prettier ?",
111
+ creating: "Cr\xE9ation du projet Vue.js avec Vite...",
112
+ success: "\u2705 Projet cr\xE9\xE9 avec succ\xE8s !",
113
+ error: "\u274C Erreur lors de la cr\xE9ation du projet",
114
+ changingDirectory: "Changement vers le r\xE9pertoire du projet...",
115
+ validation: {
116
+ empty: "Le nom du projet ne peut pas \xEAtre vide",
117
+ invalid: "Le nom du projet ne peut contenir que des lettres, chiffres, tirets et underscores"
118
+ },
119
+ folderExists: (name) => `Le dossier "${name}" existe d\xE9j\xE0. Veuillez choisir un autre nom.`
120
+ }
121
+ };
122
+
123
+ // src/cli/i18n/en.ts
124
+ var en = {
125
+ language: {
126
+ select: "Choose your language",
127
+ options: [
128
+ { value: "fr", name: "Fran\xE7ais" },
129
+ { value: "en", name: "English" },
130
+ { value: "es", name: "Espa\xF1ol" }
131
+ ]
132
+ },
133
+ common: {
134
+ continue: "Continue",
135
+ cancel: "Cancel",
136
+ back: "Back",
137
+ none: "None",
138
+ selected: (count) => count === 0 ? "No library selected" : count === 1 ? "1 library selected" : `${count} libraries selected`
139
+ },
140
+ plugins: {
141
+ selectCategory: (category) => `Select your libraries: ${category}`,
142
+ selectMultiple: "Multiple selection",
143
+ pressSpace: "Press <space> to select",
144
+ pressEnter: "Press <enter> to confirm",
145
+ description: "Description"
146
+ },
147
+ detection: {
148
+ detecting: "\u{1F50D} Detecting context...",
149
+ framework: "Framework",
150
+ typescript: "TypeScript",
151
+ bundler: "Bundler",
152
+ packageManager: "Package manager"
153
+ },
154
+ confirmation: {
155
+ summary: "\u{1F4CB} Installation Summary",
156
+ packagesToInstall: "\u{1F4E6} Packages to install",
157
+ filesToCreate: "\u{1F4DD} Files that will be created",
158
+ filesToModify: "\u{1F4DD} Files that will be modified",
159
+ continueQuestion: "Continue with installation?"
160
+ },
161
+ installation: {
162
+ installing: "Installing...",
163
+ configuring: "Configuring...",
164
+ success: "\u2728 Installation completed!",
165
+ error: "\u274C Installation error",
166
+ rollback: "\u21BA Rolling back..."
167
+ },
168
+ report: {
169
+ title: "\u2728 Installation completed!",
170
+ packagesInstalled: "\u{1F4E6} Installed packages",
171
+ filesCreated: "\u{1F4DD} Created files",
172
+ filesModified: "\u{1F4DD} Modified files",
173
+ nextSteps: "\u{1F680} Next steps"
174
+ },
175
+ errors: {
176
+ detectionFailed: "Context detection failed",
177
+ installationFailed: "Installation failed",
178
+ validationFailed: "Validation failed",
179
+ incompatiblePlugins: (plugins) => `Incompatible plugins detected: ${plugins.join(", ")}`
180
+ },
181
+ vite: {
182
+ noReactDetected: "\u26A0\uFE0F No React project detected in the current directory.",
183
+ proposeSetup: "Would you like to create a new React project with Vite?",
184
+ projectName: "Project name",
185
+ projectNamePlaceholder: "my-react-project",
186
+ template: "Template",
187
+ templateOptions: [
188
+ { value: "react", name: "React (JavaScript)" },
189
+ { value: "react-ts", name: "React (TypeScript)" }
190
+ ],
191
+ creating: "Creating React project with Vite...",
192
+ success: "\u2705 Project created successfully!",
193
+ error: "\u274C Error creating project",
194
+ changingDirectory: "Changing to project directory...",
195
+ validation: {
196
+ empty: "Project name cannot be empty",
197
+ invalid: "Project name can only contain letters, numbers, dashes and underscores"
198
+ },
199
+ folderExists: (name) => `Folder "${name}" already exists. Please choose another name.`
200
+ },
201
+ nextjs: {
202
+ noNextjsDetected: "\u26A0\uFE0F No Next.js project detected in the current directory.",
203
+ proposeSetup: "Would you like to create a new Next.js project?",
204
+ projectName: "Project name",
205
+ projectNamePlaceholder: "my-nextjs-project",
206
+ typescript: "Use TypeScript?",
207
+ eslint: "Use ESLint?",
208
+ tailwind: "Use TailwindCSS?",
209
+ srcDir: "Use src/ directory?",
210
+ appRouter: "Use App Router (recommended)?",
211
+ importAlias: "Import alias (e.g. @/*)",
212
+ creating: "Creating Next.js project...",
213
+ success: "\u2705 Project created successfully!",
214
+ error: "\u274C Error creating project",
215
+ changingDirectory: "Changing to project directory...",
216
+ validation: {
217
+ empty: "Project name cannot be empty",
218
+ invalid: "Project name can only contain letters, numbers, dashes and underscores"
219
+ },
220
+ folderExists: (name) => `Folder "${name}" already exists. Please choose another name.`
221
+ },
222
+ vue: {
223
+ noVueDetected: "\u26A0\uFE0F No Vue.js project detected in the current directory.",
224
+ proposeSetup: "Would you like to create a new Vue.js project with Vite?",
225
+ projectName: "Project name",
226
+ projectNamePlaceholder: "my-vue-project",
227
+ typescript: "Use TypeScript?",
228
+ router: "Use Vue Router?",
229
+ pinia: "Use Pinia (state management)?",
230
+ vitest: "Use Vitest (testing)?",
231
+ eslint: "Use ESLint?",
232
+ prettier: "Use Prettier?",
233
+ creating: "Creating Vue.js project with Vite...",
234
+ success: "\u2705 Project created successfully!",
235
+ error: "\u274C Error creating project",
236
+ changingDirectory: "Changing to project directory...",
237
+ validation: {
238
+ empty: "Project name cannot be empty",
239
+ invalid: "Project name can only contain letters, numbers, dashes and underscores"
240
+ },
241
+ folderExists: (name) => `Folder "${name}" already exists. Please choose another name.`
242
+ }
243
+ };
244
+
245
+ // src/cli/i18n/es.ts
246
+ var es = {
247
+ language: {
248
+ select: "Elige tu idioma",
249
+ options: [
250
+ { value: "fr", name: "Fran\xE7ais" },
251
+ { value: "en", name: "English" },
252
+ { value: "es", name: "Espa\xF1ol" }
253
+ ]
254
+ },
255
+ common: {
256
+ continue: "Continuar",
257
+ cancel: "Cancelar",
258
+ back: "Volver",
259
+ none: "Ninguno",
260
+ selected: (count) => count === 0 ? "Ninguna biblioteca seleccionada" : count === 1 ? "1 biblioteca seleccionada" : `${count} bibliotecas seleccionadas`
261
+ },
262
+ plugins: {
263
+ selectCategory: (category) => `Selecciona tus bibliotecas: ${category}`,
264
+ selectMultiple: "Selecci\xF3n m\xFAltiple",
265
+ pressSpace: "Presiona <espacio> para seleccionar",
266
+ pressEnter: "Presiona <entrar> para confirmar",
267
+ description: "Descripci\xF3n"
268
+ },
269
+ detection: {
270
+ detecting: "\u{1F50D} Detectando contexto...",
271
+ framework: "Framework",
272
+ typescript: "TypeScript",
273
+ bundler: "Bundler",
274
+ packageManager: "Gestor de paquetes"
275
+ },
276
+ confirmation: {
277
+ summary: "\u{1F4CB} Resumen de la instalaci\xF3n",
278
+ packagesToInstall: "\u{1F4E6} Paquetes a instalar",
279
+ filesToCreate: "\u{1F4DD} Archivos que se crear\xE1n",
280
+ filesToModify: "\u{1F4DD} Archivos que se modificar\xE1n",
281
+ continueQuestion: "\xBFContinuar con la instalaci\xF3n?"
282
+ },
283
+ installation: {
284
+ installing: "Instalando...",
285
+ configuring: "Configurando...",
286
+ success: "\u2728 \xA1Instalaci\xF3n completada!",
287
+ error: "\u274C Error en la instalaci\xF3n",
288
+ rollback: "\u21BA Revirtiendo..."
289
+ },
290
+ report: {
291
+ title: "\u2728 \xA1Instalaci\xF3n completada!",
292
+ packagesInstalled: "\u{1F4E6} Paquetes instalados",
293
+ filesCreated: "\u{1F4DD} Archivos creados",
294
+ filesModified: "\u{1F4DD} Archivos modificados",
295
+ nextSteps: "\u{1F680} Pr\xF3ximos pasos"
296
+ },
297
+ errors: {
298
+ detectionFailed: "Fallo en la detecci\xF3n del contexto",
299
+ installationFailed: "Fallo en la instalaci\xF3n",
300
+ validationFailed: "Fallo en la validaci\xF3n",
301
+ incompatiblePlugins: (plugins) => `Plugins incompatibles detectados: ${plugins.join(", ")}`
302
+ },
303
+ vite: {
304
+ noReactDetected: "\u26A0\uFE0F No se detect\xF3 ning\xFAn proyecto React en el directorio actual.",
305
+ proposeSetup: "\xBFDesea crear un nuevo proyecto React con Vite?",
306
+ projectName: "Nombre del proyecto",
307
+ projectNamePlaceholder: "mi-proyecto-react",
308
+ template: "Plantilla",
309
+ templateOptions: [
310
+ { value: "react", name: "React (JavaScript)" },
311
+ { value: "react-ts", name: "React (TypeScript)" }
312
+ ],
313
+ creating: "Creando proyecto React con Vite...",
314
+ success: "\u2705 \xA1Proyecto creado con \xE9xito!",
315
+ error: "\u274C Error al crear el proyecto",
316
+ changingDirectory: "Cambiando al directorio del proyecto...",
317
+ validation: {
318
+ empty: "El nombre del proyecto no puede estar vac\xEDo",
319
+ invalid: "El nombre del proyecto solo puede contener letras, n\xFAmeros, guiones y guiones bajos"
320
+ },
321
+ folderExists: (name) => `La carpeta "${name}" ya existe. Por favor, elija otro nombre.`
322
+ },
323
+ nextjs: {
324
+ noNextjsDetected: "\u26A0\uFE0F No se detect\xF3 ning\xFAn proyecto Next.js en el directorio actual.",
325
+ proposeSetup: "\xBFDesea crear un nuevo proyecto Next.js?",
326
+ projectName: "Nombre del proyecto",
327
+ projectNamePlaceholder: "mi-proyecto-nextjs",
328
+ typescript: "\xBFUsar TypeScript?",
329
+ eslint: "\xBFUsar ESLint?",
330
+ tailwind: "\xBFUsar TailwindCSS?",
331
+ srcDir: "\xBFUsar directorio src/?",
332
+ appRouter: "\xBFUsar App Router (recomendado)?",
333
+ importAlias: "Alias de importaci\xF3n (ej: @/*)",
334
+ creating: "Creando proyecto Next.js...",
335
+ success: "\u2705 \xA1Proyecto creado con \xE9xito!",
336
+ error: "\u274C Error al crear el proyecto",
337
+ changingDirectory: "Cambiando al directorio del proyecto...",
338
+ validation: {
339
+ empty: "El nombre del proyecto no puede estar vac\xEDo",
340
+ invalid: "El nombre del proyecto solo puede contener letras, n\xFAmeros, guiones y guiones bajos"
341
+ },
342
+ folderExists: (name) => `La carpeta "${name}" ya existe. Por favor, elija otro nombre.`
343
+ },
344
+ vue: {
345
+ noVueDetected: "\u26A0\uFE0F No se detect\xF3 ning\xFAn proyecto Vue.js en el directorio actual.",
346
+ proposeSetup: "\xBFDesea crear un nuevo proyecto Vue.js con Vite?",
347
+ projectName: "Nombre del proyecto",
348
+ projectNamePlaceholder: "mi-proyecto-vue",
349
+ typescript: "\xBFUsar TypeScript?",
350
+ router: "\xBFUsar Vue Router?",
351
+ pinia: "\xBFUsar Pinia (gesti\xF3n de estado)?",
352
+ vitest: "\xBFUsar Vitest (pruebas)?",
353
+ eslint: "\xBFUsar ESLint?",
354
+ prettier: "\xBFUsar Prettier?",
355
+ creating: "Creando proyecto Vue.js con Vite...",
356
+ success: "\u2705 \xA1Proyecto creado con \xE9xito!",
357
+ error: "\u274C Error al crear el proyecto",
358
+ changingDirectory: "Cambiando al directorio del proyecto...",
359
+ validation: {
360
+ empty: "El nombre del proyecto no puede estar vac\xEDo",
361
+ invalid: "El nombre del proyecto solo puede contener letras, n\xFAmeros, guiones y guiones bajos"
362
+ },
363
+ folderExists: (name) => `La carpeta "${name}" ya existe. Por favor, elija otro nombre.`
364
+ }
365
+ };
366
+
367
+ // src/cli/i18n/index.ts
368
+ function getTranslations(lang) {
369
+ switch (lang) {
370
+ case "fr":
371
+ return fr;
372
+ case "en":
373
+ return en;
374
+ case "es":
375
+ return es;
376
+ default:
377
+ return en;
378
+ }
379
+ }
380
+
381
+ export {
382
+ getTranslations
383
+ };