popeye-cli 1.5.0 → 1.7.0
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/CHANGELOG.md +54 -0
- package/README.md +184 -31
- package/dist/cli/commands/create.d.ts.map +1 -1
- package/dist/cli/commands/create.js +54 -4
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/interactive.d.ts +29 -0
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +90 -7
- package/dist/cli/interactive.js.map +1 -1
- package/dist/generators/all.d.ts +4 -1
- package/dist/generators/all.d.ts.map +1 -1
- package/dist/generators/all.js +36 -316
- package/dist/generators/all.js.map +1 -1
- package/dist/generators/doc-parser.d.ts +18 -3
- package/dist/generators/doc-parser.d.ts.map +1 -1
- package/dist/generators/doc-parser.js +81 -10
- package/dist/generators/doc-parser.js.map +1 -1
- package/dist/generators/frontend-design-analyzer.d.ts +30 -0
- package/dist/generators/frontend-design-analyzer.d.ts.map +1 -0
- package/dist/generators/frontend-design-analyzer.js +208 -0
- package/dist/generators/frontend-design-analyzer.js.map +1 -0
- package/dist/generators/shared-packages.d.ts +45 -0
- package/dist/generators/shared-packages.d.ts.map +1 -0
- package/dist/generators/shared-packages.js +456 -0
- package/dist/generators/shared-packages.js.map +1 -0
- package/dist/generators/templates/index.d.ts +4 -0
- package/dist/generators/templates/index.d.ts.map +1 -1
- package/dist/generators/templates/index.js +4 -0
- package/dist/generators/templates/index.js.map +1 -1
- package/dist/generators/templates/website-components.d.ts.map +1 -1
- package/dist/generators/templates/website-components.js +36 -11
- package/dist/generators/templates/website-components.js.map +1 -1
- package/dist/generators/templates/website-config.d.ts +15 -1
- package/dist/generators/templates/website-config.d.ts.map +1 -1
- package/dist/generators/templates/website-config.js +155 -13
- package/dist/generators/templates/website-config.js.map +1 -1
- package/dist/generators/templates/website-landing.d.ts +24 -0
- package/dist/generators/templates/website-landing.d.ts.map +1 -0
- package/dist/generators/templates/website-landing.js +276 -0
- package/dist/generators/templates/website-landing.js.map +1 -0
- package/dist/generators/templates/website-layout.d.ts +42 -0
- package/dist/generators/templates/website-layout.d.ts.map +1 -0
- package/dist/generators/templates/website-layout.js +408 -0
- package/dist/generators/templates/website-layout.js.map +1 -0
- package/dist/generators/templates/website-pricing.d.ts +11 -0
- package/dist/generators/templates/website-pricing.d.ts.map +1 -0
- package/dist/generators/templates/website-pricing.js +313 -0
- package/dist/generators/templates/website-pricing.js.map +1 -0
- package/dist/generators/templates/website-sections.d.ts +102 -0
- package/dist/generators/templates/website-sections.d.ts.map +1 -0
- package/dist/generators/templates/website-sections.js +444 -0
- package/dist/generators/templates/website-sections.js.map +1 -0
- package/dist/generators/templates/website.d.ts +10 -50
- package/dist/generators/templates/website.d.ts.map +1 -1
- package/dist/generators/templates/website.js +12 -788
- package/dist/generators/templates/website.js.map +1 -1
- package/dist/generators/website-content-scanner.d.ts +37 -0
- package/dist/generators/website-content-scanner.d.ts.map +1 -0
- package/dist/generators/website-content-scanner.js +165 -0
- package/dist/generators/website-content-scanner.js.map +1 -0
- package/dist/generators/website-context.d.ts +38 -2
- package/dist/generators/website-context.d.ts.map +1 -1
- package/dist/generators/website-context.js +179 -19
- package/dist/generators/website-context.js.map +1 -1
- package/dist/generators/website-debug.d.ts +68 -0
- package/dist/generators/website-debug.d.ts.map +1 -0
- package/dist/generators/website-debug.js +93 -0
- package/dist/generators/website-debug.js.map +1 -0
- package/dist/generators/website.d.ts +2 -0
- package/dist/generators/website.d.ts.map +1 -1
- package/dist/generators/website.js +66 -4
- package/dist/generators/website.js.map +1 -1
- package/dist/generators/workspace-root.d.ts +27 -0
- package/dist/generators/workspace-root.d.ts.map +1 -0
- package/dist/generators/workspace-root.js +100 -0
- package/dist/generators/workspace-root.js.map +1 -0
- package/dist/state/index.d.ts +8 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +11 -0
- package/dist/state/index.js.map +1 -1
- package/dist/types/consensus.d.ts +3 -0
- package/dist/types/consensus.d.ts.map +1 -1
- package/dist/types/consensus.js +1 -0
- package/dist/types/consensus.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/tester.d.ts +138 -0
- package/dist/types/tester.d.ts.map +1 -0
- package/dist/types/tester.js +110 -0
- package/dist/types/tester.js.map +1 -0
- package/dist/types/workflow.d.ts +151 -0
- package/dist/types/workflow.d.ts.map +1 -1
- package/dist/types/workflow.js +14 -0
- package/dist/types/workflow.js.map +1 -1
- package/dist/upgrade/handlers.d.ts +15 -0
- package/dist/upgrade/handlers.d.ts.map +1 -1
- package/dist/upgrade/handlers.js +52 -0
- package/dist/upgrade/handlers.js.map +1 -1
- package/dist/workflow/auto-fix-bundler.d.ts +37 -0
- package/dist/workflow/auto-fix-bundler.d.ts.map +1 -0
- package/dist/workflow/auto-fix-bundler.js +320 -0
- package/dist/workflow/auto-fix-bundler.js.map +1 -0
- package/dist/workflow/auto-fix.d.ts.map +1 -1
- package/dist/workflow/auto-fix.js +10 -3
- package/dist/workflow/auto-fix.js.map +1 -1
- package/dist/workflow/execution-mode.js +2 -2
- package/dist/workflow/execution-mode.js.map +1 -1
- package/dist/workflow/index.d.ts +2 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +13 -0
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/overview.d.ts.map +1 -1
- package/dist/workflow/overview.js +4 -0
- package/dist/workflow/overview.js.map +1 -1
- package/dist/workflow/plan-mode.d.ts +4 -3
- package/dist/workflow/plan-mode.d.ts.map +1 -1
- package/dist/workflow/plan-mode.js +69 -5
- package/dist/workflow/plan-mode.js.map +1 -1
- package/dist/workflow/task-workflow.d.ts +5 -0
- package/dist/workflow/task-workflow.d.ts.map +1 -1
- package/dist/workflow/task-workflow.js +172 -6
- package/dist/workflow/task-workflow.js.map +1 -1
- package/dist/workflow/tester.d.ts +120 -0
- package/dist/workflow/tester.d.ts.map +1 -0
- package/dist/workflow/tester.js +589 -0
- package/dist/workflow/tester.js.map +1 -0
- package/dist/workflow/website-strategy.d.ts +9 -0
- package/dist/workflow/website-strategy.d.ts.map +1 -1
- package/dist/workflow/website-strategy.js +73 -1
- package/dist/workflow/website-strategy.js.map +1 -1
- package/dist/workflow/website-updater.d.ts.map +1 -1
- package/dist/workflow/website-updater.js +15 -4
- package/dist/workflow/website-updater.js.map +1 -1
- package/dist/workflow/workflow-logger.d.ts +1 -1
- package/dist/workflow/workflow-logger.d.ts.map +1 -1
- package/dist/workflow/workflow-logger.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/commands/create.ts +58 -4
- package/src/cli/interactive.ts +96 -7
- package/src/generators/all.ts +44 -332
- package/src/generators/doc-parser.ts +87 -10
- package/src/generators/frontend-design-analyzer.ts +261 -0
- package/src/generators/shared-packages.ts +500 -0
- package/src/generators/templates/index.ts +4 -0
- package/src/generators/templates/website-components.ts +36 -11
- package/src/generators/templates/website-config.ts +166 -13
- package/src/generators/templates/website-landing.ts +331 -0
- package/src/generators/templates/website-layout.ts +443 -0
- package/src/generators/templates/website-pricing.ts +330 -0
- package/src/generators/templates/website-sections.ts +541 -0
- package/src/generators/templates/website.ts +38 -851
- package/src/generators/website-content-scanner.ts +208 -0
- package/src/generators/website-context.ts +248 -20
- package/src/generators/website-debug.ts +130 -0
- package/src/generators/website.ts +71 -3
- package/src/generators/workspace-root.ts +113 -0
- package/src/state/index.ts +15 -0
- package/src/types/consensus.ts +3 -0
- package/src/types/index.ts +21 -0
- package/src/types/tester.ts +136 -0
- package/src/types/workflow.ts +32 -0
- package/src/upgrade/handlers.ts +65 -0
- package/src/workflow/auto-fix-bundler.ts +392 -0
- package/src/workflow/auto-fix.ts +11 -3
- package/src/workflow/execution-mode.ts +2 -2
- package/src/workflow/index.ts +13 -0
- package/src/workflow/overview.ts +6 -0
- package/src/workflow/plan-mode.ts +81 -7
- package/src/workflow/task-workflow.ts +227 -5
- package/src/workflow/tester.ts +723 -0
- package/src/workflow/website-strategy.ts +75 -1
- package/src/workflow/website-updater.ts +17 -6
- package/src/workflow/workflow-logger.ts +2 -0
- package/tests/cli/project-naming.test.ts +136 -0
- package/tests/generators/doc-parser.test.ts +121 -0
- package/tests/generators/frontend-design-analyzer.test.ts +90 -0
- package/tests/generators/quality-gate.test.ts +183 -0
- package/tests/generators/shared-packages.test.ts +83 -0
- package/tests/generators/website-components.test.ts +1 -1
- package/tests/generators/website-config.test.ts +84 -0
- package/tests/generators/website-content-scanner.test.ts +181 -0
- package/tests/generators/website-context.test.ts +109 -0
- package/tests/generators/website-debug.test.ts +77 -0
- package/tests/generators/website-landing.test.ts +188 -0
- package/tests/generators/website-pricing.test.ts +98 -0
- package/tests/generators/website-sections.test.ts +245 -0
- package/tests/generators/workspace-root.test.ts +105 -0
- package/tests/types/tester.test.ts +174 -0
- package/tests/upgrade/handlers.test.ts +162 -0
- package/tests/workflow/auto-fix-bundler.test.ts +242 -0
- package/tests/workflow/plan-mode.test.ts +111 -1
- package/tests/workflow/tester.test.ts +401 -0
- package/tests/workflow/website-strategy.test.ts +55 -0
package/dist/generators/all.js
CHANGED
|
@@ -6,6 +6,8 @@ import { promises as fs } from 'node:fs';
|
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import { generateFullstackProject } from './fullstack.js';
|
|
8
8
|
import { generateWebsiteProject } from './website.js';
|
|
9
|
+
import { buildWebsiteContext, validateWebsiteContext } from './website-context.js';
|
|
10
|
+
import { generateDesignTokensPackage as generateDesignTokensPackageImpl, generateUiPackage as generateUiPackageImpl, } from './shared-packages.js';
|
|
9
11
|
/**
|
|
10
12
|
* Create a directory if it doesn't exist
|
|
11
13
|
*/
|
|
@@ -310,325 +312,17 @@ Generated by [Popeye CLI](https://github.com/popeye-cli/popeye)
|
|
|
310
312
|
}
|
|
311
313
|
/**
|
|
312
314
|
* Generate design tokens package
|
|
315
|
+
* Delegates to shared-packages.ts with optional brand color passthrough
|
|
313
316
|
*/
|
|
314
|
-
export function generateDesignTokensPackage(projectName) {
|
|
315
|
-
return
|
|
316
|
-
files: [
|
|
317
|
-
{
|
|
318
|
-
path: 'package.json',
|
|
319
|
-
content: JSON.stringify({
|
|
320
|
-
name: `@${projectName}/design-tokens`,
|
|
321
|
-
version: '1.0.0',
|
|
322
|
-
type: 'module',
|
|
323
|
-
main: './dist/index.js',
|
|
324
|
-
types: './dist/index.d.ts',
|
|
325
|
-
exports: {
|
|
326
|
-
'.': './dist/index.js',
|
|
327
|
-
'./tailwind': './dist/tailwind-preset.js',
|
|
328
|
-
},
|
|
329
|
-
scripts: {
|
|
330
|
-
build: 'tsc',
|
|
331
|
-
dev: 'tsc --watch',
|
|
332
|
-
},
|
|
333
|
-
devDependencies: {
|
|
334
|
-
typescript: '^5.3.3',
|
|
335
|
-
},
|
|
336
|
-
}, null, 2),
|
|
337
|
-
},
|
|
338
|
-
{
|
|
339
|
-
path: 'tsconfig.json',
|
|
340
|
-
content: JSON.stringify({
|
|
341
|
-
compilerOptions: {
|
|
342
|
-
target: 'ES2020',
|
|
343
|
-
module: 'ESNext',
|
|
344
|
-
moduleResolution: 'bundler',
|
|
345
|
-
declaration: true,
|
|
346
|
-
outDir: './dist',
|
|
347
|
-
strict: true,
|
|
348
|
-
esModuleInterop: true,
|
|
349
|
-
skipLibCheck: true,
|
|
350
|
-
},
|
|
351
|
-
include: ['src'],
|
|
352
|
-
}, null, 2),
|
|
353
|
-
},
|
|
354
|
-
{
|
|
355
|
-
path: 'src/index.ts',
|
|
356
|
-
content: `/**
|
|
357
|
-
* Design tokens for ${projectName}
|
|
358
|
-
*/
|
|
359
|
-
|
|
360
|
-
export * from './colors.js';
|
|
361
|
-
export * from './typography.js';
|
|
362
|
-
`,
|
|
363
|
-
},
|
|
364
|
-
{
|
|
365
|
-
path: 'src/colors.ts',
|
|
366
|
-
content: `/**
|
|
367
|
-
* Color palette
|
|
368
|
-
*/
|
|
369
|
-
|
|
370
|
-
export const colors = {
|
|
371
|
-
primary: {
|
|
372
|
-
50: '#f0f9ff',
|
|
373
|
-
100: '#e0f2fe',
|
|
374
|
-
200: '#bae6fd',
|
|
375
|
-
300: '#7dd3fc',
|
|
376
|
-
400: '#38bdf8',
|
|
377
|
-
500: '#0ea5e9',
|
|
378
|
-
600: '#0284c7',
|
|
379
|
-
700: '#0369a1',
|
|
380
|
-
800: '#075985',
|
|
381
|
-
900: '#0c4a6e',
|
|
382
|
-
},
|
|
383
|
-
secondary: {
|
|
384
|
-
50: '#f8fafc',
|
|
385
|
-
100: '#f1f5f9',
|
|
386
|
-
200: '#e2e8f0',
|
|
387
|
-
300: '#cbd5e1',
|
|
388
|
-
400: '#94a3b8',
|
|
389
|
-
500: '#64748b',
|
|
390
|
-
600: '#475569',
|
|
391
|
-
700: '#334155',
|
|
392
|
-
800: '#1e293b',
|
|
393
|
-
900: '#0f172a',
|
|
394
|
-
},
|
|
395
|
-
} as const;
|
|
396
|
-
|
|
397
|
-
export type ColorScale = typeof colors.primary;
|
|
398
|
-
export type Colors = typeof colors;
|
|
399
|
-
`,
|
|
400
|
-
},
|
|
401
|
-
{
|
|
402
|
-
path: 'src/typography.ts',
|
|
403
|
-
content: `/**
|
|
404
|
-
* Typography settings
|
|
405
|
-
*/
|
|
406
|
-
|
|
407
|
-
export const typography = {
|
|
408
|
-
fontFamily: {
|
|
409
|
-
sans: ['Inter', 'system-ui', 'sans-serif'],
|
|
410
|
-
mono: ['JetBrains Mono', 'Fira Code', 'monospace'],
|
|
411
|
-
},
|
|
412
|
-
fontSize: {
|
|
413
|
-
xs: ['0.75rem', { lineHeight: '1rem' }],
|
|
414
|
-
sm: ['0.875rem', { lineHeight: '1.25rem' }],
|
|
415
|
-
base: ['1rem', { lineHeight: '1.5rem' }],
|
|
416
|
-
lg: ['1.125rem', { lineHeight: '1.75rem' }],
|
|
417
|
-
xl: ['1.25rem', { lineHeight: '1.75rem' }],
|
|
418
|
-
'2xl': ['1.5rem', { lineHeight: '2rem' }],
|
|
419
|
-
'3xl': ['1.875rem', { lineHeight: '2.25rem' }],
|
|
420
|
-
'4xl': ['2.25rem', { lineHeight: '2.5rem' }],
|
|
421
|
-
'5xl': ['3rem', { lineHeight: '1' }],
|
|
422
|
-
'6xl': ['3.75rem', { lineHeight: '1' }],
|
|
423
|
-
},
|
|
424
|
-
} as const;
|
|
425
|
-
|
|
426
|
-
export type Typography = typeof typography;
|
|
427
|
-
`,
|
|
428
|
-
},
|
|
429
|
-
{
|
|
430
|
-
path: 'src/tailwind-preset.ts',
|
|
431
|
-
content: `/**
|
|
432
|
-
* Tailwind CSS preset with design tokens
|
|
433
|
-
*/
|
|
434
|
-
|
|
435
|
-
import { colors } from './colors.js';
|
|
436
|
-
import { typography } from './typography.js';
|
|
437
|
-
|
|
438
|
-
export const preset = {
|
|
439
|
-
theme: {
|
|
440
|
-
extend: {
|
|
441
|
-
colors,
|
|
442
|
-
fontFamily: typography.fontFamily,
|
|
443
|
-
fontSize: typography.fontSize,
|
|
444
|
-
},
|
|
445
|
-
},
|
|
446
|
-
};
|
|
447
|
-
|
|
448
|
-
export default preset;
|
|
449
|
-
`,
|
|
450
|
-
},
|
|
451
|
-
],
|
|
452
|
-
};
|
|
317
|
+
export function generateDesignTokensPackage(projectName, brandColors) {
|
|
318
|
+
return generateDesignTokensPackageImpl(projectName, brandColors);
|
|
453
319
|
}
|
|
454
320
|
/**
|
|
455
321
|
* Generate UI components package
|
|
322
|
+
* Delegates to shared-packages.ts
|
|
456
323
|
*/
|
|
457
324
|
export function generateUiPackage(projectName) {
|
|
458
|
-
return
|
|
459
|
-
files: [
|
|
460
|
-
{
|
|
461
|
-
path: 'package.json',
|
|
462
|
-
content: JSON.stringify({
|
|
463
|
-
name: `@${projectName}/ui`,
|
|
464
|
-
version: '1.0.0',
|
|
465
|
-
type: 'module',
|
|
466
|
-
main: './dist/index.js',
|
|
467
|
-
types: './dist/index.d.ts',
|
|
468
|
-
exports: {
|
|
469
|
-
'.': './dist/index.js',
|
|
470
|
-
'./button': './dist/button.js',
|
|
471
|
-
'./card': './dist/card.js',
|
|
472
|
-
},
|
|
473
|
-
scripts: {
|
|
474
|
-
build: 'tsc',
|
|
475
|
-
dev: 'tsc --watch',
|
|
476
|
-
},
|
|
477
|
-
dependencies: {
|
|
478
|
-
clsx: '^2.1.0',
|
|
479
|
-
'tailwind-merge': '^2.2.0',
|
|
480
|
-
},
|
|
481
|
-
peerDependencies: {
|
|
482
|
-
react: '>=18.0.0',
|
|
483
|
-
'react-dom': '>=18.0.0',
|
|
484
|
-
},
|
|
485
|
-
devDependencies: {
|
|
486
|
-
'@types/react': '^18.2.0',
|
|
487
|
-
'@types/react-dom': '^18.2.0',
|
|
488
|
-
typescript: '^5.3.3',
|
|
489
|
-
},
|
|
490
|
-
}, null, 2),
|
|
491
|
-
},
|
|
492
|
-
{
|
|
493
|
-
path: 'tsconfig.json',
|
|
494
|
-
content: JSON.stringify({
|
|
495
|
-
compilerOptions: {
|
|
496
|
-
target: 'ES2020',
|
|
497
|
-
module: 'ESNext',
|
|
498
|
-
moduleResolution: 'bundler',
|
|
499
|
-
declaration: true,
|
|
500
|
-
outDir: './dist',
|
|
501
|
-
strict: true,
|
|
502
|
-
esModuleInterop: true,
|
|
503
|
-
skipLibCheck: true,
|
|
504
|
-
jsx: 'react-jsx',
|
|
505
|
-
},
|
|
506
|
-
include: ['src'],
|
|
507
|
-
}, null, 2),
|
|
508
|
-
},
|
|
509
|
-
{
|
|
510
|
-
path: 'src/index.ts',
|
|
511
|
-
content: `/**
|
|
512
|
-
* Shared UI components for ${projectName}
|
|
513
|
-
*/
|
|
514
|
-
|
|
515
|
-
export * from './button.js';
|
|
516
|
-
export * from './card.js';
|
|
517
|
-
export * from './utils.js';
|
|
518
|
-
`,
|
|
519
|
-
},
|
|
520
|
-
{
|
|
521
|
-
path: 'src/utils.ts',
|
|
522
|
-
content: `import { clsx, type ClassValue } from 'clsx';
|
|
523
|
-
import { twMerge } from 'tailwind-merge';
|
|
524
|
-
|
|
525
|
-
export function cn(...inputs: ClassValue[]) {
|
|
526
|
-
return twMerge(clsx(inputs));
|
|
527
|
-
}
|
|
528
|
-
`,
|
|
529
|
-
},
|
|
530
|
-
{
|
|
531
|
-
path: 'src/button.tsx',
|
|
532
|
-
content: `import * as React from 'react';
|
|
533
|
-
import { cn } from './utils.js';
|
|
534
|
-
|
|
535
|
-
export interface ButtonProps
|
|
536
|
-
extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
537
|
-
variant?: 'primary' | 'secondary' | 'outline' | 'ghost';
|
|
538
|
-
size?: 'sm' | 'md' | 'lg';
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
|
|
542
|
-
({ className, variant = 'primary', size = 'md', ...props }, ref) => {
|
|
543
|
-
return (
|
|
544
|
-
<button
|
|
545
|
-
className={cn(
|
|
546
|
-
'inline-flex items-center justify-center rounded-md font-medium transition-colors',
|
|
547
|
-
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',
|
|
548
|
-
'disabled:pointer-events-none disabled:opacity-50',
|
|
549
|
-
{
|
|
550
|
-
// Variants
|
|
551
|
-
'bg-primary-600 text-white hover:bg-primary-500': variant === 'primary',
|
|
552
|
-
'bg-secondary-100 text-secondary-900 hover:bg-secondary-200': variant === 'secondary',
|
|
553
|
-
'border border-secondary-300 bg-transparent hover:bg-secondary-50': variant === 'outline',
|
|
554
|
-
'bg-transparent hover:bg-secondary-100': variant === 'ghost',
|
|
555
|
-
// Sizes
|
|
556
|
-
'h-8 px-3 text-sm': size === 'sm',
|
|
557
|
-
'h-10 px-4 text-sm': size === 'md',
|
|
558
|
-
'h-12 px-6 text-base': size === 'lg',
|
|
559
|
-
},
|
|
560
|
-
className
|
|
561
|
-
)}
|
|
562
|
-
ref={ref}
|
|
563
|
-
{...props}
|
|
564
|
-
/>
|
|
565
|
-
);
|
|
566
|
-
}
|
|
567
|
-
);
|
|
568
|
-
|
|
569
|
-
Button.displayName = 'Button';
|
|
570
|
-
`,
|
|
571
|
-
},
|
|
572
|
-
{
|
|
573
|
-
path: 'src/card.tsx',
|
|
574
|
-
content: `import * as React from 'react';
|
|
575
|
-
import { cn } from './utils.js';
|
|
576
|
-
|
|
577
|
-
export interface CardProps extends React.HTMLAttributes<HTMLDivElement> {}
|
|
578
|
-
|
|
579
|
-
export const Card = React.forwardRef<HTMLDivElement, CardProps>(
|
|
580
|
-
({ className, ...props }, ref) => (
|
|
581
|
-
<div
|
|
582
|
-
ref={ref}
|
|
583
|
-
className={cn(
|
|
584
|
-
'rounded-lg border border-secondary-200 bg-white shadow-sm',
|
|
585
|
-
className
|
|
586
|
-
)}
|
|
587
|
-
{...props}
|
|
588
|
-
/>
|
|
589
|
-
)
|
|
590
|
-
);
|
|
591
|
-
|
|
592
|
-
Card.displayName = 'Card';
|
|
593
|
-
|
|
594
|
-
export const CardHeader = React.forwardRef<
|
|
595
|
-
HTMLDivElement,
|
|
596
|
-
React.HTMLAttributes<HTMLDivElement>
|
|
597
|
-
>(({ className, ...props }, ref) => (
|
|
598
|
-
<div
|
|
599
|
-
ref={ref}
|
|
600
|
-
className={cn('flex flex-col space-y-1.5 p-6', className)}
|
|
601
|
-
{...props}
|
|
602
|
-
/>
|
|
603
|
-
));
|
|
604
|
-
|
|
605
|
-
CardHeader.displayName = 'CardHeader';
|
|
606
|
-
|
|
607
|
-
export const CardTitle = React.forwardRef<
|
|
608
|
-
HTMLParagraphElement,
|
|
609
|
-
React.HTMLAttributes<HTMLHeadingElement>
|
|
610
|
-
>(({ className, ...props }, ref) => (
|
|
611
|
-
<h3
|
|
612
|
-
ref={ref}
|
|
613
|
-
className={cn('text-lg font-semibold leading-none tracking-tight', className)}
|
|
614
|
-
{...props}
|
|
615
|
-
/>
|
|
616
|
-
));
|
|
617
|
-
|
|
618
|
-
CardTitle.displayName = 'CardTitle';
|
|
619
|
-
|
|
620
|
-
export const CardContent = React.forwardRef<
|
|
621
|
-
HTMLDivElement,
|
|
622
|
-
React.HTMLAttributes<HTMLDivElement>
|
|
623
|
-
>(({ className, ...props }, ref) => (
|
|
624
|
-
<div ref={ref} className={cn('p-6 pt-0', className)} {...props} />
|
|
625
|
-
));
|
|
626
|
-
|
|
627
|
-
CardContent.displayName = 'CardContent';
|
|
628
|
-
`,
|
|
629
|
-
},
|
|
630
|
-
],
|
|
631
|
-
};
|
|
325
|
+
return generateUiPackageImpl(projectName);
|
|
632
326
|
}
|
|
633
327
|
/**
|
|
634
328
|
* Generate a complete "all" project (FE + BE + Website)
|
|
@@ -649,6 +343,29 @@ export async function generateAllProject(spec, outputDir, options = {}) {
|
|
|
649
343
|
await ensureDir(path.join(projectDir, 'packages', 'ui', 'src'));
|
|
650
344
|
await ensureDir(path.join(projectDir, 'packages', 'contracts'));
|
|
651
345
|
await ensureDir(path.join(projectDir, '.popeye'));
|
|
346
|
+
// Auto-build content context if not provided
|
|
347
|
+
let contentContext = options.contentContext;
|
|
348
|
+
let contextWarning;
|
|
349
|
+
if (!contentContext) {
|
|
350
|
+
try {
|
|
351
|
+
contentContext = await buildWebsiteContext(projectDir, projectName);
|
|
352
|
+
}
|
|
353
|
+
catch (e) {
|
|
354
|
+
contextWarning = e instanceof Error ? e.message : 'Unknown error building website context';
|
|
355
|
+
// Proceed with defaults, but warning is logged below
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
if (contextWarning) {
|
|
359
|
+
// Log warning so user sees it, but don't block generation
|
|
360
|
+
console.warn(`[website-context] Warning: ${contextWarning}`);
|
|
361
|
+
}
|
|
362
|
+
// Soft validation: log quality issues without blocking monorepo generation
|
|
363
|
+
if (contentContext) {
|
|
364
|
+
const validation = validateWebsiteContext(contentContext, projectName);
|
|
365
|
+
for (const issue of [...validation.issues, ...validation.warnings]) {
|
|
366
|
+
console.warn(`[website-context] ${issue}`);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
652
369
|
// Generate fullstack first (creates apps/frontend and apps/backend)
|
|
653
370
|
const fullstackResult = await generateFullstackProject(spec, outputDir);
|
|
654
371
|
if (!fullstackResult.success) {
|
|
@@ -661,7 +378,7 @@ export async function generateAllProject(spec, outputDir, options = {}) {
|
|
|
661
378
|
workspaceMode: true,
|
|
662
379
|
skipDocker: false, // Website needs its own Dockerfile
|
|
663
380
|
skipReadme: false,
|
|
664
|
-
contentContext:
|
|
381
|
+
contentContext: contentContext,
|
|
665
382
|
});
|
|
666
383
|
if (!websiteResult.success) {
|
|
667
384
|
return {
|
|
@@ -670,8 +387,11 @@ export async function generateAllProject(spec, outputDir, options = {}) {
|
|
|
670
387
|
};
|
|
671
388
|
}
|
|
672
389
|
filesCreated.push(...websiteResult.filesCreated);
|
|
673
|
-
// Generate shared packages
|
|
674
|
-
const
|
|
390
|
+
// Generate shared packages (pass brand colors if available)
|
|
391
|
+
const brandColors = contentContext?.brand?.primaryColor
|
|
392
|
+
? { primaryColor: contentContext.brand.primaryColor }
|
|
393
|
+
: undefined;
|
|
394
|
+
const designTokens = generateDesignTokensPackage(projectName, brandColors);
|
|
675
395
|
for (const file of designTokens.files) {
|
|
676
396
|
const filePath = path.join(projectDir, 'packages', 'design-tokens', file.path);
|
|
677
397
|
await ensureDir(path.dirname(filePath));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all.js","sourceRoot":"","sources":["../../src/generators/all.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"all.js","sourceRoot":"","sources":["../../src/generators/all.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,23 @@
|
|
|
8
8
|
export declare function stripCodeFences(text: string): string;
|
|
9
9
|
/**
|
|
10
10
|
* Extract the real product name from docs or specification
|
|
11
|
-
*
|
|
11
|
+
*
|
|
12
|
+
* Priority chain (first match wins):
|
|
13
|
+
* 1. Parsed docs: "# ProductName -- tagline" heading (picks shortest)
|
|
14
|
+
* 2. Specification: "# ProductName" heading
|
|
15
|
+
* 3. Specification: "Product:" / "Name:" / "App:" label
|
|
16
|
+
* 4. package.json "name" field from workspace root (passed via specification context)
|
|
17
|
+
* 5. undefined (caller falls back to directory name)
|
|
12
18
|
*/
|
|
13
|
-
export declare function extractProductName(docs: string, specification?: string): string | undefined;
|
|
19
|
+
export declare function extractProductName(docs: string, specification?: string, packageJsonName?: string): string | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Check if a product name looks like a directory name rather than a real product name
|
|
22
|
+
* Used by the quality gate to flag suspicious names
|
|
23
|
+
*
|
|
24
|
+
* @param name - The product name to check
|
|
25
|
+
* @returns True if the name looks suspicious (likely a directory name)
|
|
26
|
+
*/
|
|
27
|
+
export declare function isSuspiciousProductName(name: string): boolean;
|
|
14
28
|
/**
|
|
15
29
|
* Extract a tagline from docs (text after em-dash in first heading)
|
|
16
30
|
* When productName is provided, prefer tagline from the heading containing that name
|
|
@@ -22,7 +36,8 @@ export declare function extractTagline(docs: string, productName?: string): stri
|
|
|
22
36
|
export declare function extractDescription(docs: string, specification?: string): string | undefined;
|
|
23
37
|
/**
|
|
24
38
|
* Extract features from docs and specification
|
|
25
|
-
*
|
|
39
|
+
* Docs-first: extracts from docs only; falls back to specification if empty
|
|
40
|
+
* Filters out dev-task items (implement, fix, refactor, etc.)
|
|
26
41
|
*/
|
|
27
42
|
export declare function extractFeatures(docs: string, specification?: string): Array<{
|
|
28
43
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-parser.d.ts","sourceRoot":"","sources":["../../src/generators/doc-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED
|
|
1
|
+
{"version":3,"file":"doc-parser.d.ts","sourceRoot":"","sources":["../../src/generators/doc-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,GAAG,SAAS,CAmDpB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyBrF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiC3F;AAKD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,GACrB,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAW/C;AAsFD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,GACX,KAAK,CAAC;IACP,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACxC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC,GAAG,SAAS,CAwHb;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA6BpE"}
|
|
@@ -21,34 +21,80 @@ export function stripCodeFences(text) {
|
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* Extract the real product name from docs or specification
|
|
24
|
-
*
|
|
24
|
+
*
|
|
25
|
+
* Priority chain (first match wins):
|
|
26
|
+
* 1. Parsed docs: "# ProductName -- tagline" heading (picks shortest)
|
|
27
|
+
* 2. Specification: "# ProductName" heading
|
|
28
|
+
* 3. Specification: "Product:" / "Name:" / "App:" label
|
|
29
|
+
* 4. package.json "name" field from workspace root (passed via specification context)
|
|
30
|
+
* 5. undefined (caller falls back to directory name)
|
|
25
31
|
*/
|
|
26
|
-
export function extractProductName(docs, specification) {
|
|
27
|
-
// Collect all "# Name
|
|
32
|
+
export function extractProductName(docs, specification, packageJsonName) {
|
|
33
|
+
// 1. Collect all "# Name -- tagline" headings, pick the shortest name
|
|
28
34
|
// Reason: sub-documents like "Gateco UI Color System" are longer than "Gateco"
|
|
29
|
-
const headingPattern = /^#\s+([A-Z][a-zA-Z0-9]+(?:[ \t]+[A-Z][a-zA-Z0-9]+)*)(?:[ \t]*[
|
|
35
|
+
const headingPattern = /^#\s+([A-Z][a-zA-Z0-9]+(?:[ \t]+[A-Z][a-zA-Z0-9]+)*)(?:[ \t]*(?:--|[—–|:])[ \t])/gm;
|
|
30
36
|
const candidates = [];
|
|
31
37
|
let match;
|
|
32
38
|
while ((match = headingPattern.exec(docs)) !== null) {
|
|
33
39
|
candidates.push(match[1].trim());
|
|
34
40
|
}
|
|
35
41
|
if (candidates.length > 0) {
|
|
36
|
-
// Prefer shortest name (product name is typically 1-2 words)
|
|
37
42
|
candidates.sort((a, b) => a.length - b.length);
|
|
38
43
|
return candidates[0];
|
|
39
44
|
}
|
|
40
|
-
//
|
|
45
|
+
// 2. "# ProductName" heading in specification (standalone heading, not sub-doc)
|
|
46
|
+
// Reason: Exclude common section headings like "Overview", "Introduction", "Summary"
|
|
47
|
+
if (specification) {
|
|
48
|
+
const commonHeadings = /^(Overview|Introduction|Summary|Features|Architecture|Requirements|Setup|Installation|Configuration|Specification|Appendix|Conclusion|References)$/i;
|
|
49
|
+
const specHeading = specification.match(/^#\s+([A-Z][a-zA-Z0-9]+(?:\s+[A-Z][a-zA-Z0-9]+)*)\s*$/m);
|
|
50
|
+
if (specHeading && !commonHeadings.test(specHeading[1].trim())) {
|
|
51
|
+
return specHeading[1].trim();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// 3. "Product:" / "Name:" / "App:" label in specification
|
|
41
55
|
if (specification) {
|
|
42
56
|
const nameMatch = specification.match(/\*\*Project\s+Name\*\*:\s*(.+)/i);
|
|
43
57
|
if (nameMatch)
|
|
44
58
|
return nameMatch[1].trim();
|
|
59
|
+
const labelMatch = specification.match(/(?:^|\n)\s*(?:Product|Name|App)\s*:\s*(.+)/i);
|
|
60
|
+
if (labelMatch) {
|
|
61
|
+
const value = labelMatch[1].trim().replace(/\*\*/g, '');
|
|
62
|
+
if (value.length > 0 && value.length < 60)
|
|
63
|
+
return value;
|
|
64
|
+
}
|
|
45
65
|
}
|
|
46
|
-
//
|
|
66
|
+
// 4. "# ProductName" in spec/product doc sections only
|
|
47
67
|
const sectionHeading = docs.match(/^---\s+\S*(?:spec|product)\S*\s+---\n#\s+([A-Z][a-zA-Z0-9]+)/im);
|
|
48
68
|
if (sectionHeading)
|
|
49
69
|
return sectionHeading[1].trim();
|
|
70
|
+
// 5. package.json name (strip @scope/ prefix and convert to title case)
|
|
71
|
+
if (packageJsonName) {
|
|
72
|
+
const cleaned = packageJsonName
|
|
73
|
+
.replace(/^@[^/]+\//, '') // Strip scope
|
|
74
|
+
.replace(/[-_]/g, ' ')
|
|
75
|
+
.replace(/\b\w/g, (c) => c.toUpperCase())
|
|
76
|
+
.trim();
|
|
77
|
+
if (cleaned.length > 0)
|
|
78
|
+
return cleaned;
|
|
79
|
+
}
|
|
50
80
|
return undefined;
|
|
51
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Check if a product name looks like a directory name rather than a real product name
|
|
84
|
+
* Used by the quality gate to flag suspicious names
|
|
85
|
+
*
|
|
86
|
+
* @param name - The product name to check
|
|
87
|
+
* @returns True if the name looks suspicious (likely a directory name)
|
|
88
|
+
*/
|
|
89
|
+
export function isSuspiciousProductName(name) {
|
|
90
|
+
const suspiciousNames = ['my-app', 'my-project', 'project', 'app', 'website', 'frontend'];
|
|
91
|
+
if (suspiciousNames.includes(name.toLowerCase()))
|
|
92
|
+
return true;
|
|
93
|
+
// Hyphenated lowercase strings like "read-all-files" are likely directory names
|
|
94
|
+
if (/^[a-z]+-[a-z]+(-[a-z]+)*$/.test(name))
|
|
95
|
+
return true;
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
52
98
|
/**
|
|
53
99
|
* Extract a tagline from docs (text after em-dash in first heading)
|
|
54
100
|
* When productName is provided, prefer tagline from the heading containing that name
|
|
@@ -117,13 +163,29 @@ export function extractDescription(docs, specification) {
|
|
|
117
163
|
}
|
|
118
164
|
return undefined;
|
|
119
165
|
}
|
|
166
|
+
/** Regex to filter out dev-task items that aren't real product features */
|
|
167
|
+
const DEV_TASK_VERBS = /^(?:implement|fix|refactor|add tests|upgrade|migrate|configure|setup|install|deploy|debug|create|build|write|update|remove|delete)/i;
|
|
120
168
|
/**
|
|
121
169
|
* Extract features from docs and specification
|
|
122
|
-
*
|
|
170
|
+
* Docs-first: extracts from docs only; falls back to specification if empty
|
|
171
|
+
* Filters out dev-task items (implement, fix, refactor, etc.)
|
|
123
172
|
*/
|
|
124
173
|
export function extractFeatures(docs, specification) {
|
|
174
|
+
// Docs-first: try docs only, then fall back to spec
|
|
175
|
+
// Reason: specification often contains dev tasks, not user-facing features
|
|
176
|
+
const docsFeatures = extractFeaturesFromSource(docs);
|
|
177
|
+
if (docsFeatures.length > 0)
|
|
178
|
+
return docsFeatures;
|
|
179
|
+
if (specification) {
|
|
180
|
+
return extractFeaturesFromSource(specification);
|
|
181
|
+
}
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Extract features from a single text source
|
|
186
|
+
*/
|
|
187
|
+
function extractFeaturesFromSource(source) {
|
|
125
188
|
const features = [];
|
|
126
|
-
const source = docs + '\n' + (specification || '');
|
|
127
189
|
// Split into sections by heading
|
|
128
190
|
const sectionPattern = /^#{1,3}\s+(.+)$/gm;
|
|
129
191
|
const sections = [];
|
|
@@ -159,14 +221,20 @@ export function extractFeatures(docs, specification) {
|
|
|
159
221
|
// Try "**bold title** - description" pattern
|
|
160
222
|
const boldWithDesc = text.match(/^\*\*(.+?)\*\*\s*[-–:]\s*(.+)/);
|
|
161
223
|
if (boldWithDesc) {
|
|
224
|
+
const title = boldWithDesc[1].trim();
|
|
225
|
+
// Filter out dev-task items
|
|
226
|
+
if (DEV_TASK_VERBS.test(title))
|
|
227
|
+
continue;
|
|
162
228
|
features.push({
|
|
163
|
-
title
|
|
229
|
+
title,
|
|
164
230
|
description: boldWithDesc[2].trim().slice(0, 150),
|
|
165
231
|
});
|
|
166
232
|
}
|
|
167
233
|
else if (/^\*\*.+\*\*/.test(text)) {
|
|
168
234
|
// Bold title with no trailing description: "**Vector DB agnostic**"
|
|
169
235
|
const title = text.replace(/\*\*/g, '').trim();
|
|
236
|
+
if (DEV_TASK_VERBS.test(title))
|
|
237
|
+
continue;
|
|
170
238
|
if (title.length > 3 && title.length < 80) {
|
|
171
239
|
features.push({ title, description: title });
|
|
172
240
|
}
|
|
@@ -175,6 +243,9 @@ export function extractFeatures(docs, specification) {
|
|
|
175
243
|
const cleaned = text.replace(/\*\*/g, '');
|
|
176
244
|
// Split on sentence-level delimiters only; keep hyphens in compound words
|
|
177
245
|
const titlePart = cleaned.split(/[.,:;—–]/)[0].trim();
|
|
246
|
+
// Filter out dev-task items
|
|
247
|
+
if (DEV_TASK_VERBS.test(titlePart))
|
|
248
|
+
continue;
|
|
178
249
|
if (titlePart.length > 3 && titlePart.length < 60) {
|
|
179
250
|
features.push({
|
|
180
251
|
title: titlePart,
|