diff --git a/package.json b/package.json index 9f83f5d30..a29545a67 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "@tanstack/ai-anthropic": "^0.7.3", "@tanstack/ai-client": "^0.7.9", "@tanstack/ai-openai": "^0.7.4", - "@tanstack/create": "^0.63.4", + "@tanstack/create": "^0.66.0", "@tanstack/pacer": "^0.20.1", "@tanstack/react-hotkeys": "^0.9.1", "@tanstack/react-pacer": "^0.21.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b22c0b9be..07a450069 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,8 +96,8 @@ importers: specifier: ^0.7.4 version: 0.7.4(@tanstack/ai-client@0.7.9)(@tanstack/ai@0.10.2)(ws@8.20.0)(zod@4.3.6) '@tanstack/create': - specifier: ^0.63.4 - version: 0.63.4(tslib@2.8.1) + specifier: ^0.66.0 + version: 0.66.0(tslib@2.8.1) '@tanstack/pacer': specifier: ^0.20.1 version: 0.20.1 @@ -3539,8 +3539,9 @@ packages: resolution: {integrity: sha512-uy9swoOXgDltFZcaKc9YkRD22fndK0NhJAtOs1vCaugSYOjgOsfT0jnkZ9kswVn+OPXQxiXKQ9PSNKIoKKSP8g==} engines: {node: '>=18'} - '@tanstack/create@0.63.4': - resolution: {integrity: sha512-LpCU+WrCXKJniyz2OIHmesqEsTQFRTcB0A8+1yiN7Idj8sUjFoTV1YYJJLzrlGUwAGM42IZMOmWt1EgBlPaNRw==} + '@tanstack/create@0.66.0': + resolution: {integrity: sha512-/M8wdce68uzXPSG1baBWEwRmCSWmmMeI19rHG3/fR8Q+29LWB0/RE9aBWHpOA1/jw7rtpNWiSYleAXEWxdyRGw==} + engines: {node: '>=20'} '@tanstack/devtools-client@0.0.6': resolution: {integrity: sha512-f85ZJXJnDIFOoykG/BFIixuAevJovCvJF391LPs6YjBAPhGYC50NWlx1y4iF/UmK5/cCMx+/JqI5SBOz7FanQQ==} @@ -11468,7 +11469,7 @@ snapshots: '@tanstack/ai-event-client': 0.2.2(@tanstack/ai@0.10.2) partial-json: 0.1.7 - '@tanstack/create@0.63.4(tslib@2.8.1)': + '@tanstack/create@0.66.0(tslib@2.8.1)': dependencies: ejs: 3.1.10 execa: 9.6.1 diff --git a/src/builder/api/compile.ts b/src/builder/api/compile.ts index 3ee9dd0d5..ea65d4257 100644 --- a/src/builder/api/compile.ts +++ b/src/builder/api/compile.ts @@ -228,6 +228,7 @@ export async function compileHandler( packageManager: definition.packageManager ?? 'pnpm', git: false, install: false, + intent: false, chosenAddOns, addOnOptions: mergeOptionsWithDefaults(chosenAddOns, definition.featureOptions), }) @@ -303,6 +304,7 @@ export async function compileWithAttributionHandler( packageManager: definition.packageManager ?? 'pnpm', git: false, install: false, + intent: false, chosenAddOns, addOnOptions: mergeOptionsWithDefaults(chosenAddOns, definition.featureOptions), }) diff --git a/src/builder/api/features.ts b/src/builder/api/features.ts index a2ba3103b..87848663a 100644 --- a/src/builder/api/features.ts +++ b/src/builder/api/features.ts @@ -76,6 +76,10 @@ function getCategoryFromType(type: string): string { } } +const CATEGORY_OVERRIDES: Record = { + shopify: 'ecommerce', +} + function toFeatureInfo(addOn: AddOn): FeatureInfo { // Type assertion for new fields that may not be in the cta-engine types yet const addon = addOn as AddOn & { @@ -88,7 +92,10 @@ function toFeatureInfo(addOn: AddOn): FeatureInfo { id: addon.id, name: addon.name, description: addon.description, - category: addon.category ?? getCategoryFromType(addon.type), + category: + CATEGORY_OVERRIDES[addon.id] ?? + addon.category ?? + getCategoryFromType(addon.type), requires: addon.dependsOn ?? [], exclusive: addon.exclusive ?? [], hasOptions: !!addon.options, diff --git a/src/builder/templates.ts b/src/builder/templates.ts index f29520c1e..28809a598 100644 --- a/src/builder/templates.ts +++ b/src/builder/templates.ts @@ -16,6 +16,7 @@ import { Globe, HardDrive, Plus, + ShoppingBag, } from 'lucide-react' export interface Template { @@ -25,6 +26,12 @@ export interface Template { icon: LucideIcon color: string features: Array + /** + * When set, selecting this preset also selects the matching CLI example + * (passed as `--template ` to the @tanstack/cli) instead of toggling + * loose features. The example's `dependsOn` add-ons are auto-included. + */ + exampleId?: string } export const TEMPLATES: Array