@nexus-framework/cli 0.1.1 → 0.1.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.
Files changed (60) hide show
  1. package/README.md +69 -417
  2. package/dist/cli.js +14 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +5 -4
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/repair.d.ts +20 -0
  8. package/dist/commands/repair.d.ts.map +1 -0
  9. package/dist/commands/repair.js +85 -0
  10. package/dist/commands/repair.js.map +1 -0
  11. package/dist/commands/upgrade.d.ts +21 -0
  12. package/dist/commands/upgrade.d.ts.map +1 -0
  13. package/dist/commands/upgrade.js +95 -0
  14. package/dist/commands/upgrade.js.map +1 -0
  15. package/dist/generators/ai-config.d.ts +15 -8
  16. package/dist/generators/ai-config.d.ts.map +1 -1
  17. package/dist/generators/ai-config.js +209 -131
  18. package/dist/generators/ai-config.js.map +1 -1
  19. package/dist/generators/config.d.ts.map +1 -1
  20. package/dist/generators/config.js +127 -19
  21. package/dist/generators/config.js.map +1 -1
  22. package/dist/generators/docs.d.ts.map +1 -1
  23. package/dist/generators/docs.js +379 -159
  24. package/dist/generators/docs.js.map +1 -1
  25. package/dist/generators/index.d.ts +44 -0
  26. package/dist/generators/index.d.ts.map +1 -1
  27. package/dist/generators/index.js +148 -3
  28. package/dist/generators/index.js.map +1 -1
  29. package/dist/generators/landing-page.d.ts.map +1 -1
  30. package/dist/generators/landing-page.js +310 -76
  31. package/dist/generators/landing-page.js.map +1 -1
  32. package/dist/generators/structure.d.ts.map +1 -1
  33. package/dist/generators/structure.js +161 -17
  34. package/dist/generators/structure.js.map +1 -1
  35. package/dist/generators/tests.js +1 -1
  36. package/dist/prompts/index.d.ts +3 -0
  37. package/dist/prompts/index.d.ts.map +1 -1
  38. package/dist/prompts/index.js +12 -8
  39. package/dist/prompts/index.js.map +1 -1
  40. package/dist/types/config.d.ts +3 -0
  41. package/dist/types/config.d.ts.map +1 -1
  42. package/dist/utils/file-system.d.ts +9 -1
  43. package/dist/utils/file-system.d.ts.map +1 -1
  44. package/dist/utils/file-system.js +24 -1
  45. package/dist/utils/file-system.js.map +1 -1
  46. package/dist/utils/index.d.ts +2 -2
  47. package/dist/utils/index.d.ts.map +1 -1
  48. package/dist/utils/index.js +2 -2
  49. package/dist/utils/index.js.map +1 -1
  50. package/dist/utils/logger.d.ts +2 -2
  51. package/dist/utils/logger.d.ts.map +1 -1
  52. package/dist/utils/logger.js +6 -3
  53. package/dist/utils/logger.js.map +1 -1
  54. package/dist/utils/validator.d.ts +20 -3
  55. package/dist/utils/validator.d.ts.map +1 -1
  56. package/dist/utils/validator.js +48 -15
  57. package/dist/utils/validator.js.map +1 -1
  58. package/dist/version.d.ts +1 -1
  59. package/dist/version.js +1 -1
  60. package/package.json +1 -1
@@ -49,19 +49,54 @@ const NEXUS_FAVICON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="32" he
49
49
  function landingCSS() {
50
50
  return `*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
51
51
  html{color-scheme:dark}
52
- body{font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:#0a0a0a;color:#ededed;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center}
53
- .nexus-landing{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2rem;min-height:100vh;gap:2rem}
54
- .nexus-logo{width:160px;height:160px;animation:pulse 3s ease-in-out infinite}
55
- @keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.04)}}
56
- .nexus-title{font-size:clamp(2.5rem,6vw,4rem);font-weight:800;letter-spacing:-.03em;background:linear-gradient(135deg,#00D9FF 0%,#00FF87 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
57
- .nexus-subtitle{font-size:clamp(1rem,2.5vw,1.35rem);color:#888;max-width:520px;line-height:1.6}
58
- .nexus-meta{display:flex;gap:1.5rem;flex-wrap:wrap;justify-content:center;margin-top:.5rem}
59
- .nexus-badge{font-size:.85rem;padding:.35rem .85rem;border-radius:9999px;border:1px solid #222;color:#aaa;background:#111}
60
- .nexus-links{display:flex;gap:1rem;margin-top:1rem}
61
- .nexus-links a{color:#00D9FF;text-decoration:none;font-weight:600;padding:.6rem 1.4rem;border-radius:.5rem;border:1px solid #00D9FF33;transition:all .2s}
52
+ body{font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:#0a0a0a;color:#ededed;min-height:100vh}
53
+
54
+ /* ── Layout ── */
55
+ .nexus-page{max-width:720px;margin:0 auto;padding:3rem 1.5rem;display:flex;flex-direction:column;align-items:center;gap:2.5rem}
56
+
57
+ /* ── Hero ── */
58
+ .nexus-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:1rem}
59
+ .nexus-logo{width:140px;height:140px;animation:float 4s ease-in-out infinite}
60
+ @keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
61
+ .nexus-title{font-size:clamp(2.5rem,6vw,3.5rem);font-weight:800;letter-spacing:-.03em;background:linear-gradient(135deg,#00D9FF 0%,#00FF87 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
62
+ .nexus-subtitle{font-size:clamp(.95rem,2.2vw,1.15rem);color:#888;max-width:480px;line-height:1.6}
63
+
64
+ /* ── Badge row ── */
65
+ .nexus-meta{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center}
66
+ .nexus-badge{font-size:.8rem;padding:.3rem .75rem;border-radius:9999px;border:1px solid #222;color:#aaa;background:#111;transition:border-color .2s}
67
+ .nexus-badge:hover{border-color:#00D9FF44}
68
+
69
+ /* ── Cards ── */
70
+ .nexus-card{width:100%;background:#111;border:1px solid #1a1a1a;border-radius:1rem;padding:1.5rem;transition:border-color .25s}
71
+ .nexus-card:hover{border-color:#00D9FF33}
72
+ .nexus-card h2{font-size:1.1rem;font-weight:700;color:#ddd;margin-bottom:1rem}
73
+
74
+ /* ── Logo sizes row ── */
75
+ .nexus-sizes{display:flex;align-items:flex-end;justify-content:center;gap:2rem;flex-wrap:wrap}
76
+ .nexus-size-item{display:flex;flex-direction:column;align-items:center;gap:.5rem}
77
+ .nexus-size-item svg{opacity:.85;transition:opacity .2s,transform .2s}
78
+ .nexus-size-item:hover svg{opacity:1;transform:scale(1.06)}
79
+ .nexus-size-label{font-size:.75rem;color:#555;font-family:monospace}
80
+
81
+ /* ── Brand colors ── */
82
+ .nexus-colors{display:grid;grid-template-columns:repeat(5,1fr);gap:.75rem}
83
+ .nexus-color-swatch{display:flex;flex-direction:column;align-items:center;gap:.4rem}
84
+ .nexus-color-block{width:100%;aspect-ratio:1;border-radius:.625rem;transition:transform .2s}
85
+ .nexus-color-block:hover{transform:scale(1.08)}
86
+ .nexus-color-hex{font-size:.7rem;font-family:monospace;color:#666}
87
+ .nexus-color-name{font-size:.65rem;color:#444}
88
+
89
+ /* ── Links row ── */
90
+ .nexus-links{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}
91
+ .nexus-links a{color:#00D9FF;text-decoration:none;font-weight:600;font-size:.9rem;padding:.55rem 1.3rem;border-radius:.5rem;border:1px solid #00D9FF33;transition:all .2s}
62
92
  .nexus-links a:hover{background:#00D9FF15;border-color:#00D9FF}
63
- .nexus-footer{position:fixed;bottom:1.5rem;font-size:.8rem;color:#555}
64
- .nexus-footer a{color:#00D9FF;text-decoration:none}`;
93
+
94
+ /* ── Footer ── */
95
+ .nexus-footer{text-align:center;font-size:.78rem;color:#444;padding-top:.5rem}
96
+ .nexus-footer a{color:#00D9FF;text-decoration:none}
97
+
98
+ /* ── Responsive ── */
99
+ @media(max-width:480px){.nexus-colors{grid-template-columns:repeat(3,1fr)}.nexus-sizes{gap:1.25rem}}`;
65
100
  }
66
101
  /* ──────────────────────────────────────────────────────────────
67
102
  * Public API
@@ -79,7 +114,7 @@ export function generateLandingPage(config) {
79
114
  return files;
80
115
  }
81
116
  // Framework-specific landing page + CSS
82
- const pageFiles = getLandingPageForFramework(config.frontendFramework, config.projectName);
117
+ const pageFiles = getLandingPageForFramework(config.frontendFramework, config.displayName);
83
118
  files.push(...pageFiles);
84
119
  return files;
85
120
  }
@@ -110,27 +145,67 @@ function getLandingPageForFramework(framework, projectName) {
110
145
  function nextjsLandingPage(projectName) {
111
146
  const page = `import Image from "next/image";
112
147
 
148
+ const brandColors = [
149
+ { hex: "#00D9FF", name: "Primary Cyan" },
150
+ { hex: "#00FF87", name: "Success Green" },
151
+ { hex: "#5352ED", name: "Info Blue" },
152
+ { hex: "#A55EEA", name: "Purple Accent" },
153
+ { hex: "#FF4757", name: "Error Red" },
154
+ ];
155
+
113
156
  export default function Home() {
114
157
  return (
115
- <div className="nexus-landing">
116
- <Image
117
- className="nexus-logo"
118
- src="/nexus-logo.svg"
119
- alt="NEXUS Logo"
120
- width={160}
121
- height={160}
122
- priority
123
- />
124
- <h1 className="nexus-title">${projectName}</h1>
125
- <p className="nexus-subtitle">
126
- Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding tool by GDA Africa.
127
- Your project is ready. Start building something amazing.
128
- </p>
129
- <div className="nexus-meta">
130
- <span className="nexus-badge">Next.js 15</span>
131
- <span className="nexus-badge">TypeScript</span>
132
- <span className="nexus-badge">NEXUS Docs</span>
158
+ <div className="nexus-page">
159
+ {/* ── Hero ── */}
160
+ <section className="nexus-hero">
161
+ <Image
162
+ className="nexus-logo"
163
+ src="/nexus-logo.svg"
164
+ alt="NEXUS Logo"
165
+ width={140}
166
+ height={140}
167
+ priority
168
+ />
169
+ <h1 className="nexus-title">${projectName}</h1>
170
+ <p className="nexus-subtitle">
171
+ Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding
172
+ tool by GDA Africa. Your project is ready.
173
+ </p>
174
+ <div className="nexus-meta">
175
+ <span className="nexus-badge">Next.js 15</span>
176
+ <span className="nexus-badge">TypeScript</span>
177
+ <span className="nexus-badge">NEXUS Docs</span>
178
+ </div>
179
+ </section>
180
+
181
+ {/* ── Size Variations ── */}
182
+ <div className="nexus-card">
183
+ <h2>✦ Size Variations</h2>
184
+ <div className="nexus-sizes">
185
+ {[48, 96, 160].map((s) => (
186
+ <div className="nexus-size-item" key={s}>
187
+ <Image src="/nexus-logo.svg" alt="logo" width={s} height={s} />
188
+ <span className="nexus-size-label">{s}px</span>
189
+ </div>
190
+ ))}
191
+ </div>
192
+ </div>
193
+
194
+ {/* ── Brand Colors ── */}
195
+ <div className="nexus-card">
196
+ <h2>🎨 Brand Colors</h2>
197
+ <div className="nexus-colors">
198
+ {brandColors.map((c) => (
199
+ <div className="nexus-color-swatch" key={c.hex}>
200
+ <div className="nexus-color-block" style={{ background: c.hex }} />
201
+ <span className="nexus-color-hex">{c.hex}</span>
202
+ <span className="nexus-color-name">{c.name}</span>
203
+ </div>
204
+ ))}
205
+ </div>
133
206
  </div>
207
+
208
+ {/* ── Links ── */}
134
209
  <div className="nexus-links">
135
210
  <a href="https://github.com/GDA-Africa/nexus-cli" target="_blank" rel="noopener noreferrer">
136
211
  Documentation
@@ -139,6 +214,7 @@ export default function Home() {
139
214
  GDA Africa
140
215
  </a>
141
216
  </div>
217
+
142
218
  <footer className="nexus-footer">
143
219
  Scaffolded with 🔮 <a href="https://github.com/GDA-Africa/nexus-cli">NEXUS CLI</a> by{" "}
144
220
  <a href="https://github.com/GDA-Africa">GDA Africa</a>
@@ -185,18 +261,56 @@ function reactViteLandingPage(projectName) {
185
261
 
186
262
  function App() {
187
263
  return (
188
- <div className="nexus-landing">
189
- <img className="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width={160} height={160} />
190
- <h1 className="nexus-title">${projectName}</h1>
191
- <p className="nexus-subtitle">
192
- Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding tool by GDA Africa.
193
- Your project is ready. Start building something amazing.
194
- </p>
195
- <div className="nexus-meta">
196
- <span className="nexus-badge">React + Vite</span>
197
- <span className="nexus-badge">TypeScript</span>
198
- <span className="nexus-badge">NEXUS Docs</span>
264
+ <div className="nexus-page">
265
+ {/* ── Hero ── */}
266
+ <section className="nexus-hero">
267
+ <img className="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width={140} height={140} />
268
+ <h1 className="nexus-title">${projectName}</h1>
269
+ <p className="nexus-subtitle">
270
+ Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding
271
+ tool by GDA Africa. Your project is ready.
272
+ </p>
273
+ <div className="nexus-meta">
274
+ <span className="nexus-badge">React + Vite</span>
275
+ <span className="nexus-badge">TypeScript</span>
276
+ <span className="nexus-badge">NEXUS Docs</span>
277
+ </div>
278
+ </section>
279
+
280
+ {/* ── Size Variations ── */}
281
+ <div className="nexus-card">
282
+ <h2>✦ Size Variations</h2>
283
+ <div className="nexus-sizes">
284
+ {[48, 96, 160].map((s) => (
285
+ <div className="nexus-size-item" key={s}>
286
+ <img src="/nexus-logo.svg" alt="logo" width={s} height={s} />
287
+ <span className="nexus-size-label">{s}px</span>
288
+ </div>
289
+ ))}
290
+ </div>
291
+ </div>
292
+
293
+ {/* ── Brand Colors ── */}
294
+ <div className="nexus-card">
295
+ <h2>🎨 Brand Colors</h2>
296
+ <div className="nexus-colors">
297
+ {[
298
+ { hex: "#00D9FF", name: "Primary Cyan" },
299
+ { hex: "#00FF87", name: "Success Green" },
300
+ { hex: "#5352ED", name: "Info Blue" },
301
+ { hex: "#A55EEA", name: "Purple Accent" },
302
+ { hex: "#FF4757", name: "Error Red" },
303
+ ].map((c) => (
304
+ <div className="nexus-color-swatch" key={c.hex}>
305
+ <div className="nexus-color-block" style={{ background: c.hex }} />
306
+ <span className="nexus-color-hex">{c.hex}</span>
307
+ <span className="nexus-color-name">{c.name}</span>
308
+ </div>
309
+ ))}
310
+ </div>
199
311
  </div>
312
+
313
+ {/* ── Links ── */}
200
314
  <div className="nexus-links">
201
315
  <a href="https://github.com/GDA-Africa/nexus-cli" target="_blank" rel="noopener noreferrer">
202
316
  Documentation
@@ -205,6 +319,7 @@ function App() {
205
319
  GDA Africa
206
320
  </a>
207
321
  </div>
322
+
208
323
  <footer className="nexus-footer">
209
324
  Scaffolded with 🔮 <a href="https://github.com/GDA-Africa/nexus-cli">NEXUS CLI</a> by{" "}
210
325
  <a href="https://github.com/GDA-Africa">GDA Africa</a>
@@ -252,21 +367,60 @@ ReactDOM.createRoot(document.getElementById("root")!).render(
252
367
  * ────────────────────────────────────────────────────────────── */
253
368
  function sveltekitLandingPage(projectName) {
254
369
  const page = `<script lang="ts">
255
- // ${projectName} Landing Page
370
+ const brandColors = [
371
+ { hex: "#00D9FF", name: "Primary Cyan" },
372
+ { hex: "#00FF87", name: "Success Green" },
373
+ { hex: "#5352ED", name: "Info Blue" },
374
+ { hex: "#A55EEA", name: "Purple Accent" },
375
+ { hex: "#FF4757", name: "Error Red" },
376
+ ];
377
+ const sizes = [48, 96, 160];
256
378
  </script>
257
379
 
258
- <div class="nexus-landing">
259
- <img class="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width="160" height="160" />
260
- <h1 class="nexus-title">${projectName}</h1>
261
- <p class="nexus-subtitle">
262
- Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding tool by GDA Africa.
263
- Your project is ready. Start building something amazing.
264
- </p>
265
- <div class="nexus-meta">
266
- <span class="nexus-badge">SvelteKit</span>
267
- <span class="nexus-badge">TypeScript</span>
268
- <span class="nexus-badge">NEXUS Docs</span>
380
+ <div class="nexus-page">
381
+ <!-- Hero -->
382
+ <section class="nexus-hero">
383
+ <img class="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width="140" height="140" />
384
+ <h1 class="nexus-title">${projectName}</h1>
385
+ <p class="nexus-subtitle">
386
+ Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding
387
+ tool by GDA Africa. Your project is ready.
388
+ </p>
389
+ <div class="nexus-meta">
390
+ <span class="nexus-badge">SvelteKit</span>
391
+ <span class="nexus-badge">TypeScript</span>
392
+ <span class="nexus-badge">NEXUS Docs</span>
393
+ </div>
394
+ </section>
395
+
396
+ <!-- Size Variations -->
397
+ <div class="nexus-card">
398
+ <h2>✦ Size Variations</h2>
399
+ <div class="nexus-sizes">
400
+ {#each sizes as s}
401
+ <div class="nexus-size-item">
402
+ <img src="/nexus-logo.svg" alt="logo" width={s} height={s} />
403
+ <span class="nexus-size-label">{s}px</span>
404
+ </div>
405
+ {/each}
406
+ </div>
407
+ </div>
408
+
409
+ <!-- Brand Colors -->
410
+ <div class="nexus-card">
411
+ <h2>🎨 Brand Colors</h2>
412
+ <div class="nexus-colors">
413
+ {#each brandColors as c}
414
+ <div class="nexus-color-swatch">
415
+ <div class="nexus-color-block" style="background:{c.hex}"></div>
416
+ <span class="nexus-color-hex">{c.hex}</span>
417
+ <span class="nexus-color-name">{c.name}</span>
418
+ </div>
419
+ {/each}
420
+ </div>
269
421
  </div>
422
+
423
+ <!-- Links -->
270
424
  <div class="nexus-links">
271
425
  <a href="https://github.com/GDA-Africa/nexus-cli" target="_blank" rel="noopener noreferrer">
272
426
  Documentation
@@ -275,6 +429,7 @@ function sveltekitLandingPage(projectName) {
275
429
  GDA Africa
276
430
  </a>
277
431
  </div>
432
+
278
433
  <footer class="nexus-footer">
279
434
  Scaffolded with 🔮 <a href="https://github.com/GDA-Africa/nexus-cli">NEXUS CLI</a> by
280
435
  <a href="https://github.com/GDA-Africa">GDA Africa</a>
@@ -323,18 +478,46 @@ function nuxtLandingPage(projectName) {
323
478
  </template>
324
479
  `;
325
480
  const indexPage = `<template>
326
- <div class="nexus-landing">
327
- <img class="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width="160" height="160" />
328
- <h1 class="nexus-title">${projectName}</h1>
329
- <p class="nexus-subtitle">
330
- Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding tool by GDA Africa.
331
- Your project is ready. Start building something amazing.
332
- </p>
333
- <div class="nexus-meta">
334
- <span class="nexus-badge">Nuxt 3</span>
335
- <span class="nexus-badge">TypeScript</span>
336
- <span class="nexus-badge">NEXUS Docs</span>
481
+ <div class="nexus-page">
482
+ <!-- Hero -->
483
+ <section class="nexus-hero">
484
+ <img class="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width="140" height="140" />
485
+ <h1 class="nexus-title">${projectName}</h1>
486
+ <p class="nexus-subtitle">
487
+ Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding
488
+ tool by GDA Africa. Your project is ready.
489
+ </p>
490
+ <div class="nexus-meta">
491
+ <span class="nexus-badge">Nuxt 3</span>
492
+ <span class="nexus-badge">TypeScript</span>
493
+ <span class="nexus-badge">NEXUS Docs</span>
494
+ </div>
495
+ </section>
496
+
497
+ <!-- Size Variations -->
498
+ <div class="nexus-card">
499
+ <h2>✦ Size Variations</h2>
500
+ <div class="nexus-sizes">
501
+ <div v-for="s in [48, 96, 160]" :key="s" class="nexus-size-item">
502
+ <img src="/nexus-logo.svg" alt="logo" :width="s" :height="s" />
503
+ <span class="nexus-size-label">{{ s }}px</span>
504
+ </div>
505
+ </div>
506
+ </div>
507
+
508
+ <!-- Brand Colors -->
509
+ <div class="nexus-card">
510
+ <h2>🎨 Brand Colors</h2>
511
+ <div class="nexus-colors">
512
+ <div v-for="c in brandColors" :key="c.hex" class="nexus-color-swatch">
513
+ <div class="nexus-color-block" :style="{ background: c.hex }" />
514
+ <span class="nexus-color-hex">{{ c.hex }}</span>
515
+ <span class="nexus-color-name">{{ c.name }}</span>
516
+ </div>
517
+ </div>
337
518
  </div>
519
+
520
+ <!-- Links -->
338
521
  <div class="nexus-links">
339
522
  <a href="https://github.com/GDA-Africa/nexus-cli" target="_blank" rel="noopener noreferrer">
340
523
  Documentation
@@ -343,6 +526,7 @@ function nuxtLandingPage(projectName) {
343
526
  GDA Africa
344
527
  </a>
345
528
  </div>
529
+
346
530
  <footer class="nexus-footer">
347
531
  Scaffolded with 🔮 <a href="https://github.com/GDA-Africa/nexus-cli">NEXUS CLI</a> by
348
532
  <a href="https://github.com/GDA-Africa">GDA Africa</a>
@@ -351,6 +535,14 @@ function nuxtLandingPage(projectName) {
351
535
  </template>
352
536
 
353
537
  <script setup lang="ts">
538
+ const brandColors = [
539
+ { hex: "#00D9FF", name: "Primary Cyan" },
540
+ { hex: "#00FF87", name: "Success Green" },
541
+ { hex: "#5352ED", name: "Info Blue" },
542
+ { hex: "#A55EEA", name: "Purple Accent" },
543
+ { hex: "#FF4757", name: "Error Red" },
544
+ ];
545
+
354
546
  useHead({
355
547
  title: "${projectName}",
356
548
  meta: [{ name: "description", content: "Generated with NEXUS CLI by GDA Africa" }],
@@ -384,21 +576,62 @@ export default defineNuxtConfig({
384
576
  function astroLandingPage(projectName) {
385
577
  const indexAstro = `---
386
578
  import Layout from "../layouts/Layout.astro";
579
+
580
+ const brandColors = [
581
+ { hex: "#00D9FF", name: "Primary Cyan" },
582
+ { hex: "#00FF87", name: "Success Green" },
583
+ { hex: "#5352ED", name: "Info Blue" },
584
+ { hex: "#A55EEA", name: "Purple Accent" },
585
+ { hex: "#FF4757", name: "Error Red" },
586
+ ];
587
+ const sizes = [48, 96, 160];
387
588
  ---
388
589
 
389
590
  <Layout title="${projectName}">
390
- <div class="nexus-landing">
391
- <img class="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width="160" height="160" />
392
- <h1 class="nexus-title">${projectName}</h1>
393
- <p class="nexus-subtitle">
394
- Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding tool by GDA Africa.
395
- Your project is ready. Start building something amazing.
396
- </p>
397
- <div class="nexus-meta">
398
- <span class="nexus-badge">Astro</span>
399
- <span class="nexus-badge">TypeScript</span>
400
- <span class="nexus-badge">NEXUS Docs</span>
591
+ <div class="nexus-page">
592
+ <!-- Hero -->
593
+ <section class="nexus-hero">
594
+ <img class="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width="140" height="140" />
595
+ <h1 class="nexus-title">${projectName}</h1>
596
+ <p class="nexus-subtitle">
597
+ Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding
598
+ tool by GDA Africa. Your project is ready.
599
+ </p>
600
+ <div class="nexus-meta">
601
+ <span class="nexus-badge">Astro</span>
602
+ <span class="nexus-badge">TypeScript</span>
603
+ <span class="nexus-badge">NEXUS Docs</span>
604
+ </div>
605
+ </section>
606
+
607
+ <!-- Size Variations -->
608
+ <div class="nexus-card">
609
+ <h2>✦ Size Variations</h2>
610
+ <div class="nexus-sizes">
611
+ {sizes.map((s) => (
612
+ <div class="nexus-size-item">
613
+ <img src="/nexus-logo.svg" alt="logo" width={s} height={s} />
614
+ <span class="nexus-size-label">{s}px</span>
615
+ </div>
616
+ ))}
617
+ </div>
618
+ </div>
619
+
620
+ <!-- Brand Colors -->
621
+ <div class="nexus-card">
622
+ <h2>🎨 Brand Colors</h2>
623
+ <div class="nexus-colors">
624
+ {brandColors.map((c) => (
625
+ <div class="nexus-color-swatch">
626
+ <div class="nexus-color-block" style={\`background:\${c.hex}\`} />
627
+ <span class="nexus-color-hex">{c.hex}</span>
628
+ <span class="nexus-color-name">{c.name}</span>
629
+ </div>
630
+ ))}
631
+ </div>
401
632
  </div>
633
+
634
+ <!-- Links -->
402
635
  <div class="nexus-links">
403
636
  <a href="https://github.com/GDA-Africa/nexus-cli" target="_blank" rel="noopener noreferrer">
404
637
  Documentation
@@ -407,6 +640,7 @@ import Layout from "../layouts/Layout.astro";
407
640
  GDA Africa
408
641
  </a>
409
642
  </div>
643
+
410
644
  <footer class="nexus-footer">
411
645
  Scaffolded with 🔮 <a href="https://github.com/GDA-Africa/nexus-cli">NEXUS CLI</a> by
412
646
  <a href="https://github.com/GDA-Africa">GDA Africa</a>
@@ -1 +1 @@
1
- {"version":3,"file":"landing-page.js","sourceRoot":"","sources":["../../src/generators/landing-page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"landing-page.js","sourceRoot":"","sources":["../../src/generators/landing-page.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../src/generators/structure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE/E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,kBAAkB,EAAE,CAmE7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CAwCtE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAqCjD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CA0CjE"}
1
+ {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../src/generators/structure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE/E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,kBAAkB,EAAE,CAmE7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CA+BtE;AAqKD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAqCjD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CA0CjE"}