@getcoherent/cli 0.6.6 → 0.6.7
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/dist/index.js +25 -6
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -4206,7 +4206,7 @@ LAYOUT PATTERNS:
|
|
|
4206
4206
|
- Stats/KPI grid: grid gap-4 md:grid-cols-2 lg:grid-cols-4
|
|
4207
4207
|
- Card grid (3 col): grid gap-4 md:grid-cols-3
|
|
4208
4208
|
- Full-height page: min-h-svh (not min-h-screen)
|
|
4209
|
-
- Centered form (login/signup):
|
|
4209
|
+
- Centered form (login/signup): auth layout handles centering \u2014 just output div w-full max-w-md with Card inside
|
|
4210
4210
|
- Page content wrapper: flex flex-1 flex-col gap-4 p-4 lg:p-6
|
|
4211
4211
|
- Responsive: primary md: and lg:. Use sm:/xl: only when genuinely needed. Avoid 2xl:. NEVER arbitrary like min-[800px].
|
|
4212
4212
|
|
|
@@ -4364,10 +4364,11 @@ var DESIGN_QUALITY_APP = `
|
|
|
4364
4364
|
- Content: functional, scannable, data-dense
|
|
4365
4365
|
|
|
4366
4366
|
### Toolbars & Filters
|
|
4367
|
-
- Filter row: flex flex-wrap items-center gap-2
|
|
4368
|
-
- Search input: MUST use flex-1 to fill remaining horizontal space
|
|
4367
|
+
- Filter row: flex flex-wrap items-center gap-2 (plain div, NOT inside a Card)
|
|
4368
|
+
- Search input: MUST use flex-1 to fill remaining horizontal space. NEVER fixed-width search.
|
|
4369
4369
|
- Filters/selects: fixed width (w-[180px] or auto), do NOT flex-grow
|
|
4370
4370
|
- On mobile (sm:): search full width, filters wrap to next line
|
|
4371
|
+
- Do NOT wrap search/filter toolbars in Card components. They are plain flex rows above content.
|
|
4371
4372
|
|
|
4372
4373
|
NEVER include marketing sections (hero, pricing, testimonials) on app pages.
|
|
4373
4374
|
`;
|
|
@@ -4375,11 +4376,17 @@ var DESIGN_QUALITY_AUTH = `
|
|
|
4375
4376
|
## DESIGN QUALITY \u2014 AUTH PAGES
|
|
4376
4377
|
|
|
4377
4378
|
### Layout
|
|
4378
|
-
-
|
|
4379
|
+
- The auth layout ALREADY provides centering (flex items-center justify-center min-h-svh). Do NOT add your own centering wrapper or min-h-svh.
|
|
4380
|
+
- Just output: <div className="w-full max-w-md"> containing a Card
|
|
4379
4381
|
- Card width: w-full max-w-md
|
|
4380
4382
|
- No navigation, no section containers, no sidebar
|
|
4381
4383
|
- Single focused form with clear CTA
|
|
4382
|
-
- Card \u2192 CardHeader (title + description) \u2192 CardContent (form) \u2192 CardFooter (link to other auth page)
|
|
4384
|
+
- Card \u2192 CardHeader (title + description) \u2192 CardContent (form with space-y-4) \u2192 CardFooter (link to other auth page)
|
|
4385
|
+
|
|
4386
|
+
### Form Spacing
|
|
4387
|
+
- Form fields inside CardContent: space-y-4 between field groups
|
|
4388
|
+
- Ensure visible gap between the last input field and the submit button (use space-y-4 or space-y-6)
|
|
4389
|
+
- Each field group (Label + Input): space-y-2
|
|
4383
4390
|
|
|
4384
4391
|
NEVER include navigation bars, sidebars, or multi-section layouts on auth pages.
|
|
4385
4392
|
`;
|
|
@@ -6949,6 +6956,18 @@ ${selectImport}`
|
|
|
6949
6956
|
fixed = fixedByRules;
|
|
6950
6957
|
fixes.push(...ruleFixes);
|
|
6951
6958
|
}
|
|
6959
|
+
const beforeTabsFix = fixed;
|
|
6960
|
+
fixed = fixed.replace(
|
|
6961
|
+
/(<TabsTrigger\b[^>]*className=")([^"]*)(">)/g,
|
|
6962
|
+
(_m, pre, classes, post) => {
|
|
6963
|
+
const cleaned = classes.replace(/\b(border-input|border\b|outline\b)\s*/g, "").trim();
|
|
6964
|
+
if (cleaned !== classes.trim()) return `${pre}${cleaned}${post}`;
|
|
6965
|
+
return _m;
|
|
6966
|
+
}
|
|
6967
|
+
);
|
|
6968
|
+
if (fixed !== beforeTabsFix) {
|
|
6969
|
+
fixes.push("stripped border from TabsTrigger (shadcn handles active state)");
|
|
6970
|
+
}
|
|
6952
6971
|
fixed = fixed.replace(/className="([^"]*)"/g, (_match, inner) => {
|
|
6953
6972
|
const cleaned = inner.replace(/\s{2,}/g, " ").trim();
|
|
6954
6973
|
return `className="${cleaned}"`;
|
|
@@ -8112,7 +8131,7 @@ async function splitGeneratePages(spinner, message, modCtx, provider, parseOpts)
|
|
|
8112
8131
|
const isAuth = isAuthRoute(route) || isAuthRoute(name);
|
|
8113
8132
|
const pageType = plan ? getPageType(route, plan) : inferPageTypeFromRoute(route);
|
|
8114
8133
|
const designConstraints = getDesignQualityForType(pageType);
|
|
8115
|
-
const authNote = isAuth ? 'For this auth page:
|
|
8134
|
+
const authNote = isAuth ? 'For this auth page: the auth layout already provides centering (flex items-center justify-center min-h-svh). Do NOT add your own centering wrapper or min-h-svh. Just output a div with className="w-full max-w-md" containing the Card. Do NOT use section containers or full-width wrappers.' : void 0;
|
|
8116
8135
|
const prompt = [
|
|
8117
8136
|
`Create ONE page called "${name}" at route "${route}".`,
|
|
8118
8137
|
`Context: ${message}.`,
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.6.
|
|
6
|
+
"version": "0.6.7",
|
|
7
7
|
"description": "CLI interface for Coherent Design Method",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"main": "./dist/index.js",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"ora": "^7.0.1",
|
|
44
44
|
"prompts": "^2.4.2",
|
|
45
45
|
"zod": "^3.22.4",
|
|
46
|
-
"@getcoherent/core": "0.6.
|
|
46
|
+
"@getcoherent/core": "0.6.7"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@types/node": "^20.11.0",
|