@onexapis/cli 1.1.22 → 1.1.24

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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/logger.ts","../src/utils/compile-theme.ts","../src/commands/init.ts","../src/utils/validators.ts","../src/utils/file-helpers.ts","../src/commands/create-section.ts","../src/commands/create-block.ts","../src/commands/create-component.ts","../src/commands/list.ts","../src/commands/build.ts","../src/commands/upload.ts","../src/commands/download.ts","../src/commands/clone.ts","../src/index.ts"],"names":["Logger","logger","chalk","ora","path","fs","glob","build","subpath","cacheKey","createRequire","exports","hash","crypto","hashedName","hashedMapName","esbuild","context","ejs","execSync","inquirer","answers","compileStandaloneTheme","spawn","S3Client","archiver","PutObjectCommand","os","getS3Client","getBucketName","GetObjectCommand","AdmZip","streamToString","streamToBuffer","resolveLatestVersion"],"mappings":"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","file":"index.js","sourcesContent":["import chalk from \"chalk\";\nimport ora, { Ora } from \"ora\";\n\nexport class Logger {\n private spinner: Ora | null = null;\n\n success(message: string): void {\n console.log(chalk.green(\"✓\"), message);\n }\n\n error(message: string): void {\n console.log(chalk.red(\"✗\"), message);\n }\n\n warning(message: string): void {\n console.log(chalk.yellow(\"⚠\"), message);\n }\n\n info(message: string): void {\n console.log(chalk.blue(\"ℹ\"), message);\n }\n\n log(message: string): void {\n console.log(message);\n }\n\n startSpinner(message: string): void {\n this.spinner = ora(message).start();\n }\n\n stopSpinner(success: boolean = true, message?: string): void {\n if (!this.spinner) return;\n\n if (success) {\n this.spinner.succeed(message);\n } else {\n this.spinner.fail(message);\n }\n this.spinner = null;\n }\n\n updateSpinner(message: string): void {\n if (this.spinner) {\n this.spinner.text = message;\n }\n }\n\n newLine(): void {\n console.log();\n }\n\n header(message: string): void {\n console.log();\n console.log(chalk.bold.cyan(message));\n console.log(chalk.cyan(\"=\".repeat(message.length)));\n console.log();\n }\n\n section(message: string): void {\n console.log();\n console.log(chalk.bold(message));\n }\n}\n\nexport const logger = new Logger();\n","/**\n * Standalone Theme Compiler\n *\n * Compiles standalone theme source code to ESM bundles using esbuild.\n * Adapted from scripts/compile-theme.ts for use in the CLI.\n *\n * Key differences from the monorepo version:\n * - Core global plugin reads from node_modules/@onexapis/core/dist/ (not packages/core/dist/)\n * - Process shim is inlined (no external file dependency)\n * - Output goes to ./dist/ in the theme directory\n */\n\nimport * as esbuild from \"esbuild\";\nimport type { Plugin } from \"esbuild\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport crypto from \"crypto\";\nimport { glob } from \"glob\";\nimport { createRequire } from \"node:module\";\nimport { logger } from \"./logger\";\n\n/**\n * Generate Tailwind CSS bundle for the theme.\n * Scans theme section/component TSX files to compile all used utility classes.\n * Output: dist/bundle.css — loaded by the editor iframe as a CSS asset.\n */\nasync function generateThemeCSS(\n themePath: string,\n outDir: string\n): Promise<void> {\n try {\n // Dynamic imports so tailwindcss/postcss don't break if missing\n const postcss = (await import(\"postcss\")).default;\n const tailwindcss = (await import(\"tailwindcss\")).default;\n\n const tailwindConfig = {\n content: [\n path.join(themePath, \"sections/**/*.{ts,tsx}\"),\n path.join(themePath, \"components/**/*.{ts,tsx}\"),\n ],\n theme: { extend: {} },\n plugins: [] as any[],\n };\n\n const inputCSS =\n \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\";\n const result = await postcss([tailwindcss(tailwindConfig)]).process(\n inputCSS,\n { from: undefined }\n );\n\n await fs.writeFile(path.join(outDir, \"bundle.css\"), result.css);\n logger.info(\"Generated bundle.css\");\n } catch (err) {\n logger.warning(\n `CSS generation skipped: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n}\n\n/**\n * Inline process shim for browser environments.\n * Equivalent to scripts/process-shim.js but embedded as a string.\n */\nconst PROCESS_SHIM = `\nif (typeof process === \"undefined\") {\n globalThis.process = {\n env: {},\n browser: true,\n };\n}\n`;\n\n/**\n * Plugin to externalize React as window globals.\n * React/ReactDOM are shared via globalThis to prevent duplication.\n */\nconst reactGlobalPlugin: Plugin = {\n name: \"react-global\",\n setup(build) {\n build.onResolve({ filter: /^react$/ }, () => ({\n path: \"react-external\",\n namespace: \"react-global\",\n }));\n\n build.onResolve({ filter: /^react-dom$/ }, () => ({\n path: \"react-dom-external\",\n namespace: \"react-global\",\n }));\n\n build.onResolve({ filter: /^react\\/jsx-runtime$/ }, () => ({\n path: \"react-jsx-runtime-external\",\n namespace: \"react-global\",\n }));\n\n build.onLoad({ filter: /.*/, namespace: \"react-global\" }, (args) => {\n if (args.path === \"react-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_REACT__) {\n throw new Error('[Theme Bundle] React not initialized. Ensure globalThis.__ONEX_REACT__ is set before loading theme.');\n}\n\nconst React = globalThis.__ONEX_REACT__;\nexport default React;\n\nexport const {\n useState,\n useEffect,\n useContext,\n useReducer,\n useCallback,\n useMemo,\n useRef,\n useImperativeHandle,\n useLayoutEffect,\n useDebugValue,\n useDeferredValue,\n useTransition,\n useId,\n useSyncExternalStore,\n useInsertionEffect,\n createContext,\n forwardRef,\n lazy,\n memo,\n startTransition,\n createElement,\n cloneElement,\n isValidElement,\n Children,\n Fragment,\n Profiler,\n StrictMode,\n Suspense,\n Component,\n PureComponent,\n useActionState,\n use,\n} = React;\n `.trim(),\n loader: \"js\",\n };\n }\n\n if (args.path === \"react-dom-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_REACT_DOM__) {\n throw new Error('[Theme Bundle] ReactDOM not initialized. Ensure globalThis.__ONEX_REACT_DOM__ is set before loading theme.');\n}\n\nconst ReactDOM = globalThis.__ONEX_REACT_DOM__;\nexport default ReactDOM;\n\nexport const {\n createRoot,\n hydrateRoot,\n flushSync,\n createPortal,\n findDOMNode,\n render,\n hydrate,\n unmountComponentAtNode,\n} = ReactDOM;\n `.trim(),\n loader: \"js\",\n };\n }\n\n if (args.path === \"react-jsx-runtime-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_JSX_RUNTIME__) {\n throw new Error('[Theme Bundle] React JSX runtime not initialized. Ensure globalThis.__ONEX_JSX_RUNTIME__ is set before loading theme.');\n}\nconst _jsxRuntime = globalThis.__ONEX_JSX_RUNTIME__;\nexport const jsx = _jsxRuntime.jsx;\nexport const jsxs = _jsxRuntime.jsxs;\nexport const Fragment = _jsxRuntime.Fragment;\n `.trim(),\n loader: \"js\",\n };\n }\n\n return null;\n });\n },\n};\n\n/**\n * Resolve a file inside node_modules, searching up the directory tree.\n * Handles monorepo hoisting where deps are in a parent node_modules.\n */\nasync function resolveNodeModulesFile(\n startDir: string,\n relativePath: string\n): Promise<string | null> {\n let dir = startDir;\n while (true) {\n const candidate = path.join(dir, \"node_modules\", relativePath);\n try {\n await fs.access(candidate);\n return candidate;\n } catch {\n const parent = path.dirname(dir);\n if (parent === dir) break; // reached filesystem root\n dir = parent;\n }\n }\n return null;\n}\n\n/**\n * Scan source files in `sourceDir` for named imports/exports from `packageName`.\n * Returns a map of subpath → Set of imported names.\n * e.g. for `@onexapis/core/internal` → key \"internal\", names {\"useCart\", \"Button\"}\n * for `@onexapis/core` → key \"\" (empty string)\n */\nasync function scanImportsFromPackage(\n sourceDir: string,\n packageName: string\n): Promise<Record<string, Set<string>>> {\n const result: Record<string, Set<string>> = {};\n const escapedPkg = packageName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const importRegex = new RegExp(\n `(?:import|export)\\\\s+(?:type\\\\s+)?\\\\{([^}]+)\\\\}\\\\s+from\\\\s+[\"']${escapedPkg}(/[\\\\w./-]+)?[\"']`,\n \"g\"\n );\n\n const sourceFiles = await glob(\"**/*.{ts,tsx}\", {\n cwd: sourceDir,\n ignore: [\"node_modules/**\", \"dist/**\"],\n });\n\n for (const file of sourceFiles) {\n try {\n const content = await fs.readFile(path.join(sourceDir, file), \"utf-8\");\n for (const match of content.matchAll(importRegex)) {\n const subpath = match[2] ? match[2].slice(1) : \"\"; // remove leading \"/\"\n if (!result[subpath]) result[subpath] = new Set();\n for (const name of match[1].split(\",\")) {\n let original = name\n .trim()\n .split(/\\s+as\\s+/)[0]\n .trim();\n // Skip inline type-only imports: `import { type Foo }` — esbuild strips these\n if (original.startsWith(\"type \")) continue;\n if (original) result[subpath].add(original);\n }\n }\n } catch {\n // skip unreadable files\n }\n }\n\n return result;\n}\n\n/**\n * Plugin to externalize @onexapis/core as window global.\n * Scans theme source to discover imports; falls back to reading dist files.\n */\nfunction createCoreGlobalPlugin(themePath: string): Plugin {\n const exportsBySubpath: Record<string, string[]> = {};\n let scanPromise: Promise<void> | null = null;\n\n return {\n name: \"core-global\",\n setup(build) {\n build.onResolve({ filter: /^@onexapis\\/core(\\/.*)?$/ }, (args) => ({\n path: args.path,\n namespace: \"core-global\",\n }));\n\n build.onLoad({ filter: /.*/, namespace: \"core-global\" }, async (args) => {\n // On first load, scan theme source files to discover all @onexapis/core imports\n // Use a shared promise to avoid race conditions with concurrent onLoad calls\n if (!scanPromise) {\n scanPromise = scanImportsFromPackage(themePath, \"@onexapis/core\")\n .then((scanned) => {\n for (const [subpath, names] of Object.entries(scanned)) {\n const cacheKey = subpath || \"__root__\";\n exportsBySubpath[cacheKey] = [...names];\n }\n })\n .catch(() => {\n // Source scan failed, will fall back to dist-file reading\n });\n }\n await scanPromise;\n\n const match = args.path.match(/^@onexapis\\/core(\\/(.+))?$/);\n const subpath = match?.[2] || \"\";\n const moduleAccess = subpath ? `['${subpath}']` : \"\";\n\n let namedExports: string[] = [];\n const cacheKey = subpath || \"__root__\";\n if (exportsBySubpath[cacheKey]) {\n namedExports = exportsBySubpath[cacheKey];\n } else {\n // Fallback: read dist files when source scan found nothing for this subpath\n const distFileName = subpath ? `${subpath}.mjs` : \"index.mjs\";\n let distPath = await resolveNodeModulesFile(\n themePath,\n path.join(\"@onexapis\", \"core\", \"dist\", distFileName)\n );\n if (!distPath) {\n distPath = await resolveNodeModulesFile(\n __dirname,\n path.join(\"@onexapis\", \"core\", \"dist\", distFileName)\n );\n }\n try {\n if (!distPath) throw new Error(\"not found\");\n const distContent = await fs.readFile(distPath, \"utf-8\");\n const exportMatches = distContent.matchAll(/export\\s*\\{([^}]+)\\}/g);\n for (const m of exportMatches) {\n const names = m[1]\n .split(\",\")\n .map((n) => {\n const parts = n.trim().split(/\\s+as\\s+/);\n return (parts[1] || parts[0]).trim();\n })\n .filter((n) => n.length > 0);\n namedExports.push(...names);\n }\n namedExports = [...new Set(namedExports)];\n } catch {\n // dist file not found - fall back to default-only export\n }\n exportsBySubpath[cacheKey] = namedExports;\n }\n\n const namedExportLines =\n namedExports.length > 0\n ? `\\nexport const {\\n ${namedExports.join(\",\\n \")}\\n} = _module;\\n`\n : \"\";\n\n return {\n contents: `\nif (!globalThis.__ONEX_CORE__) {\n throw new Error('[Theme Bundle] @onexapis/core not initialized. Ensure globalThis.__ONEX_CORE__ is set before loading theme.');\n}\n\nconst _module = globalThis.__ONEX_CORE__${moduleAccess};\nif (!_module) {\n const subpath = ${subpath ? `'${subpath}'` : \"null\"};\n const modulePath = subpath ? '/' + subpath : '';\n const moduleKey = subpath ? '[\"' + subpath + '\"]' : '';\n throw new Error('[Theme Bundle] @onexapis/core' + modulePath + ' not available in globalThis.__ONEX_CORE__' + moduleKey);\n}\n\nexport default _module;\n${namedExportLines}\n `.trim(),\n loader: \"js\",\n };\n });\n },\n };\n}\n\n/**\n * Plugin to stub common theme dependencies (next/*, framer-motion, lucide-react, etc.)\n * for standalone theme compilation. Tries to resolve from node_modules first;\n * only stubs if the package is not installed.\n */\nfunction createThemeDepsStubPlugin(themePath: string): Plugin {\n return {\n name: \"theme-deps-stub\",\n setup(build) {\n // Helper: try resolve, stub if missing\n const tryResolveOrStub = (filter: RegExp, namespace: string) => {\n build.onResolve({ filter }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n // Try resolving from theme directory\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir || themePath,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n // Try resolving via CLI's node_modules (monorepo)\n try {\n const req = createRequire(import.meta.url || __filename);\n const resolved = req.resolve(args.path);\n if (resolved) return { path: resolved, namespace: \"file\" };\n } catch {}\n return { path: args.path, namespace };\n });\n };\n\n // --- Next.js ---\n tryResolveOrStub(/^next\\//, \"next-stub\");\n build.onLoad({ filter: /.*/, namespace: \"next-stub\" }, (args) => {\n const stubs: Record<string, string> = {\n \"next/image\": `\nimport React from 'react';\nconst Image = React.forwardRef((props, ref) => {\n const { src, alt, width, height, fill, priority, sizes, quality, placeholder, blurDataURL, onLoad, onError, style, className, ...rest } = props;\n const imgSrc = typeof src === 'object' ? src.src : src;\n const fillStyle = fill ? { position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: style?.objectFit || 'cover', display: 'block' } : {};\n const mergedStyle = { ...fillStyle, ...style };\n return React.createElement('img', {\n ref, src: imgSrc, alt,\n width: fill ? undefined : width, height: fill ? undefined : height,\n loading: priority ? 'eager' : 'lazy',\n style: Object.keys(mergedStyle).length > 0 ? mergedStyle : undefined,\n className, onLoad, onError, ...rest,\n });\n});\nexport default Image;\n `,\n \"next/link\": `\nimport React from 'react';\nconst Link = ({ href, children, ...rest }) => React.createElement('a', { href, ...rest }, children);\nexport default Link;\n `,\n \"next/navigation\": `\nexport function useRouter() { return { push(u){window.location.href=u}, replace(u){window.location.href=u}, back(){window.history.back()}, forward(){window.history.forward()}, refresh(){window.location.reload()}, prefetch(){} }; }\nexport function usePathname() { return window.location.pathname; }\nexport function useSearchParams() { return new URLSearchParams(window.location.search); }\nexport function useParams() { return {}; }\nexport function redirect(url) { window.location.href = url; }\nexport function notFound() { throw new Error('Not Found'); }\n `,\n \"next/headers\": `\nexport function cookies() { return { get(){}, getAll(){ return []; }, set(){}, delete(){}, has(){ return false; } }; }\nexport function headers() { return new Headers(); }\n `,\n };\n return {\n contents: stubs[args.path] || \"export default {};\",\n loader: \"jsx\",\n resolveDir: themePath,\n };\n });\n\n // --- lucide-react ---\n // Collect all imported icon names from the theme source at resolve time,\n // then generate a stub that exports every one of them.\n const lucideImports = new Set<string>();\n let lucideThemeScanned = false;\n tryResolveOrStub(/^lucide-react/, \"lucide-stub\");\n build.onLoad({ filter: /.*/, namespace: \"lucide-stub\" }, async () => {\n // Scan theme source files for lucide-react imports to discover all icon names\n if (!lucideThemeScanned) {\n lucideThemeScanned = true;\n try {\n const scanned = await scanImportsFromPackage(\n themePath,\n \"lucide-react\"\n );\n for (const names of Object.values(scanned)) {\n for (const name of names) lucideImports.add(name);\n }\n } catch {}\n }\n const iconNames = [...lucideImports];\n const exports = iconNames.map((n) => `icon as ${n}`).join(\", \");\n return {\n contents: `\nconst icon = (props) => null;\nexport { ${exports} };\nexport default new Proxy({}, { get: (_, name) => name === '__esModule' ? true : icon });\n `.trim(),\n loader: \"jsx\",\n };\n });\n\n // --- framer-motion ---\n tryResolveOrStub(/^framer-motion/, \"motion-stub\");\n build.onLoad({ filter: /.*/, namespace: \"motion-stub\" }, () => ({\n contents: `\nimport React from 'react';\nconst handler = { get: (_, name) => {\n if (name === '__esModule') return true;\n return React.forwardRef((props, ref) => React.createElement(name, { ...props, ref }));\n}};\nexport const motion = new Proxy({}, handler);\nexport const AnimatePresence = ({ children }) => children || null;\nexport function useInView() { return true; }\nexport default { motion, AnimatePresence, useInView };\n `.trim(),\n loader: \"jsx\",\n resolveDir: themePath,\n }));\n\n // --- sonner ---\n tryResolveOrStub(/^sonner$/, \"sonner-stub\");\n build.onLoad({ filter: /.*/, namespace: \"sonner-stub\" }, () => ({\n contents: `\nexport const toast = new Proxy(() => {}, { get: () => () => {} });\nexport const Toaster = () => null;\nexport default { toast, Toaster };\n `.trim(),\n loader: \"jsx\",\n }));\n\n // --- react-hook-form ---\n tryResolveOrStub(/^react-hook-form$/, \"rhf-stub\");\n build.onLoad({ filter: /.*/, namespace: \"rhf-stub\" }, () => ({\n contents: `\nexport function useForm() {\n return {\n register: () => ({}),\n handleSubmit: (fn) => (e) => { e?.preventDefault?.(); fn({}); },\n formState: { errors: {}, isSubmitting: false, isValid: true },\n watch: () => undefined,\n setValue: () => {},\n reset: () => {},\n control: {},\n };\n}\nexport function useController() { return { field: {}, fieldState: {} }; }\nexport function useFormContext() { return useForm(); }\n `.trim(),\n loader: \"js\",\n }));\n\n // --- @hookform/resolvers ---\n tryResolveOrStub(/^@hookform\\/resolvers/, \"hookform-resolvers-stub\");\n build.onLoad(\n { filter: /.*/, namespace: \"hookform-resolvers-stub\" },\n () => ({\n contents: `export function zodResolver() { return () => ({ values: {}, errors: {} }); }`,\n loader: \"js\",\n })\n );\n\n // --- next-intl ---\n tryResolveOrStub(/^next-intl$/, \"next-intl-stub\");\n build.onLoad({ filter: /.*/, namespace: \"next-intl-stub\" }, () => ({\n contents: `\nexport function useTranslations(ns) {\n return (key) => ns ? ns + '.' + key : key;\n}\nexport function useLocale() { return 'en'; }\nexport function useMessages() { return {}; }\n `.trim(),\n loader: \"js\",\n }));\n\n // --- zod (often used with hookform) ---\n tryResolveOrStub(/^zod$/, \"zod-stub\");\n build.onLoad({ filter: /.*/, namespace: \"zod-stub\" }, () => ({\n contents: `\nconst schema = () => ({ parse: (v) => v, safeParse: (v) => ({ success: true, data: v }), optional: schema, min: schema, max: schema, email: schema, url: schema, regex: schema, refine: schema, transform: schema });\nexport const z = { string: schema, number: schema, boolean: schema, object: (s) => ({ ...schema(), shape: s }), array: schema, enum: schema, union: schema, literal: schema, infer: undefined };\nexport default z;\n `.trim(),\n loader: \"js\",\n }));\n },\n };\n}\n\n/**\n * Generate theme-data.json from theme source files using jiti.\n * This provides a server-side fallback for themes without API data.\n */\nasync function generateThemeData(\n themePath: string,\n outputDir: string,\n themeId: string\n): Promise<void> {\n const { createJiti } = await import(\"jiti\");\n const jiti = createJiti(import.meta.url);\n\n let themeConfig: any = null;\n let layoutConfig: any = null;\n const pages: Record<string, any> = {};\n\n // Load theme config\n for (const ext of [\".ts\", \".js\"]) {\n try {\n const mod = await jiti.import(path.join(themePath, `theme.config${ext}`));\n themeConfig = (mod as any).default || mod;\n break;\n } catch {}\n }\n\n // Load layout\n for (const ext of [\".ts\", \".js\"]) {\n try {\n const mod = await jiti.import(path.join(themePath, `theme.layout${ext}`));\n layoutConfig = (mod as any).default || mod;\n break;\n } catch {}\n }\n\n // Load schemas (to merge defaults into page sections)\n const schemas: Record<string, any> = {};\n const sectionsDir = path.join(themePath, \"sections\");\n try {\n const sectionDirs = await fs.readdir(sectionsDir);\n for (const dir of sectionDirs) {\n const schemaFile = path.join(sectionsDir, dir, `${dir}.schema.ts`);\n try {\n await fs.access(schemaFile);\n const mod = await jiti.import(schemaFile);\n // Find the schema export (ends with \"Schema\")\n for (const [key, value] of Object.entries(mod as Record<string, any>)) {\n if (key.endsWith(\"Schema\") && value && typeof value === \"object\" && (value as any).type) {\n schemas[(value as any).type] = value;\n }\n }\n } catch {}\n }\n } catch {}\n\n // Load pages\n const pagesDir = path.join(themePath, \"pages\");\n try {\n const files = await fs.readdir(pagesDir);\n for (const file of files) {\n if (!file.match(/\\.(ts|js)$/)) continue;\n const name = file.replace(/\\.(ts|js)$/, \"\");\n try {\n const mod = await jiti.import(path.join(pagesDir, file));\n const config = (mod as any).default || mod;\n\n // Merge schema defaults (components/blocks) into sections\n const sections = (config.sections || []).map((section: any) => {\n const schema = schemas[section.type];\n if (!schema?.defaults) return section;\n return {\n ...section,\n components: section.components?.length > 0\n ? section.components\n : schema.defaults.components || [],\n blocks: section.blocks?.length > 0\n ? section.blocks\n : schema.defaults.blocks || [],\n settings: {\n ...(schema.defaults.settings || {}),\n ...section.settings,\n },\n };\n });\n\n pages[name] = {\n id: name,\n name: config.title || name,\n path: config.path || `/${name}`,\n config: { id: name, ...config, sections },\n sections,\n seo: config.seo,\n };\n } catch {}\n }\n } catch {}\n\n await fs.writeFile(\n path.join(outputDir, \"theme-data.json\"),\n JSON.stringify(\n {\n themeId,\n theme: {\n id: themeId,\n name: themeConfig?.name || themeId,\n config: themeConfig,\n layout: {\n header: layoutConfig?.headerSections || [],\n footer: layoutConfig?.footerSections || [],\n },\n pages: Object.keys(pages),\n },\n pages,\n },\n null,\n 2\n )\n );\n logger.info(`Generated theme-data.json (${Object.keys(pages).length} pages)`);\n}\n\n/**\n * Content-hash the bundle entry point for cache busting.\n * Renames bundle-entry.js -> bundle-entry-{hash}.js\n */\nasync function contentHashEntry(outputDir: string): Promise<void> {\n const entryPath = path.join(outputDir, \"bundle-entry.js\");\n const mapPath = path.join(outputDir, \"bundle-entry.js.map\");\n\n // Clean old hashed entry files\n const oldFiles = await glob(\"bundle-entry-*.js*\", { cwd: outputDir });\n for (const f of oldFiles) {\n await fs.unlink(path.join(outputDir, f));\n }\n\n let entryContent: string;\n try {\n entryContent = await fs.readFile(entryPath, \"utf-8\");\n } catch {\n // bundle-entry.js not found, try index.js\n const indexPath = path.join(outputDir, \"index.js\");\n try {\n entryContent = await fs.readFile(indexPath, \"utf-8\");\n } catch {\n logger.warning(\"No entry file found in output, skipping content hash\");\n return;\n }\n // For index.ts entry, rename index.js -> bundle-entry-{hash}.js\n const hash = crypto\n .createHash(\"sha256\")\n .update(entryContent)\n .digest(\"hex\")\n .slice(0, 8);\n\n const hashedName = `bundle-entry-${hash}.js`;\n const indexMapPath = path.join(outputDir, \"index.js.map\");\n const hashedMapName = `bundle-entry-${hash}.js.map`;\n\n entryContent = entryContent.replace(\n /\\/\\/# sourceMappingURL=index\\.js\\.map/,\n `//# sourceMappingURL=${hashedMapName}`\n );\n\n await fs.writeFile(path.join(outputDir, hashedName), entryContent);\n await fs.unlink(indexPath);\n\n try {\n await fs.access(indexMapPath);\n await fs.rename(indexMapPath, path.join(outputDir, hashedMapName));\n } catch {\n // No source map\n }\n\n logger.info(`Entry hashed: ${hashedName}`);\n return;\n }\n\n const hash = crypto\n .createHash(\"sha256\")\n .update(entryContent)\n .digest(\"hex\")\n .slice(0, 8);\n\n const hashedName = `bundle-entry-${hash}.js`;\n const hashedMapName = `bundle-entry-${hash}.js.map`;\n\n entryContent = entryContent.replace(\n /\\/\\/# sourceMappingURL=bundle-entry\\.js\\.map/,\n `//# sourceMappingURL=${hashedMapName}`\n );\n\n await fs.writeFile(path.join(outputDir, hashedName), entryContent);\n await fs.unlink(entryPath);\n\n try {\n await fs.access(mapPath);\n await fs.rename(mapPath, path.join(outputDir, hashedMapName));\n } catch {\n // No source map\n }\n\n logger.info(`Entry hashed: ${hashedName}`);\n}\n\n/**\n * Extract dataRequirements from section schema files using jiti.\n * Same pattern as generateThemeData() — jiti handles TypeScript natively.\n * Returns a map of sectionType → dataRequirements object.\n */\nasync function extractDataRequirements(\n themePath: string\n): Promise<Record<string, Record<string, boolean>>> {\n const { createJiti } = await import(\"jiti\");\n const jiti = createJiti(import.meta.url);\n\n const schemaFiles = await glob(\"sections/**/*.schema.ts\", { cwd: themePath });\n const requirements: Record<string, Record<string, boolean>> = {};\n\n for (const file of schemaFiles) {\n try {\n const mod = await jiti.import(path.join(themePath, file));\n const exports = mod as Record<string, any>;\n\n // Find schema exports: look for objects with .type (string) + .dataRequirements\n for (const value of Object.values(exports)) {\n if (\n value &&\n typeof value === \"object\" &&\n typeof value.type === \"string\" &&\n value.dataRequirements &&\n typeof value.dataRequirements === \"object\"\n ) {\n requirements[value.type] = value.dataRequirements;\n }\n }\n } catch (err) {\n logger.warning(\n `Could not load schema ${file}: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n }\n\n return requirements;\n}\n\n/**\n * Generate manifest.json with theme metadata.\n */\nexport async function generateManifest(\n themeName: string,\n themePath: string,\n outputDir: string\n): Promise<void> {\n // Read version and themeId from package.json\n let version = \"1.0.0\";\n let themeId = themeName;\n try {\n const pkgContent = await fs.readFile(\n path.join(themePath, \"package.json\"),\n \"utf-8\"\n );\n const pkg = JSON.parse(pkgContent);\n version = pkg.version || version;\n // Derive themeId from package name: \"@onex-themes/simple\" → \"simple\"\n if (pkg.name) {\n themeId = pkg.name.replace(/^@onex-themes\\//, \"\");\n }\n } catch {\n // Use defaults\n }\n\n const [sectionFiles, blockFiles, schemaFiles] = await Promise.all([\n glob(\"sections/**/index.ts\", { cwd: themePath }),\n glob(\"blocks/**/index.ts\", { cwd: themePath }),\n glob(\"**/*.schema.ts\", { cwd: themePath }),\n ]);\n\n // Extract dataRequirements declared in section schemas\n const dataRequirements = await extractDataRequirements(themePath);\n\n let hasThemeConfig = false;\n try {\n await fs.access(path.join(themePath, \"theme.config.ts\"));\n hasThemeConfig = true;\n } catch {\n // No theme config\n }\n\n const allFiles = await glob(\"**/*\", { cwd: outputDir, nodir: true });\n const jsFiles = allFiles.filter((f) => f.endsWith(\".js\"));\n const cssFiles = allFiles.filter((f) => f.endsWith(\".css\"));\n\n const entryFile =\n jsFiles.find((f) => f.includes(\"bundle-entry\")) || \"bundle-entry.js\";\n\n const manifest = {\n themeId,\n version,\n name: themeId.charAt(0).toUpperCase() + themeId.slice(1),\n compiledAt: new Date().toISOString(),\n format: \"esm\",\n platform: \"browser\",\n target: \"es2020\",\n\n counts: {\n sections: sectionFiles.length,\n blocks: blockFiles.length,\n schemas: schemaFiles.length,\n },\n\n output: {\n entry: entryFile,\n chunks: jsFiles.filter((f) => f !== entryFile && !f.endsWith(\".map\")),\n assets: allFiles.filter((f) =>\n [\".png\", \".jpg\", \".jpeg\", \".svg\", \".gif\", \".webp\"].some((ext) =>\n f.endsWith(ext)\n )\n ),\n stylesheets: cssFiles,\n },\n\n external: [\"react\", \"react-dom\", \"@onexapis/core\"],\n\n source: {\n sections: sectionFiles,\n blocks: blockFiles,\n schemas: schemaFiles,\n hasThemeConfig,\n },\n\n // Section data requirements for server-side prefetching (keyed by section type)\n dataRequirements,\n };\n\n await fs.writeFile(\n path.join(outputDir, \"manifest.json\"),\n JSON.stringify(manifest, null, 2)\n );\n}\n\n/**\n * Compile a standalone theme using esbuild.\n * Produces ESM bundles with React/core externalized to globals.\n *\n * @returns true if build succeeded\n */\nexport async function compileStandaloneTheme(\n themePath: string,\n themeName: string\n): Promise<boolean> {\n const outputDir = path.join(themePath, \"dist\");\n\n // Detect entry point: bundle-entry.ts preferred, fallback to index.ts\n const bundleEntry = path.join(themePath, \"bundle-entry.ts\");\n const indexEntry = path.join(themePath, \"index.ts\");\n\n let entryPoint = indexEntry;\n try {\n await fs.access(bundleEntry);\n entryPoint = bundleEntry;\n } catch {\n // Use index.ts\n }\n\n // Write process shim to a temp file (esbuild inject requires a file path)\n const shimPath = path.join(outputDir, \".process-shim.js\");\n await fs.mkdir(outputDir, { recursive: true });\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n const buildOptions: esbuild.BuildOptions = {\n entryPoints: [entryPoint],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outdir: outputDir,\n splitting: false,\n chunkNames: \"[name]-[hash]\",\n banner: {\n js: '\"use client\";',\n },\n\n plugins: [\n reactGlobalPlugin,\n createCoreGlobalPlugin(themePath),\n createThemeDepsStubPlugin(themePath),\n ],\n\n external: [],\n\n alias: {\n events: \"events/\",\n buffer: \"buffer/\",\n },\n\n inject: [shimPath],\n\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"production\"),\n global: \"globalThis\",\n },\n\n minify: true,\n sourcemap: true,\n logLevel: \"warning\",\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n\n loader: {\n \".tsx\": \"tsx\",\n \".ts\": \"ts\",\n \".jpg\": \"file\",\n \".jpeg\": \"file\",\n \".png\": \"file\",\n \".gif\": \"file\",\n \".svg\": \"file\",\n \".webp\": \"file\",\n },\n\n assetNames: \"assets/[name]-[hash]\",\n publicPath: \"./\",\n metafile: true,\n };\n\n try {\n const result = await esbuild.build(buildOptions);\n\n // Clean up temp shim file\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n // Content-hash the entry point\n await contentHashEntry(outputDir);\n\n // Generate manifest\n await generateManifest(themeName, themePath, outputDir);\n\n // Generate theme-data.json for server-side fallback\n await generateThemeData(themePath, outputDir, themeName);\n\n // Generate bundle.css with all Tailwind classes used by the theme\n // This is injected into the editor preview iframe so it matches the storefront\n await generateThemeCSS(themePath, outputDir);\n\n // Log bundle analysis\n if (result.metafile) {\n const outputs = result.metafile.outputs;\n let totalSize = 0;\n for (const output of Object.values(outputs)) {\n totalSize += output.bytes;\n }\n const totalKB = (totalSize / 1024).toFixed(2);\n logger.info(`Bundle size: ${totalKB} KB`);\n }\n\n return true;\n } catch (error) {\n // Clean up temp shim file on failure\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n logger.error(`esbuild compilation failed: ${error}`);\n return false;\n }\n}\n\n/**\n * Compile standalone theme in dev mode with incremental rebuilds.\n * Differences from production compileStandaloneTheme:\n * - Uses esbuild.context() for incremental rebuilds\n * - No minification, no content-hash (stable bundle-entry.js filename)\n * - Returns the build context for subsequent rebuilds\n */\nexport async function compileStandaloneThemeDev(\n themePath: string,\n themeName: string\n): Promise<{ context: esbuild.BuildContext; outputDir: string }> {\n const outputDir = path.join(themePath, \"dist\");\n\n // Detect entry point (same as production build)\n const bundleEntry = path.join(themePath, \"bundle-entry.ts\");\n const indexEntry = path.join(themePath, \"index.ts\");\n let entryPoint = indexEntry;\n try {\n await fs.access(bundleEntry);\n entryPoint = bundleEntry;\n } catch {\n // Use index.ts\n }\n\n // Write process shim\n const shimPath = path.join(outputDir, \".process-shim.js\");\n await fs.mkdir(outputDir, { recursive: true });\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n const buildOptions: esbuild.BuildOptions = {\n entryPoints: [entryPoint],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outdir: outputDir,\n splitting: false,\n banner: {\n js: '\"use client\";',\n },\n\n plugins: [\n reactGlobalPlugin,\n createCoreGlobalPlugin(themePath),\n createThemeDepsStubPlugin(themePath),\n ],\n external: [],\n\n alias: {\n events: \"events/\",\n buffer: \"buffer/\",\n },\n\n inject: [shimPath],\n\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"development\"),\n global: \"globalThis\",\n },\n\n minify: false,\n sourcemap: true,\n logLevel: \"warning\",\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n\n loader: {\n \".tsx\": \"tsx\",\n \".ts\": \"ts\",\n \".jpg\": \"file\",\n \".jpeg\": \"file\",\n \".png\": \"file\",\n \".gif\": \"file\",\n \".svg\": \"file\",\n \".webp\": \"file\",\n },\n\n assetNames: \"assets/[name]-[hash]\",\n publicPath: \"./\",\n metafile: true,\n };\n\n const context = await esbuild.context(buildOptions);\n\n // Initial build\n await context.rebuild();\n\n // NOTE: Do NOT delete shimPath here — incremental rebuilds need it.\n // It will be cleaned up when context.dispose() is called.\n\n // Generate manifest (no content-hash step for dev)\n await generateManifest(themeName, themePath, outputDir);\n\n // Generate theme-data.json for server-side fallback\n await generateThemeData(themePath, outputDir, themeName);\n\n return { context, outputDir };\n}\n\n/**\n * Compile the preview runtime (React + @onexapis/core bundled in).\n * One-time compilation on dev server startup.\n * React and core are bundled INTO the output (not externalized) because\n * the preview runtime IS the host that provides these globals.\n */\nexport async function compilePreviewRuntime(\n themePath: string\n): Promise<string> {\n const outputDir = path.join(themePath, \"dist\");\n await fs.mkdir(outputDir, { recursive: true });\n\n const outputPath = path.join(outputDir, \"preview-runtime.js\");\n\n // Resolve the preview-app.tsx source from CLI package\n // In dev: src/preview/preview-app.tsx\n // In dist: preview/preview-app.tsx (copied by tsup config)\n const locations = [\n path.join(__dirname, \"..\", \"preview\", \"preview-app.tsx\"),\n path.join(__dirname, \"preview\", \"preview-app.tsx\"),\n path.join(__dirname, \"..\", \"..\", \"src\", \"preview\", \"preview-app.tsx\"),\n ];\n\n let previewEntryPath: string | null = null;\n for (const loc of locations) {\n try {\n await fs.access(loc);\n previewEntryPath = loc;\n break;\n } catch {\n // Try next location\n }\n }\n\n if (!previewEntryPath) {\n throw new Error(\n `Preview app source not found. Searched:\\n${locations.join(\"\\n\")}`\n );\n }\n\n // Plugin to stub out server-only packages that leak from @onexapis/core chunks\n const serverStubPlugin: Plugin = {\n name: \"server-stub\",\n setup(build) {\n // Stub server-only marker package\n build.onResolve({ filter: /^server-only$/ }, () => ({\n path: \"server-only\",\n namespace: \"server-stub\",\n }));\n build.onLoad({ filter: /.*/, namespace: \"server-stub\" }, () => ({\n contents: \"// server-only stub for browser\",\n loader: \"js\",\n }));\n\n // Stub Node.js built-ins that leak from server chunks\n const nodeBuiltins = [\n \"fs\",\n \"fs/promises\",\n \"path\",\n \"os\",\n \"crypto\",\n \"stream\",\n \"url\",\n \"http\",\n \"https\",\n \"net\",\n \"tls\",\n \"child_process\",\n \"util\",\n \"events\",\n \"buffer\",\n \"querystring\",\n \"zlib\",\n ];\n for (const mod of nodeBuiltins) {\n build.onResolve(\n { filter: new RegExp(`^${mod.replace(\"/\", \"\\\\/\")}$`) },\n () => ({\n path: mod,\n namespace: \"node-stub\",\n })\n );\n }\n build.onLoad({ filter: /.*/, namespace: \"node-stub\" }, (args) => {\n const stubs: Record<string, string> = {\n events:\n \"export class EventEmitter { on(){return this} off(){return this} emit(){return false} addListener(){return this} removeListener(){return this} } export default { EventEmitter };\",\n path: \"export function join(){return ''} export function resolve(){return ''} export function dirname(){return ''} export function basename(){return ''} export function extname(){return ''} export default {};\",\n fs: \"export const promises = {}; export function readFileSync(){return ''} export function existsSync(){return false} export default {};\",\n };\n return {\n contents: stubs[args.path] || \"export default {};\",\n loader: \"js\",\n };\n });\n\n // Stub optional UI dependencies that may not be installed in standalone themes.\n // First try to resolve normally; only stub if the package is missing.\n const lucideIconNames = new Set<string>();\n let lucideScanned = false;\n build.onResolve({ filter: /^lucide-react/ }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n return { path: args.path, namespace: \"lucide-stub\" };\n });\n build.onLoad({ filter: /.*/, namespace: \"lucide-stub\" }, async () => {\n // Dynamically scan @onexapis/core source for lucide-react imports\n if (!lucideScanned) {\n lucideScanned = true;\n // Try multiple locations to find @onexapis/core source\n const coreSrcCandidates = [\n path.join(themePath, \"node_modules\", \"@onexapis\", \"core\", \"src\"),\n path.join(themePath, \"..\", \"..\", \"packages\", \"core\", \"src\"), // monorepo sibling\n path.join(\n __dirname,\n \"..\",\n \"..\",\n \"..\",\n \"..\",\n \"packages\",\n \"core\",\n \"src\"\n ), // from CLI src\n ];\n let coreSourceDir: string | null = null;\n for (const candidate of coreSrcCandidates) {\n try {\n await fs.access(candidate);\n coreSourceDir = candidate;\n break;\n } catch {}\n }\n if (coreSourceDir) {\n try {\n const scanned = await scanImportsFromPackage(\n coreSourceDir,\n \"lucide-react\"\n );\n for (const names of Object.values(scanned)) {\n for (const name of names) lucideIconNames.add(name);\n }\n } catch {}\n } else {\n // No source dir found (e.g. global install) — scan core dist .mjs files\n const coreDistCandidates: string[] = [\n path.join(themePath, \"node_modules\", \"@onexapis\", \"core\", \"dist\"),\n ];\n const resolvedDist = await resolveNodeModulesFile(\n __dirname,\n path.join(\"@onexapis\", \"core\", \"dist\")\n );\n if (resolvedDist) coreDistCandidates.push(resolvedDist);\n\n for (const candidate of coreDistCandidates) {\n try {\n await fs.access(candidate);\n const mjsFiles = await glob(\"*.mjs\", { cwd: candidate });\n const importRegex =\n /import\\s*\\{([^}]+)\\}\\s*from\\s*[\"']lucide-react[\"']/g;\n for (const file of mjsFiles) {\n const content = await fs.readFile(\n path.join(candidate, file),\n \"utf-8\"\n );\n for (const match of content.matchAll(importRegex)) {\n for (const name of match[1].split(\",\")) {\n const original = name\n .trim()\n .split(/\\s+as\\s+/)[0]\n .trim();\n if (original && !original.startsWith(\"type \")) {\n lucideIconNames.add(original);\n }\n }\n }\n }\n break; // found and scanned dist dir\n } catch {}\n }\n }\n // Also scan theme source files\n try {\n const scanned = await scanImportsFromPackage(\n themePath,\n \"lucide-react\"\n );\n for (const names of Object.values(scanned)) {\n for (const name of names) lucideIconNames.add(name);\n }\n } catch {}\n }\n\n const iconExports = [...lucideIconNames]\n .map((n) => `icon as ${n}`)\n .join(\", \");\n return {\n contents: `\nconst icon = (props) => null;\nexport { ${iconExports} };\nexport default new Proxy({}, { get: (_, name) => name === '__esModule' ? true : icon });\n `.trim(),\n loader: \"jsx\",\n };\n });\n\n build.onResolve({ filter: /^framer-motion/ }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n // Try resolving from theme directory first\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n // Try resolving via createRequire (works in bundled CLI / monorepo)\n try {\n const req = createRequire(import.meta.url || __filename);\n const cjsPath = req.resolve(\"framer-motion\");\n // Navigate to package root and use ESM entry for browser bundling\n const pkgDir = cjsPath.replace(/[/\\\\]dist[/\\\\].*$/, \"\");\n const esmEntry = path.join(pkgDir, \"dist\", \"es\", \"index.mjs\");\n const { existsSync } = await import(\"fs\");\n if (existsSync(esmEntry)) {\n return { path: esmEntry, namespace: \"file\" };\n }\n // Fallback: use the resolved path as-is\n return { path: cjsPath, namespace: \"file\" };\n } catch {}\n return { path: args.path, namespace: \"motion-stub\" };\n });\n build.onLoad({ filter: /.*/, namespace: \"motion-stub\" }, () => ({\n contents: `\nimport React from 'react';\nconst MotionComponent = React.forwardRef((props, ref) => {\n const { initial, animate, exit, variants, transition, whileInView, whileHover, whileTap, viewport, onAnimationComplete, layout, layoutId, style, className, ...rest } = props;\n return React.createElement(rest.as || 'div', { ref, style, className, ...rest }, rest.children);\n});\nconst handler = { get: (_, name) => {\n if (name === '__esModule') return true;\n if (name === 'create') return () => new Proxy({}, handler);\n return MotionComponent;\n}};\nexport const motion = new Proxy({}, handler);\nexport const AnimatePresence = (props) => props.children || null;\nexport const useInView = () => true;\nexport const useAnimation = () => ({ start: () => {}, stop: () => {}, set: () => {} });\nexport const useMotionValue = (v) => ({ get: () => v, set: () => {}, onChange: () => () => {} });\nexport const useTransform = (v) => v;\nexport const useScroll = () => ({ scrollY: { get: () => 0, onChange: () => () => {} }, scrollYProgress: { get: () => 0, onChange: () => () => {} } });\nexport default { motion, AnimatePresence };\n `.trim(),\n loader: \"jsx\",\n }));\n\n // Stub Next.js modules (not installed in standalone themes)\n build.onResolve({ filter: /^next\\// }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n return { path: args.path, namespace: \"next-stub\" };\n });\n build.onLoad({ filter: /.*/, namespace: \"next-stub\" }, (args) => {\n const stubs: Record<string, string> = {\n \"next/image\": `\nimport React from 'react';\nconst Image = React.forwardRef((props, ref) => {\n const { src, alt, width, height, fill, priority, sizes, quality, placeholder, blurDataURL, onLoad, onError, style, className, ...rest } = props;\n const imgSrc = typeof src === 'object' ? src.src : src;\n const fillStyle = fill ? { position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: style?.objectFit || 'cover', display: 'block' } : {};\n const mergedStyle = { ...fillStyle, ...style };\n return React.createElement('img', {\n ref,\n src: imgSrc,\n alt,\n width: fill ? undefined : width,\n height: fill ? undefined : height,\n loading: priority ? 'eager' : 'lazy',\n style: Object.keys(mergedStyle).length > 0 ? mergedStyle : undefined,\n className,\n onLoad,\n onError,\n ...rest,\n });\n});\nexport default Image;\n `,\n \"next/link\": `\nconst Link = ({ href, children, ...rest }) => React.createElement('a', { href, ...rest }, children);\nimport React from 'react';\nexport default Link;\n `,\n \"next/navigation\": `\nexport function useRouter() { return { push(u){window.location.href=u}, replace(u){window.location.href=u}, back(){window.history.back()}, forward(){window.history.forward()}, refresh(){window.location.reload()}, prefetch(){} }; }\nexport function usePathname() { return window.location.pathname; }\nexport function useSearchParams() { return new URLSearchParams(window.location.search); }\nexport function useParams() { return {}; }\nexport function redirect(url) { window.location.href = url; }\nexport function notFound() { throw new Error('Not Found'); }\n `,\n \"next/headers\": `\nexport function cookies() { return { get(){}, getAll(){ return []; }, set(){}, delete(){}, has(){ return false; } }; }\nexport function headers() { return new Headers(); }\n `,\n };\n return {\n contents: stubs[args.path] || \"export default {};\",\n loader: \"jsx\",\n resolveDir: themePath,\n };\n });\n },\n };\n\n // Write process shim for preview runtime (CJS code paths may reference `process`)\n const shimPath = path.join(outputDir, \".process-shim-preview.js\");\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n await esbuild.build({\n entryPoints: [previewEntryPath],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outfile: outputPath,\n // Bundle React + core INTO the output (NOT externalized)\n external: [],\n plugins: [serverStubPlugin],\n inject: [shimPath],\n minify: false,\n sourcemap: true,\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"development\"),\n \"process.env.NEXT_PUBLIC_API_URL\": JSON.stringify(\n process.env.NEXT_PUBLIC_API_URL || \"\"\n ),\n \"process.env.NEXT_PUBLIC_COMPANY_ID\": JSON.stringify(\n process.env.NEXT_PUBLIC_COMPANY_ID || \"\"\n ),\n global: \"globalThis\",\n },\n loader: { \".tsx\": \"tsx\", \".ts\": \"ts\" },\n // Force CJS resolution to avoid sideEffects:false dropping ESM chunk imports\n conditions: [\"require\", \"default\"],\n mainFields: [\"main\"],\n logOverride: {\n \"ignored-bare-import\": \"silent\",\n },\n });\n\n // Clean up temp shim file\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n return outputPath;\n}\n","import path from \"path\";\nimport fs from \"fs\";\nimport { execSync } from \"child_process\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport {\n validateThemeName,\n toKebabCase,\n toPascalCase,\n} from \"../utils/validators\";\nimport {\n writeFile,\n copyTemplate,\n detectPackageManager,\n installDependencies,\n} from \"../utils/file-helpers\";\n\ninterface InitOptions {\n template?: string;\n noInstall?: boolean;\n git?: boolean;\n yes?: boolean;\n}\n\nexport async function initCommand(\n projectName?: string,\n options: InitOptions = {}\n): Promise<void> {\n logger.header(\"Create New OneX Theme Project\");\n\n // Validate project name or prompt for it\n let name: string;\n\n if (!projectName) {\n const { inputName } = await inquirer.prompt([\n {\n type: \"input\",\n name: \"inputName\",\n message: \"Project name (kebab-case):\",\n validate: (input: string) => {\n if (!input) return \"Project name is required\";\n const kebabName = toKebabCase(input);\n if (!validateThemeName(kebabName)) {\n return \"Invalid project name. Use lowercase letters, numbers, and hyphens only.\";\n }\n if (fs.existsSync(path.join(process.cwd(), kebabName))) {\n return `Directory \"${kebabName}\" already exists`;\n }\n return true;\n },\n },\n ]);\n name = toKebabCase(inputName);\n } else {\n name = toKebabCase(projectName);\n }\n\n // Check if directory already exists\n const projectPath = path.join(process.cwd(), name);\n if (fs.existsSync(projectPath)) {\n logger.error(`Directory \"${name}\" already exists.`);\n process.exit(1);\n }\n\n // Skip prompts if --yes flag is provided\n let displayName: string;\n let description: string;\n let author: string;\n let template: string;\n\n if (options.yes) {\n displayName = toPascalCase(name)\n .replace(/([A-Z])/g, \" $1\")\n .trim();\n description = \"A custom OneX theme\";\n author = \"\";\n template = options.template || \"default\";\n } else {\n const answers = await inquirer.prompt([\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name:\",\n default: toPascalCase(name)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Theme description:\",\n default: \"A custom OneX theme\",\n },\n {\n type: \"input\",\n name: \"author\",\n message: \"Author name:\",\n default: \"\",\n },\n {\n type: \"list\",\n name: \"template\",\n message: \"Template to use:\",\n choices: [\n { name: \"Default (basic theme structure)\", value: \"default\" },\n { name: \"Minimal (bare minimum)\", value: \"minimal\" },\n ],\n default: options.template || \"default\",\n },\n ]);\n\n displayName = answers.displayName;\n description = answers.description;\n author = answers.author;\n template = answers.template;\n }\n\n const data = {\n projectName: name,\n themeName: name,\n themeNamePascal: toPascalCase(name),\n displayName,\n description,\n author,\n template,\n };\n\n logger.startSpinner(\"Creating project structure...\");\n\n try {\n // Create project directory\n fs.mkdirSync(projectPath, { recursive: true });\n\n // Copy template files (real theme source — no EJS)\n await copyTemplate(template, projectPath, data);\n\n // Rename theme ID/name in copied files\n await renameThemeInFiles(\n projectPath,\n name,\n displayName,\n description,\n author\n );\n\n logger.stopSpinner(true, \"Project structure created!\");\n\n // Initialize git if requested\n if (options.git) {\n logger.startSpinner(\"Initializing git repository...\");\n try {\n execSync(\"git init\", { cwd: projectPath, stdio: \"ignore\" });\n execSync(\"git add .\", { cwd: projectPath, stdio: \"ignore\" });\n execSync('git commit -m \"Initial commit from onexthm init\"', {\n cwd: projectPath,\n stdio: \"ignore\",\n });\n logger.stopSpinner(true, \"Git repository initialized!\");\n } catch {\n logger.stopSpinner(false, \"Failed to initialize git\");\n }\n }\n\n // Install dependencies\n if (!options.noInstall) {\n logger.newLine();\n const packageManager = detectPackageManager();\n logger.startSpinner(`Installing dependencies with ${packageManager}...`);\n try {\n await installDependencies(projectPath, packageManager);\n logger.stopSpinner(true, \"Dependencies installed!\");\n } catch {\n logger.stopSpinner(false, \"Failed to install dependencies\");\n logger.info(\n \"You can install dependencies manually by running: cd \" +\n name +\n \" && npm install\"\n );\n }\n }\n\n // Print success message and next steps\n logger.newLine();\n logger.section(\"Success! 🎉\");\n logger.newLine();\n logger.info(`Created OneX theme project at: ${projectPath}`);\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(` cd ${name}`);\n if (options.noInstall) {\n logger.log(` npm install`);\n }\n logger.log(` npm run build # Build your theme`);\n logger.log(` npm run dev # Start development mode`);\n logger.newLine();\n logger.section(\"Theme structure:\");\n logger.log(\" bundle-entry.ts - Theme manifest and exports\");\n logger.log(\n \" theme.config.ts - Design tokens (colors, typography, etc.)\"\n );\n logger.log(\" theme.layout.ts - Header and footer configuration\");\n logger.log(\" sections/ - Custom sections for your theme\");\n logger.log(\" pages/ - Page configurations\");\n logger.log(\" CLAUDE.md - AI assistant context\");\n logger.newLine();\n logger.success(`Happy theming! 🎨`);\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create project\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n // Clean up on failure\n if (fs.existsSync(projectPath)) {\n fs.rmSync(projectPath, { recursive: true, force: true });\n }\n process.exit(1);\n }\n}\n\n/**\n * Rename theme ID/name in copied template files.\n * Replaces \"simple\"/\"My Simple Theme\" with the user's theme name.\n */\nasync function renameThemeInFiles(\n projectPath: string,\n themeName: string,\n displayName: string,\n description: string,\n author: string\n): Promise<void> {\n // Only rename in metadata files — NOT in sections/pages (section type IDs must stay)\n // theme.config.ts — update id, name, description\n const configPath = path.join(projectPath, \"theme.config.ts\");\n if (fs.existsSync(configPath)) {\n let content = fs.readFileSync(configPath, \"utf-8\");\n // Keep id as \"my-simple\" — section types depend on it for prefix stripping\n content = content.replace(\n /name: \"My Simple Theme\"/,\n `name: \"${displayName}\"`\n );\n content = content.replace(\n /description: \".*?\"/,\n `description: \"${description}\"`\n );\n fs.writeFileSync(configPath, content, \"utf-8\");\n }\n\n // package.json — update name, description\n const pkgPath = path.join(projectPath, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n let content = fs.readFileSync(pkgPath, \"utf-8\");\n content = content.replace(\n /@onex-themes\\/my-simple/g,\n `@onex-themes/${themeName}`\n );\n content = content.replace(\n /\"description\": \".*?\"/,\n `\"description\": \"${description}\"`\n );\n fs.writeFileSync(pkgPath, content, \"utf-8\");\n }\n}\n\nfunction toCamelCase(str: string): string {\n return str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n}\n\n// Legacy generator functions (kept for backward compat, unused with new template)\nfunction generateManifest(data: {\n themeName: string;\n displayName: string;\n description: string;\n author: string;\n}): string {\n return `import type { ThemeExport } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Theme Manifest\n * ${data.description}\n */\nexport const manifest: ThemeExport = {\n id: \"${data.themeName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n version: \"1.0.0\",\n author: \"${data.author}\",\n\n // Theme configuration\n config: () => import(\"./config\").then((m) => m.themeConfig),\n\n // Theme layout (header/footer sections)\n layout: () => import(\"./layout\").then((m) => m.themeLayout),\n\n // Available sections in this theme\n sections: {\n // Example: hero: () => import(\"./sections/hero\").then((m) => m.heroSchema),\n },\n\n // Available blocks in this theme\n blocks: {\n // Example: productCard: () => import(\"./blocks/product-card\").then((m) => m.productCardDefinition),\n },\n\n // Default pages\n pages: {\n home: () => import(\"./pages/home\").then((m) => m.homePageConfig),\n },\n\n // Supported page types\n supportedPageTypes: [\"home\", \"about\", \"contact\", \"custom\"],\n\n // Preview image (optional)\n preview: undefined,\n\n // Tags for categorization (optional)\n tags: [\"custom\"],\n};\n\nexport default manifest;\n`;\n}\n\nfunction generateThemeConfig(data: {\n themeName: string;\n displayName: string;\n}): string {\n return `import type { ThemeConfig } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Theme Configuration\n * Design tokens: colors, typography, spacing, etc.\n */\nexport const themeConfig: ThemeConfig = {\n // Color palette\n colors: {\n primary: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n },\n secondary: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n },\n accent: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\",\n },\n },\n\n // Typography\n typography: {\n fontFamily: {\n sans: [\"Inter\", \"system-ui\", \"sans-serif\"],\n serif: [\"Georgia\", \"serif\"],\n mono: [\"Monaco\", \"monospace\"],\n },\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n },\n },\n\n // Spacing\n spacing: {\n xs: \"0.5rem\",\n sm: \"1rem\",\n md: \"1.5rem\",\n lg: \"2rem\",\n xl: \"3rem\",\n \"2xl\": \"4rem\",\n \"3xl\": \"6rem\",\n \"4xl\": \"8rem\",\n },\n\n // Border radius\n borderRadius: {\n none: \"0\",\n sm: \"0.125rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n full: \"9999px\",\n },\n\n // Breakpoints\n breakpoints: {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n },\n};\n`;\n}\n\nfunction generateThemeLayout(data: { themeName: string }): string {\n return `import type { ThemeLayoutConfig } from \"@onexapis/core\";\n\n/**\n * ${data.themeName} Theme Layout\n * Define header and footer sections\n */\nexport const themeLayout: ThemeLayoutConfig = {\n // Header section configuration\n header: undefined,\n // Example:\n // header: {\n // type: \"header\",\n // template: \"default\",\n // enabled: true,\n // settings: {},\n // },\n\n // Footer section configuration\n footer: undefined,\n // Example:\n // footer: {\n // type: \"footer\",\n // template: \"default\",\n // enabled: true,\n // settings: {},\n // },\n};\n`;\n}\n\nfunction generateThemeIndex(data: {\n themeName: string;\n themeNamePascal: string;\n}): string {\n return `/**\n * ${data.themeNamePascal} Theme\n */\n\nexport { manifest as ${data.themeNamePascal}Manifest } from \"./manifest\";\nexport { themeConfig as ${data.themeNamePascal}Config } from \"./config\";\nexport { themeLayout as ${data.themeNamePascal}Layout } from \"./layout\";\n`;\n}\n\nfunction generateHomePage(data: { displayName: string }): string {\n return `import type { PageConfig } from \"@onexapis/core\";\n\n/**\n * Home Page Configuration\n */\nexport const homePageConfig: PageConfig = {\n type: \"home\",\n title: \"${data.displayName}\",\n description: \"Welcome to ${data.displayName}\",\n\n // SEO metadata\n seo: {\n title: \"${data.displayName} - Home\",\n description: \"Welcome to ${data.displayName}\",\n keywords: [],\n ogImage: undefined,\n },\n\n // Page sections\n sections: [\n // Add your sections here\n // Example:\n // {\n // id: \"hero-1\",\n // type: \"hero\",\n // template: \"default\",\n // order: 0,\n // enabled: true,\n // settings: {},\n // components: [],\n // blocks: [],\n // },\n ],\n};\n`;\n}\n","/**\n * Validation utilities for CLI inputs\n */\n\n/**\n * Validate component/section/block name\n * Must be kebab-case and alphanumeric\n */\nexport function validateName(name: string): boolean {\n return /^[a-z0-9]+(-[a-z0-9]+)*$/.test(name);\n}\n\n/**\n * Convert string to kebab-case\n */\nexport function toKebabCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n}\n\n/**\n * Convert string to PascalCase\n */\nexport function toPascalCase(str: string): string {\n return str\n .split(/[-_\\s]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(\"\");\n}\n\n/**\n * Convert string to camelCase\n */\nexport function toCamelCase(str: string): string {\n const pascal = toPascalCase(str);\n return pascal.charAt(0).toLowerCase() + pascal.slice(1);\n}\n\n/**\n * Validate theme name\n */\nexport function validateThemeName(name: string): boolean {\n return /^[a-z][a-z0-9-]*$/.test(name);\n}\n\n/**\n * Check if path exists\n */\nexport function pathExists(filePath: string): boolean {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const fs = require(\"fs-extra\");\n return fs.existsSync(filePath);\n}\n\n/**\n * Validate section category\n */\nexport function validateCategory(category: string): boolean {\n const validCategories = [\n \"headers\",\n \"heroes\",\n \"content\",\n \"features\",\n \"testimonials\",\n \"galleries\",\n \"cta\",\n \"footers\",\n \"ecommerce\",\n \"blog\",\n \"contact\",\n ];\n return validCategories.includes(category);\n}\n\n/**\n * Get valid categories\n */\nexport function getValidCategories(): string[] {\n return [\n \"headers\",\n \"heroes\",\n \"content\",\n \"features\",\n \"testimonials\",\n \"galleries\",\n \"cta\",\n \"footers\",\n \"ecommerce\",\n \"blog\",\n \"contact\",\n ];\n}\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport ejs from \"ejs\";\nimport { execSync } from \"child_process\";\nimport { logger } from \"./logger\";\n\n/**\n * Render a template file with EJS\n */\nexport async function renderTemplate(\n templatePath: string,\n data: Record<string, unknown>\n): Promise<string> {\n const template = await fs.readFile(templatePath, \"utf-8\");\n return ejs.render(template, data);\n}\n\n/**\n * Write a file with directory creation\n */\nexport async function writeFile(\n filePath: string,\n content: string\n): Promise<void> {\n await fs.ensureDir(path.dirname(filePath));\n await fs.writeFile(filePath, content, \"utf-8\");\n}\n\n/**\n * Get the templates directory\n * Works in both development and production (bundled) environments\n */\nfunction getTemplatesDir(): string {\n // Try common locations\n const locations = [\n path.join(__dirname, \"../../templates\"), // Development\n path.join(__dirname, \"../templates\"), // Production (dist/)\n path.join(process.cwd(), \"templates\"), // Fallback\n path.join(process.cwd(), \"packages/cli/templates\"), // Monorepo\n ];\n\n for (const location of locations) {\n if (fs.existsSync(location)) {\n return location;\n }\n }\n\n throw new Error(\"Templates directory not found\");\n}\n\n/**\n * Copy template directory\n */\nexport async function copyTemplate(\n templateName: string,\n targetDir: string,\n data: Record<string, unknown>\n): Promise<void> {\n // Get template directory from CLI package\n const templatesDir = getTemplatesDir();\n const templateDir = path.join(templatesDir, templateName);\n\n if (!fs.existsSync(templateDir)) {\n throw new Error(\n `Template \"${templateName}\" not found at ${templateDir}. Available templates: ${fs.readdirSync(templatesDir).join(\", \")}`\n );\n }\n\n await fs.ensureDir(targetDir);\n\n const files = await fs.readdir(templateDir);\n\n for (const file of files) {\n const templatePath = path.join(templateDir, file);\n const targetPath = path.join(targetDir, file);\n\n const stat = await fs.stat(templatePath);\n\n if (stat.isDirectory()) {\n // Recursively copy directories\n await copyTemplateDir(templatePath, targetPath, data);\n } else if (file.endsWith(\".ejs\")) {\n // Render EJS template\n const content = await renderTemplate(templatePath, data);\n const outputPath = targetPath.replace(/\\.ejs$/, \"\");\n await writeFile(outputPath, content);\n } else {\n // Copy file as-is\n await fs.copy(templatePath, targetPath);\n }\n }\n}\n\n/**\n * Internal helper to copy a template directory recursively\n */\nasync function copyTemplateDir(\n templateDir: string,\n targetDir: string,\n data: Record<string, unknown>\n): Promise<void> {\n await fs.ensureDir(targetDir);\n\n const files = await fs.readdir(templateDir);\n\n for (const file of files) {\n const templatePath = path.join(templateDir, file);\n const targetPath = path.join(targetDir, file);\n\n const stat = await fs.stat(templatePath);\n\n if (stat.isDirectory()) {\n await copyTemplateDir(templatePath, targetPath, data);\n } else if (file.endsWith(\".ejs\")) {\n // Render EJS template\n const content = await renderTemplate(templatePath, data);\n const outputPath = targetPath.replace(/\\.ejs$/, \"\");\n await writeFile(outputPath, content);\n } else {\n // Copy file as-is\n await fs.copy(templatePath, targetPath);\n }\n }\n}\n\n/**\n * Get project root directory\n */\nexport function getProjectRoot(): string {\n let currentDir = process.cwd();\n\n // Look for package.json with workspace config or themes directory\n while (currentDir !== path.parse(currentDir).root) {\n const packageJsonPath = path.join(currentDir, \"package.json\");\n\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = fs.readJsonSync(packageJsonPath);\n\n // Check if this is the root (has workspaces, src/themes, or themes)\n if (\n packageJson.workspaces ||\n fs.existsSync(path.join(currentDir, \"src/themes\")) ||\n fs.existsSync(path.join(currentDir, \"themes\"))\n ) {\n return currentDir;\n }\n }\n\n currentDir = path.dirname(currentDir);\n }\n\n return process.cwd();\n}\n\n/**\n * Get themes directory\n */\nexport function getThemesDir(): string {\n const root = getProjectRoot();\n if (fs.existsSync(path.join(root, \"themes\")))\n return path.join(root, \"themes\");\n if (fs.existsSync(path.join(root, \"src/themes\")))\n return path.join(root, \"src/themes\");\n // Standalone theme: parent dir acts as themes dir\n return path.dirname(root);\n}\n\n/**\n * Get features directory\n */\nexport function getFeaturesDir(): string {\n return path.join(getProjectRoot(), \"src/features\");\n}\n\n/**\n * Check if running in OneX project\n */\nexport function isOneXProject(): boolean {\n const root = getProjectRoot();\n return (\n fs.existsSync(path.join(root, \"themes\")) ||\n fs.existsSync(path.join(root, \"src/themes\")) ||\n fs.existsSync(path.join(root, \"theme.config.ts\")) ||\n fs.existsSync(path.join(root, \"bundle-entry.ts\"))\n );\n}\n\n/**\n * Ensure running in OneX project\n */\nexport function ensureOneXProject(): void {\n if (!isOneXProject()) {\n logger.error(\n \"Not in a OneX project. Please run this command from a OneX project root.\"\n );\n process.exit(1);\n }\n}\n\n/**\n * List available themes\n */\nexport function listThemes(): string[] {\n const themesDir = getThemesDir();\n\n if (!fs.existsSync(themesDir)) {\n return [];\n }\n\n return fs.readdirSync(themesDir).filter((name) => {\n const themePath = path.join(themesDir, name);\n return (\n fs.statSync(themePath).isDirectory() &&\n (fs.existsSync(path.join(themePath, \"theme.config.ts\")) ||\n fs.existsSync(path.join(themePath, \"bundle-entry.ts\")) ||\n fs.existsSync(path.join(themePath, \"manifest.ts\")))\n );\n });\n}\n\n/**\n * Check if theme exists\n */\nexport function themeExists(themeName: string): boolean {\n const themePath = path.join(getThemesDir(), themeName);\n return (\n fs.existsSync(themePath) &&\n (fs.existsSync(path.join(themePath, \"theme.config.ts\")) ||\n fs.existsSync(path.join(themePath, \"bundle-entry.ts\")) ||\n fs.existsSync(path.join(themePath, \"manifest.ts\")))\n );\n}\n\n/**\n * Detect package manager (npm, yarn, pnpm, bun)\n */\nexport function detectPackageManager(): \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" {\n // Check if running with specific package manager\n const userAgent = process.env.npm_config_user_agent || \"\";\n\n if (userAgent.includes(\"pnpm\")) return \"pnpm\";\n if (userAgent.includes(\"yarn\")) return \"yarn\";\n if (userAgent.includes(\"bun\")) return \"bun\";\n\n // Check for lock files in cwd\n const cwd = process.cwd();\n if (fs.existsSync(path.join(cwd, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (fs.existsSync(path.join(cwd, \"yarn.lock\"))) return \"yarn\";\n if (fs.existsSync(path.join(cwd, \"bun.lockb\"))) return \"bun\";\n\n // Default to npm\n return \"npm\";\n}\n\n/**\n * Install dependencies in a directory\n */\nexport async function installDependencies(\n projectPath: string,\n packageManager: \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" = \"npm\"\n): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n const installCmd =\n packageManager === \"yarn\" ? \"yarn\" : `${packageManager} install`;\n\n execSync(installCmd, {\n cwd: projectPath,\n stdio: \"inherit\",\n });\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n","import path from \"path\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport {\n validateName,\n toKebabCase,\n toPascalCase,\n getValidCategories,\n} from \"../utils/validators\";\nimport fs from \"fs-extra\";\nimport {\n ensureOneXProject,\n getThemesDir,\n listThemes,\n themeExists,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateSectionOptions {\n theme?: string;\n category?: string;\n template?: string;\n}\n\nexport async function createSectionCommand(\n name: string,\n options: CreateSectionOptions\n): Promise<void> {\n logger.header(\"Create New Section\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Auto-detect theme in standalone theme directory\n if (!options.theme) {\n const isStandaloneTheme = [\"theme.config.ts\", \"bundle-entry.ts\"].some((f) =>\n fs.existsSync(path.join(process.cwd(), f))\n );\n if (isStandaloneTheme) {\n options.theme = path.basename(process.cwd());\n }\n }\n\n // Validate and normalize name\n const sectionName = toKebabCase(name);\n if (!validateName(sectionName)) {\n logger.error(\n `Invalid section name: ${sectionName}. Use kebab-case (e.g., hero, featured-products)`\n );\n process.exit(1);\n }\n\n // Prompt for missing options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"theme\",\n message: \"Which theme should this section belong to?\",\n choices: listThemes(),\n when: !options.theme,\n },\n {\n type: \"list\",\n name: \"category\",\n message: \"What category is this section?\",\n choices: getValidCategories(),\n when: !options.category,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this section:\",\n default: toPascalCase(sectionName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Section description:\",\n default: `${toPascalCase(sectionName)} section`,\n },\n {\n type: \"confirm\",\n name: \"createTemplate\",\n message: \"Create a default template variant?\",\n default: true,\n },\n ]);\n\n const themeName = options.theme || answers.theme;\n const category = options.category || answers.category;\n const displayName = answers.displayName;\n const description = answers.description;\n const createTemplate = answers.createTemplate;\n\n // Validate theme exists\n if (!themeExists(themeName)) {\n logger.error(`Theme \"${themeName}\" does not exist.`);\n process.exit(1);\n }\n\n // Prepare data for templates\n const data = {\n sectionName,\n sectionNamePascal: toPascalCase(sectionName),\n themeName,\n category,\n displayName,\n description,\n };\n\n logger.startSpinner(\"Creating section files...\");\n\n try {\n const themePath = path.join(getThemesDir(), themeName);\n const sectionPath = path.join(themePath, \"sections\", sectionName);\n\n // Create section schema file\n const schemaContent = generateSectionSchema(data);\n await writeFile(\n path.join(sectionPath, `${sectionName}.schema.ts`),\n schemaContent\n );\n\n // Create default template if requested\n if (createTemplate) {\n const templateContent = generateSectionTemplate(data);\n await writeFile(\n path.join(sectionPath, `${sectionName}-default.tsx`),\n templateContent\n );\n }\n\n // Create index file\n const indexContent = generateSectionIndex(data, createTemplate);\n await writeFile(path.join(sectionPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Section files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(sectionPath, `${sectionName}.schema.ts`))}`\n );\n if (createTemplate) {\n logger.log(\n ` 2. Edit template: ${path.relative(process.cwd(), path.join(sectionPath, `${sectionName}-default.tsx`))}`\n );\n }\n logger.log(\n ` 3. Add to theme manifest: ${path.relative(process.cwd(), path.join(themePath, \"manifest.ts\"))}`\n );\n logger.newLine();\n logger.success(\"Section created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create section\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateSectionSchema(data: {\n sectionName: string;\n sectionNamePascal: string;\n category: string;\n displayName: string;\n description: string;\n}): string {\n return `import type { SectionSchema } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Section Schema\n * ${data.description}\n */\nexport const ${data.sectionName}Schema: SectionSchema = {\n type: \"${data.sectionName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n category: \"${data.category}\",\n icon: \"layout\",\n\n // Available template variants\n templates: [\n {\n id: \"default\",\n name: \"Default\",\n description: \"Default ${data.sectionName} layout\",\n isDefault: true,\n },\n ],\n\n // Section-level settings\n settings: [\n {\n id: \"backgroundColor\",\n type: \"color\",\n label: \"Background Color\",\n category: \"style\",\n },\n {\n id: \"padding\",\n type: \"select\",\n label: \"Padding\",\n category: \"style\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n defaultValue: \"md\",\n },\n ],\n\n // Default settings values\n defaults: {\n backgroundColor: \"#ffffff\",\n padding: \"md\",\n },\n\n // Allowed blocks (optional)\n allowedBlocks: [],\n\n // Maximum number of instances on a page (optional)\n maxInstances: undefined,\n};\n`;\n}\n\nfunction generateSectionTemplate(data: {\n sectionName: string;\n sectionNamePascal: string;\n displayName: string;\n}): string {\n return `import React from \"react\";\nimport type { SectionComponentProps } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} - Default Template\n */\nexport function ${data.sectionNamePascal}Default({\n section,\n isEditing = false,\n}: SectionComponentProps) {\n const { settings = {} } = section;\n const backgroundColor = settings.backgroundColor as string || \"#ffffff\";\n const padding = settings.padding as string || \"md\";\n\n // Map padding values to Tailwind classes\n const paddingClasses = {\n none: \"\",\n sm: \"py-8\",\n md: \"py-16\",\n lg: \"py-24\",\n };\n\n return (\n <section\n className={\\`${data.sectionName}-section \\${paddingClasses[padding as keyof typeof paddingClasses] || paddingClasses.md}\\`}\n style={{ backgroundColor }}\n data-section-id={section.id}\n data-section-type={section.type}\n >\n <div className=\"container mx-auto px-4\">\n {/* TODO: Implement section content */}\n <div className=\"text-center\">\n <h2 className=\"text-3xl font-bold\">${data.displayName}</h2>\n <p className=\"mt-4 text-gray-600\">\n Start building your section here\n </p>\n </div>\n\n {/* Render blocks if any */}\n {section.blocks && section.blocks.length > 0 && (\n <div className=\"mt-8\">\n {/* TODO: Render blocks */}\n </div>\n )}\n\n {/* Render components if any */}\n {section.components && section.components.length > 0 && (\n <div className=\"mt-8\">\n {/* TODO: Render components */}\n </div>\n )}\n </div>\n </section>\n );\n}\n`;\n}\n\nfunction generateSectionIndex(\n data: { sectionName: string; sectionNamePascal: string },\n hasTemplate: boolean\n): string {\n return `/**\n * ${data.sectionNamePascal} Section\n */\n\nexport { ${data.sectionName}Schema } from \"./${data.sectionName}.schema\";\n${hasTemplate ? `export { ${data.sectionNamePascal}Default } from \"./${data.sectionName}-default\";` : \"\"}\n`;\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport { validateName, toKebabCase, toPascalCase } from \"../utils/validators\";\nimport {\n ensureOneXProject,\n getFeaturesDir,\n getThemesDir,\n listThemes,\n themeExists,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateBlockOptions {\n theme?: string;\n}\n\nexport async function createBlockCommand(\n name: string,\n options: CreateBlockOptions\n): Promise<void> {\n logger.header(\"Create New Block\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Auto-detect theme in standalone theme directory\n if (!options.theme) {\n const isStandaloneTheme = [\"theme.config.ts\", \"bundle-entry.ts\"].some((f) =>\n fs.existsSync(path.join(process.cwd(), f))\n );\n if (isStandaloneTheme) {\n options.theme = path.basename(process.cwd());\n }\n }\n\n // Validate and normalize name\n const blockName = toKebabCase(name);\n if (!validateName(blockName)) {\n logger.error(\n `Invalid block name: ${blockName}. Use kebab-case (e.g., product-card, testimonial-item)`\n );\n process.exit(1);\n }\n\n // Prompt for options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"scope\",\n message: \"Block scope:\",\n choices: [\n { name: \"Shared (available to all themes)\", value: \"shared\" },\n { name: \"Theme-specific\", value: \"theme\" },\n ],\n default: \"shared\",\n },\n {\n type: \"list\",\n name: \"theme\",\n message: \"Which theme?\",\n choices: listThemes(),\n when: (answers) => answers.scope === \"theme\" && !options.theme,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this block:\",\n default: toPascalCase(blockName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Block description:\",\n default: `${toPascalCase(blockName)} block`,\n },\n {\n type: \"confirm\",\n name: \"hasComponents\",\n message: \"Does this block contain components?\",\n default: true,\n },\n {\n type: \"confirm\",\n name: \"hasNestedBlocks\",\n message: \"Does this block support nested blocks?\",\n default: false,\n },\n ]);\n\n const scope = answers.scope;\n const themeName = options.theme || answers.theme;\n const displayName = answers.displayName;\n const description = answers.description;\n const hasComponents = answers.hasComponents;\n const hasNestedBlocks = answers.hasNestedBlocks;\n\n // Validate theme if theme-specific\n if (scope === \"theme\" && !themeExists(themeName)) {\n logger.error(`Theme \"${themeName}\" does not exist.`);\n process.exit(1);\n }\n\n // Prepare data for templates\n const data = {\n blockName,\n blockNamePascal: toPascalCase(blockName),\n displayName,\n description,\n hasComponents,\n hasNestedBlocks,\n scope,\n themeName,\n };\n\n logger.startSpinner(\"Creating block files...\");\n\n try {\n const blockPath =\n scope === \"shared\"\n ? path.join(getFeaturesDir(), \"blocks\", blockName)\n : path.join(getThemesDir(), themeName, \"blocks\", blockName);\n\n // Create block schema file\n const schemaContent = generateBlockSchema(data);\n await writeFile(\n path.join(blockPath, `${blockName}.schema.ts`),\n schemaContent\n );\n\n // Create block component file\n const componentContent = generateBlockComponent(data);\n await writeFile(path.join(blockPath, `${blockName}.tsx`), componentContent);\n\n // Create index file\n const indexContent = generateBlockIndex(data);\n await writeFile(path.join(blockPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Block files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(blockPath, `${blockName}.schema.ts`))}`\n );\n logger.log(\n ` 2. Edit component: ${path.relative(process.cwd(), path.join(blockPath, `${blockName}.tsx`))}`\n );\n logger.log(\n ` 3. Register in block registry: src/lib/registry/block-registry.ts`\n );\n logger.newLine();\n logger.success(\"Block created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create block\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateBlockSchema(data: {\n blockName: string;\n blockNamePascal: string;\n displayName: string;\n description: string;\n hasComponents: boolean;\n hasNestedBlocks: boolean;\n}): string {\n return `import type { BlockDefinition } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Block Schema\n * ${data.description}\n */\nexport const ${data.blockName}Definition: BlockDefinition = {\n type: \"${data.blockName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n icon: \"square\",\n\n // Block settings\n settings: [\n {\n id: \"title\",\n type: \"text\",\n label: \"Title\",\n category: \"content\",\n },\n {\n id: \"alignment\",\n type: \"select\",\n label: \"Alignment\",\n category: \"style\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ],\n defaultValue: \"left\",\n },\n ],\n\n // Default settings values\n defaults: {\n title: \"${data.displayName}\",\n alignment: \"left\",\n },\n\n ${data.hasComponents ? `// This block can contain components\\n allowsComponents: true,` : \"\"}\n ${data.hasNestedBlocks ? `// This block can contain nested blocks\\n allowsNestedBlocks: true,` : \"\"}\n};\n`;\n}\n\nfunction generateBlockComponent(data: {\n blockName: string;\n blockNamePascal: string;\n displayName: string;\n hasComponents: boolean;\n hasNestedBlocks: boolean;\n}): string {\n return `import React from \"react\";\nimport type { BlockComponentProps } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Block Component\n */\nexport function ${data.blockNamePascal}({\n block,\n isEditing = false,\n}: BlockComponentProps) {\n const { settings = {} } = block;\n const title = settings.title as string || \"${data.displayName}\";\n const alignment = settings.alignment as string || \"left\";\n\n const alignmentClasses = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n };\n\n return (\n <div\n className={\\`${data.blockName}-block \\${alignmentClasses[alignment as keyof typeof alignmentClasses]}\\`}\n data-block-id={block.id}\n data-block-type={block.type}\n >\n {title && <h3 className=\"text-xl font-semibold mb-4\">{title}</h3>}\n\n {/* TODO: Implement block content */}\n <div className=\"block-content\">\n <p className=\"text-gray-600\">Block content goes here</p>\n </div>\n\n ${\n data.hasComponents\n ? `{/* Render components if any */}\n {block.components && block.components.length > 0 && (\n <div className=\"block-components mt-4\">\n {/* TODO: Render components using ComponentRenderer */}\n </div>\n )}`\n : \"\"\n }\n\n ${\n data.hasNestedBlocks\n ? `{/* Render nested blocks if any */}\n {block.blocks && block.blocks.length > 0 && (\n <div className=\"nested-blocks mt-4\">\n {/* TODO: Render nested blocks using BlockRenderer */}\n </div>\n )}`\n : \"\"\n }\n </div>\n );\n}\n`;\n}\n\nfunction generateBlockIndex(data: {\n blockName: string;\n blockNamePascal: string;\n}): string {\n return `/**\n * ${data.blockNamePascal} Block\n */\n\nexport { ${data.blockName}Definition } from \"./${data.blockName}.schema\";\nexport { ${data.blockNamePascal} } from \"./${data.blockName}\";\n`;\n}\n","import path from \"path\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport { validateName, toKebabCase, toPascalCase } from \"../utils/validators\";\nimport {\n ensureOneXProject,\n getFeaturesDir,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateComponentOptions {\n type?: string;\n}\n\nexport async function createComponentCommand(\n name: string,\n options: CreateComponentOptions\n): Promise<void> {\n logger.header(\"Create New Component\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Validate and normalize name\n const componentName = toKebabCase(name);\n if (!validateName(componentName)) {\n logger.error(\n `Invalid component name: ${componentName}. Use kebab-case (e.g., button, icon-badge)`\n );\n process.exit(1);\n }\n\n // Prompt for options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"componentType\",\n message: \"Component type:\",\n choices: [\n { name: \"UI Component (button, badge, etc.)\", value: \"ui\" },\n { name: \"Form Component (input, select, etc.)\", value: \"form\" },\n { name: \"Layout Component (container, grid, etc.)\", value: \"layout\" },\n {\n name: \"Content Component (heading, paragraph, etc.)\",\n value: \"content\",\n },\n ],\n when: !options.type,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this component:\",\n default: toPascalCase(componentName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Component description:\",\n default: `${toPascalCase(componentName)} component`,\n },\n ]);\n\n const componentType = options.type || answers.componentType;\n const displayName = answers.displayName;\n const description = answers.description;\n\n // Prepare data for templates\n const data = {\n componentName,\n componentNamePascal: toPascalCase(componentName),\n componentType,\n displayName,\n description,\n };\n\n logger.startSpinner(\"Creating component files...\");\n\n try {\n const componentPath = path.join(\n getFeaturesDir(),\n \"components\",\n componentName\n );\n\n // Create component schema file\n const schemaContent = generateComponentSchema(data);\n await writeFile(\n path.join(componentPath, `${componentName}.schema.ts`),\n schemaContent\n );\n\n // Create component file\n const componentContent = generateComponent(data);\n await writeFile(\n path.join(componentPath, `${componentName}.tsx`),\n componentContent\n );\n\n // Create index file\n const indexContent = generateComponentIndex(data);\n await writeFile(path.join(componentPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Component files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(componentPath, `${componentName}.schema.ts`))}`\n );\n logger.log(\n ` 2. Edit component: ${path.relative(process.cwd(), path.join(componentPath, `${componentName}.tsx`))}`\n );\n logger.log(\n ` 3. Register in component registry: src/lib/registry/component-registry.ts`\n );\n logger.newLine();\n logger.success(\"Component created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create component\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateComponentSchema(data: {\n componentName: string;\n displayName: string;\n description: string;\n componentType: string;\n}): string {\n return `import type { ComponentDefinition } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Component Schema\n * ${data.description}\n */\nexport const ${data.componentName}Definition: ComponentDefinition = {\n type: \"${data.componentName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n category: \"${data.componentType}\",\n icon: \"square\",\n\n // Content fields (what the component displays)\n contentFields: [\n {\n id: \"text\",\n type: \"text\",\n label: \"Text\",\n defaultValue: \"${data.displayName}\",\n },\n ],\n\n // Style fields (how the component looks)\n styleFields: [\n {\n id: \"variant\",\n type: \"select\",\n label: \"Variant\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Primary\", value: \"primary\" },\n { label: \"Secondary\", value: \"secondary\" },\n ],\n defaultValue: \"default\",\n },\n {\n id: \"size\",\n type: \"select\",\n label: \"Size\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n defaultValue: \"md\",\n },\n ],\n\n // Default content values\n defaultContent: {\n text: \"${data.displayName}\",\n },\n\n // Default style values\n defaultStyle: {\n variant: \"default\",\n size: \"md\",\n },\n};\n`;\n}\n\nfunction generateComponent(data: {\n componentName: string;\n componentNamePascal: string;\n displayName: string;\n}): string {\n return `import React from \"react\";\nimport type { ComponentProps } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Component\n */\nexport function ${data.componentNamePascal}({\n component,\n isEditing = false,\n}: ComponentProps) {\n const { content = {}, style = {} } = component;\n const text = content.text as string || \"${data.displayName}\";\n const variant = style.variant as string || \"default\";\n const size = style.size as string || \"md\";\n\n // Variant classes\n const variantClasses = {\n default: \"bg-gray-100 text-gray-900\",\n primary: \"bg-blue-600 text-white\",\n secondary: \"bg-gray-600 text-white\",\n };\n\n // Size classes\n const sizeClasses = {\n sm: \"text-sm px-3 py-1\",\n md: \"text-base px-4 py-2\",\n lg: \"text-lg px-6 py-3\",\n };\n\n return (\n <div\n className={\\`${data.componentName} \\${variantClasses[variant as keyof typeof variantClasses]} \\${sizeClasses[size as keyof typeof sizeClasses]} inline-block rounded\\`}\n data-component-id={component.id}\n data-component-type={component.type}\n >\n {text}\n </div>\n );\n}\n`;\n}\n\nfunction generateComponentIndex(data: {\n componentName: string;\n componentNamePascal: string;\n}): string {\n return `/**\n * ${data.componentNamePascal} Component\n */\n\nexport { ${data.componentName}Definition } from \"./${data.componentName}.schema\";\nexport { ${data.componentNamePascal} } from \"./${data.componentName}\";\n`;\n}\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport chalk from \"chalk\";\nimport { logger } from \"../utils/logger\";\nimport {\n ensureOneXProject,\n getThemesDir,\n getFeaturesDir,\n listThemes,\n} from \"../utils/file-helpers\";\n\ninterface ListOptions {\n sections?: boolean;\n blocks?: boolean;\n components?: boolean;\n theme?: string;\n}\n\nexport async function listCommand(options: ListOptions): Promise<void> {\n logger.header(\"OneX Project Inventory\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n const showAll = !options.sections && !options.blocks && !options.components;\n\n if (showAll || options.sections) {\n await listSections(options.theme);\n }\n\n if (showAll || options.blocks) {\n await listBlocks(options.theme);\n }\n\n if (showAll || options.components) {\n await listComponents();\n }\n\n if (showAll) {\n await listThemesInfo();\n }\n}\n\nasync function listSections(themeFilter?: string): Promise<void> {\n logger.section(\"📄 Sections\");\n\n const themes = themeFilter ? [themeFilter] : listThemes();\n\n if (themes.length === 0) {\n logger.warning(\"No themes found\");\n return;\n }\n\n for (const theme of themes) {\n const sectionsDir = path.join(getThemesDir(), theme, \"sections\");\n\n if (!fs.existsSync(sectionsDir)) {\n continue;\n }\n\n const sections = fs.readdirSync(sectionsDir).filter((name) => {\n const sectionPath = path.join(sectionsDir, name);\n return (\n fs.statSync(sectionPath).isDirectory() &&\n fs.existsSync(path.join(sectionPath, \"index.ts\"))\n );\n });\n\n if (sections.length > 0) {\n logger.log(chalk.cyan(`\\n ${theme}:`));\n sections.forEach((section) => {\n logger.log(` • ${section}`);\n });\n }\n }\n\n logger.newLine();\n}\n\nasync function listBlocks(themeFilter?: string): Promise<void> {\n logger.section(\"🧱 Blocks\");\n\n // List shared blocks\n const sharedBlocksDir = path.join(getFeaturesDir(), \"blocks\");\n if (fs.existsSync(sharedBlocksDir)) {\n const sharedBlocks = fs.readdirSync(sharedBlocksDir).filter((name) => {\n const blockPath = path.join(sharedBlocksDir, name);\n return (\n fs.statSync(blockPath).isDirectory() &&\n fs.existsSync(path.join(blockPath, \"index.ts\"))\n );\n });\n\n if (sharedBlocks.length > 0) {\n logger.log(chalk.cyan(\"\\n Shared:\"));\n sharedBlocks.forEach((block) => {\n logger.log(` • ${block}`);\n });\n }\n }\n\n // List theme-specific blocks\n const themes = themeFilter ? [themeFilter] : listThemes();\n\n for (const theme of themes) {\n const blocksDir = path.join(getThemesDir(), theme, \"blocks\");\n\n if (!fs.existsSync(blocksDir)) {\n continue;\n }\n\n const blocks = fs.readdirSync(blocksDir).filter((name) => {\n const blockPath = path.join(blocksDir, name);\n return (\n fs.statSync(blockPath).isDirectory() &&\n fs.existsSync(path.join(blockPath, \"index.ts\"))\n );\n });\n\n if (blocks.length > 0) {\n logger.log(chalk.cyan(`\\n ${theme}:`));\n blocks.forEach((block) => {\n logger.log(` • ${block}`);\n });\n }\n }\n\n logger.newLine();\n}\n\nasync function listComponents(): Promise<void> {\n logger.section(\"⚙️ Components\");\n\n const componentsDir = path.join(getFeaturesDir(), \"components\");\n\n if (!fs.existsSync(componentsDir)) {\n logger.warning(\"No components directory found\");\n return;\n }\n\n const components = fs.readdirSync(componentsDir).filter((name) => {\n const componentPath = path.join(componentsDir, name);\n return (\n fs.statSync(componentPath).isDirectory() &&\n fs.existsSync(path.join(componentPath, \"index.ts\"))\n );\n });\n\n if (components.length === 0) {\n logger.warning(\"No components found\");\n return;\n }\n\n logger.log(\"\");\n components.forEach((component) => {\n logger.log(` • ${component}`);\n });\n\n logger.newLine();\n}\n\nasync function listThemesInfo(): Promise<void> {\n logger.section(\"🎨 Themes\");\n\n const themes = listThemes();\n\n if (themes.length === 0) {\n logger.warning(\"No themes found\");\n return;\n }\n\n logger.log(\"\");\n\n for (const theme of themes) {\n const themeDir = path.join(getThemesDir(), theme);\n const candidates = [\"theme.config.ts\", \"bundle-entry.ts\", \"manifest.ts\"];\n let manifestContent = \"\";\n for (const candidate of candidates) {\n const candidatePath = path.join(themeDir, candidate);\n if (fs.existsSync(candidatePath)) {\n manifestContent = fs.readFileSync(candidatePath, \"utf-8\");\n break;\n }\n }\n\n // Try to extract theme info from manifest\n const nameMatch = manifestContent.match(/name:\\s*[\"'](.+)[\"']/);\n const versionMatch = manifestContent.match(/version:\\s*[\"'](.+)[\"']/);\n const descMatch = manifestContent.match(/description:\\s*[\"'](.+)[\"']/);\n\n const displayName = nameMatch ? nameMatch[1] : theme;\n const version = versionMatch ? versionMatch[1] : \"unknown\";\n const description = descMatch ? descMatch[1] : \"\";\n\n logger.log(chalk.cyan(` ${displayName}`) + chalk.gray(` (v${version})`));\n if (description) {\n logger.log(chalk.gray(` ${description}`));\n }\n }\n\n logger.newLine();\n}\n","import { spawn } from \"child_process\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport { logger } from \"../utils/logger\";\nimport { getThemesDir } from \"../utils/file-helpers\";\n\ninterface BuildOptions {\n theme?: string;\n production?: boolean;\n watch?: boolean;\n}\n\nexport async function buildCommand(options: BuildOptions): Promise<void> {\n logger.header(\"Build Theme\");\n\n let themePath: string;\n let themeName: string;\n\n // Determine theme to build\n if (options.theme) {\n themeName = options.theme;\n // Try to find theme in workspace first, otherwise use current directory\n try {\n const workspaceThemePath = path.join(getThemesDir(), themeName);\n if (fs.existsSync(workspaceThemePath)) {\n themePath = workspaceThemePath;\n } else {\n themePath = path.join(process.cwd(), themeName);\n }\n } catch {\n // Not in a workspace, use current directory\n themePath = path.join(process.cwd(), themeName);\n }\n\n if (!fs.existsSync(themePath)) {\n logger.error(`Theme \"${themeName}\" not found.`);\n process.exit(1);\n }\n } else {\n // Check if we're in a theme directory\n const isThemeDir = [\n \"theme.config.ts\",\n \"bundle-entry.ts\",\n \"manifest.ts\",\n ].some((f) => fs.existsSync(path.join(process.cwd(), f)));\n if (isThemeDir) {\n themePath = process.cwd();\n themeName = path.basename(themePath);\n logger.info(`Building current theme: ${themeName}`);\n } else {\n logger.error(\n \"Not in a theme directory and no --theme specified. Run from theme root or use --theme flag.\"\n );\n process.exit(1);\n }\n }\n\n const packageJsonPath = path.join(themePath, \"package.json\");\n const hasPkgJson = fs.existsSync(packageJsonPath);\n\n if (!hasPkgJson) {\n logger.warning(\n \"No package.json found in theme. Skipping build (themes in monorepo are built via turbo).\"\n );\n logger.newLine();\n logger.info(\"To build all packages, run:\");\n logger.log(\" pnpm turbo build\");\n logger.newLine();\n logger.info(\"To build specific theme components:\");\n logger.log(\" pnpm turbo build --filter=./src/themes/*\");\n return;\n }\n\n // Run build steps\n logger.newLine();\n logger.section(\"Build Steps\");\n\n // Step 1: Type Check\n logger.startSpinner(\"Running type check...\");\n const typeCheckSuccess = await runCommand(\"pnpm\", [\"type-check\"], themePath);\n\n if (!typeCheckSuccess) {\n logger.stopSpinner(false, \"Type check failed\");\n logger.error(\"Fix type errors before building.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Type check passed\");\n\n // Step 2: Lint\n logger.startSpinner(\"Running linter...\");\n const lintSuccess = await runCommand(\"pnpm\", [\"lint\"], themePath);\n\n if (!lintSuccess) {\n logger.stopSpinner(false, \"Lint failed\");\n logger.error(\"Fix lint errors before building.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Lint passed\");\n\n // Step 3: Build\n // Detect if theme's build script would cause recursion (e.g., \"onexthm build\")\n const pkgJson = fs.readJsonSync(packageJsonPath);\n const buildScript = pkgJson.scripts?.build || \"\";\n const isRecursive =\n buildScript.includes(\"onexthm build\") ||\n buildScript.includes(\"onex build\") ||\n buildScript.includes(\"onex-cli build\");\n\n logger.startSpinner(\n options.watch ? \"Building (watch mode)...\" : \"Building...\"\n );\n\n let buildSuccess: boolean;\n\n if (isRecursive) {\n // Standalone theme: use embedded esbuild compilation\n const { compileStandaloneTheme } = await import(\"../utils/compile-theme\");\n buildSuccess = await compileStandaloneTheme(themePath, themeName);\n } else {\n // Monorepo: use existing pnpm build\n const buildArgs = options.watch ? [\"build\", \"--watch\"] : [\"build\"];\n buildSuccess = await runCommand(\"pnpm\", buildArgs, themePath);\n }\n\n if (!buildSuccess && !options.watch) {\n logger.stopSpinner(false, \"Build failed\");\n process.exit(1);\n }\n\n if (!options.watch) {\n logger.stopSpinner(true, \"Build complete\");\n\n // Show output location\n logger.newLine();\n logger.success(\"✓ Theme built successfully!\");\n logger.newLine();\n logger.info(`Theme: ${themeName}`);\n\n const distPath = path.join(themePath, \"dist\");\n if (fs.existsSync(distPath)) {\n logger.log(`Output: ${path.relative(process.cwd(), distPath)}`);\n\n // Show build stats\n const files = fs.readdirSync(distPath);\n logger.log(`Files: ${files.length}`);\n }\n }\n}\n\n/**\n * Run a command and return success status\n */\nfunction runCommand(\n command: string,\n args: string[],\n cwd: string\n): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(command, args, {\n cwd,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n shell: true,\n });\n\n let stdout = \"\";\n let stderr = \"\";\n\n proc.stdout.on(\"data\", (data) => {\n stdout += data.toString();\n });\n proc.stderr.on(\"data\", (data) => {\n stderr += data.toString();\n });\n\n proc.on(\"close\", (code) => {\n if (code !== 0) {\n // Show actual errors to the developer\n const output = (stderr + stdout).trim();\n if (output) {\n logger.newLine();\n for (const line of output.split(\"\\n\")) {\n const t = line.trim();\n if (!t) continue;\n if (t.includes(\"error\") || t.includes(\"Error\") || t.includes(\"TS\")) {\n logger.log(` ❌ ${t}`);\n } else if (t.includes(\"warning\") || t.includes(\"Warning\")) {\n logger.log(` ⚠️ ${t}`);\n } else {\n logger.log(` ${t}`);\n }\n }\n }\n }\n resolve(code === 0);\n });\n\n proc.on(\"error\", () => {\n resolve(false);\n });\n });\n}\n","import { S3Client, PutObjectCommand } from \"@aws-sdk/client-s3\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport os from \"os\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport archiver from \"archiver\";\nimport { logger } from \"../utils/logger\";\n\ninterface UploadOptions {\n theme?: string;\n bucket?: string;\n version?: string;\n environment?: \"staging\" | \"production\";\n dryRun?: boolean;\n skipSource?: boolean;\n sourceDir?: string;\n}\n\ninterface ThemeManifest {\n themeId: string;\n version: string;\n [key: string]: any;\n}\n\n/**\n * Initialize S3 client with support for AWS/MinIO/LocalStack\n */\nfunction getS3Client(): S3Client {\n const adapterMode = (process.env.ADAPTER_MODE || \"aws\").trim().toLowerCase();\n\n if (adapterMode === \"vps\") {\n const endpoint = process.env.MINIO_ENDPOINT || \"localhost:9000\";\n const secure = process.env.MINIO_SECURE === \"true\";\n const endpointUrl = endpoint.startsWith(\"http\")\n ? endpoint\n : `${secure ? \"https\" : \"http\"}://${endpoint}`;\n\n return new S3Client({\n endpoint: endpointUrl,\n region: \"us-east-1\",\n credentials: {\n accessKeyId: process.env.MINIO_ACCESS_KEY || \"minioadmin\",\n secretAccessKey: process.env.MINIO_SECRET_KEY || \"minioadmin\",\n },\n forcePathStyle: true,\n });\n }\n\n if (adapterMode === \"local\") {\n return new S3Client({\n endpoint: \"http://localhost:4569\",\n region: \"ap-southeast-1\",\n credentials: {\n accessKeyId: \"S3RVER\",\n secretAccessKey: \"S3RVER\",\n },\n forcePathStyle: true,\n });\n }\n\n return new S3Client({\n region: process.env.AWS_REGION || \"ap-southeast-1\",\n });\n}\n\n/**\n * Get S3 bucket name based on environment\n */\nfunction getBucketName(env?: \"staging\" | \"production\"): string {\n if (process.env.BUCKET_NAME) {\n return process.env.BUCKET_NAME;\n }\n const environment = env || process.env.ENVIRONMENT || \"staging\";\n return environment === \"production\" ? \"theme-s3-bucket\" : \"theme-s3-bucket\";\n}\n\n/**\n * Find compiled theme directory\n */\nasync function findCompiledThemeDir(\n themeId: string,\n version: string\n): Promise<string | null> {\n const searchPaths = [path.resolve(process.cwd(), \"dist\")];\n\n for (const dir of searchPaths) {\n if (await fs.pathExists(dir)) {\n // Accept dir with manifest.json (esbuild compiled) or theme entry files (tsc compiled)\n const hasManifest = await fs.pathExists(path.join(dir, \"manifest.json\"));\n const hasThemeEntry =\n (await fs.pathExists(path.join(dir, \"bundle-entry.js\"))) ||\n (await fs.pathExists(path.join(dir, \"theme.config.js\"))) ||\n (await fs.pathExists(path.join(dir, \"index.js\")));\n if (hasManifest || hasThemeEntry) {\n return dir;\n }\n }\n }\n\n return null;\n}\n\n/**\n * Read theme manifest\n */\nasync function readManifest(): Promise<ThemeManifest> {\n const manifestTsPath = path.resolve(process.cwd(), \"manifest.ts\");\n if (await fs.pathExists(manifestTsPath)) {\n try {\n const module = await import(manifestTsPath);\n return module.default || module;\n } catch (error) {\n logger.warning(\"Failed to import manifest.ts, trying package.json\");\n }\n }\n\n const packageJsonPath = path.resolve(process.cwd(), \"package.json\");\n if (await fs.pathExists(packageJsonPath)) {\n const pkg = await fs.readJson(packageJsonPath);\n return {\n themeId: pkg.name?.replace(\"@onex-themes/\", \"\") || \"unknown\",\n version: pkg.version || \"1.0.0\",\n };\n }\n\n throw new Error(\n \"No manifest.ts or package.json found. Are you in a theme directory?\"\n );\n}\n\n/**\n * Create a zip archive of a directory\n */\nasync function createZipFromDir(\n sourceDir: string,\n outputPath: string,\n excludePatterns: string[] = []\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const output = fs.createWriteStream(outputPath);\n const archive = archiver(\"zip\", { zlib: { level: 6 } });\n\n output.on(\"close\", () => resolve());\n archive.on(\"error\", (err: Error) => reject(err));\n archive.pipe(output);\n\n archive.glob(\"**/*\", {\n cwd: sourceDir,\n dot: true,\n ignore: excludePatterns,\n });\n\n archive.finalize();\n });\n}\n\n/**\n * Find the theme source directory\n */\nasync function findSourceDir(\n themeId: string,\n explicitDir?: string\n): Promise<string | null> {\n if (explicitDir) {\n if (await fs.pathExists(explicitDir)) return explicitDir;\n return null;\n }\n\n const searchPaths = [\n process.cwd(),\n path.resolve(process.cwd(), `../../themes/${themeId}`),\n path.resolve(process.cwd(), `../themes/${themeId}`),\n ];\n\n const markers = [\"theme.config.ts\", \"bundle-entry.ts\"];\n\n for (const dir of searchPaths) {\n for (const marker of markers) {\n if (await fs.pathExists(path.join(dir, marker))) {\n return dir;\n }\n }\n }\n\n return null;\n}\n\n/**\n * Update latest.json pointer\n */\nasync function updateLatestPointer(\n s3Client: S3Client,\n bucket: string,\n themeId: string,\n version: string\n): Promise<void> {\n const latestData = {\n version,\n uploadedAt: new Date().toISOString(),\n };\n\n await s3Client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: `themes/${themeId}/latest.json`,\n Body: JSON.stringify(latestData, null, 2),\n ContentType: \"application/json\",\n })\n );\n}\n\n/**\n * Upload theme to S3 as zip files\n *\n * Creates bundle.zip (compiled output) and source.zip (theme source code),\n * then uploads both to S3. Much faster than uploading 100+ individual files.\n */\nexport async function uploadCommand(options: UploadOptions): Promise<void> {\n logger.header(\"Upload Theme to S3\");\n\n const spinner = ora(\"Preparing theme upload...\").start();\n\n try {\n // 1. Determine themeId and version\n let themeId: string;\n let version: string;\n\n if (options.theme) {\n themeId = options.theme;\n version = options.version || \"1.0.0\";\n } else {\n const manifest = await readManifest();\n themeId = manifest.themeId;\n version = options.version || manifest.version || \"1.0.0\";\n }\n\n spinner.text = `Found theme: ${themeId}@${version}`;\n\n // 2. Determine bucket and initialize S3 client\n const bucket = options.bucket || getBucketName(options.environment);\n const s3Client = getS3Client();\n\n // 3. Find compiled theme directory\n const compiledDir = await findCompiledThemeDir(themeId, version);\n if (!compiledDir) {\n spinner.fail(\n chalk.red(\n `Compiled theme not found for ${themeId}@${version}. Run 'onexthm build' first.`\n )\n );\n logger.info(chalk.gray(`Expected location:\\n` + ` - ./dist/`));\n process.exit(1);\n }\n\n spinner.succeed(`Found compiled theme at: ${compiledDir}`);\n\n // 4. Create bundle.zip\n spinner.start(\"Creating bundle.zip...\");\n const tmpDir = os.tmpdir();\n const bundleZipPath = path.join(tmpDir, `${themeId}-${version}-bundle.zip`);\n await createZipFromDir(compiledDir, bundleZipPath);\n const bundleZipBuffer = await fs.readFile(bundleZipPath);\n const bundleSizeMB = (bundleZipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Created bundle.zip (${bundleSizeMB} MB)`);\n\n // 5. Dry run mode — show info and exit\n if (options.dryRun) {\n spinner.info(chalk.yellow(\"Dry run mode — no files will be uploaded\"));\n console.log();\n console.log(chalk.gray(` bundle.zip: ${bundleSizeMB} MB`));\n console.log(\n chalk.cyan(\n ` S3 path: s3://${bucket}/themes/${themeId}/${version}/bundle.zip`\n )\n );\n\n if (!options.skipSource) {\n const sourceDir = await findSourceDir(themeId, options.sourceDir);\n if (sourceDir) {\n console.log(chalk.gray(` source dir: ${sourceDir}`));\n console.log(\n chalk.cyan(\n ` S3 path: s3://${bucket}/themes/${themeId}/${version}/source.zip`\n )\n );\n } else {\n console.log(\n chalk.yellow(\" source dir: not found (source.zip will be skipped)\")\n );\n }\n }\n\n console.log();\n await fs.remove(bundleZipPath);\n return;\n }\n\n // 6. Upload bundle.zip\n spinner.start(\"Uploading bundle.zip to S3...\");\n const bundleS3Key = `themes/${themeId}/${version}/bundle.zip`;\n await s3Client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: bundleS3Key,\n Body: bundleZipBuffer,\n ContentType: \"application/zip\",\n })\n );\n spinner.succeed(\n `Uploaded bundle.zip ${chalk.gray(`→ s3://${bucket}/${bundleS3Key}`)}`\n );\n await fs.remove(bundleZipPath);\n\n // 7. Create + upload source.zip (unless --skip-source)\n let sourceUploaded = false;\n if (!options.skipSource) {\n spinner.start(\"Looking for source directory...\");\n const sourceDir = await findSourceDir(themeId, options.sourceDir);\n\n if (sourceDir) {\n spinner.succeed(`Found source at: ${sourceDir}`);\n spinner.start(\"Creating source.zip...\");\n\n const sourceZipPath = path.join(\n tmpDir,\n `${themeId}-${version}-source.zip`\n );\n await createZipFromDir(sourceDir, sourceZipPath, [\n \"node_modules/**\",\n \"dist/**\",\n \".git/**\",\n \"*.zip\",\n \".next/**\",\n \".turbo/**\",\n ]);\n\n const sourceZipBuffer = await fs.readFile(sourceZipPath);\n const sourceSizeMB = (sourceZipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Created source.zip (${sourceSizeMB} MB)`);\n\n spinner.start(\"Uploading source.zip to S3...\");\n const sourceS3Key = `themes/${themeId}/${version}/source.zip`;\n await s3Client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: sourceS3Key,\n Body: sourceZipBuffer,\n ContentType: \"application/zip\",\n })\n );\n spinner.succeed(\n `Uploaded source.zip ${chalk.gray(`→ s3://${bucket}/${sourceS3Key}`)}`\n );\n\n await fs.remove(sourceZipPath);\n sourceUploaded = true;\n } else {\n spinner.warn(\n chalk.yellow(\"Source directory not found — skipping source.zip\")\n );\n }\n }\n\n // 8. Update latest.json pointer\n spinner.start(\"Updating latest.json pointer...\");\n await updateLatestPointer(s3Client, bucket, themeId, version);\n spinner.succeed(\"Updated latest.json pointer\");\n\n // 9. Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme uploaded successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Theme: \") + chalk.white(`${themeId}@${version}`)\n );\n console.log(chalk.cyan(\" Bucket: \") + chalk.white(bucket));\n console.log(\n chalk.cyan(\" Files: \") +\n chalk.white(`bundle.zip${sourceUploaded ? \" + source.zip\" : \"\"}`)\n );\n console.log(\n chalk.cyan(\" Path: \") +\n chalk.gray(`s3://${bucket}/themes/${themeId}/${version}/`)\n );\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(`Upload failed: ${error.message}`));\n logger.error(error.stack || error.message);\n process.exit(1);\n }\n}\n","import { S3Client, GetObjectCommand } from \"@aws-sdk/client-s3\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport { Readable } from \"stream\";\nimport AdmZip from \"adm-zip\";\nimport { logger } from \"../utils/logger\";\n\ninterface DownloadOptions {\n themeId?: string;\n version?: string;\n bucket?: string;\n environment?: \"staging\" | \"production\";\n output?: string;\n}\n\ninterface ThemeManifest {\n themeId: string;\n version: string;\n compiledAt: string;\n counts: {\n sections: number;\n blocks: number;\n schemas: number;\n };\n output: {\n entry: string;\n chunks: string[];\n assets: string[];\n };\n [key: string]: any;\n}\n\n/**\n * Initialize S3 client with support for AWS/MinIO/LocalStack\n */\nfunction getS3Client(): S3Client {\n const adapterMode = (process.env.ADAPTER_MODE || \"aws\").trim().toLowerCase();\n\n if (adapterMode === \"vps\") {\n const endpoint = process.env.MINIO_ENDPOINT || \"localhost:9000\";\n const secure = process.env.MINIO_SECURE === \"true\";\n const endpointUrl = endpoint.startsWith(\"http\")\n ? endpoint\n : `${secure ? \"https\" : \"http\"}://${endpoint}`;\n\n return new S3Client({\n endpoint: endpointUrl,\n region: \"us-east-1\",\n credentials: {\n accessKeyId: process.env.MINIO_ACCESS_KEY || \"minioadmin\",\n secretAccessKey: process.env.MINIO_SECRET_KEY || \"minioadmin\",\n },\n forcePathStyle: true,\n });\n }\n\n if (adapterMode === \"local\") {\n return new S3Client({\n endpoint: \"http://localhost:4569\",\n region: \"ap-southeast-1\",\n credentials: {\n accessKeyId: \"S3RVER\",\n secretAccessKey: \"S3RVER\",\n },\n forcePathStyle: true,\n });\n }\n\n return new S3Client({\n region: process.env.AWS_REGION || \"ap-southeast-1\",\n });\n}\n\n/**\n * Get S3 bucket name based on environment\n */\nfunction getBucketName(env?: \"staging\" | \"production\"): string {\n if (process.env.BUCKET_NAME) {\n return process.env.BUCKET_NAME;\n }\n const environment = env || process.env.ENVIRONMENT || \"staging\";\n return environment === \"production\" ? \"theme-s3-bucket\" : \"theme-s3-bucket\";\n}\n\n/**\n * Convert stream to string\n */\nasync function streamToString(stream: Readable): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks).toString(\"utf-8\");\n}\n\n/**\n * Convert stream to buffer\n */\nasync function streamToBuffer(stream: Readable): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks);\n}\n\n/**\n * Resolve latest version from S3\n */\nasync function resolveLatestVersion(\n s3Client: S3Client,\n bucket: string,\n themeId: string\n): Promise<string> {\n try {\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: `themes/${themeId}/latest.json`,\n })\n );\n\n const body = await streamToString(response.Body as Readable);\n const data = JSON.parse(body);\n return data.version;\n } catch (error: any) {\n throw new Error(\n `Failed to resolve latest version for theme \"${themeId}\": ${error.message}`\n );\n }\n}\n\n/**\n * Create compatibility files for module resolution\n *\n * Creates sections-registry.js that re-exports from the bundle entry file\n * and a stable bundle-entry.js alias if the entry is content-hashed.\n */\nasync function createCompatibilityFiles(\n outputDir: string,\n manifest: ThemeManifest\n): Promise<void> {\n const entryFile = manifest.output?.entry || \"bundle-entry.js\";\n\n // If entry is content-hashed (e.g., bundle-entry-2d936738.js),\n // create a stable bundle-entry.js copy for import compatibility\n if (\n entryFile !== \"bundle-entry.js\" &&\n entryFile.startsWith(\"bundle-entry-\")\n ) {\n const hashedPath = path.join(outputDir, entryFile);\n const stablePath = path.join(outputDir, \"bundle-entry.js\");\n if (await fs.pathExists(hashedPath)) {\n await fs.copy(hashedPath, stablePath);\n // Also copy source map if it exists\n const mapPath = hashedPath + \".map\";\n if (await fs.pathExists(mapPath)) {\n await fs.copy(mapPath, stablePath + \".map\");\n }\n }\n }\n\n // Create sections-registry.js pointing to stable bundle-entry.js\n const sectionsRegistryPath = path.join(outputDir, \"sections-registry.js\");\n const content = `// Re-export all sections from bundle-entry\\n// This file exists to maintain compatibility with the import path\\nexport * from './bundle-entry.js';\\n`;\n await fs.writeFile(sectionsRegistryPath, content, \"utf-8\");\n\n // Create package.json with \"type\": \"module\" for ESM support\n const pkgJsonPath = path.join(outputDir, \"package.json\");\n await fs.writeFile(pkgJsonPath, '{\\n \"type\": \"module\"\\n}\\n', \"utf-8\");\n}\n\n/**\n * Show helpful error message when download fails\n */\nfunction showDownloadFailureHelp(themeId: string, bucket: string): void {\n console.log();\n logger.error(chalk.red.bold(\"Theme download failed\"));\n console.log();\n console.log(chalk.yellow(\"Possible reasons:\"));\n console.log(chalk.gray(\" 1. Theme not uploaded to S3 yet\"));\n console.log(chalk.gray(\" 2. AWS credentials not configured correctly\"));\n console.log(chalk.gray(\" 3. Bucket name or region is incorrect\"));\n console.log(chalk.gray(\" 4. bundle.zip is missing or corrupted\"));\n console.log();\n console.log(chalk.cyan.bold(\"To fix this:\"));\n console.log();\n console.log(chalk.white(\"1. Compile and upload the theme:\"));\n console.log(chalk.gray(` cd themes/${themeId}`));\n console.log(chalk.gray(\" pnpm build\"));\n console.log(chalk.gray(\" onexthm upload\"));\n console.log();\n console.log(chalk.white(\"2. Verify AWS credentials are set:\"));\n console.log(\n chalk.gray(\" - Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY\")\n );\n console.log(chalk.gray(\" - Or use AWS_PROFILE=your-profile\"));\n console.log(chalk.gray(\" - Set AWS_REGION (e.g., ap-southeast-1)\"));\n console.log();\n console.log(chalk.white(\"3. Check bucket configuration:\"));\n console.log(chalk.gray(` Current bucket: ${bucket}`));\n console.log(\n chalk.gray(\" Set BUCKET_NAME environment variable if different\")\n );\n console.log();\n console.log(chalk.white(\"4. Verify theme exists in S3:\"));\n console.log(chalk.gray(` aws s3 ls s3://${bucket}/themes/${themeId}/`));\n console.log();\n}\n\n/**\n * Download theme from S3\n *\n * Downloads bundle.zip (single S3 request) and extracts all files locally.\n * Much faster than downloading 100+ individual files.\n */\nexport async function downloadCommand(options: DownloadOptions): Promise<void> {\n logger.header(\"Download Theme from S3\");\n\n const spinner = ora(\"Initializing download...\").start();\n\n try {\n // 1. Get theme ID and version\n const themeId =\n options.themeId ||\n process.env.NEXT_PUBLIC_THEME_ID ||\n process.env.THEME_ID;\n const version = options.version || process.env.THEME_VERSION || \"latest\";\n const bucket = options.bucket || getBucketName(options.environment);\n const outputDir = options.output || \"./active-theme\";\n\n if (!themeId) {\n spinner.fail(\n chalk.red(\n \"Theme ID not specified. Use --theme-id or set NEXT_PUBLIC_THEME_ID environment variable.\"\n )\n );\n process.exit(1);\n }\n\n spinner.text = `Downloading ${themeId}@${version} from ${bucket}...`;\n\n // 2. Initialize S3 client\n const s3Client = getS3Client();\n\n // 3. Resolve version if \"latest\"\n let resolvedVersion = version;\n if (version === \"latest\") {\n spinner.text = \"Resolving latest version...\";\n resolvedVersion = await resolveLatestVersion(s3Client, bucket, themeId);\n spinner.succeed(\n `Resolved latest version: ${chalk.cyan(resolvedVersion)}`\n );\n }\n\n // 4. Download bundle.zip\n spinner.start(\n `Downloading bundle.zip for ${themeId}@${resolvedVersion}...`\n );\n const s3Key = `themes/${themeId}/${resolvedVersion}/bundle.zip`;\n\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: s3Key,\n })\n );\n\n const zipBuffer = await streamToBuffer(response.Body as Readable);\n const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Downloaded bundle.zip (${sizeMB} MB)`);\n\n // 5. Extract to output directory\n spinner.start(\"Extracting bundle...\");\n await fs.remove(outputDir);\n await fs.ensureDir(outputDir);\n\n const zip = new AdmZip(zipBuffer);\n zip.extractAllTo(outputDir, true);\n\n const entries = zip.getEntries().filter((e) => !e.isDirectory);\n spinner.succeed(`Extracted ${entries.length} files to ${outputDir}`);\n\n // 6. Create compatibility files\n const manifestPath = path.join(outputDir, \"manifest.json\");\n const manifest: ThemeManifest = await fs.readJson(manifestPath);\n await createCompatibilityFiles(outputDir, manifest);\n\n // 7. Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme downloaded successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Theme: \") + chalk.white(`${themeId}@${resolvedVersion}`)\n );\n console.log(chalk.cyan(\" Bucket: \") + chalk.white(bucket));\n console.log(chalk.cyan(\" Output: \") + chalk.white(outputDir));\n console.log(chalk.cyan(\" Files: \") + chalk.white(entries.length));\n if (manifest.counts) {\n console.log(\n chalk.cyan(\" Sections:\") + chalk.white(` ${manifest.counts.sections}`)\n );\n }\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(\"Download failed\"));\n logger.error(error.message);\n\n const themeId =\n options.themeId || process.env.NEXT_PUBLIC_THEME_ID || \"unknown\";\n const bucket = options.bucket || getBucketName(options.environment);\n\n showDownloadFailureHelp(themeId, bucket);\n process.exit(1);\n }\n}\n","import { S3Client, GetObjectCommand } from \"@aws-sdk/client-s3\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport { Readable } from \"stream\";\nimport { spawn } from \"child_process\";\nimport { createRequire } from \"module\";\nimport AdmZip from \"adm-zip\";\nimport { logger } from \"../utils/logger\";\nimport { glob } from \"glob\";\n\ninterface CloneOptions {\n version?: string;\n output?: string;\n bucket?: string;\n environment?: \"staging\" | \"production\";\n install?: boolean;\n name?: string;\n}\n\n/**\n * Initialize S3 client with support for AWS/MinIO/LocalStack\n */\nfunction getS3Client(): S3Client {\n const adapterMode = (process.env.ADAPTER_MODE || \"aws\").trim().toLowerCase();\n\n if (adapterMode === \"vps\") {\n const endpoint = process.env.MINIO_ENDPOINT || \"localhost:9000\";\n const secure = process.env.MINIO_SECURE === \"true\";\n const endpointUrl = endpoint.startsWith(\"http\")\n ? endpoint\n : `${secure ? \"https\" : \"http\"}://${endpoint}`;\n\n return new S3Client({\n endpoint: endpointUrl,\n region: \"us-east-1\",\n credentials: {\n accessKeyId: process.env.MINIO_ACCESS_KEY || \"minioadmin\",\n secretAccessKey: process.env.MINIO_SECRET_KEY || \"minioadmin\",\n },\n forcePathStyle: true,\n });\n }\n\n if (adapterMode === \"local\") {\n return new S3Client({\n endpoint: \"http://localhost:4569\",\n region: \"ap-southeast-1\",\n credentials: {\n accessKeyId: \"S3RVER\",\n secretAccessKey: \"S3RVER\",\n },\n forcePathStyle: true,\n });\n }\n\n return new S3Client({\n region: process.env.AWS_REGION || \"ap-southeast-1\",\n });\n}\n\n/**\n * Get S3 bucket name based on environment\n */\nfunction getBucketName(env?: \"staging\" | \"production\"): string {\n if (process.env.BUCKET_NAME) {\n return process.env.BUCKET_NAME;\n }\n const environment = env || process.env.ENVIRONMENT || \"staging\";\n return environment === \"production\" ? \"theme-s3-bucket\" : \"theme-s3-bucket\";\n}\n\nasync function streamToString(stream: Readable): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks).toString(\"utf-8\");\n}\n\nasync function streamToBuffer(stream: Readable): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks);\n}\n\n/**\n * Resolve latest version from S3 via latest.json pointer\n */\nasync function resolveLatestVersion(\n s3Client: S3Client,\n bucket: string,\n themeId: string\n): Promise<string> {\n try {\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: `themes/${themeId}/latest.json`,\n })\n );\n const body = await streamToString(response.Body as Readable);\n return JSON.parse(body).version;\n } catch (error: any) {\n throw new Error(\n `Failed to resolve latest version for theme \"${themeId}\": ${error.message}`\n );\n }\n}\n\n/**\n * Run pnpm install in a directory\n */\nfunction runInstall(cwd: string): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(\"pnpm\", [\"install\"], {\n cwd,\n stdio: \"inherit\",\n shell: true,\n });\n proc.on(\"close\", (code) => resolve(code === 0));\n proc.on(\"error\", () => resolve(false));\n });\n}\n\n/**\n * Prompt user for new theme name using inquirer\n */\nasync function promptThemeName(originalName: string): Promise<string> {\n const { default: inquirer } = await import(\"inquirer\");\n const { themeName } = await inquirer.prompt([\n {\n type: \"input\",\n name: \"themeName\",\n message: \"New theme name (kebab-case):\",\n default: `my-${originalName}`,\n validate: (input: string) => {\n if (!/^[a-z][a-z0-9-]*$/.test(input)) {\n return \"Theme name must be kebab-case (lowercase letters, numbers, hyphens)\";\n }\n if (input === originalName) {\n return `Name must differ from the original theme \"${originalName}\"`;\n }\n return true;\n },\n },\n ]);\n return themeName;\n}\n\n/**\n * Rename all theme references in the cloned source.\n *\n * Updates:\n * - package.json (name, description)\n * - theme.config.ts (id, name)\n * - theme.layout.ts (id, name)\n * - sections schemas (type: \"old-hero\" → \"new-hero\")\n * - pages configs (type references)\n */\nasync function renameTheme(\n themeDir: string,\n oldName: string,\n newName: string\n): Promise<void> {\n const oldPrefix = `${oldName}-`;\n const newPrefix = `${newName}-`;\n const newDisplayName = newName\n .split(\"-\")\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(\" \");\n\n // 1. package.json\n const pkgPath = path.join(themeDir, \"package.json\");\n if (await fs.pathExists(pkgPath)) {\n const pkg = await fs.readJson(pkgPath);\n pkg.name = `@onex-themes/${newName}`;\n if (pkg.description) {\n pkg.description = pkg.description.replace(\n new RegExp(oldName, \"gi\"),\n newDisplayName\n );\n }\n pkg.version = \"1.0.0\";\n\n // Remove @onexapis/cli from devDependencies — it's a global CLI tool,\n // not a theme dependency. Including it causes workspace:* resolution errors.\n if (pkg.devDependencies?.[\"@onexapis/cli\"]) {\n delete pkg.devDependencies[\"@onexapis/cli\"];\n }\n\n await fs.writeJson(pkgPath, pkg, { spaces: 2 });\n }\n\n // 2. theme.config.ts\n const configPath = path.join(themeDir, \"theme.config.ts\");\n if (await fs.pathExists(configPath)) {\n let content = await fs.readFile(configPath, \"utf-8\");\n content = content.replace(/id:\\s*\"[^\"]*\"/, `id: \"${newName}\"`);\n content = content.replace(\n /name:\\s*\"[^\"]*Theme\"/,\n `name: \"${newDisplayName} Theme\"`\n );\n await fs.writeFile(configPath, content);\n }\n\n // 3. theme.layout.ts\n const layoutPath = path.join(themeDir, \"theme.layout.ts\");\n if (await fs.pathExists(layoutPath)) {\n let content = await fs.readFile(layoutPath, \"utf-8\");\n content = content.replace(/id:\\s*\"[^\"]*\"/, `id: \"${newName}\"`);\n content = content.replace(\n /name:\\s*\"[^\"]*Theme\"/,\n `name: \"${newDisplayName} Theme\"`\n );\n await fs.writeFile(layoutPath, content);\n }\n\n // 4. All .ts files: replace theme references\n const oldDisplayName = oldName\n .split(\"-\")\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(\" \");\n\n const tsFiles = await glob(\"**/*.ts\", { cwd: themeDir, nodir: true });\n for (const file of tsFiles) {\n const filePath = path.join(themeDir, file);\n let content = await fs.readFile(filePath, \"utf-8\");\n const original = content;\n\n // Replace section type strings: \"simple-hero\" → \"mytheme-hero\"\n content = content.replace(\n new RegExp(`\"${oldPrefix}`, \"g\"),\n `\"${newPrefix}`\n );\n\n // Replace themeId: \"simple\" → \"mytheme\"\n content = content.replace(\n new RegExp(`themeId:\\\\s*\"${oldName}\"`, \"g\"),\n `themeId: \"${newName}\"`\n );\n\n // Replace display names in titles/comments: \"Simple Theme\" → \"My Theme\"\n content = content.replace(\n new RegExp(`${oldDisplayName} Theme`, \"g\"),\n `${newDisplayName} Theme`\n );\n\n if (content !== original) {\n await fs.writeFile(filePath, content);\n }\n }\n}\n\n/**\n * Clone theme source code from S3\n *\n * Downloads source.zip and extracts it to a local directory.\n * Asks the user for a new theme name to differentiate from the original.\n */\nexport async function cloneCommand(\n themeName: string,\n options: CloneOptions\n): Promise<void> {\n logger.header(\"Clone Theme Source\");\n\n // Prompt for new theme name (unless --name was provided)\n let newName = options.name;\n if (!newName) {\n newName = await promptThemeName(themeName);\n }\n\n const spinner = ora(\"Initializing clone...\").start();\n\n try {\n const bucket = options.bucket || getBucketName(options.environment);\n const outputDir = options.output || path.resolve(process.cwd(), newName);\n const s3Client = getS3Client();\n\n // Check if output directory already exists\n if (await fs.pathExists(outputDir)) {\n spinner.fail(chalk.red(`Directory already exists: ${outputDir}`));\n logger.info(\n chalk.gray(\n \"Use -o to specify a different output directory, or remove the existing directory.\"\n )\n );\n process.exit(1);\n }\n\n // Resolve version\n let version = options.version || \"latest\";\n if (version === \"latest\") {\n spinner.text = \"Resolving latest version...\";\n version = await resolveLatestVersion(s3Client, bucket, themeName);\n spinner.succeed(`Resolved latest version: ${chalk.cyan(version)}`);\n }\n\n // Download source.zip\n spinner.start(`Downloading source.zip for ${themeName}@${version}...`);\n const s3Key = `themes/${themeName}/${version}/source.zip`;\n\n let zipBuffer: Buffer;\n try {\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: s3Key,\n })\n );\n zipBuffer = await streamToBuffer(response.Body as Readable);\n } catch (error: any) {\n spinner.fail(chalk.red(`Source not found: s3://${bucket}/${s3Key}`));\n console.log();\n console.log(\n chalk.yellow(\"The theme source may not have been uploaded yet.\")\n );\n console.log(\n chalk.gray(`Upload source with: onexthm upload --theme ${themeName}`)\n );\n console.log();\n process.exit(1);\n }\n\n const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Downloaded source.zip (${sizeMB} MB)`);\n\n // Extract to output directory\n spinner.start(`Extracting to ${outputDir}...`);\n await fs.ensureDir(outputDir);\n\n const zip = new AdmZip(zipBuffer);\n zip.extractAllTo(outputDir, true);\n\n const entries = zip.getEntries().filter((e) => !e.isDirectory);\n spinner.succeed(`Extracted ${entries.length} files`);\n\n // Rename theme references\n spinner.start(\n `Renaming theme: ${chalk.gray(themeName)} → ${chalk.cyan(newName)}...`\n );\n await renameTheme(outputDir, themeName, newName);\n spinner.succeed(\n `Renamed theme: ${chalk.gray(themeName)} → ${chalk.cyan(newName)}`\n );\n\n // Generate .env.example if not already in the zip\n const envExamplePath = path.join(outputDir, \".env.example\");\n if (!(await fs.pathExists(envExamplePath))) {\n await fs.writeFile(\n envExamplePath,\n [\n \"# API Configuration (enables real data in preview)\",\n \"# Get your Company ID from the OneX dashboard\",\n \"NEXT_PUBLIC_API_URL=https://platform-dev.onexeos.com\",\n \"NEXT_PUBLIC_COMPANY_ID=\",\n \"\",\n ].join(\"\\n\")\n );\n }\n\n // Optionally install dependencies\n if (options.install !== false) {\n const hasPkgJson = await fs.pathExists(\n path.join(outputDir, \"package.json\")\n );\n if (hasPkgJson) {\n spinner.start(\"Installing dependencies...\");\n const success = await runInstall(outputDir);\n if (success) {\n spinner.succeed(\"Dependencies installed\");\n } else {\n spinner.warn(\n chalk.yellow(\n \"Failed to install dependencies — run 'pnpm install' manually\"\n )\n );\n }\n }\n }\n\n // Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme cloned successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Source: \") + chalk.gray(`${themeName}@${version}`)\n );\n console.log(chalk.cyan(\" Theme: \") + chalk.white(newName));\n console.log(chalk.cyan(\" Location: \") + chalk.white(outputDir));\n console.log(chalk.cyan(\" Files: \") + chalk.white(entries.length));\n console.log();\n console.log(chalk.cyan(\"Next steps:\"));\n console.log(chalk.gray(` cd ${path.relative(process.cwd(), outputDir)}`));\n console.log(\n chalk.gray(\" cp .env.example .env # then add your Company ID\")\n );\n if (options.install === false) {\n console.log(chalk.gray(\" pnpm install\"));\n }\n console.log(chalk.gray(\" onexthm build\"));\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(`Clone failed: ${error.message}`));\n logger.error(error.stack || error.message);\n process.exit(1);\n }\n}\n","/**\n * @onex/cli - CLI Tool for OneX Theme Development\n * Scaffolding and development tools for themes, sections, blocks, and components\n */\n\nexport { initCommand } from \"./commands/init\";\nexport { createSectionCommand } from \"./commands/create-section\";\nexport { createBlockCommand } from \"./commands/create-block\";\nexport { createComponentCommand } from \"./commands/create-component\";\nexport { listCommand } from \"./commands/list\";\nexport { buildCommand } from \"./commands/build\";\nexport { uploadCommand } from \"./commands/upload\";\nexport { downloadCommand } from \"./commands/download\";\nexport { cloneCommand } from \"./commands/clone\";\n\nexport * from \"./utils/logger\";\nexport * from \"./utils/file-helpers\";\nexport * from \"./utils/validators\";\n"]}
1
+ {"version":3,"sources":["../src/utils/logger.ts","../src/utils/compile-theme.ts","../src/commands/init.ts","../src/utils/validators.ts","../src/utils/file-helpers.ts","../src/commands/create-section.ts","../src/commands/create-block.ts","../src/commands/create-component.ts","../src/commands/list.ts","../src/commands/build.ts","../src/commands/upload.ts","../src/commands/download.ts","../src/commands/clone.ts","../src/index.ts"],"names":["Logger","logger","chalk","ora","path","fs","glob","build","subpath","cacheKey","createRequire","exports","hash","crypto","hashedName","hashedMapName","esbuild","context","ejs","execSync","inquirer","answers","compileStandaloneTheme","spawn","S3Client","archiver","PutObjectCommand","os","getS3Client","getBucketName","GetObjectCommand","AdmZip","streamToString","streamToBuffer","resolveLatestVersion"],"mappings":"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","file":"index.js","sourcesContent":["import chalk from \"chalk\";\nimport ora, { Ora } from \"ora\";\n\nexport class Logger {\n private spinner: Ora | null = null;\n\n success(message: string): void {\n console.log(chalk.green(\"✓\"), message);\n }\n\n error(message: string): void {\n console.log(chalk.red(\"✗\"), message);\n }\n\n warning(message: string): void {\n console.log(chalk.yellow(\"⚠\"), message);\n }\n\n info(message: string): void {\n console.log(chalk.blue(\"ℹ\"), message);\n }\n\n log(message: string): void {\n console.log(message);\n }\n\n startSpinner(message: string): void {\n this.spinner = ora(message).start();\n }\n\n stopSpinner(success: boolean = true, message?: string): void {\n if (!this.spinner) return;\n\n if (success) {\n this.spinner.succeed(message);\n } else {\n this.spinner.fail(message);\n }\n this.spinner = null;\n }\n\n updateSpinner(message: string): void {\n if (this.spinner) {\n this.spinner.text = message;\n }\n }\n\n newLine(): void {\n console.log();\n }\n\n header(message: string): void {\n console.log();\n console.log(chalk.bold.cyan(message));\n console.log(chalk.cyan(\"=\".repeat(message.length)));\n console.log();\n }\n\n section(message: string): void {\n console.log();\n console.log(chalk.bold(message));\n }\n}\n\nexport const logger = new Logger();\n","/**\n * Standalone Theme Compiler\n *\n * Compiles standalone theme source code to ESM bundles using esbuild.\n * Adapted from scripts/compile-theme.ts for use in the CLI.\n *\n * Key differences from the monorepo version:\n * - Core global plugin reads from node_modules/@onexapis/core/dist/ (not packages/core/dist/)\n * - Process shim is inlined (no external file dependency)\n * - Output goes to ./dist/ in the theme directory\n */\n\nimport * as esbuild from \"esbuild\";\nimport type { Plugin } from \"esbuild\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport crypto from \"crypto\";\nimport { glob } from \"glob\";\nimport { createRequire } from \"node:module\";\nimport { logger } from \"./logger\";\n\n/**\n * Generate Tailwind CSS bundle for the theme.\n * Scans theme section/component TSX files to compile all used utility classes.\n * Output: dist/bundle.css — loaded by the editor iframe as a CSS asset.\n */\nasync function generateThemeCSS(\n themePath: string,\n outDir: string\n): Promise<void> {\n try {\n // Dynamic imports so tailwindcss/postcss don't break if missing\n const postcss = (await import(\"postcss\")).default;\n const tailwindcss = (await import(\"tailwindcss\")).default;\n\n const tailwindConfig = {\n content: [\n path.join(themePath, \"sections/**/*.{ts,tsx}\"),\n path.join(themePath, \"components/**/*.{ts,tsx}\"),\n ],\n theme: { extend: {} },\n plugins: [] as any[],\n };\n\n const inputCSS =\n \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\";\n const result = await postcss([tailwindcss(tailwindConfig)]).process(\n inputCSS,\n { from: undefined }\n );\n\n await fs.writeFile(path.join(outDir, \"bundle.css\"), result.css);\n logger.info(\"Generated bundle.css\");\n } catch (err) {\n logger.warning(\n `CSS generation skipped: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n}\n\n/**\n * Inline process shim for browser environments.\n * Equivalent to scripts/process-shim.js but embedded as a string.\n */\nconst PROCESS_SHIM = `\nif (typeof process === \"undefined\") {\n globalThis.process = {\n env: {},\n browser: true,\n };\n}\n`;\n\n/**\n * Plugin to externalize React as window globals.\n * React/ReactDOM are shared via globalThis to prevent duplication.\n */\nconst reactGlobalPlugin: Plugin = {\n name: \"react-global\",\n setup(build) {\n build.onResolve({ filter: /^react$/ }, () => ({\n path: \"react-external\",\n namespace: \"react-global\",\n }));\n\n build.onResolve({ filter: /^react-dom$/ }, () => ({\n path: \"react-dom-external\",\n namespace: \"react-global\",\n }));\n\n build.onResolve({ filter: /^react\\/jsx-runtime$/ }, () => ({\n path: \"react-jsx-runtime-external\",\n namespace: \"react-global\",\n }));\n\n build.onLoad({ filter: /.*/, namespace: \"react-global\" }, (args) => {\n if (args.path === \"react-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_REACT__) {\n throw new Error('[Theme Bundle] React not initialized. Ensure globalThis.__ONEX_REACT__ is set before loading theme.');\n}\n\nconst React = globalThis.__ONEX_REACT__;\nexport default React;\n\nexport const {\n useState,\n useEffect,\n useContext,\n useReducer,\n useCallback,\n useMemo,\n useRef,\n useImperativeHandle,\n useLayoutEffect,\n useDebugValue,\n useDeferredValue,\n useTransition,\n useId,\n useSyncExternalStore,\n useInsertionEffect,\n createContext,\n forwardRef,\n lazy,\n memo,\n startTransition,\n createElement,\n cloneElement,\n isValidElement,\n Children,\n Fragment,\n Profiler,\n StrictMode,\n Suspense,\n Component,\n PureComponent,\n useActionState,\n use,\n} = React;\n `.trim(),\n loader: \"js\",\n };\n }\n\n if (args.path === \"react-dom-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_REACT_DOM__) {\n throw new Error('[Theme Bundle] ReactDOM not initialized. Ensure globalThis.__ONEX_REACT_DOM__ is set before loading theme.');\n}\n\nconst ReactDOM = globalThis.__ONEX_REACT_DOM__;\nexport default ReactDOM;\n\nexport const {\n createRoot,\n hydrateRoot,\n flushSync,\n createPortal,\n findDOMNode,\n render,\n hydrate,\n unmountComponentAtNode,\n} = ReactDOM;\n `.trim(),\n loader: \"js\",\n };\n }\n\n if (args.path === \"react-jsx-runtime-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_JSX_RUNTIME__) {\n throw new Error('[Theme Bundle] React JSX runtime not initialized. Ensure globalThis.__ONEX_JSX_RUNTIME__ is set before loading theme.');\n}\nconst _jsxRuntime = globalThis.__ONEX_JSX_RUNTIME__;\nexport const jsx = _jsxRuntime.jsx;\nexport const jsxs = _jsxRuntime.jsxs;\nexport const Fragment = _jsxRuntime.Fragment;\n `.trim(),\n loader: \"js\",\n };\n }\n\n return null;\n });\n },\n};\n\n/**\n * Resolve a file inside node_modules, searching up the directory tree.\n * Handles monorepo hoisting where deps are in a parent node_modules.\n */\nasync function resolveNodeModulesFile(\n startDir: string,\n relativePath: string\n): Promise<string | null> {\n let dir = startDir;\n while (true) {\n const candidate = path.join(dir, \"node_modules\", relativePath);\n try {\n await fs.access(candidate);\n return candidate;\n } catch {\n const parent = path.dirname(dir);\n if (parent === dir) break; // reached filesystem root\n dir = parent;\n }\n }\n return null;\n}\n\n/**\n * Scan source files in `sourceDir` for named imports/exports from `packageName`.\n * Returns a map of subpath → Set of imported names.\n * e.g. for `@onexapis/core/internal` → key \"internal\", names {\"useCart\", \"Button\"}\n * for `@onexapis/core` → key \"\" (empty string)\n */\nasync function scanImportsFromPackage(\n sourceDir: string,\n packageName: string\n): Promise<Record<string, Set<string>>> {\n const result: Record<string, Set<string>> = {};\n const escapedPkg = packageName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const importRegex = new RegExp(\n `(?:import|export)\\\\s+(?:type\\\\s+)?\\\\{([^}]+)\\\\}\\\\s+from\\\\s+[\"']${escapedPkg}(/[\\\\w./-]+)?[\"']`,\n \"g\"\n );\n\n const sourceFiles = await glob(\"**/*.{ts,tsx}\", {\n cwd: sourceDir,\n ignore: [\"node_modules/**\", \"dist/**\"],\n });\n\n for (const file of sourceFiles) {\n try {\n const content = await fs.readFile(path.join(sourceDir, file), \"utf-8\");\n for (const match of content.matchAll(importRegex)) {\n const subpath = match[2] ? match[2].slice(1) : \"\"; // remove leading \"/\"\n if (!result[subpath]) result[subpath] = new Set();\n for (const name of match[1].split(\",\")) {\n let original = name\n .trim()\n .split(/\\s+as\\s+/)[0]\n .trim();\n // Skip inline type-only imports: `import { type Foo }` — esbuild strips these\n if (original.startsWith(\"type \")) continue;\n if (original) result[subpath].add(original);\n }\n }\n } catch {\n // skip unreadable files\n }\n }\n\n return result;\n}\n\n/**\n * Plugin to externalize @onexapis/core as window global.\n * Scans theme source to discover imports; falls back to reading dist files.\n */\nfunction createCoreGlobalPlugin(themePath: string): Plugin {\n const exportsBySubpath: Record<string, string[]> = {};\n let scanPromise: Promise<void> | null = null;\n\n return {\n name: \"core-global\",\n setup(build) {\n build.onResolve({ filter: /^@onexapis\\/core(\\/.*)?$/ }, (args) => ({\n path: args.path,\n namespace: \"core-global\",\n }));\n\n build.onLoad({ filter: /.*/, namespace: \"core-global\" }, async (args) => {\n // On first load, scan theme source files to discover all @onexapis/core imports\n // Use a shared promise to avoid race conditions with concurrent onLoad calls\n if (!scanPromise) {\n scanPromise = scanImportsFromPackage(themePath, \"@onexapis/core\")\n .then((scanned) => {\n for (const [subpath, names] of Object.entries(scanned)) {\n const cacheKey = subpath || \"__root__\";\n exportsBySubpath[cacheKey] = [...names];\n }\n })\n .catch(() => {\n // Source scan failed, will fall back to dist-file reading\n });\n }\n await scanPromise;\n\n const match = args.path.match(/^@onexapis\\/core(\\/(.+))?$/);\n const subpath = match?.[2] || \"\";\n const moduleAccess = subpath ? `['${subpath}']` : \"\";\n\n let namedExports: string[] = [];\n const cacheKey = subpath || \"__root__\";\n if (exportsBySubpath[cacheKey]) {\n namedExports = exportsBySubpath[cacheKey];\n } else {\n // Fallback: read dist files when source scan found nothing for this subpath\n const distFileName = subpath ? `${subpath}.mjs` : \"index.mjs\";\n let distPath = await resolveNodeModulesFile(\n themePath,\n path.join(\"@onexapis\", \"core\", \"dist\", distFileName)\n );\n if (!distPath) {\n distPath = await resolveNodeModulesFile(\n __dirname,\n path.join(\"@onexapis\", \"core\", \"dist\", distFileName)\n );\n }\n try {\n if (!distPath) throw new Error(\"not found\");\n const distContent = await fs.readFile(distPath, \"utf-8\");\n const exportMatches = distContent.matchAll(/export\\s*\\{([^}]+)\\}/g);\n for (const m of exportMatches) {\n const names = m[1]\n .split(\",\")\n .map((n) => {\n const parts = n.trim().split(/\\s+as\\s+/);\n return (parts[1] || parts[0]).trim();\n })\n .filter((n) => n.length > 0);\n namedExports.push(...names);\n }\n namedExports = [...new Set(namedExports)];\n } catch {\n // dist file not found - fall back to default-only export\n }\n exportsBySubpath[cacheKey] = namedExports;\n }\n\n const namedExportLines =\n namedExports.length > 0\n ? `\\nexport const {\\n ${namedExports.join(\",\\n \")}\\n} = _module;\\n`\n : \"\";\n\n return {\n contents: `\nif (!globalThis.__ONEX_CORE__) {\n throw new Error('[Theme Bundle] @onexapis/core not initialized. Ensure globalThis.__ONEX_CORE__ is set before loading theme.');\n}\n\nconst _module = globalThis.__ONEX_CORE__${moduleAccess};\nif (!_module) {\n const subpath = ${subpath ? `'${subpath}'` : \"null\"};\n const modulePath = subpath ? '/' + subpath : '';\n const moduleKey = subpath ? '[\"' + subpath + '\"]' : '';\n throw new Error('[Theme Bundle] @onexapis/core' + modulePath + ' not available in globalThis.__ONEX_CORE__' + moduleKey);\n}\n\nexport default _module;\n${namedExportLines}\n `.trim(),\n loader: \"js\",\n };\n });\n },\n };\n}\n\n/**\n * Plugin to stub common theme dependencies (next/*, framer-motion, lucide-react, etc.)\n * for standalone theme compilation. Tries to resolve from node_modules first;\n * only stubs if the package is not installed.\n */\nfunction createThemeDepsStubPlugin(themePath: string): Plugin {\n return {\n name: \"theme-deps-stub\",\n setup(build) {\n // Helper: try resolve, stub if missing\n const tryResolveOrStub = (filter: RegExp, namespace: string) => {\n build.onResolve({ filter }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n // Try resolving from theme directory\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir || themePath,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n // Try resolving via CLI's node_modules (monorepo)\n try {\n const req = createRequire(import.meta.url || __filename);\n const resolved = req.resolve(args.path);\n if (resolved) return { path: resolved, namespace: \"file\" };\n } catch {}\n return { path: args.path, namespace };\n });\n };\n\n // --- Next.js ---\n tryResolveOrStub(/^next\\//, \"next-stub\");\n build.onLoad({ filter: /.*/, namespace: \"next-stub\" }, (args) => {\n const stubs: Record<string, string> = {\n \"next/image\": `\nimport React from 'react';\nconst Image = React.forwardRef((props, ref) => {\n const { src, alt, width, height, fill, priority, sizes, quality, placeholder, blurDataURL, onLoad, onError, style, className, ...rest } = props;\n const imgSrc = typeof src === 'object' ? src.src : src;\n const fillStyle = fill ? { position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: style?.objectFit || 'cover', display: 'block' } : {};\n const mergedStyle = { ...fillStyle, ...style };\n return React.createElement('img', {\n ref, src: imgSrc, alt,\n width: fill ? undefined : width, height: fill ? undefined : height,\n loading: priority ? 'eager' : 'lazy',\n style: Object.keys(mergedStyle).length > 0 ? mergedStyle : undefined,\n className, onLoad, onError, ...rest,\n });\n});\nexport default Image;\n `,\n \"next/link\": `\nimport React from 'react';\nconst Link = ({ href, children, ...rest }) => React.createElement('a', { href, ...rest }, children);\nexport default Link;\n `,\n \"next/navigation\": `\nexport function useRouter() { return { push(u){window.location.href=u}, replace(u){window.location.href=u}, back(){window.history.back()}, forward(){window.history.forward()}, refresh(){window.location.reload()}, prefetch(){} }; }\nexport function usePathname() { return window.location.pathname; }\nexport function useSearchParams() { return new URLSearchParams(window.location.search); }\nexport function useParams() { return {}; }\nexport function redirect(url) { window.location.href = url; }\nexport function notFound() { throw new Error('Not Found'); }\n `,\n \"next/headers\": `\nexport function cookies() { return { get(){}, getAll(){ return []; }, set(){}, delete(){}, has(){ return false; } }; }\nexport function headers() { return new Headers(); }\n `,\n };\n return {\n contents: stubs[args.path] || \"export default {};\",\n loader: \"jsx\",\n resolveDir: themePath,\n };\n });\n\n // --- lucide-react ---\n // Collect all imported icon names from the theme source at resolve time,\n // then generate a stub that exports every one of them.\n const lucideImports = new Set<string>();\n let lucideThemeScanned = false;\n tryResolveOrStub(/^lucide-react/, \"lucide-stub\");\n build.onLoad({ filter: /.*/, namespace: \"lucide-stub\" }, async () => {\n // Scan theme source files for lucide-react imports to discover all icon names\n if (!lucideThemeScanned) {\n lucideThemeScanned = true;\n try {\n const scanned = await scanImportsFromPackage(\n themePath,\n \"lucide-react\"\n );\n for (const names of Object.values(scanned)) {\n for (const name of names) lucideImports.add(name);\n }\n } catch {}\n }\n const iconNames = [...lucideImports];\n const exports = iconNames.map((n) => `icon as ${n}`).join(\", \");\n return {\n contents: `\nconst icon = (props) => null;\nexport { ${exports} };\nexport default new Proxy({}, { get: (_, name) => name === '__esModule' ? true : icon });\n `.trim(),\n loader: \"jsx\",\n };\n });\n\n // --- framer-motion ---\n tryResolveOrStub(/^framer-motion/, \"motion-stub\");\n build.onLoad({ filter: /.*/, namespace: \"motion-stub\" }, () => ({\n contents: `\nimport React from 'react';\nconst handler = { get: (_, name) => {\n if (name === '__esModule') return true;\n return React.forwardRef((props, ref) => React.createElement(name, { ...props, ref }));\n}};\nexport const motion = new Proxy({}, handler);\nexport const AnimatePresence = ({ children }) => children || null;\nexport function useInView() { return true; }\nexport default { motion, AnimatePresence, useInView };\n `.trim(),\n loader: \"jsx\",\n resolveDir: themePath,\n }));\n\n // --- sonner ---\n tryResolveOrStub(/^sonner$/, \"sonner-stub\");\n build.onLoad({ filter: /.*/, namespace: \"sonner-stub\" }, () => ({\n contents: `\nexport const toast = new Proxy(() => {}, { get: () => () => {} });\nexport const Toaster = () => null;\nexport default { toast, Toaster };\n `.trim(),\n loader: \"jsx\",\n }));\n\n // --- react-hook-form ---\n tryResolveOrStub(/^react-hook-form$/, \"rhf-stub\");\n build.onLoad({ filter: /.*/, namespace: \"rhf-stub\" }, () => ({\n contents: `\nexport function useForm() {\n return {\n register: () => ({}),\n handleSubmit: (fn) => (e) => { e?.preventDefault?.(); fn({}); },\n formState: { errors: {}, isSubmitting: false, isValid: true },\n watch: () => undefined,\n setValue: () => {},\n reset: () => {},\n control: {},\n };\n}\nexport function useController() { return { field: {}, fieldState: {} }; }\nexport function useFormContext() { return useForm(); }\n `.trim(),\n loader: \"js\",\n }));\n\n // --- @hookform/resolvers ---\n tryResolveOrStub(/^@hookform\\/resolvers/, \"hookform-resolvers-stub\");\n build.onLoad(\n { filter: /.*/, namespace: \"hookform-resolvers-stub\" },\n () => ({\n contents: `export function zodResolver() { return () => ({ values: {}, errors: {} }); }`,\n loader: \"js\",\n })\n );\n\n // --- next-intl ---\n tryResolveOrStub(/^next-intl$/, \"next-intl-stub\");\n build.onLoad({ filter: /.*/, namespace: \"next-intl-stub\" }, () => ({\n contents: `\nexport function useTranslations(ns) {\n return (key) => ns ? ns + '.' + key : key;\n}\nexport function useLocale() { return 'en'; }\nexport function useMessages() { return {}; }\n `.trim(),\n loader: \"js\",\n }));\n\n // --- zod (often used with hookform) ---\n tryResolveOrStub(/^zod$/, \"zod-stub\");\n build.onLoad({ filter: /.*/, namespace: \"zod-stub\" }, () => ({\n contents: `\nconst schema = () => ({ parse: (v) => v, safeParse: (v) => ({ success: true, data: v }), optional: schema, min: schema, max: schema, email: schema, url: schema, regex: schema, refine: schema, transform: schema });\nexport const z = { string: schema, number: schema, boolean: schema, object: (s) => ({ ...schema(), shape: s }), array: schema, enum: schema, union: schema, literal: schema, infer: undefined };\nexport default z;\n `.trim(),\n loader: \"js\",\n }));\n },\n };\n}\n\n/**\n * Generate theme-data.json from theme source files using jiti.\n * This provides a server-side fallback for themes without API data.\n */\nasync function generateThemeData(\n themePath: string,\n outputDir: string,\n themeId: string\n): Promise<void> {\n const { createJiti } = await import(\"jiti\");\n const jiti = createJiti(import.meta.url);\n\n let themeConfig: any = null;\n let layoutConfig: any = null;\n const pages: Record<string, any> = {};\n\n // Load theme config\n for (const ext of [\".ts\", \".js\"]) {\n try {\n const mod = await jiti.import(path.join(themePath, `theme.config${ext}`));\n themeConfig = (mod as any).default || mod;\n break;\n } catch {}\n }\n\n // Load layout\n for (const ext of [\".ts\", \".js\"]) {\n try {\n const mod = await jiti.import(path.join(themePath, `theme.layout${ext}`));\n layoutConfig = (mod as any).default || mod;\n break;\n } catch {}\n }\n\n // Load schemas (to merge defaults into page sections)\n const schemas: Record<string, any> = {};\n const sectionsDir = path.join(themePath, \"sections\");\n try {\n const sectionDirs = await fs.readdir(sectionsDir);\n for (const dir of sectionDirs) {\n const schemaFile = path.join(sectionsDir, dir, `${dir}.schema.ts`);\n try {\n await fs.access(schemaFile);\n const mod = await jiti.import(schemaFile);\n // Find the schema export (ends with \"Schema\")\n for (const [key, value] of Object.entries(mod as Record<string, any>)) {\n if (\n key.endsWith(\"Schema\") &&\n value &&\n typeof value === \"object\" &&\n (value as any).type\n ) {\n schemas[(value as any).type] = value;\n }\n }\n } catch {}\n }\n } catch {}\n\n // Load pages\n const pagesDir = path.join(themePath, \"pages\");\n try {\n const files = await fs.readdir(pagesDir);\n for (const file of files) {\n if (!file.match(/\\.(ts|js)$/)) continue;\n const name = file.replace(/\\.(ts|js)$/, \"\");\n try {\n const mod = await jiti.import(path.join(pagesDir, file));\n const config = (mod as any).default || mod;\n\n // Merge schema defaults (components/blocks) into sections\n const sections = (config.sections || []).map((section: any) => {\n const schema = schemas[section.type];\n if (!schema?.defaults) return section;\n return {\n ...section,\n components:\n section.components?.length > 0\n ? section.components\n : schema.defaults.components || [],\n blocks:\n section.blocks?.length > 0\n ? section.blocks\n : schema.defaults.blocks || [],\n settings: {\n ...(schema.defaults.settings || {}),\n ...section.settings,\n },\n };\n });\n\n pages[name] = {\n id: name,\n name: config.title || name,\n path: config.path || `/${name}`,\n config: { id: name, ...config, sections },\n sections,\n seo: config.seo,\n };\n } catch {}\n }\n } catch {}\n\n await fs.writeFile(\n path.join(outputDir, \"theme-data.json\"),\n JSON.stringify(\n {\n themeId,\n theme: {\n id: themeId,\n name: themeConfig?.name || themeId,\n config: themeConfig,\n layout: {\n header: layoutConfig?.headerSections || [],\n footer: layoutConfig?.footerSections || [],\n },\n pages: Object.keys(pages),\n },\n pages,\n },\n null,\n 2\n )\n );\n logger.info(`Generated theme-data.json (${Object.keys(pages).length} pages)`);\n}\n\n/**\n * Content-hash the bundle entry point for cache busting.\n * Renames bundle-entry.js -> bundle-entry-{hash}.js\n */\nasync function contentHashEntry(outputDir: string): Promise<void> {\n const entryPath = path.join(outputDir, \"bundle-entry.js\");\n const mapPath = path.join(outputDir, \"bundle-entry.js.map\");\n\n // Clean old hashed entry files\n const oldFiles = await glob(\"bundle-entry-*.js*\", { cwd: outputDir });\n for (const f of oldFiles) {\n await fs.unlink(path.join(outputDir, f));\n }\n\n let entryContent: string;\n try {\n entryContent = await fs.readFile(entryPath, \"utf-8\");\n } catch {\n // bundle-entry.js not found, try index.js\n const indexPath = path.join(outputDir, \"index.js\");\n try {\n entryContent = await fs.readFile(indexPath, \"utf-8\");\n } catch {\n logger.warning(\"No entry file found in output, skipping content hash\");\n return;\n }\n // For index.ts entry, rename index.js -> bundle-entry-{hash}.js\n const hash = crypto\n .createHash(\"sha256\")\n .update(entryContent)\n .digest(\"hex\")\n .slice(0, 8);\n\n const hashedName = `bundle-entry-${hash}.js`;\n const indexMapPath = path.join(outputDir, \"index.js.map\");\n const hashedMapName = `bundle-entry-${hash}.js.map`;\n\n entryContent = entryContent.replace(\n /\\/\\/# sourceMappingURL=index\\.js\\.map/,\n `//# sourceMappingURL=${hashedMapName}`\n );\n\n await fs.writeFile(path.join(outputDir, hashedName), entryContent);\n await fs.unlink(indexPath);\n\n try {\n await fs.access(indexMapPath);\n await fs.rename(indexMapPath, path.join(outputDir, hashedMapName));\n } catch {\n // No source map\n }\n\n logger.info(`Entry hashed: ${hashedName}`);\n return;\n }\n\n const hash = crypto\n .createHash(\"sha256\")\n .update(entryContent)\n .digest(\"hex\")\n .slice(0, 8);\n\n const hashedName = `bundle-entry-${hash}.js`;\n const hashedMapName = `bundle-entry-${hash}.js.map`;\n\n entryContent = entryContent.replace(\n /\\/\\/# sourceMappingURL=bundle-entry\\.js\\.map/,\n `//# sourceMappingURL=${hashedMapName}`\n );\n\n await fs.writeFile(path.join(outputDir, hashedName), entryContent);\n await fs.unlink(entryPath);\n\n try {\n await fs.access(mapPath);\n await fs.rename(mapPath, path.join(outputDir, hashedMapName));\n } catch {\n // No source map\n }\n\n logger.info(`Entry hashed: ${hashedName}`);\n}\n\n/**\n * Extract dataRequirements from section schema files using jiti.\n * Same pattern as generateThemeData() — jiti handles TypeScript natively.\n * Returns a map of sectionType → dataRequirements object.\n */\nasync function extractDataRequirements(\n themePath: string\n): Promise<Record<string, Record<string, boolean>>> {\n const { createJiti } = await import(\"jiti\");\n const jiti = createJiti(import.meta.url);\n\n const schemaFiles = await glob(\"sections/**/*.schema.ts\", { cwd: themePath });\n const requirements: Record<string, Record<string, boolean>> = {};\n\n for (const file of schemaFiles) {\n try {\n const mod = await jiti.import(path.join(themePath, file));\n const exports = mod as Record<string, any>;\n\n // Find schema exports: look for objects with .type (string) + .dataRequirements\n for (const value of Object.values(exports)) {\n if (\n value &&\n typeof value === \"object\" &&\n typeof value.type === \"string\" &&\n value.dataRequirements &&\n typeof value.dataRequirements === \"object\"\n ) {\n requirements[value.type] = value.dataRequirements;\n }\n }\n } catch (err) {\n logger.warning(\n `Could not load schema ${file}: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n }\n\n return requirements;\n}\n\n/**\n * Generate manifest.json with theme metadata.\n */\nexport async function generateManifest(\n themeName: string,\n themePath: string,\n outputDir: string\n): Promise<void> {\n // Read version and themeId from package.json\n let version = \"1.0.0\";\n let themeId = themeName;\n try {\n const pkgContent = await fs.readFile(\n path.join(themePath, \"package.json\"),\n \"utf-8\"\n );\n const pkg = JSON.parse(pkgContent);\n version = pkg.version || version;\n // Derive themeId from package name: \"@onex-themes/simple\" → \"simple\"\n if (pkg.name) {\n themeId = pkg.name.replace(/^@onex-themes\\//, \"\");\n }\n } catch {\n // Use defaults\n }\n\n const [sectionFiles, blockFiles, schemaFiles] = await Promise.all([\n glob(\"sections/**/index.ts\", { cwd: themePath }),\n glob(\"blocks/**/index.ts\", { cwd: themePath }),\n glob(\"**/*.schema.ts\", { cwd: themePath }),\n ]);\n\n // Extract dataRequirements declared in section schemas\n const dataRequirements = await extractDataRequirements(themePath);\n\n let hasThemeConfig = false;\n try {\n await fs.access(path.join(themePath, \"theme.config.ts\"));\n hasThemeConfig = true;\n } catch {\n // No theme config\n }\n\n const allFiles = await glob(\"**/*\", { cwd: outputDir, nodir: true });\n const jsFiles = allFiles.filter((f) => f.endsWith(\".js\"));\n const cssFiles = allFiles.filter((f) => f.endsWith(\".css\"));\n\n const entryFile =\n jsFiles.find((f) => f.includes(\"bundle-entry\")) || \"bundle-entry.js\";\n\n const manifest = {\n themeId,\n version,\n name: themeId.charAt(0).toUpperCase() + themeId.slice(1),\n compiledAt: new Date().toISOString(),\n format: \"esm\",\n platform: \"browser\",\n target: \"es2020\",\n\n counts: {\n sections: sectionFiles.length,\n blocks: blockFiles.length,\n schemas: schemaFiles.length,\n },\n\n output: {\n entry: entryFile,\n chunks: jsFiles.filter((f) => f !== entryFile && !f.endsWith(\".map\")),\n assets: allFiles.filter((f) =>\n [\".png\", \".jpg\", \".jpeg\", \".svg\", \".gif\", \".webp\"].some((ext) =>\n f.endsWith(ext)\n )\n ),\n stylesheets: cssFiles,\n },\n\n external: [\"react\", \"react-dom\", \"@onexapis/core\"],\n\n source: {\n sections: sectionFiles,\n blocks: blockFiles,\n schemas: schemaFiles,\n hasThemeConfig,\n },\n\n // Section data requirements for server-side prefetching (keyed by section type)\n dataRequirements,\n };\n\n await fs.writeFile(\n path.join(outputDir, \"manifest.json\"),\n JSON.stringify(manifest, null, 2)\n );\n}\n\n/**\n * Compile a standalone theme using esbuild.\n * Produces ESM bundles with React/core externalized to globals.\n *\n * @returns true if build succeeded\n */\nexport async function compileStandaloneTheme(\n themePath: string,\n themeName: string\n): Promise<boolean> {\n const outputDir = path.join(themePath, \"dist\");\n\n // Detect entry point: bundle-entry.ts preferred, fallback to index.ts\n const bundleEntry = path.join(themePath, \"bundle-entry.ts\");\n const indexEntry = path.join(themePath, \"index.ts\");\n\n let entryPoint = indexEntry;\n try {\n await fs.access(bundleEntry);\n entryPoint = bundleEntry;\n } catch {\n // Use index.ts\n }\n\n // Write process shim to a temp file (esbuild inject requires a file path)\n const shimPath = path.join(outputDir, \".process-shim.js\");\n await fs.mkdir(outputDir, { recursive: true });\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n const buildOptions: esbuild.BuildOptions = {\n entryPoints: [entryPoint],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outdir: outputDir,\n splitting: false,\n chunkNames: \"[name]-[hash]\",\n banner: {\n js: '\"use client\";',\n },\n\n plugins: [\n reactGlobalPlugin,\n createCoreGlobalPlugin(themePath),\n createThemeDepsStubPlugin(themePath),\n ],\n\n external: [],\n\n alias: {\n events: \"events/\",\n buffer: \"buffer/\",\n },\n\n inject: [shimPath],\n\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"production\"),\n global: \"globalThis\",\n },\n\n minify: true,\n sourcemap: true,\n logLevel: \"warning\",\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n\n loader: {\n \".tsx\": \"tsx\",\n \".ts\": \"ts\",\n \".jpg\": \"file\",\n \".jpeg\": \"file\",\n \".png\": \"file\",\n \".gif\": \"file\",\n \".svg\": \"file\",\n \".webp\": \"file\",\n },\n\n assetNames: \"assets/[name]-[hash]\",\n publicPath: \"./\",\n metafile: true,\n };\n\n try {\n const result = await esbuild.build(buildOptions);\n\n // Clean up temp shim file\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n // Content-hash the entry point\n await contentHashEntry(outputDir);\n\n // Generate manifest\n await generateManifest(themeName, themePath, outputDir);\n\n // Generate theme-data.json for server-side fallback\n await generateThemeData(themePath, outputDir, themeName);\n\n // Generate bundle.css with all Tailwind classes used by the theme\n // This is injected into the editor preview iframe so it matches the storefront\n await generateThemeCSS(themePath, outputDir);\n\n // Log bundle analysis\n if (result.metafile) {\n const outputs = result.metafile.outputs;\n let totalSize = 0;\n for (const output of Object.values(outputs)) {\n totalSize += output.bytes;\n }\n const totalKB = (totalSize / 1024).toFixed(2);\n logger.info(`Bundle size: ${totalKB} KB`);\n }\n\n return true;\n } catch (error) {\n // Clean up temp shim file on failure\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n logger.error(`esbuild compilation failed: ${error}`);\n return false;\n }\n}\n\n/**\n * Compile standalone theme in dev mode with incremental rebuilds.\n * Differences from production compileStandaloneTheme:\n * - Uses esbuild.context() for incremental rebuilds\n * - No minification, no content-hash (stable bundle-entry.js filename)\n * - Returns the build context for subsequent rebuilds\n */\nexport async function compileStandaloneThemeDev(\n themePath: string,\n themeName: string\n): Promise<{ context: esbuild.BuildContext; outputDir: string }> {\n const outputDir = path.join(themePath, \"dist\");\n\n // Detect entry point (same as production build)\n const bundleEntry = path.join(themePath, \"bundle-entry.ts\");\n const indexEntry = path.join(themePath, \"index.ts\");\n let entryPoint = indexEntry;\n try {\n await fs.access(bundleEntry);\n entryPoint = bundleEntry;\n } catch {\n // Use index.ts\n }\n\n // Write process shim\n const shimPath = path.join(outputDir, \".process-shim.js\");\n await fs.mkdir(outputDir, { recursive: true });\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n const buildOptions: esbuild.BuildOptions = {\n entryPoints: [entryPoint],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outdir: outputDir,\n splitting: false,\n banner: {\n js: '\"use client\";',\n },\n\n plugins: [\n reactGlobalPlugin,\n createCoreGlobalPlugin(themePath),\n createThemeDepsStubPlugin(themePath),\n ],\n external: [],\n\n alias: {\n events: \"events/\",\n buffer: \"buffer/\",\n },\n\n inject: [shimPath],\n\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"development\"),\n global: \"globalThis\",\n },\n\n minify: false,\n sourcemap: true,\n logLevel: \"warning\",\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n\n loader: {\n \".tsx\": \"tsx\",\n \".ts\": \"ts\",\n \".jpg\": \"file\",\n \".jpeg\": \"file\",\n \".png\": \"file\",\n \".gif\": \"file\",\n \".svg\": \"file\",\n \".webp\": \"file\",\n },\n\n assetNames: \"assets/[name]-[hash]\",\n publicPath: \"./\",\n metafile: true,\n };\n\n const context = await esbuild.context(buildOptions);\n\n // Initial build\n await context.rebuild();\n\n // NOTE: Do NOT delete shimPath here — incremental rebuilds need it.\n // It will be cleaned up when context.dispose() is called.\n\n // Generate manifest (no content-hash step for dev)\n await generateManifest(themeName, themePath, outputDir);\n\n // Generate theme-data.json for server-side fallback\n await generateThemeData(themePath, outputDir, themeName);\n\n return { context, outputDir };\n}\n\n/**\n * Compile the preview runtime (React + @onexapis/core bundled in).\n * One-time compilation on dev server startup.\n * React and core are bundled INTO the output (not externalized) because\n * the preview runtime IS the host that provides these globals.\n */\nexport async function compilePreviewRuntime(\n themePath: string\n): Promise<string> {\n const outputDir = path.join(themePath, \"dist\");\n await fs.mkdir(outputDir, { recursive: true });\n\n const outputPath = path.join(outputDir, \"preview-runtime.js\");\n\n // Resolve the preview-app.tsx source from CLI package\n // In dev: src/preview/preview-app.tsx\n // In dist: preview/preview-app.tsx (copied by tsup config)\n const locations = [\n path.join(__dirname, \"..\", \"preview\", \"preview-app.tsx\"),\n path.join(__dirname, \"preview\", \"preview-app.tsx\"),\n path.join(__dirname, \"..\", \"..\", \"src\", \"preview\", \"preview-app.tsx\"),\n ];\n\n let previewEntryPath: string | null = null;\n for (const loc of locations) {\n try {\n await fs.access(loc);\n previewEntryPath = loc;\n break;\n } catch {\n // Try next location\n }\n }\n\n if (!previewEntryPath) {\n throw new Error(\n `Preview app source not found. Searched:\\n${locations.join(\"\\n\")}`\n );\n }\n\n // Plugin to stub out server-only packages that leak from @onexapis/core chunks\n const serverStubPlugin: Plugin = {\n name: \"server-stub\",\n setup(build) {\n // Stub server-only marker package\n build.onResolve({ filter: /^server-only$/ }, () => ({\n path: \"server-only\",\n namespace: \"server-stub\",\n }));\n build.onLoad({ filter: /.*/, namespace: \"server-stub\" }, () => ({\n contents: \"// server-only stub for browser\",\n loader: \"js\",\n }));\n\n // Stub Node.js built-ins that leak from server chunks\n const nodeBuiltins = [\n \"fs\",\n \"fs/promises\",\n \"path\",\n \"os\",\n \"crypto\",\n \"stream\",\n \"url\",\n \"http\",\n \"https\",\n \"net\",\n \"tls\",\n \"child_process\",\n \"util\",\n \"events\",\n \"buffer\",\n \"querystring\",\n \"zlib\",\n ];\n for (const mod of nodeBuiltins) {\n build.onResolve(\n { filter: new RegExp(`^${mod.replace(\"/\", \"\\\\/\")}$`) },\n () => ({\n path: mod,\n namespace: \"node-stub\",\n })\n );\n }\n build.onLoad({ filter: /.*/, namespace: \"node-stub\" }, (args) => {\n const stubs: Record<string, string> = {\n events:\n \"export class EventEmitter { on(){return this} off(){return this} emit(){return false} addListener(){return this} removeListener(){return this} } export default { EventEmitter };\",\n path: \"export function join(){return ''} export function resolve(){return ''} export function dirname(){return ''} export function basename(){return ''} export function extname(){return ''} export default {};\",\n fs: \"export const promises = {}; export function readFileSync(){return ''} export function existsSync(){return false} export default {};\",\n };\n return {\n contents: stubs[args.path] || \"export default {};\",\n loader: \"js\",\n };\n });\n\n // Stub optional UI dependencies that may not be installed in standalone themes.\n // First try to resolve normally; only stub if the package is missing.\n const lucideIconNames = new Set<string>();\n let lucideScanned = false;\n build.onResolve({ filter: /^lucide-react/ }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n return { path: args.path, namespace: \"lucide-stub\" };\n });\n build.onLoad({ filter: /.*/, namespace: \"lucide-stub\" }, async () => {\n // Dynamically scan @onexapis/core source for lucide-react imports\n if (!lucideScanned) {\n lucideScanned = true;\n // Try multiple locations to find @onexapis/core source\n const coreSrcCandidates = [\n path.join(themePath, \"node_modules\", \"@onexapis\", \"core\", \"src\"),\n path.join(themePath, \"..\", \"..\", \"packages\", \"core\", \"src\"), // monorepo sibling\n path.join(\n __dirname,\n \"..\",\n \"..\",\n \"..\",\n \"..\",\n \"packages\",\n \"core\",\n \"src\"\n ), // from CLI src\n ];\n let coreSourceDir: string | null = null;\n for (const candidate of coreSrcCandidates) {\n try {\n await fs.access(candidate);\n coreSourceDir = candidate;\n break;\n } catch {}\n }\n if (coreSourceDir) {\n try {\n const scanned = await scanImportsFromPackage(\n coreSourceDir,\n \"lucide-react\"\n );\n for (const names of Object.values(scanned)) {\n for (const name of names) lucideIconNames.add(name);\n }\n } catch {}\n } else {\n // No source dir found (e.g. global install) — scan core dist .mjs files\n const coreDistCandidates: string[] = [\n path.join(themePath, \"node_modules\", \"@onexapis\", \"core\", \"dist\"),\n ];\n const resolvedDist = await resolveNodeModulesFile(\n __dirname,\n path.join(\"@onexapis\", \"core\", \"dist\")\n );\n if (resolvedDist) coreDistCandidates.push(resolvedDist);\n\n for (const candidate of coreDistCandidates) {\n try {\n await fs.access(candidate);\n const mjsFiles = await glob(\"*.mjs\", { cwd: candidate });\n const importRegex =\n /import\\s*\\{([^}]+)\\}\\s*from\\s*[\"']lucide-react[\"']/g;\n for (const file of mjsFiles) {\n const content = await fs.readFile(\n path.join(candidate, file),\n \"utf-8\"\n );\n for (const match of content.matchAll(importRegex)) {\n for (const name of match[1].split(\",\")) {\n const original = name\n .trim()\n .split(/\\s+as\\s+/)[0]\n .trim();\n if (original && !original.startsWith(\"type \")) {\n lucideIconNames.add(original);\n }\n }\n }\n }\n break; // found and scanned dist dir\n } catch {}\n }\n }\n // Also scan theme source files\n try {\n const scanned = await scanImportsFromPackage(\n themePath,\n \"lucide-react\"\n );\n for (const names of Object.values(scanned)) {\n for (const name of names) lucideIconNames.add(name);\n }\n } catch {}\n }\n\n const iconExports = [...lucideIconNames]\n .map((n) => `icon as ${n}`)\n .join(\", \");\n return {\n contents: `\nconst icon = (props) => null;\nexport { ${iconExports} };\nexport default new Proxy({}, { get: (_, name) => name === '__esModule' ? true : icon });\n `.trim(),\n loader: \"jsx\",\n };\n });\n\n build.onResolve({ filter: /^framer-motion/ }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n // Try resolving from theme directory first\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n // Try resolving via createRequire (works in bundled CLI / monorepo)\n try {\n const req = createRequire(import.meta.url || __filename);\n const cjsPath = req.resolve(\"framer-motion\");\n // Navigate to package root and use ESM entry for browser bundling\n const pkgDir = cjsPath.replace(/[/\\\\]dist[/\\\\].*$/, \"\");\n const esmEntry = path.join(pkgDir, \"dist\", \"es\", \"index.mjs\");\n const { existsSync } = await import(\"fs\");\n if (existsSync(esmEntry)) {\n return { path: esmEntry, namespace: \"file\" };\n }\n // Fallback: use the resolved path as-is\n return { path: cjsPath, namespace: \"file\" };\n } catch {}\n return { path: args.path, namespace: \"motion-stub\" };\n });\n build.onLoad({ filter: /.*/, namespace: \"motion-stub\" }, () => ({\n contents: `\nimport React from 'react';\nconst MotionComponent = React.forwardRef((props, ref) => {\n const { initial, animate, exit, variants, transition, whileInView, whileHover, whileTap, viewport, onAnimationComplete, layout, layoutId, style, className, ...rest } = props;\n return React.createElement(rest.as || 'div', { ref, style, className, ...rest }, rest.children);\n});\nconst handler = { get: (_, name) => {\n if (name === '__esModule') return true;\n if (name === 'create') return () => new Proxy({}, handler);\n return MotionComponent;\n}};\nexport const motion = new Proxy({}, handler);\nexport const AnimatePresence = (props) => props.children || null;\nexport const useInView = () => true;\nexport const useAnimation = () => ({ start: () => {}, stop: () => {}, set: () => {} });\nexport const useMotionValue = (v) => ({ get: () => v, set: () => {}, onChange: () => () => {} });\nexport const useTransform = (v) => v;\nexport const useScroll = () => ({ scrollY: { get: () => 0, onChange: () => () => {} }, scrollYProgress: { get: () => 0, onChange: () => () => {} } });\nexport default { motion, AnimatePresence };\n `.trim(),\n loader: \"jsx\",\n }));\n\n // Stub Next.js modules (not installed in standalone themes)\n build.onResolve({ filter: /^next\\// }, async (args) => {\n if (args.pluginData?.skipStub) return undefined;\n try {\n const result = await build.resolve(args.path, {\n kind: args.kind,\n resolveDir: args.resolveDir,\n importer: args.importer,\n namespace: \"file\",\n pluginData: { skipStub: true },\n });\n if (!result.errors.length) return result;\n } catch {}\n return { path: args.path, namespace: \"next-stub\" };\n });\n build.onLoad({ filter: /.*/, namespace: \"next-stub\" }, (args) => {\n const stubs: Record<string, string> = {\n \"next/image\": `\nimport React from 'react';\nconst Image = React.forwardRef((props, ref) => {\n const { src, alt, width, height, fill, priority, sizes, quality, placeholder, blurDataURL, onLoad, onError, style, className, ...rest } = props;\n const imgSrc = typeof src === 'object' ? src.src : src;\n const fillStyle = fill ? { position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: style?.objectFit || 'cover', display: 'block' } : {};\n const mergedStyle = { ...fillStyle, ...style };\n return React.createElement('img', {\n ref,\n src: imgSrc,\n alt,\n width: fill ? undefined : width,\n height: fill ? undefined : height,\n loading: priority ? 'eager' : 'lazy',\n style: Object.keys(mergedStyle).length > 0 ? mergedStyle : undefined,\n className,\n onLoad,\n onError,\n ...rest,\n });\n});\nexport default Image;\n `,\n \"next/link\": `\nconst Link = ({ href, children, ...rest }) => React.createElement('a', { href, ...rest }, children);\nimport React from 'react';\nexport default Link;\n `,\n \"next/navigation\": `\nexport function useRouter() { return { push(u){window.location.href=u}, replace(u){window.location.href=u}, back(){window.history.back()}, forward(){window.history.forward()}, refresh(){window.location.reload()}, prefetch(){} }; }\nexport function usePathname() { return window.location.pathname; }\nexport function useSearchParams() { return new URLSearchParams(window.location.search); }\nexport function useParams() { return {}; }\nexport function redirect(url) { window.location.href = url; }\nexport function notFound() { throw new Error('Not Found'); }\n `,\n \"next/headers\": `\nexport function cookies() { return { get(){}, getAll(){ return []; }, set(){}, delete(){}, has(){ return false; } }; }\nexport function headers() { return new Headers(); }\n `,\n };\n return {\n contents: stubs[args.path] || \"export default {};\",\n loader: \"jsx\",\n resolveDir: themePath,\n };\n });\n },\n };\n\n // Write process shim for preview runtime (CJS code paths may reference `process`)\n const shimPath = path.join(outputDir, \".process-shim-preview.js\");\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n await esbuild.build({\n entryPoints: [previewEntryPath],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outfile: outputPath,\n // Bundle React + core INTO the output (NOT externalized)\n external: [],\n plugins: [serverStubPlugin],\n inject: [shimPath],\n minify: false,\n sourcemap: true,\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"development\"),\n \"process.env.NEXT_PUBLIC_API_URL\": JSON.stringify(\n process.env.NEXT_PUBLIC_API_URL || \"\"\n ),\n \"process.env.NEXT_PUBLIC_COMPANY_ID\": JSON.stringify(\n process.env.NEXT_PUBLIC_COMPANY_ID || \"\"\n ),\n global: \"globalThis\",\n },\n loader: { \".tsx\": \"tsx\", \".ts\": \"ts\" },\n // Force CJS resolution to avoid sideEffects:false dropping ESM chunk imports\n conditions: [\"require\", \"default\"],\n mainFields: [\"main\"],\n logOverride: {\n \"ignored-bare-import\": \"silent\",\n },\n });\n\n // Clean up temp shim file\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n return outputPath;\n}\n","import path from \"path\";\nimport fs from \"fs\";\nimport { execSync } from \"child_process\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport {\n validateThemeName,\n toKebabCase,\n toPascalCase,\n} from \"../utils/validators\";\nimport {\n writeFile,\n copyTemplate,\n detectPackageManager,\n installDependencies,\n} from \"../utils/file-helpers\";\n\ninterface InitOptions {\n template?: string;\n noInstall?: boolean;\n git?: boolean;\n yes?: boolean;\n}\n\nexport async function initCommand(\n projectName?: string,\n options: InitOptions = {}\n): Promise<void> {\n logger.header(\"Create New OneX Theme Project\");\n\n // Validate project name or prompt for it\n let name: string;\n\n if (!projectName) {\n const { inputName } = await inquirer.prompt([\n {\n type: \"input\",\n name: \"inputName\",\n message: \"Project name (kebab-case):\",\n validate: (input: string) => {\n if (!input) return \"Project name is required\";\n const kebabName = toKebabCase(input);\n if (!validateThemeName(kebabName)) {\n return \"Invalid project name. Use lowercase letters, numbers, and hyphens only.\";\n }\n if (fs.existsSync(path.join(process.cwd(), kebabName))) {\n return `Directory \"${kebabName}\" already exists`;\n }\n return true;\n },\n },\n ]);\n name = toKebabCase(inputName);\n } else {\n name = toKebabCase(projectName);\n }\n\n // Check if directory already exists\n const projectPath = path.join(process.cwd(), name);\n if (fs.existsSync(projectPath)) {\n logger.error(`Directory \"${name}\" already exists.`);\n process.exit(1);\n }\n\n // Skip prompts if --yes flag is provided\n let displayName: string;\n let description: string;\n let author: string;\n let template: string;\n\n if (options.yes) {\n displayName = toPascalCase(name)\n .replace(/([A-Z])/g, \" $1\")\n .trim();\n description = \"A custom OneX theme\";\n author = \"\";\n template = options.template || \"default\";\n } else {\n const answers = await inquirer.prompt([\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name:\",\n default: toPascalCase(name)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Theme description:\",\n default: \"A custom OneX theme\",\n },\n {\n type: \"input\",\n name: \"author\",\n message: \"Author name:\",\n default: \"\",\n },\n {\n type: \"list\",\n name: \"template\",\n message: \"Template to use:\",\n choices: [\n { name: \"Default (basic theme structure)\", value: \"default\" },\n { name: \"Minimal (bare minimum)\", value: \"minimal\" },\n ],\n default: options.template || \"default\",\n },\n ]);\n\n displayName = answers.displayName;\n description = answers.description;\n author = answers.author;\n template = answers.template;\n }\n\n const data = {\n projectName: name,\n themeName: name,\n themeNamePascal: toPascalCase(name),\n displayName,\n description,\n author,\n template,\n };\n\n // Prompt for Figma API key (optional, skip if --yes)\n let figmaApiKey = \"\";\n if (!options.yes) {\n const figmaAnswer = await inquirer.prompt([\n {\n type: \"password\",\n name: \"figmaApiKey\",\n message:\n \"Figma API Key (optional, for Figma-to-code MCP — press Enter to skip):\",\n },\n ]);\n figmaApiKey = figmaAnswer.figmaApiKey || \"\";\n }\n\n logger.startSpinner(\"Creating project structure...\");\n\n try {\n // Create project directory\n fs.mkdirSync(projectPath, { recursive: true });\n\n // Copy template files (real theme source — no EJS)\n await copyTemplate(template, projectPath, data);\n\n // Rename theme ID/name in copied files\n await renameThemeInFiles(\n projectPath,\n name,\n displayName,\n description,\n author\n );\n\n // Patch .mcp.json with Figma API key (or remove figma server if no key)\n const mcpJsonPath = path.join(projectPath, \".mcp.json\");\n if (fs.existsSync(mcpJsonPath)) {\n let mcpContent = fs.readFileSync(mcpJsonPath, \"utf-8\");\n if (figmaApiKey) {\n mcpContent = mcpContent.replace(\"__FIGMA_API_KEY__\", figmaApiKey);\n } else {\n // Remove figma server entry if no key provided\n try {\n const mcpJson = JSON.parse(mcpContent);\n delete mcpJson.mcpServers.figma;\n mcpContent = JSON.stringify(mcpJson, null, 2) + \"\\n\";\n } catch {}\n }\n fs.writeFileSync(mcpJsonPath, mcpContent, \"utf-8\");\n }\n\n logger.stopSpinner(true, \"Project structure created!\");\n\n // Initialize git if requested\n if (options.git) {\n logger.startSpinner(\"Initializing git repository...\");\n try {\n execSync(\"git init\", { cwd: projectPath, stdio: \"ignore\" });\n execSync(\"git add .\", { cwd: projectPath, stdio: \"ignore\" });\n execSync('git commit -m \"Initial commit from onexthm init\"', {\n cwd: projectPath,\n stdio: \"ignore\",\n });\n logger.stopSpinner(true, \"Git repository initialized!\");\n } catch {\n logger.stopSpinner(false, \"Failed to initialize git\");\n }\n }\n\n // Install dependencies\n if (!options.noInstall) {\n logger.newLine();\n const packageManager = detectPackageManager();\n logger.startSpinner(`Installing dependencies with ${packageManager}...`);\n try {\n await installDependencies(projectPath, packageManager);\n logger.stopSpinner(true, \"Dependencies installed!\");\n } catch {\n logger.stopSpinner(false, \"Failed to install dependencies\");\n logger.info(\n \"You can install dependencies manually by running: cd \" +\n name +\n \" && npm install\"\n );\n }\n }\n\n // Print success message and next steps\n logger.newLine();\n logger.section(\"Success! 🎉\");\n logger.newLine();\n logger.info(`Created OneX theme project at: ${projectPath}`);\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(` cd ${name}`);\n if (options.noInstall) {\n logger.log(` npm install`);\n }\n logger.log(` npm run build # Build your theme`);\n logger.log(` npm run dev # Start development mode`);\n logger.newLine();\n logger.section(\"Theme structure:\");\n logger.log(\" bundle-entry.ts - Theme manifest and exports\");\n logger.log(\n \" theme.config.ts - Design tokens (colors, typography, etc.)\"\n );\n logger.log(\" theme.layout.ts - Header and footer configuration\");\n logger.log(\" sections/ - Custom sections for your theme\");\n logger.log(\" pages/ - Page configurations\");\n logger.log(\" CLAUDE.md - AI assistant context\");\n logger.newLine();\n logger.success(`Happy theming! 🎨`);\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create project\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n // Clean up on failure\n if (fs.existsSync(projectPath)) {\n fs.rmSync(projectPath, { recursive: true, force: true });\n }\n process.exit(1);\n }\n}\n\n/**\n * Rename theme ID/name in copied template files.\n * Replaces \"simple\"/\"My Simple Theme\" with the user's theme name.\n */\nasync function renameThemeInFiles(\n projectPath: string,\n themeName: string,\n displayName: string,\n description: string,\n author: string\n): Promise<void> {\n // Only rename in metadata files — NOT in sections/pages (section type IDs must stay)\n // theme.config.ts — update id, name, description\n const configPath = path.join(projectPath, \"theme.config.ts\");\n if (fs.existsSync(configPath)) {\n let content = fs.readFileSync(configPath, \"utf-8\");\n // Keep id as \"my-simple\" — section types depend on it for prefix stripping\n content = content.replace(\n /name: \"My Simple Theme\"/,\n `name: \"${displayName}\"`\n );\n content = content.replace(\n /description: \".*?\"/,\n `description: \"${description}\"`\n );\n fs.writeFileSync(configPath, content, \"utf-8\");\n }\n\n // package.json — update name, description\n const pkgPath = path.join(projectPath, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n let content = fs.readFileSync(pkgPath, \"utf-8\");\n content = content.replace(\n /@onex-themes\\/my-simple/g,\n `@onex-themes/${themeName}`\n );\n content = content.replace(\n /\"description\": \".*?\"/,\n `\"description\": \"${description}\"`\n );\n fs.writeFileSync(pkgPath, content, \"utf-8\");\n }\n}\n\nfunction toCamelCase(str: string): string {\n return str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n}\n\n// Legacy generator functions (kept for backward compat, unused with new template)\nfunction generateManifest(data: {\n themeName: string;\n displayName: string;\n description: string;\n author: string;\n}): string {\n return `import type { ThemeExport } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Theme Manifest\n * ${data.description}\n */\nexport const manifest: ThemeExport = {\n id: \"${data.themeName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n version: \"1.0.0\",\n author: \"${data.author}\",\n\n // Theme configuration\n config: () => import(\"./config\").then((m) => m.themeConfig),\n\n // Theme layout (header/footer sections)\n layout: () => import(\"./layout\").then((m) => m.themeLayout),\n\n // Available sections in this theme\n sections: {\n // Example: hero: () => import(\"./sections/hero\").then((m) => m.heroSchema),\n },\n\n // Available blocks in this theme\n blocks: {\n // Example: productCard: () => import(\"./blocks/product-card\").then((m) => m.productCardDefinition),\n },\n\n // Default pages\n pages: {\n home: () => import(\"./pages/home\").then((m) => m.homePageConfig),\n },\n\n // Supported page types\n supportedPageTypes: [\"home\", \"about\", \"contact\", \"custom\"],\n\n // Preview image (optional)\n preview: undefined,\n\n // Tags for categorization (optional)\n tags: [\"custom\"],\n};\n\nexport default manifest;\n`;\n}\n\nfunction generateThemeConfig(data: {\n themeName: string;\n displayName: string;\n}): string {\n return `import type { ThemeConfig } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Theme Configuration\n * Design tokens: colors, typography, spacing, etc.\n */\nexport const themeConfig: ThemeConfig = {\n // Color palette\n colors: {\n primary: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n },\n secondary: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n },\n accent: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\",\n },\n },\n\n // Typography\n typography: {\n fontFamily: {\n sans: [\"Inter\", \"system-ui\", \"sans-serif\"],\n serif: [\"Georgia\", \"serif\"],\n mono: [\"Monaco\", \"monospace\"],\n },\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n },\n },\n\n // Spacing\n spacing: {\n xs: \"0.5rem\",\n sm: \"1rem\",\n md: \"1.5rem\",\n lg: \"2rem\",\n xl: \"3rem\",\n \"2xl\": \"4rem\",\n \"3xl\": \"6rem\",\n \"4xl\": \"8rem\",\n },\n\n // Border radius\n borderRadius: {\n none: \"0\",\n sm: \"0.125rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n full: \"9999px\",\n },\n\n // Breakpoints\n breakpoints: {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n },\n};\n`;\n}\n\nfunction generateThemeLayout(data: { themeName: string }): string {\n return `import type { ThemeLayoutConfig } from \"@onexapis/core\";\n\n/**\n * ${data.themeName} Theme Layout\n * Define header and footer sections\n */\nexport const themeLayout: ThemeLayoutConfig = {\n // Header section configuration\n header: undefined,\n // Example:\n // header: {\n // type: \"header\",\n // template: \"default\",\n // enabled: true,\n // settings: {},\n // },\n\n // Footer section configuration\n footer: undefined,\n // Example:\n // footer: {\n // type: \"footer\",\n // template: \"default\",\n // enabled: true,\n // settings: {},\n // },\n};\n`;\n}\n\nfunction generateThemeIndex(data: {\n themeName: string;\n themeNamePascal: string;\n}): string {\n return `/**\n * ${data.themeNamePascal} Theme\n */\n\nexport { manifest as ${data.themeNamePascal}Manifest } from \"./manifest\";\nexport { themeConfig as ${data.themeNamePascal}Config } from \"./config\";\nexport { themeLayout as ${data.themeNamePascal}Layout } from \"./layout\";\n`;\n}\n\nfunction generateHomePage(data: { displayName: string }): string {\n return `import type { PageConfig } from \"@onexapis/core\";\n\n/**\n * Home Page Configuration\n */\nexport const homePageConfig: PageConfig = {\n type: \"home\",\n title: \"${data.displayName}\",\n description: \"Welcome to ${data.displayName}\",\n\n // SEO metadata\n seo: {\n title: \"${data.displayName} - Home\",\n description: \"Welcome to ${data.displayName}\",\n keywords: [],\n ogImage: undefined,\n },\n\n // Page sections\n sections: [\n // Add your sections here\n // Example:\n // {\n // id: \"hero-1\",\n // type: \"hero\",\n // template: \"default\",\n // order: 0,\n // enabled: true,\n // settings: {},\n // components: [],\n // blocks: [],\n // },\n ],\n};\n`;\n}\n","/**\n * Validation utilities for CLI inputs\n */\n\n/**\n * Validate component/section/block name\n * Must be kebab-case and alphanumeric\n */\nexport function validateName(name: string): boolean {\n return /^[a-z0-9]+(-[a-z0-9]+)*$/.test(name);\n}\n\n/**\n * Convert string to kebab-case\n */\nexport function toKebabCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n}\n\n/**\n * Convert string to PascalCase\n */\nexport function toPascalCase(str: string): string {\n return str\n .split(/[-_\\s]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(\"\");\n}\n\n/**\n * Convert string to camelCase\n */\nexport function toCamelCase(str: string): string {\n const pascal = toPascalCase(str);\n return pascal.charAt(0).toLowerCase() + pascal.slice(1);\n}\n\n/**\n * Validate theme name\n */\nexport function validateThemeName(name: string): boolean {\n return /^[a-z][a-z0-9-]*$/.test(name);\n}\n\n/**\n * Check if path exists\n */\nexport function pathExists(filePath: string): boolean {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const fs = require(\"fs-extra\");\n return fs.existsSync(filePath);\n}\n\n/**\n * Validate section category\n */\nexport function validateCategory(category: string): boolean {\n const validCategories = [\n \"headers\",\n \"heroes\",\n \"content\",\n \"features\",\n \"testimonials\",\n \"galleries\",\n \"cta\",\n \"footers\",\n \"ecommerce\",\n \"blog\",\n \"contact\",\n ];\n return validCategories.includes(category);\n}\n\n/**\n * Get valid categories\n */\nexport function getValidCategories(): string[] {\n return [\n \"headers\",\n \"heroes\",\n \"content\",\n \"features\",\n \"testimonials\",\n \"galleries\",\n \"cta\",\n \"footers\",\n \"ecommerce\",\n \"blog\",\n \"contact\",\n ];\n}\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport ejs from \"ejs\";\nimport { execSync } from \"child_process\";\nimport { logger } from \"./logger\";\n\n/**\n * Render a template file with EJS\n */\nexport async function renderTemplate(\n templatePath: string,\n data: Record<string, unknown>\n): Promise<string> {\n const template = await fs.readFile(templatePath, \"utf-8\");\n return ejs.render(template, data);\n}\n\n/**\n * Write a file with directory creation\n */\nexport async function writeFile(\n filePath: string,\n content: string\n): Promise<void> {\n await fs.ensureDir(path.dirname(filePath));\n await fs.writeFile(filePath, content, \"utf-8\");\n}\n\n/**\n * Get the templates directory\n * Works in both development and production (bundled) environments\n */\nfunction getTemplatesDir(): string {\n // Try common locations\n const locations = [\n path.join(__dirname, \"../../templates\"), // Development\n path.join(__dirname, \"../templates\"), // Production (dist/)\n path.join(process.cwd(), \"templates\"), // Fallback\n path.join(process.cwd(), \"packages/cli/templates\"), // Monorepo\n ];\n\n for (const location of locations) {\n if (fs.existsSync(location)) {\n return location;\n }\n }\n\n throw new Error(\"Templates directory not found\");\n}\n\n/**\n * Copy template directory\n */\nexport async function copyTemplate(\n templateName: string,\n targetDir: string,\n data: Record<string, unknown>\n): Promise<void> {\n // Get template directory from CLI package\n const templatesDir = getTemplatesDir();\n const templateDir = path.join(templatesDir, templateName);\n\n if (!fs.existsSync(templateDir)) {\n throw new Error(\n `Template \"${templateName}\" not found at ${templateDir}. Available templates: ${fs.readdirSync(templatesDir).join(\", \")}`\n );\n }\n\n await fs.ensureDir(targetDir);\n\n const files = await fs.readdir(templateDir);\n\n for (const file of files) {\n const templatePath = path.join(templateDir, file);\n const targetPath = path.join(targetDir, file);\n\n const stat = await fs.stat(templatePath);\n\n if (stat.isDirectory()) {\n // Recursively copy directories\n await copyTemplateDir(templatePath, targetPath, data);\n } else if (file.endsWith(\".ejs\")) {\n // Render EJS template\n const content = await renderTemplate(templatePath, data);\n const outputPath = targetPath.replace(/\\.ejs$/, \"\");\n await writeFile(outputPath, content);\n } else {\n // Copy file as-is\n await fs.copy(templatePath, targetPath);\n }\n }\n}\n\n/**\n * Internal helper to copy a template directory recursively\n */\nasync function copyTemplateDir(\n templateDir: string,\n targetDir: string,\n data: Record<string, unknown>\n): Promise<void> {\n await fs.ensureDir(targetDir);\n\n const files = await fs.readdir(templateDir);\n\n for (const file of files) {\n const templatePath = path.join(templateDir, file);\n const targetPath = path.join(targetDir, file);\n\n const stat = await fs.stat(templatePath);\n\n if (stat.isDirectory()) {\n await copyTemplateDir(templatePath, targetPath, data);\n } else if (file.endsWith(\".ejs\")) {\n // Render EJS template\n const content = await renderTemplate(templatePath, data);\n const outputPath = targetPath.replace(/\\.ejs$/, \"\");\n await writeFile(outputPath, content);\n } else {\n // Copy file as-is\n await fs.copy(templatePath, targetPath);\n }\n }\n}\n\n/**\n * Get project root directory\n */\nexport function getProjectRoot(): string {\n let currentDir = process.cwd();\n\n // Look for package.json with workspace config or themes directory\n while (currentDir !== path.parse(currentDir).root) {\n const packageJsonPath = path.join(currentDir, \"package.json\");\n\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = fs.readJsonSync(packageJsonPath);\n\n // Check if this is the root (has workspaces, src/themes, or themes)\n if (\n packageJson.workspaces ||\n fs.existsSync(path.join(currentDir, \"src/themes\")) ||\n fs.existsSync(path.join(currentDir, \"themes\"))\n ) {\n return currentDir;\n }\n }\n\n currentDir = path.dirname(currentDir);\n }\n\n return process.cwd();\n}\n\n/**\n * Get themes directory\n */\nexport function getThemesDir(): string {\n const root = getProjectRoot();\n if (fs.existsSync(path.join(root, \"themes\")))\n return path.join(root, \"themes\");\n if (fs.existsSync(path.join(root, \"src/themes\")))\n return path.join(root, \"src/themes\");\n // Standalone theme: parent dir acts as themes dir\n return path.dirname(root);\n}\n\n/**\n * Get features directory\n */\nexport function getFeaturesDir(): string {\n return path.join(getProjectRoot(), \"src/features\");\n}\n\n/**\n * Check if running in OneX project\n */\nexport function isOneXProject(): boolean {\n const root = getProjectRoot();\n return (\n fs.existsSync(path.join(root, \"themes\")) ||\n fs.existsSync(path.join(root, \"src/themes\")) ||\n fs.existsSync(path.join(root, \"theme.config.ts\")) ||\n fs.existsSync(path.join(root, \"bundle-entry.ts\"))\n );\n}\n\n/**\n * Ensure running in OneX project\n */\nexport function ensureOneXProject(): void {\n if (!isOneXProject()) {\n logger.error(\n \"Not in a OneX project. Please run this command from a OneX project root.\"\n );\n process.exit(1);\n }\n}\n\n/**\n * List available themes\n */\nexport function listThemes(): string[] {\n const themesDir = getThemesDir();\n\n if (!fs.existsSync(themesDir)) {\n return [];\n }\n\n return fs.readdirSync(themesDir).filter((name) => {\n const themePath = path.join(themesDir, name);\n return (\n fs.statSync(themePath).isDirectory() &&\n (fs.existsSync(path.join(themePath, \"theme.config.ts\")) ||\n fs.existsSync(path.join(themePath, \"bundle-entry.ts\")) ||\n fs.existsSync(path.join(themePath, \"manifest.ts\")))\n );\n });\n}\n\n/**\n * Check if theme exists\n */\nexport function themeExists(themeName: string): boolean {\n const themePath = path.join(getThemesDir(), themeName);\n return (\n fs.existsSync(themePath) &&\n (fs.existsSync(path.join(themePath, \"theme.config.ts\")) ||\n fs.existsSync(path.join(themePath, \"bundle-entry.ts\")) ||\n fs.existsSync(path.join(themePath, \"manifest.ts\")))\n );\n}\n\n/**\n * Detect package manager (npm, yarn, pnpm, bun)\n */\nexport function detectPackageManager(): \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" {\n // Check if running with specific package manager\n const userAgent = process.env.npm_config_user_agent || \"\";\n\n if (userAgent.includes(\"pnpm\")) return \"pnpm\";\n if (userAgent.includes(\"yarn\")) return \"yarn\";\n if (userAgent.includes(\"bun\")) return \"bun\";\n\n // Check for lock files in cwd\n const cwd = process.cwd();\n if (fs.existsSync(path.join(cwd, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (fs.existsSync(path.join(cwd, \"yarn.lock\"))) return \"yarn\";\n if (fs.existsSync(path.join(cwd, \"bun.lockb\"))) return \"bun\";\n\n // Default to npm\n return \"npm\";\n}\n\n/**\n * Install dependencies in a directory\n */\nexport async function installDependencies(\n projectPath: string,\n packageManager: \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" = \"npm\"\n): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n const installCmd =\n packageManager === \"yarn\" ? \"yarn\" : `${packageManager} install`;\n\n execSync(installCmd, {\n cwd: projectPath,\n stdio: \"inherit\",\n });\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n","import path from \"path\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport {\n validateName,\n toKebabCase,\n toPascalCase,\n getValidCategories,\n} from \"../utils/validators\";\nimport fs from \"fs-extra\";\nimport {\n ensureOneXProject,\n getThemesDir,\n listThemes,\n themeExists,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateSectionOptions {\n theme?: string;\n category?: string;\n template?: string;\n}\n\nexport async function createSectionCommand(\n name: string,\n options: CreateSectionOptions\n): Promise<void> {\n logger.header(\"Create New Section\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Auto-detect theme in standalone theme directory\n if (!options.theme) {\n const isStandaloneTheme = [\"theme.config.ts\", \"bundle-entry.ts\"].some((f) =>\n fs.existsSync(path.join(process.cwd(), f))\n );\n if (isStandaloneTheme) {\n options.theme = path.basename(process.cwd());\n }\n }\n\n // Validate and normalize name\n const sectionName = toKebabCase(name);\n if (!validateName(sectionName)) {\n logger.error(\n `Invalid section name: ${sectionName}. Use kebab-case (e.g., hero, featured-products)`\n );\n process.exit(1);\n }\n\n // Prompt for missing options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"theme\",\n message: \"Which theme should this section belong to?\",\n choices: listThemes(),\n when: !options.theme,\n },\n {\n type: \"list\",\n name: \"category\",\n message: \"What category is this section?\",\n choices: getValidCategories(),\n when: !options.category,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this section:\",\n default: toPascalCase(sectionName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Section description:\",\n default: `${toPascalCase(sectionName)} section`,\n },\n {\n type: \"confirm\",\n name: \"createTemplate\",\n message: \"Create a default template variant?\",\n default: true,\n },\n ]);\n\n const themeName = options.theme || answers.theme;\n const category = options.category || answers.category;\n const displayName = answers.displayName;\n const description = answers.description;\n const createTemplate = answers.createTemplate;\n\n // Validate theme exists\n if (!themeExists(themeName)) {\n logger.error(`Theme \"${themeName}\" does not exist.`);\n process.exit(1);\n }\n\n // Prepare data for templates\n const data = {\n sectionName,\n sectionNamePascal: toPascalCase(sectionName),\n themeName,\n category,\n displayName,\n description,\n };\n\n logger.startSpinner(\"Creating section files...\");\n\n try {\n const themePath = path.join(getThemesDir(), themeName);\n const sectionPath = path.join(themePath, \"sections\", sectionName);\n\n // Create section schema file\n const schemaContent = generateSectionSchema(data);\n await writeFile(\n path.join(sectionPath, `${sectionName}.schema.ts`),\n schemaContent\n );\n\n // Create default template if requested\n if (createTemplate) {\n const templateContent = generateSectionTemplate(data);\n await writeFile(\n path.join(sectionPath, `${sectionName}-default.tsx`),\n templateContent\n );\n }\n\n // Create index file\n const indexContent = generateSectionIndex(data, createTemplate);\n await writeFile(path.join(sectionPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Section files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(sectionPath, `${sectionName}.schema.ts`))}`\n );\n if (createTemplate) {\n logger.log(\n ` 2. Edit template: ${path.relative(process.cwd(), path.join(sectionPath, `${sectionName}-default.tsx`))}`\n );\n }\n logger.log(\n ` 3. Add to theme manifest: ${path.relative(process.cwd(), path.join(themePath, \"manifest.ts\"))}`\n );\n logger.newLine();\n logger.success(\"Section created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create section\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateSectionSchema(data: {\n sectionName: string;\n sectionNamePascal: string;\n category: string;\n displayName: string;\n description: string;\n}): string {\n return `import type { SectionSchema } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Section Schema\n * ${data.description}\n */\nexport const ${data.sectionName}Schema: SectionSchema = {\n type: \"${data.sectionName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n category: \"${data.category}\",\n icon: \"layout\",\n\n // Available template variants\n templates: [\n {\n id: \"default\",\n name: \"Default\",\n description: \"Default ${data.sectionName} layout\",\n isDefault: true,\n },\n ],\n\n // Section-level settings\n settings: [\n {\n id: \"backgroundColor\",\n type: \"color\",\n label: \"Background Color\",\n category: \"style\",\n },\n {\n id: \"padding\",\n type: \"select\",\n label: \"Padding\",\n category: \"style\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n defaultValue: \"md\",\n },\n ],\n\n // Default settings values\n defaults: {\n backgroundColor: \"#ffffff\",\n padding: \"md\",\n },\n\n // Allowed blocks (optional)\n allowedBlocks: [],\n\n // Maximum number of instances on a page (optional)\n maxInstances: undefined,\n};\n`;\n}\n\nfunction generateSectionTemplate(data: {\n sectionName: string;\n sectionNamePascal: string;\n displayName: string;\n}): string {\n return `import React from \"react\";\nimport type { SectionComponentProps } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} - Default Template\n */\nexport function ${data.sectionNamePascal}Default({\n section,\n isEditing = false,\n}: SectionComponentProps) {\n const { settings = {} } = section;\n const backgroundColor = settings.backgroundColor as string || \"#ffffff\";\n const padding = settings.padding as string || \"md\";\n\n // Map padding values to Tailwind classes\n const paddingClasses = {\n none: \"\",\n sm: \"py-8\",\n md: \"py-16\",\n lg: \"py-24\",\n };\n\n return (\n <section\n className={\\`${data.sectionName}-section \\${paddingClasses[padding as keyof typeof paddingClasses] || paddingClasses.md}\\`}\n style={{ backgroundColor }}\n data-section-id={section.id}\n data-section-type={section.type}\n >\n <div className=\"container mx-auto px-4\">\n {/* TODO: Implement section content */}\n <div className=\"text-center\">\n <h2 className=\"text-3xl font-bold\">${data.displayName}</h2>\n <p className=\"mt-4 text-gray-600\">\n Start building your section here\n </p>\n </div>\n\n {/* Render blocks if any */}\n {section.blocks && section.blocks.length > 0 && (\n <div className=\"mt-8\">\n {/* TODO: Render blocks */}\n </div>\n )}\n\n {/* Render components if any */}\n {section.components && section.components.length > 0 && (\n <div className=\"mt-8\">\n {/* TODO: Render components */}\n </div>\n )}\n </div>\n </section>\n );\n}\n`;\n}\n\nfunction generateSectionIndex(\n data: { sectionName: string; sectionNamePascal: string },\n hasTemplate: boolean\n): string {\n return `/**\n * ${data.sectionNamePascal} Section\n */\n\nexport { ${data.sectionName}Schema } from \"./${data.sectionName}.schema\";\n${hasTemplate ? `export { ${data.sectionNamePascal}Default } from \"./${data.sectionName}-default\";` : \"\"}\n`;\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport { validateName, toKebabCase, toPascalCase } from \"../utils/validators\";\nimport {\n ensureOneXProject,\n getFeaturesDir,\n getThemesDir,\n listThemes,\n themeExists,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateBlockOptions {\n theme?: string;\n}\n\nexport async function createBlockCommand(\n name: string,\n options: CreateBlockOptions\n): Promise<void> {\n logger.header(\"Create New Block\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Auto-detect theme in standalone theme directory\n if (!options.theme) {\n const isStandaloneTheme = [\"theme.config.ts\", \"bundle-entry.ts\"].some((f) =>\n fs.existsSync(path.join(process.cwd(), f))\n );\n if (isStandaloneTheme) {\n options.theme = path.basename(process.cwd());\n }\n }\n\n // Validate and normalize name\n const blockName = toKebabCase(name);\n if (!validateName(blockName)) {\n logger.error(\n `Invalid block name: ${blockName}. Use kebab-case (e.g., product-card, testimonial-item)`\n );\n process.exit(1);\n }\n\n // Prompt for options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"scope\",\n message: \"Block scope:\",\n choices: [\n { name: \"Shared (available to all themes)\", value: \"shared\" },\n { name: \"Theme-specific\", value: \"theme\" },\n ],\n default: \"shared\",\n },\n {\n type: \"list\",\n name: \"theme\",\n message: \"Which theme?\",\n choices: listThemes(),\n when: (answers) => answers.scope === \"theme\" && !options.theme,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this block:\",\n default: toPascalCase(blockName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Block description:\",\n default: `${toPascalCase(blockName)} block`,\n },\n {\n type: \"confirm\",\n name: \"hasComponents\",\n message: \"Does this block contain components?\",\n default: true,\n },\n {\n type: \"confirm\",\n name: \"hasNestedBlocks\",\n message: \"Does this block support nested blocks?\",\n default: false,\n },\n ]);\n\n const scope = answers.scope;\n const themeName = options.theme || answers.theme;\n const displayName = answers.displayName;\n const description = answers.description;\n const hasComponents = answers.hasComponents;\n const hasNestedBlocks = answers.hasNestedBlocks;\n\n // Validate theme if theme-specific\n if (scope === \"theme\" && !themeExists(themeName)) {\n logger.error(`Theme \"${themeName}\" does not exist.`);\n process.exit(1);\n }\n\n // Prepare data for templates\n const data = {\n blockName,\n blockNamePascal: toPascalCase(blockName),\n displayName,\n description,\n hasComponents,\n hasNestedBlocks,\n scope,\n themeName,\n };\n\n logger.startSpinner(\"Creating block files...\");\n\n try {\n const blockPath =\n scope === \"shared\"\n ? path.join(getFeaturesDir(), \"blocks\", blockName)\n : path.join(getThemesDir(), themeName, \"blocks\", blockName);\n\n // Create block schema file\n const schemaContent = generateBlockSchema(data);\n await writeFile(\n path.join(blockPath, `${blockName}.schema.ts`),\n schemaContent\n );\n\n // Create block component file\n const componentContent = generateBlockComponent(data);\n await writeFile(path.join(blockPath, `${blockName}.tsx`), componentContent);\n\n // Create index file\n const indexContent = generateBlockIndex(data);\n await writeFile(path.join(blockPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Block files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(blockPath, `${blockName}.schema.ts`))}`\n );\n logger.log(\n ` 2. Edit component: ${path.relative(process.cwd(), path.join(blockPath, `${blockName}.tsx`))}`\n );\n logger.log(\n ` 3. Register in block registry: src/lib/registry/block-registry.ts`\n );\n logger.newLine();\n logger.success(\"Block created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create block\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateBlockSchema(data: {\n blockName: string;\n blockNamePascal: string;\n displayName: string;\n description: string;\n hasComponents: boolean;\n hasNestedBlocks: boolean;\n}): string {\n return `import type { BlockDefinition } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Block Schema\n * ${data.description}\n */\nexport const ${data.blockName}Definition: BlockDefinition = {\n type: \"${data.blockName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n icon: \"square\",\n\n // Block settings\n settings: [\n {\n id: \"title\",\n type: \"text\",\n label: \"Title\",\n category: \"content\",\n },\n {\n id: \"alignment\",\n type: \"select\",\n label: \"Alignment\",\n category: \"style\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ],\n defaultValue: \"left\",\n },\n ],\n\n // Default settings values\n defaults: {\n title: \"${data.displayName}\",\n alignment: \"left\",\n },\n\n ${data.hasComponents ? `// This block can contain components\\n allowsComponents: true,` : \"\"}\n ${data.hasNestedBlocks ? `// This block can contain nested blocks\\n allowsNestedBlocks: true,` : \"\"}\n};\n`;\n}\n\nfunction generateBlockComponent(data: {\n blockName: string;\n blockNamePascal: string;\n displayName: string;\n hasComponents: boolean;\n hasNestedBlocks: boolean;\n}): string {\n return `import React from \"react\";\nimport type { BlockComponentProps } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Block Component\n */\nexport function ${data.blockNamePascal}({\n block,\n isEditing = false,\n}: BlockComponentProps) {\n const { settings = {} } = block;\n const title = settings.title as string || \"${data.displayName}\";\n const alignment = settings.alignment as string || \"left\";\n\n const alignmentClasses = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n };\n\n return (\n <div\n className={\\`${data.blockName}-block \\${alignmentClasses[alignment as keyof typeof alignmentClasses]}\\`}\n data-block-id={block.id}\n data-block-type={block.type}\n >\n {title && <h3 className=\"text-xl font-semibold mb-4\">{title}</h3>}\n\n {/* TODO: Implement block content */}\n <div className=\"block-content\">\n <p className=\"text-gray-600\">Block content goes here</p>\n </div>\n\n ${\n data.hasComponents\n ? `{/* Render components if any */}\n {block.components && block.components.length > 0 && (\n <div className=\"block-components mt-4\">\n {/* TODO: Render components using ComponentRenderer */}\n </div>\n )}`\n : \"\"\n }\n\n ${\n data.hasNestedBlocks\n ? `{/* Render nested blocks if any */}\n {block.blocks && block.blocks.length > 0 && (\n <div className=\"nested-blocks mt-4\">\n {/* TODO: Render nested blocks using BlockRenderer */}\n </div>\n )}`\n : \"\"\n }\n </div>\n );\n}\n`;\n}\n\nfunction generateBlockIndex(data: {\n blockName: string;\n blockNamePascal: string;\n}): string {\n return `/**\n * ${data.blockNamePascal} Block\n */\n\nexport { ${data.blockName}Definition } from \"./${data.blockName}.schema\";\nexport { ${data.blockNamePascal} } from \"./${data.blockName}\";\n`;\n}\n","import path from \"path\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport { validateName, toKebabCase, toPascalCase } from \"../utils/validators\";\nimport {\n ensureOneXProject,\n getFeaturesDir,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateComponentOptions {\n type?: string;\n}\n\nexport async function createComponentCommand(\n name: string,\n options: CreateComponentOptions\n): Promise<void> {\n logger.header(\"Create New Component\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Validate and normalize name\n const componentName = toKebabCase(name);\n if (!validateName(componentName)) {\n logger.error(\n `Invalid component name: ${componentName}. Use kebab-case (e.g., button, icon-badge)`\n );\n process.exit(1);\n }\n\n // Prompt for options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"componentType\",\n message: \"Component type:\",\n choices: [\n { name: \"UI Component (button, badge, etc.)\", value: \"ui\" },\n { name: \"Form Component (input, select, etc.)\", value: \"form\" },\n { name: \"Layout Component (container, grid, etc.)\", value: \"layout\" },\n {\n name: \"Content Component (heading, paragraph, etc.)\",\n value: \"content\",\n },\n ],\n when: !options.type,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this component:\",\n default: toPascalCase(componentName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Component description:\",\n default: `${toPascalCase(componentName)} component`,\n },\n ]);\n\n const componentType = options.type || answers.componentType;\n const displayName = answers.displayName;\n const description = answers.description;\n\n // Prepare data for templates\n const data = {\n componentName,\n componentNamePascal: toPascalCase(componentName),\n componentType,\n displayName,\n description,\n };\n\n logger.startSpinner(\"Creating component files...\");\n\n try {\n const componentPath = path.join(\n getFeaturesDir(),\n \"components\",\n componentName\n );\n\n // Create component schema file\n const schemaContent = generateComponentSchema(data);\n await writeFile(\n path.join(componentPath, `${componentName}.schema.ts`),\n schemaContent\n );\n\n // Create component file\n const componentContent = generateComponent(data);\n await writeFile(\n path.join(componentPath, `${componentName}.tsx`),\n componentContent\n );\n\n // Create index file\n const indexContent = generateComponentIndex(data);\n await writeFile(path.join(componentPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Component files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(componentPath, `${componentName}.schema.ts`))}`\n );\n logger.log(\n ` 2. Edit component: ${path.relative(process.cwd(), path.join(componentPath, `${componentName}.tsx`))}`\n );\n logger.log(\n ` 3. Register in component registry: src/lib/registry/component-registry.ts`\n );\n logger.newLine();\n logger.success(\"Component created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create component\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateComponentSchema(data: {\n componentName: string;\n displayName: string;\n description: string;\n componentType: string;\n}): string {\n return `import type { ComponentDefinition } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Component Schema\n * ${data.description}\n */\nexport const ${data.componentName}Definition: ComponentDefinition = {\n type: \"${data.componentName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n category: \"${data.componentType}\",\n icon: \"square\",\n\n // Content fields (what the component displays)\n contentFields: [\n {\n id: \"text\",\n type: \"text\",\n label: \"Text\",\n defaultValue: \"${data.displayName}\",\n },\n ],\n\n // Style fields (how the component looks)\n styleFields: [\n {\n id: \"variant\",\n type: \"select\",\n label: \"Variant\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Primary\", value: \"primary\" },\n { label: \"Secondary\", value: \"secondary\" },\n ],\n defaultValue: \"default\",\n },\n {\n id: \"size\",\n type: \"select\",\n label: \"Size\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n defaultValue: \"md\",\n },\n ],\n\n // Default content values\n defaultContent: {\n text: \"${data.displayName}\",\n },\n\n // Default style values\n defaultStyle: {\n variant: \"default\",\n size: \"md\",\n },\n};\n`;\n}\n\nfunction generateComponent(data: {\n componentName: string;\n componentNamePascal: string;\n displayName: string;\n}): string {\n return `import React from \"react\";\nimport type { ComponentProps } from \"@onexapis/core\";\n\n/**\n * ${data.displayName} Component\n */\nexport function ${data.componentNamePascal}({\n component,\n isEditing = false,\n}: ComponentProps) {\n const { content = {}, style = {} } = component;\n const text = content.text as string || \"${data.displayName}\";\n const variant = style.variant as string || \"default\";\n const size = style.size as string || \"md\";\n\n // Variant classes\n const variantClasses = {\n default: \"bg-gray-100 text-gray-900\",\n primary: \"bg-blue-600 text-white\",\n secondary: \"bg-gray-600 text-white\",\n };\n\n // Size classes\n const sizeClasses = {\n sm: \"text-sm px-3 py-1\",\n md: \"text-base px-4 py-2\",\n lg: \"text-lg px-6 py-3\",\n };\n\n return (\n <div\n className={\\`${data.componentName} \\${variantClasses[variant as keyof typeof variantClasses]} \\${sizeClasses[size as keyof typeof sizeClasses]} inline-block rounded\\`}\n data-component-id={component.id}\n data-component-type={component.type}\n >\n {text}\n </div>\n );\n}\n`;\n}\n\nfunction generateComponentIndex(data: {\n componentName: string;\n componentNamePascal: string;\n}): string {\n return `/**\n * ${data.componentNamePascal} Component\n */\n\nexport { ${data.componentName}Definition } from \"./${data.componentName}.schema\";\nexport { ${data.componentNamePascal} } from \"./${data.componentName}\";\n`;\n}\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport chalk from \"chalk\";\nimport { logger } from \"../utils/logger\";\nimport {\n ensureOneXProject,\n getThemesDir,\n getFeaturesDir,\n listThemes,\n} from \"../utils/file-helpers\";\n\ninterface ListOptions {\n sections?: boolean;\n blocks?: boolean;\n components?: boolean;\n theme?: string;\n}\n\nexport async function listCommand(options: ListOptions): Promise<void> {\n logger.header(\"OneX Project Inventory\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n const showAll = !options.sections && !options.blocks && !options.components;\n\n if (showAll || options.sections) {\n await listSections(options.theme);\n }\n\n if (showAll || options.blocks) {\n await listBlocks(options.theme);\n }\n\n if (showAll || options.components) {\n await listComponents();\n }\n\n if (showAll) {\n await listThemesInfo();\n }\n}\n\nasync function listSections(themeFilter?: string): Promise<void> {\n logger.section(\"📄 Sections\");\n\n const themes = themeFilter ? [themeFilter] : listThemes();\n\n if (themes.length === 0) {\n logger.warning(\"No themes found\");\n return;\n }\n\n for (const theme of themes) {\n const sectionsDir = path.join(getThemesDir(), theme, \"sections\");\n\n if (!fs.existsSync(sectionsDir)) {\n continue;\n }\n\n const sections = fs.readdirSync(sectionsDir).filter((name) => {\n const sectionPath = path.join(sectionsDir, name);\n return (\n fs.statSync(sectionPath).isDirectory() &&\n fs.existsSync(path.join(sectionPath, \"index.ts\"))\n );\n });\n\n if (sections.length > 0) {\n logger.log(chalk.cyan(`\\n ${theme}:`));\n sections.forEach((section) => {\n logger.log(` • ${section}`);\n });\n }\n }\n\n logger.newLine();\n}\n\nasync function listBlocks(themeFilter?: string): Promise<void> {\n logger.section(\"🧱 Blocks\");\n\n // List shared blocks\n const sharedBlocksDir = path.join(getFeaturesDir(), \"blocks\");\n if (fs.existsSync(sharedBlocksDir)) {\n const sharedBlocks = fs.readdirSync(sharedBlocksDir).filter((name) => {\n const blockPath = path.join(sharedBlocksDir, name);\n return (\n fs.statSync(blockPath).isDirectory() &&\n fs.existsSync(path.join(blockPath, \"index.ts\"))\n );\n });\n\n if (sharedBlocks.length > 0) {\n logger.log(chalk.cyan(\"\\n Shared:\"));\n sharedBlocks.forEach((block) => {\n logger.log(` • ${block}`);\n });\n }\n }\n\n // List theme-specific blocks\n const themes = themeFilter ? [themeFilter] : listThemes();\n\n for (const theme of themes) {\n const blocksDir = path.join(getThemesDir(), theme, \"blocks\");\n\n if (!fs.existsSync(blocksDir)) {\n continue;\n }\n\n const blocks = fs.readdirSync(blocksDir).filter((name) => {\n const blockPath = path.join(blocksDir, name);\n return (\n fs.statSync(blockPath).isDirectory() &&\n fs.existsSync(path.join(blockPath, \"index.ts\"))\n );\n });\n\n if (blocks.length > 0) {\n logger.log(chalk.cyan(`\\n ${theme}:`));\n blocks.forEach((block) => {\n logger.log(` • ${block}`);\n });\n }\n }\n\n logger.newLine();\n}\n\nasync function listComponents(): Promise<void> {\n logger.section(\"⚙️ Components\");\n\n const componentsDir = path.join(getFeaturesDir(), \"components\");\n\n if (!fs.existsSync(componentsDir)) {\n logger.warning(\"No components directory found\");\n return;\n }\n\n const components = fs.readdirSync(componentsDir).filter((name) => {\n const componentPath = path.join(componentsDir, name);\n return (\n fs.statSync(componentPath).isDirectory() &&\n fs.existsSync(path.join(componentPath, \"index.ts\"))\n );\n });\n\n if (components.length === 0) {\n logger.warning(\"No components found\");\n return;\n }\n\n logger.log(\"\");\n components.forEach((component) => {\n logger.log(` • ${component}`);\n });\n\n logger.newLine();\n}\n\nasync function listThemesInfo(): Promise<void> {\n logger.section(\"🎨 Themes\");\n\n const themes = listThemes();\n\n if (themes.length === 0) {\n logger.warning(\"No themes found\");\n return;\n }\n\n logger.log(\"\");\n\n for (const theme of themes) {\n const themeDir = path.join(getThemesDir(), theme);\n const candidates = [\"theme.config.ts\", \"bundle-entry.ts\", \"manifest.ts\"];\n let manifestContent = \"\";\n for (const candidate of candidates) {\n const candidatePath = path.join(themeDir, candidate);\n if (fs.existsSync(candidatePath)) {\n manifestContent = fs.readFileSync(candidatePath, \"utf-8\");\n break;\n }\n }\n\n // Try to extract theme info from manifest\n const nameMatch = manifestContent.match(/name:\\s*[\"'](.+)[\"']/);\n const versionMatch = manifestContent.match(/version:\\s*[\"'](.+)[\"']/);\n const descMatch = manifestContent.match(/description:\\s*[\"'](.+)[\"']/);\n\n const displayName = nameMatch ? nameMatch[1] : theme;\n const version = versionMatch ? versionMatch[1] : \"unknown\";\n const description = descMatch ? descMatch[1] : \"\";\n\n logger.log(chalk.cyan(` ${displayName}`) + chalk.gray(` (v${version})`));\n if (description) {\n logger.log(chalk.gray(` ${description}`));\n }\n }\n\n logger.newLine();\n}\n","import { spawn } from \"child_process\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport { logger } from \"../utils/logger\";\nimport { getThemesDir } from \"../utils/file-helpers\";\n\ninterface BuildOptions {\n theme?: string;\n production?: boolean;\n watch?: boolean;\n}\n\nexport async function buildCommand(options: BuildOptions): Promise<void> {\n logger.header(\"Build Theme\");\n\n let themePath: string;\n let themeName: string;\n\n // Determine theme to build\n if (options.theme) {\n themeName = options.theme;\n // Try to find theme in workspace first, otherwise use current directory\n try {\n const workspaceThemePath = path.join(getThemesDir(), themeName);\n if (fs.existsSync(workspaceThemePath)) {\n themePath = workspaceThemePath;\n } else {\n themePath = path.join(process.cwd(), themeName);\n }\n } catch {\n // Not in a workspace, use current directory\n themePath = path.join(process.cwd(), themeName);\n }\n\n if (!fs.existsSync(themePath)) {\n logger.error(`Theme \"${themeName}\" not found.`);\n process.exit(1);\n }\n } else {\n // Check if we're in a theme directory\n const isThemeDir = [\n \"theme.config.ts\",\n \"bundle-entry.ts\",\n \"manifest.ts\",\n ].some((f) => fs.existsSync(path.join(process.cwd(), f)));\n if (isThemeDir) {\n themePath = process.cwd();\n themeName = path.basename(themePath);\n logger.info(`Building current theme: ${themeName}`);\n } else {\n logger.error(\n \"Not in a theme directory and no --theme specified. Run from theme root or use --theme flag.\"\n );\n process.exit(1);\n }\n }\n\n const packageJsonPath = path.join(themePath, \"package.json\");\n const hasPkgJson = fs.existsSync(packageJsonPath);\n\n if (!hasPkgJson) {\n logger.warning(\n \"No package.json found in theme. Skipping build (themes in monorepo are built via turbo).\"\n );\n logger.newLine();\n logger.info(\"To build all packages, run:\");\n logger.log(\" pnpm turbo build\");\n logger.newLine();\n logger.info(\"To build specific theme components:\");\n logger.log(\" pnpm turbo build --filter=./src/themes/*\");\n return;\n }\n\n // Run build steps\n logger.newLine();\n logger.section(\"Build Steps\");\n\n // Step 1: Type Check\n logger.startSpinner(\"Running type check...\");\n const typeCheckSuccess = await runCommand(\"pnpm\", [\"type-check\"], themePath);\n\n if (!typeCheckSuccess) {\n logger.stopSpinner(false, \"Type check failed\");\n logger.error(\"Fix type errors before building.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Type check passed\");\n\n // Step 2: Lint\n logger.startSpinner(\"Running linter...\");\n const lintSuccess = await runCommand(\"pnpm\", [\"lint\"], themePath);\n\n if (!lintSuccess) {\n logger.stopSpinner(false, \"Lint failed\");\n logger.error(\"Fix lint errors before building.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Lint passed\");\n\n // Step 3: Build\n // Detect if theme's build script would cause recursion (e.g., \"onexthm build\")\n const pkgJson = fs.readJsonSync(packageJsonPath);\n const buildScript = pkgJson.scripts?.build || \"\";\n const isRecursive =\n buildScript.includes(\"onexthm build\") ||\n buildScript.includes(\"onex build\") ||\n buildScript.includes(\"onex-cli build\");\n\n logger.startSpinner(\n options.watch ? \"Building (watch mode)...\" : \"Building...\"\n );\n\n let buildSuccess: boolean;\n\n if (isRecursive) {\n // Standalone theme: use embedded esbuild compilation\n const { compileStandaloneTheme } = await import(\"../utils/compile-theme\");\n buildSuccess = await compileStandaloneTheme(themePath, themeName);\n } else {\n // Monorepo: use existing pnpm build\n const buildArgs = options.watch ? [\"build\", \"--watch\"] : [\"build\"];\n buildSuccess = await runCommand(\"pnpm\", buildArgs, themePath);\n }\n\n if (!buildSuccess && !options.watch) {\n logger.stopSpinner(false, \"Build failed\");\n process.exit(1);\n }\n\n if (!options.watch) {\n logger.stopSpinner(true, \"Build complete\");\n\n // Show output location\n logger.newLine();\n logger.success(\"✓ Theme built successfully!\");\n logger.newLine();\n logger.info(`Theme: ${themeName}`);\n\n const distPath = path.join(themePath, \"dist\");\n if (fs.existsSync(distPath)) {\n logger.log(`Output: ${path.relative(process.cwd(), distPath)}`);\n\n // Show build stats\n const files = fs.readdirSync(distPath);\n logger.log(`Files: ${files.length}`);\n }\n }\n}\n\n/**\n * Run a command and return success status\n */\nfunction runCommand(\n command: string,\n args: string[],\n cwd: string\n): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(command, args, {\n cwd,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n shell: true,\n });\n\n let stdout = \"\";\n let stderr = \"\";\n\n proc.stdout.on(\"data\", (data) => {\n stdout += data.toString();\n });\n proc.stderr.on(\"data\", (data) => {\n stderr += data.toString();\n });\n\n proc.on(\"close\", (code) => {\n if (code !== 0) {\n // Show actual errors to the developer\n const output = (stderr + stdout).trim();\n if (output) {\n logger.newLine();\n for (const line of output.split(\"\\n\")) {\n const t = line.trim();\n if (!t) continue;\n if (\n t.includes(\"error\") ||\n t.includes(\"Error\") ||\n t.includes(\"TS\")\n ) {\n logger.log(` ❌ ${t}`);\n } else if (t.includes(\"warning\") || t.includes(\"Warning\")) {\n logger.log(` ⚠️ ${t}`);\n } else {\n logger.log(` ${t}`);\n }\n }\n }\n }\n resolve(code === 0);\n });\n\n proc.on(\"error\", () => {\n resolve(false);\n });\n });\n}\n","import { S3Client, PutObjectCommand } from \"@aws-sdk/client-s3\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport os from \"os\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport archiver from \"archiver\";\nimport { logger } from \"../utils/logger\";\n\ninterface UploadOptions {\n theme?: string;\n bucket?: string;\n version?: string;\n environment?: \"staging\" | \"production\";\n dryRun?: boolean;\n skipSource?: boolean;\n sourceDir?: string;\n}\n\ninterface ThemeManifest {\n themeId: string;\n version: string;\n [key: string]: any;\n}\n\n/**\n * Initialize S3 client with support for AWS/MinIO/LocalStack\n */\nfunction getS3Client(): S3Client {\n const adapterMode = (process.env.ADAPTER_MODE || \"aws\").trim().toLowerCase();\n\n if (adapterMode === \"vps\") {\n const endpoint = process.env.MINIO_ENDPOINT || \"localhost:9000\";\n const secure = process.env.MINIO_SECURE === \"true\";\n const endpointUrl = endpoint.startsWith(\"http\")\n ? endpoint\n : `${secure ? \"https\" : \"http\"}://${endpoint}`;\n\n return new S3Client({\n endpoint: endpointUrl,\n region: \"us-east-1\",\n credentials: {\n accessKeyId: process.env.MINIO_ACCESS_KEY || \"minioadmin\",\n secretAccessKey: process.env.MINIO_SECRET_KEY || \"minioadmin\",\n },\n forcePathStyle: true,\n });\n }\n\n if (adapterMode === \"local\") {\n return new S3Client({\n endpoint: \"http://localhost:4569\",\n region: \"ap-southeast-1\",\n credentials: {\n accessKeyId: \"S3RVER\",\n secretAccessKey: \"S3RVER\",\n },\n forcePathStyle: true,\n });\n }\n\n return new S3Client({\n region: process.env.AWS_REGION || \"ap-southeast-1\",\n });\n}\n\n/**\n * Get S3 bucket name based on environment\n */\nfunction getBucketName(env?: \"staging\" | \"production\"): string {\n if (process.env.BUCKET_NAME) {\n return process.env.BUCKET_NAME;\n }\n const environment = env || process.env.ENVIRONMENT || \"staging\";\n return environment === \"production\" ? \"theme-s3-bucket\" : \"theme-s3-bucket\";\n}\n\n/**\n * Find compiled theme directory\n */\nasync function findCompiledThemeDir(\n themeId: string,\n version: string\n): Promise<string | null> {\n const searchPaths = [path.resolve(process.cwd(), \"dist\")];\n\n for (const dir of searchPaths) {\n if (await fs.pathExists(dir)) {\n // Accept dir with manifest.json (esbuild compiled) or theme entry files (tsc compiled)\n const hasManifest = await fs.pathExists(path.join(dir, \"manifest.json\"));\n const hasThemeEntry =\n (await fs.pathExists(path.join(dir, \"bundle-entry.js\"))) ||\n (await fs.pathExists(path.join(dir, \"theme.config.js\"))) ||\n (await fs.pathExists(path.join(dir, \"index.js\")));\n if (hasManifest || hasThemeEntry) {\n return dir;\n }\n }\n }\n\n return null;\n}\n\n/**\n * Read theme manifest\n */\nasync function readManifest(): Promise<ThemeManifest> {\n const manifestTsPath = path.resolve(process.cwd(), \"manifest.ts\");\n if (await fs.pathExists(manifestTsPath)) {\n try {\n const module = await import(manifestTsPath);\n return module.default || module;\n } catch (error) {\n logger.warning(\"Failed to import manifest.ts, trying package.json\");\n }\n }\n\n const packageJsonPath = path.resolve(process.cwd(), \"package.json\");\n if (await fs.pathExists(packageJsonPath)) {\n const pkg = await fs.readJson(packageJsonPath);\n return {\n themeId: pkg.name?.replace(\"@onex-themes/\", \"\") || \"unknown\",\n version: pkg.version || \"1.0.0\",\n };\n }\n\n throw new Error(\n \"No manifest.ts or package.json found. Are you in a theme directory?\"\n );\n}\n\n/**\n * Create a zip archive of a directory\n */\nasync function createZipFromDir(\n sourceDir: string,\n outputPath: string,\n excludePatterns: string[] = []\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const output = fs.createWriteStream(outputPath);\n const archive = archiver(\"zip\", { zlib: { level: 6 } });\n\n output.on(\"close\", () => resolve());\n archive.on(\"error\", (err: Error) => reject(err));\n archive.pipe(output);\n\n archive.glob(\"**/*\", {\n cwd: sourceDir,\n dot: true,\n ignore: excludePatterns,\n });\n\n archive.finalize();\n });\n}\n\n/**\n * Find the theme source directory\n */\nasync function findSourceDir(\n themeId: string,\n explicitDir?: string\n): Promise<string | null> {\n if (explicitDir) {\n if (await fs.pathExists(explicitDir)) return explicitDir;\n return null;\n }\n\n const searchPaths = [\n process.cwd(),\n path.resolve(process.cwd(), `../../themes/${themeId}`),\n path.resolve(process.cwd(), `../themes/${themeId}`),\n ];\n\n const markers = [\"theme.config.ts\", \"bundle-entry.ts\"];\n\n for (const dir of searchPaths) {\n for (const marker of markers) {\n if (await fs.pathExists(path.join(dir, marker))) {\n return dir;\n }\n }\n }\n\n return null;\n}\n\n/**\n * Update latest.json pointer\n */\nasync function updateLatestPointer(\n s3Client: S3Client,\n bucket: string,\n themeId: string,\n version: string\n): Promise<void> {\n const latestData = {\n version,\n uploadedAt: new Date().toISOString(),\n };\n\n await s3Client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: `themes/${themeId}/latest.json`,\n Body: JSON.stringify(latestData, null, 2),\n ContentType: \"application/json\",\n })\n );\n}\n\n/**\n * Upload theme to S3 as zip files\n *\n * Creates bundle.zip (compiled output) and source.zip (theme source code),\n * then uploads both to S3. Much faster than uploading 100+ individual files.\n */\nexport async function uploadCommand(options: UploadOptions): Promise<void> {\n logger.header(\"Upload Theme to S3\");\n\n const spinner = ora(\"Preparing theme upload...\").start();\n\n try {\n // 1. Determine themeId and version\n let themeId: string;\n let version: string;\n\n if (options.theme) {\n themeId = options.theme;\n version = options.version || \"1.0.0\";\n } else {\n const manifest = await readManifest();\n themeId = manifest.themeId;\n version = options.version || manifest.version || \"1.0.0\";\n }\n\n spinner.text = `Found theme: ${themeId}@${version}`;\n\n // 2. Determine bucket and initialize S3 client\n const bucket = options.bucket || getBucketName(options.environment);\n const s3Client = getS3Client();\n\n // 3. Find compiled theme directory\n const compiledDir = await findCompiledThemeDir(themeId, version);\n if (!compiledDir) {\n spinner.fail(\n chalk.red(\n `Compiled theme not found for ${themeId}@${version}. Run 'onexthm build' first.`\n )\n );\n logger.info(chalk.gray(`Expected location:\\n` + ` - ./dist/`));\n process.exit(1);\n }\n\n spinner.succeed(`Found compiled theme at: ${compiledDir}`);\n\n // 4. Create bundle.zip\n spinner.start(\"Creating bundle.zip...\");\n const tmpDir = os.tmpdir();\n const bundleZipPath = path.join(tmpDir, `${themeId}-${version}-bundle.zip`);\n await createZipFromDir(compiledDir, bundleZipPath);\n const bundleZipBuffer = await fs.readFile(bundleZipPath);\n const bundleSizeMB = (bundleZipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Created bundle.zip (${bundleSizeMB} MB)`);\n\n // 5. Dry run mode — show info and exit\n if (options.dryRun) {\n spinner.info(chalk.yellow(\"Dry run mode — no files will be uploaded\"));\n console.log();\n console.log(chalk.gray(` bundle.zip: ${bundleSizeMB} MB`));\n console.log(\n chalk.cyan(\n ` S3 path: s3://${bucket}/themes/${themeId}/${version}/bundle.zip`\n )\n );\n\n if (!options.skipSource) {\n const sourceDir = await findSourceDir(themeId, options.sourceDir);\n if (sourceDir) {\n console.log(chalk.gray(` source dir: ${sourceDir}`));\n console.log(\n chalk.cyan(\n ` S3 path: s3://${bucket}/themes/${themeId}/${version}/source.zip`\n )\n );\n } else {\n console.log(\n chalk.yellow(\" source dir: not found (source.zip will be skipped)\")\n );\n }\n }\n\n console.log();\n await fs.remove(bundleZipPath);\n return;\n }\n\n // 6. Upload bundle.zip\n spinner.start(\"Uploading bundle.zip to S3...\");\n const bundleS3Key = `themes/${themeId}/${version}/bundle.zip`;\n await s3Client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: bundleS3Key,\n Body: bundleZipBuffer,\n ContentType: \"application/zip\",\n })\n );\n spinner.succeed(\n `Uploaded bundle.zip ${chalk.gray(`→ s3://${bucket}/${bundleS3Key}`)}`\n );\n await fs.remove(bundleZipPath);\n\n // 7. Create + upload source.zip (unless --skip-source)\n let sourceUploaded = false;\n if (!options.skipSource) {\n spinner.start(\"Looking for source directory...\");\n const sourceDir = await findSourceDir(themeId, options.sourceDir);\n\n if (sourceDir) {\n spinner.succeed(`Found source at: ${sourceDir}`);\n spinner.start(\"Creating source.zip...\");\n\n const sourceZipPath = path.join(\n tmpDir,\n `${themeId}-${version}-source.zip`\n );\n await createZipFromDir(sourceDir, sourceZipPath, [\n \"node_modules/**\",\n \"dist/**\",\n \".git/**\",\n \"*.zip\",\n \".next/**\",\n \".turbo/**\",\n ]);\n\n const sourceZipBuffer = await fs.readFile(sourceZipPath);\n const sourceSizeMB = (sourceZipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Created source.zip (${sourceSizeMB} MB)`);\n\n spinner.start(\"Uploading source.zip to S3...\");\n const sourceS3Key = `themes/${themeId}/${version}/source.zip`;\n await s3Client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: sourceS3Key,\n Body: sourceZipBuffer,\n ContentType: \"application/zip\",\n })\n );\n spinner.succeed(\n `Uploaded source.zip ${chalk.gray(`→ s3://${bucket}/${sourceS3Key}`)}`\n );\n\n await fs.remove(sourceZipPath);\n sourceUploaded = true;\n } else {\n spinner.warn(\n chalk.yellow(\"Source directory not found — skipping source.zip\")\n );\n }\n }\n\n // 8. Update latest.json pointer\n spinner.start(\"Updating latest.json pointer...\");\n await updateLatestPointer(s3Client, bucket, themeId, version);\n spinner.succeed(\"Updated latest.json pointer\");\n\n // 9. Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme uploaded successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Theme: \") + chalk.white(`${themeId}@${version}`)\n );\n console.log(chalk.cyan(\" Bucket: \") + chalk.white(bucket));\n console.log(\n chalk.cyan(\" Files: \") +\n chalk.white(`bundle.zip${sourceUploaded ? \" + source.zip\" : \"\"}`)\n );\n console.log(\n chalk.cyan(\" Path: \") +\n chalk.gray(`s3://${bucket}/themes/${themeId}/${version}/`)\n );\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(`Upload failed: ${error.message}`));\n logger.error(error.stack || error.message);\n process.exit(1);\n }\n}\n","import { S3Client, GetObjectCommand } from \"@aws-sdk/client-s3\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport { Readable } from \"stream\";\nimport AdmZip from \"adm-zip\";\nimport { logger } from \"../utils/logger\";\n\ninterface DownloadOptions {\n themeId?: string;\n version?: string;\n bucket?: string;\n environment?: \"staging\" | \"production\";\n output?: string;\n}\n\ninterface ThemeManifest {\n themeId: string;\n version: string;\n compiledAt: string;\n counts: {\n sections: number;\n blocks: number;\n schemas: number;\n };\n output: {\n entry: string;\n chunks: string[];\n assets: string[];\n };\n [key: string]: any;\n}\n\n/**\n * Initialize S3 client with support for AWS/MinIO/LocalStack\n */\nfunction getS3Client(): S3Client {\n const adapterMode = (process.env.ADAPTER_MODE || \"aws\").trim().toLowerCase();\n\n if (adapterMode === \"vps\") {\n const endpoint = process.env.MINIO_ENDPOINT || \"localhost:9000\";\n const secure = process.env.MINIO_SECURE === \"true\";\n const endpointUrl = endpoint.startsWith(\"http\")\n ? endpoint\n : `${secure ? \"https\" : \"http\"}://${endpoint}`;\n\n return new S3Client({\n endpoint: endpointUrl,\n region: \"us-east-1\",\n credentials: {\n accessKeyId: process.env.MINIO_ACCESS_KEY || \"minioadmin\",\n secretAccessKey: process.env.MINIO_SECRET_KEY || \"minioadmin\",\n },\n forcePathStyle: true,\n });\n }\n\n if (adapterMode === \"local\") {\n return new S3Client({\n endpoint: \"http://localhost:4569\",\n region: \"ap-southeast-1\",\n credentials: {\n accessKeyId: \"S3RVER\",\n secretAccessKey: \"S3RVER\",\n },\n forcePathStyle: true,\n });\n }\n\n return new S3Client({\n region: process.env.AWS_REGION || \"ap-southeast-1\",\n });\n}\n\n/**\n * Get S3 bucket name based on environment\n */\nfunction getBucketName(env?: \"staging\" | \"production\"): string {\n if (process.env.BUCKET_NAME) {\n return process.env.BUCKET_NAME;\n }\n const environment = env || process.env.ENVIRONMENT || \"staging\";\n return environment === \"production\" ? \"theme-s3-bucket\" : \"theme-s3-bucket\";\n}\n\n/**\n * Convert stream to string\n */\nasync function streamToString(stream: Readable): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks).toString(\"utf-8\");\n}\n\n/**\n * Convert stream to buffer\n */\nasync function streamToBuffer(stream: Readable): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks);\n}\n\n/**\n * Resolve latest version from S3\n */\nasync function resolveLatestVersion(\n s3Client: S3Client,\n bucket: string,\n themeId: string\n): Promise<string> {\n try {\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: `themes/${themeId}/latest.json`,\n })\n );\n\n const body = await streamToString(response.Body as Readable);\n const data = JSON.parse(body);\n return data.version;\n } catch (error: any) {\n throw new Error(\n `Failed to resolve latest version for theme \"${themeId}\": ${error.message}`\n );\n }\n}\n\n/**\n * Create compatibility files for module resolution\n *\n * Creates sections-registry.js that re-exports from the bundle entry file\n * and a stable bundle-entry.js alias if the entry is content-hashed.\n */\nasync function createCompatibilityFiles(\n outputDir: string,\n manifest: ThemeManifest\n): Promise<void> {\n const entryFile = manifest.output?.entry || \"bundle-entry.js\";\n\n // If entry is content-hashed (e.g., bundle-entry-2d936738.js),\n // create a stable bundle-entry.js copy for import compatibility\n if (\n entryFile !== \"bundle-entry.js\" &&\n entryFile.startsWith(\"bundle-entry-\")\n ) {\n const hashedPath = path.join(outputDir, entryFile);\n const stablePath = path.join(outputDir, \"bundle-entry.js\");\n if (await fs.pathExists(hashedPath)) {\n await fs.copy(hashedPath, stablePath);\n // Also copy source map if it exists\n const mapPath = hashedPath + \".map\";\n if (await fs.pathExists(mapPath)) {\n await fs.copy(mapPath, stablePath + \".map\");\n }\n }\n }\n\n // Create sections-registry.js pointing to stable bundle-entry.js\n const sectionsRegistryPath = path.join(outputDir, \"sections-registry.js\");\n const content = `// Re-export all sections from bundle-entry\\n// This file exists to maintain compatibility with the import path\\nexport * from './bundle-entry.js';\\n`;\n await fs.writeFile(sectionsRegistryPath, content, \"utf-8\");\n\n // Create package.json with \"type\": \"module\" for ESM support\n const pkgJsonPath = path.join(outputDir, \"package.json\");\n await fs.writeFile(pkgJsonPath, '{\\n \"type\": \"module\"\\n}\\n', \"utf-8\");\n}\n\n/**\n * Show helpful error message when download fails\n */\nfunction showDownloadFailureHelp(themeId: string, bucket: string): void {\n console.log();\n logger.error(chalk.red.bold(\"Theme download failed\"));\n console.log();\n console.log(chalk.yellow(\"Possible reasons:\"));\n console.log(chalk.gray(\" 1. Theme not uploaded to S3 yet\"));\n console.log(chalk.gray(\" 2. AWS credentials not configured correctly\"));\n console.log(chalk.gray(\" 3. Bucket name or region is incorrect\"));\n console.log(chalk.gray(\" 4. bundle.zip is missing or corrupted\"));\n console.log();\n console.log(chalk.cyan.bold(\"To fix this:\"));\n console.log();\n console.log(chalk.white(\"1. Compile and upload the theme:\"));\n console.log(chalk.gray(` cd themes/${themeId}`));\n console.log(chalk.gray(\" pnpm build\"));\n console.log(chalk.gray(\" onexthm upload\"));\n console.log();\n console.log(chalk.white(\"2. Verify AWS credentials are set:\"));\n console.log(\n chalk.gray(\" - Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY\")\n );\n console.log(chalk.gray(\" - Or use AWS_PROFILE=your-profile\"));\n console.log(chalk.gray(\" - Set AWS_REGION (e.g., ap-southeast-1)\"));\n console.log();\n console.log(chalk.white(\"3. Check bucket configuration:\"));\n console.log(chalk.gray(` Current bucket: ${bucket}`));\n console.log(\n chalk.gray(\" Set BUCKET_NAME environment variable if different\")\n );\n console.log();\n console.log(chalk.white(\"4. Verify theme exists in S3:\"));\n console.log(chalk.gray(` aws s3 ls s3://${bucket}/themes/${themeId}/`));\n console.log();\n}\n\n/**\n * Download theme from S3\n *\n * Downloads bundle.zip (single S3 request) and extracts all files locally.\n * Much faster than downloading 100+ individual files.\n */\nexport async function downloadCommand(options: DownloadOptions): Promise<void> {\n logger.header(\"Download Theme from S3\");\n\n const spinner = ora(\"Initializing download...\").start();\n\n try {\n // 1. Get theme ID and version\n const themeId =\n options.themeId ||\n process.env.NEXT_PUBLIC_THEME_ID ||\n process.env.THEME_ID;\n const version = options.version || process.env.THEME_VERSION || \"latest\";\n const bucket = options.bucket || getBucketName(options.environment);\n const outputDir = options.output || \"./active-theme\";\n\n if (!themeId) {\n spinner.fail(\n chalk.red(\n \"Theme ID not specified. Use --theme-id or set NEXT_PUBLIC_THEME_ID environment variable.\"\n )\n );\n process.exit(1);\n }\n\n spinner.text = `Downloading ${themeId}@${version} from ${bucket}...`;\n\n // 2. Initialize S3 client\n const s3Client = getS3Client();\n\n // 3. Resolve version if \"latest\"\n let resolvedVersion = version;\n if (version === \"latest\") {\n spinner.text = \"Resolving latest version...\";\n resolvedVersion = await resolveLatestVersion(s3Client, bucket, themeId);\n spinner.succeed(\n `Resolved latest version: ${chalk.cyan(resolvedVersion)}`\n );\n }\n\n // 4. Download bundle.zip\n spinner.start(\n `Downloading bundle.zip for ${themeId}@${resolvedVersion}...`\n );\n const s3Key = `themes/${themeId}/${resolvedVersion}/bundle.zip`;\n\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: s3Key,\n })\n );\n\n const zipBuffer = await streamToBuffer(response.Body as Readable);\n const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Downloaded bundle.zip (${sizeMB} MB)`);\n\n // 5. Extract to output directory\n spinner.start(\"Extracting bundle...\");\n await fs.remove(outputDir);\n await fs.ensureDir(outputDir);\n\n const zip = new AdmZip(zipBuffer);\n zip.extractAllTo(outputDir, true);\n\n const entries = zip.getEntries().filter((e) => !e.isDirectory);\n spinner.succeed(`Extracted ${entries.length} files to ${outputDir}`);\n\n // 6. Create compatibility files\n const manifestPath = path.join(outputDir, \"manifest.json\");\n const manifest: ThemeManifest = await fs.readJson(manifestPath);\n await createCompatibilityFiles(outputDir, manifest);\n\n // 7. Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme downloaded successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Theme: \") + chalk.white(`${themeId}@${resolvedVersion}`)\n );\n console.log(chalk.cyan(\" Bucket: \") + chalk.white(bucket));\n console.log(chalk.cyan(\" Output: \") + chalk.white(outputDir));\n console.log(chalk.cyan(\" Files: \") + chalk.white(entries.length));\n if (manifest.counts) {\n console.log(\n chalk.cyan(\" Sections:\") + chalk.white(` ${manifest.counts.sections}`)\n );\n }\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(\"Download failed\"));\n logger.error(error.message);\n\n const themeId =\n options.themeId || process.env.NEXT_PUBLIC_THEME_ID || \"unknown\";\n const bucket = options.bucket || getBucketName(options.environment);\n\n showDownloadFailureHelp(themeId, bucket);\n process.exit(1);\n }\n}\n","import { S3Client, GetObjectCommand } from \"@aws-sdk/client-s3\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport { Readable } from \"stream\";\nimport { spawn } from \"child_process\";\nimport { createRequire } from \"module\";\nimport AdmZip from \"adm-zip\";\nimport { logger } from \"../utils/logger\";\nimport { glob } from \"glob\";\n\ninterface CloneOptions {\n version?: string;\n output?: string;\n bucket?: string;\n environment?: \"staging\" | \"production\";\n install?: boolean;\n name?: string;\n}\n\n/**\n * Initialize S3 client with support for AWS/MinIO/LocalStack\n */\nfunction getS3Client(): S3Client {\n const adapterMode = (process.env.ADAPTER_MODE || \"aws\").trim().toLowerCase();\n\n if (adapterMode === \"vps\") {\n const endpoint = process.env.MINIO_ENDPOINT || \"localhost:9000\";\n const secure = process.env.MINIO_SECURE === \"true\";\n const endpointUrl = endpoint.startsWith(\"http\")\n ? endpoint\n : `${secure ? \"https\" : \"http\"}://${endpoint}`;\n\n return new S3Client({\n endpoint: endpointUrl,\n region: \"us-east-1\",\n credentials: {\n accessKeyId: process.env.MINIO_ACCESS_KEY || \"minioadmin\",\n secretAccessKey: process.env.MINIO_SECRET_KEY || \"minioadmin\",\n },\n forcePathStyle: true,\n });\n }\n\n if (adapterMode === \"local\") {\n return new S3Client({\n endpoint: \"http://localhost:4569\",\n region: \"ap-southeast-1\",\n credentials: {\n accessKeyId: \"S3RVER\",\n secretAccessKey: \"S3RVER\",\n },\n forcePathStyle: true,\n });\n }\n\n return new S3Client({\n region: process.env.AWS_REGION || \"ap-southeast-1\",\n });\n}\n\n/**\n * Get S3 bucket name based on environment\n */\nfunction getBucketName(env?: \"staging\" | \"production\"): string {\n if (process.env.BUCKET_NAME) {\n return process.env.BUCKET_NAME;\n }\n const environment = env || process.env.ENVIRONMENT || \"staging\";\n return environment === \"production\" ? \"theme-s3-bucket\" : \"theme-s3-bucket\";\n}\n\nasync function streamToString(stream: Readable): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks).toString(\"utf-8\");\n}\n\nasync function streamToBuffer(stream: Readable): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks);\n}\n\n/**\n * Resolve latest version from S3 via latest.json pointer\n */\nasync function resolveLatestVersion(\n s3Client: S3Client,\n bucket: string,\n themeId: string\n): Promise<string> {\n try {\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: `themes/${themeId}/latest.json`,\n })\n );\n const body = await streamToString(response.Body as Readable);\n return JSON.parse(body).version;\n } catch (error: any) {\n throw new Error(\n `Failed to resolve latest version for theme \"${themeId}\": ${error.message}`\n );\n }\n}\n\n/**\n * Run pnpm install in a directory\n */\nfunction runInstall(cwd: string): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(\"pnpm\", [\"install\"], {\n cwd,\n stdio: \"inherit\",\n shell: true,\n });\n proc.on(\"close\", (code) => resolve(code === 0));\n proc.on(\"error\", () => resolve(false));\n });\n}\n\n/**\n * Prompt user for new theme name using inquirer\n */\nasync function promptThemeName(originalName: string): Promise<string> {\n const { default: inquirer } = await import(\"inquirer\");\n const { themeName } = await inquirer.prompt([\n {\n type: \"input\",\n name: \"themeName\",\n message: \"New theme name (kebab-case):\",\n default: `my-${originalName}`,\n validate: (input: string) => {\n if (!/^[a-z][a-z0-9-]*$/.test(input)) {\n return \"Theme name must be kebab-case (lowercase letters, numbers, hyphens)\";\n }\n if (input === originalName) {\n return `Name must differ from the original theme \"${originalName}\"`;\n }\n return true;\n },\n },\n ]);\n return themeName;\n}\n\n/**\n * Rename all theme references in the cloned source.\n *\n * Updates:\n * - package.json (name, description)\n * - theme.config.ts (id, name)\n * - theme.layout.ts (id, name)\n * - sections schemas (type: \"old-hero\" → \"new-hero\")\n * - pages configs (type references)\n */\nasync function renameTheme(\n themeDir: string,\n oldName: string,\n newName: string\n): Promise<void> {\n const oldPrefix = `${oldName}-`;\n const newPrefix = `${newName}-`;\n const newDisplayName = newName\n .split(\"-\")\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(\" \");\n\n // 1. package.json\n const pkgPath = path.join(themeDir, \"package.json\");\n if (await fs.pathExists(pkgPath)) {\n const pkg = await fs.readJson(pkgPath);\n pkg.name = `@onex-themes/${newName}`;\n if (pkg.description) {\n pkg.description = pkg.description.replace(\n new RegExp(oldName, \"gi\"),\n newDisplayName\n );\n }\n pkg.version = \"1.0.0\";\n\n // Remove @onexapis/cli from devDependencies — it's a global CLI tool,\n // not a theme dependency. Including it causes workspace:* resolution errors.\n if (pkg.devDependencies?.[\"@onexapis/cli\"]) {\n delete pkg.devDependencies[\"@onexapis/cli\"];\n }\n\n await fs.writeJson(pkgPath, pkg, { spaces: 2 });\n }\n\n // 2. theme.config.ts\n const configPath = path.join(themeDir, \"theme.config.ts\");\n if (await fs.pathExists(configPath)) {\n let content = await fs.readFile(configPath, \"utf-8\");\n content = content.replace(/id:\\s*\"[^\"]*\"/, `id: \"${newName}\"`);\n content = content.replace(\n /name:\\s*\"[^\"]*Theme\"/,\n `name: \"${newDisplayName} Theme\"`\n );\n await fs.writeFile(configPath, content);\n }\n\n // 3. theme.layout.ts\n const layoutPath = path.join(themeDir, \"theme.layout.ts\");\n if (await fs.pathExists(layoutPath)) {\n let content = await fs.readFile(layoutPath, \"utf-8\");\n content = content.replace(/id:\\s*\"[^\"]*\"/, `id: \"${newName}\"`);\n content = content.replace(\n /name:\\s*\"[^\"]*Theme\"/,\n `name: \"${newDisplayName} Theme\"`\n );\n await fs.writeFile(layoutPath, content);\n }\n\n // 4. All .ts files: replace theme references\n const oldDisplayName = oldName\n .split(\"-\")\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(\" \");\n\n const tsFiles = await glob(\"**/*.ts\", { cwd: themeDir, nodir: true });\n for (const file of tsFiles) {\n const filePath = path.join(themeDir, file);\n let content = await fs.readFile(filePath, \"utf-8\");\n const original = content;\n\n // Replace section type strings: \"simple-hero\" → \"mytheme-hero\"\n content = content.replace(\n new RegExp(`\"${oldPrefix}`, \"g\"),\n `\"${newPrefix}`\n );\n\n // Replace themeId: \"simple\" → \"mytheme\"\n content = content.replace(\n new RegExp(`themeId:\\\\s*\"${oldName}\"`, \"g\"),\n `themeId: \"${newName}\"`\n );\n\n // Replace display names in titles/comments: \"Simple Theme\" → \"My Theme\"\n content = content.replace(\n new RegExp(`${oldDisplayName} Theme`, \"g\"),\n `${newDisplayName} Theme`\n );\n\n if (content !== original) {\n await fs.writeFile(filePath, content);\n }\n }\n}\n\n/**\n * Clone theme source code from S3\n *\n * Downloads source.zip and extracts it to a local directory.\n * Asks the user for a new theme name to differentiate from the original.\n */\nexport async function cloneCommand(\n themeName: string,\n options: CloneOptions\n): Promise<void> {\n logger.header(\"Clone Theme Source\");\n\n // Prompt for new theme name (unless --name was provided)\n let newName = options.name;\n if (!newName) {\n newName = await promptThemeName(themeName);\n }\n\n const spinner = ora(\"Initializing clone...\").start();\n\n try {\n const bucket = options.bucket || getBucketName(options.environment);\n const outputDir = options.output || path.resolve(process.cwd(), newName);\n const s3Client = getS3Client();\n\n // Check if output directory already exists\n if (await fs.pathExists(outputDir)) {\n spinner.fail(chalk.red(`Directory already exists: ${outputDir}`));\n logger.info(\n chalk.gray(\n \"Use -o to specify a different output directory, or remove the existing directory.\"\n )\n );\n process.exit(1);\n }\n\n // Resolve version\n let version = options.version || \"latest\";\n if (version === \"latest\") {\n spinner.text = \"Resolving latest version...\";\n version = await resolveLatestVersion(s3Client, bucket, themeName);\n spinner.succeed(`Resolved latest version: ${chalk.cyan(version)}`);\n }\n\n // Download source.zip\n spinner.start(`Downloading source.zip for ${themeName}@${version}...`);\n const s3Key = `themes/${themeName}/${version}/source.zip`;\n\n let zipBuffer: Buffer;\n try {\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: s3Key,\n })\n );\n zipBuffer = await streamToBuffer(response.Body as Readable);\n } catch (error: any) {\n spinner.fail(chalk.red(`Source not found: s3://${bucket}/${s3Key}`));\n console.log();\n console.log(\n chalk.yellow(\"The theme source may not have been uploaded yet.\")\n );\n console.log(\n chalk.gray(`Upload source with: onexthm upload --theme ${themeName}`)\n );\n console.log();\n process.exit(1);\n }\n\n const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Downloaded source.zip (${sizeMB} MB)`);\n\n // Extract to output directory\n spinner.start(`Extracting to ${outputDir}...`);\n await fs.ensureDir(outputDir);\n\n const zip = new AdmZip(zipBuffer);\n zip.extractAllTo(outputDir, true);\n\n const entries = zip.getEntries().filter((e) => !e.isDirectory);\n spinner.succeed(`Extracted ${entries.length} files`);\n\n // Rename theme references\n spinner.start(\n `Renaming theme: ${chalk.gray(themeName)} → ${chalk.cyan(newName)}...`\n );\n await renameTheme(outputDir, themeName, newName);\n spinner.succeed(\n `Renamed theme: ${chalk.gray(themeName)} → ${chalk.cyan(newName)}`\n );\n\n // Generate .env.example if not already in the zip\n const envExamplePath = path.join(outputDir, \".env.example\");\n if (!(await fs.pathExists(envExamplePath))) {\n await fs.writeFile(\n envExamplePath,\n [\n \"# API Configuration (enables real data in preview)\",\n \"# Get your Company ID from the OneX dashboard\",\n \"NEXT_PUBLIC_API_URL=https://platform-dev.onexeos.com\",\n \"NEXT_PUBLIC_COMPANY_ID=\",\n \"\",\n ].join(\"\\n\")\n );\n }\n\n // Prompt for Figma API key and patch .mcp.json\n const mcpJsonPath = path.join(outputDir, \".mcp.json\");\n if (await fs.pathExists(mcpJsonPath)) {\n const { default: inquirerMod } = await import(\"inquirer\");\n const { figmaApiKey } = await inquirerMod.prompt([\n {\n type: \"password\",\n name: \"figmaApiKey\",\n message:\n \"Figma API Key (optional, for Figma-to-code MCP — press Enter to skip):\",\n },\n ]);\n let mcpContent = await fs.readFile(mcpJsonPath, \"utf-8\");\n if (figmaApiKey) {\n mcpContent = mcpContent.replace(\"__FIGMA_API_KEY__\", figmaApiKey);\n } else {\n try {\n const mcpJson = JSON.parse(mcpContent);\n delete mcpJson.mcpServers?.figma;\n mcpContent = JSON.stringify(mcpJson, null, 2) + \"\\n\";\n } catch {}\n }\n await fs.writeFile(mcpJsonPath, mcpContent, \"utf-8\");\n }\n\n // Optionally install dependencies\n if (options.install !== false) {\n const hasPkgJson = await fs.pathExists(\n path.join(outputDir, \"package.json\")\n );\n if (hasPkgJson) {\n spinner.start(\"Installing dependencies...\");\n const success = await runInstall(outputDir);\n if (success) {\n spinner.succeed(\"Dependencies installed\");\n } else {\n spinner.warn(\n chalk.yellow(\n \"Failed to install dependencies — run 'pnpm install' manually\"\n )\n );\n }\n }\n }\n\n // Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme cloned successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Source: \") + chalk.gray(`${themeName}@${version}`)\n );\n console.log(chalk.cyan(\" Theme: \") + chalk.white(newName));\n console.log(chalk.cyan(\" Location: \") + chalk.white(outputDir));\n console.log(chalk.cyan(\" Files: \") + chalk.white(entries.length));\n console.log();\n console.log(chalk.cyan(\"Next steps:\"));\n console.log(chalk.gray(` cd ${path.relative(process.cwd(), outputDir)}`));\n console.log(\n chalk.gray(\" cp .env.example .env # then add your Company ID\")\n );\n if (options.install === false) {\n console.log(chalk.gray(\" pnpm install\"));\n }\n console.log(chalk.gray(\" onexthm build\"));\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(`Clone failed: ${error.message}`));\n logger.error(error.stack || error.message);\n process.exit(1);\n }\n}\n","/**\n * @onex/cli - CLI Tool for OneX Theme Development\n * Scaffolding and development tools for themes, sections, blocks, and components\n */\n\nexport { initCommand } from \"./commands/init\";\nexport { createSectionCommand } from \"./commands/create-section\";\nexport { createBlockCommand } from \"./commands/create-block\";\nexport { createComponentCommand } from \"./commands/create-component\";\nexport { listCommand } from \"./commands/list\";\nexport { buildCommand } from \"./commands/build\";\nexport { uploadCommand } from \"./commands/upload\";\nexport { downloadCommand } from \"./commands/download\";\nexport { cloneCommand } from \"./commands/clone\";\n\nexport * from \"./utils/logger\";\nexport * from \"./utils/file-helpers\";\nexport * from \"./utils/validators\";\n"]}