@starlein/paperclip-plugin-company-wizard 0.4.6 → 0.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/README.md +6 -4
- package/dist/manifest.js +1 -1
- package/dist/manifest.js.map +1 -1
- package/dist/ui/index.css +82 -0
- package/dist/ui/index.css.map +2 -2
- package/dist/ui/index.js +422 -137
- package/dist/ui/index.js.map +4 -4
- package/dist/worker.js +352 -21
- package/dist/worker.js.map +3 -3
- package/package.json +1 -1
- package/templates/bootstrap-instructions.md +2 -2
- package/templates/modules/architecture-plan/agents/ui-designer/skills/design-system.md +1 -1
- package/templates/modules/architecture-plan/skills/architecture-plan.md +1 -1
- package/templates/modules/auto-assign/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/auto-assign/agents/product-owner/heartbeat-section.md +1 -1
- package/templates/modules/backlog/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/backlog/agents/ceo/skills/backlog-health.fallback.md +2 -0
- package/templates/modules/backlog/agents/product-owner/heartbeat-section.md +1 -1
- package/templates/modules/backlog/docs/backlog-process.md +38 -1
- package/templates/modules/backlog/docs/backlog-template.md +1 -1
- package/templates/modules/backlog/module.meta.json +1 -1
- package/templates/modules/backlog/skills/backlog-health.bar.md +2 -0
- package/templates/modules/backlog/skills/backlog-health.md +7 -4
- package/templates/modules/competitive-intel/skills/competitive-tracking.md +1 -1
- package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +63 -16
- package/templates/modules/github-repo/docs/git-workflow.md +18 -16
- package/templates/modules/market-analysis/agents/ux-researcher/skills/market-analysis.md +1 -1
- package/templates/modules/market-analysis/skills/market-analysis.md +1 -1
- package/templates/modules/pr-review/agents/devops/skills/infra-review.md +6 -8
- package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +31 -12
- package/templates/modules/pr-review/agents/product-owner/skills/product-review.md +3 -2
- package/templates/modules/pr-review/agents/ui-designer/skills/design-review.md +4 -6
- package/templates/modules/pr-review/agents/ux-researcher/skills/ux-review.md +4 -6
- package/templates/modules/pr-review/docs/pr-conventions.md +4 -4
- package/templates/modules/pr-review/module.meta.json +1 -1
- package/templates/modules/security-audit/skills/threat-model.md +1 -1
- package/templates/modules/stall-detection/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/tech-stack/skills/tech-stack.md +1 -1
- package/templates/modules/triage/skills/issue-triage.md +1 -1
- package/templates/modules/user-testing/agents/qa/skills/user-testing.md +1 -1
- package/templates/modules/user-testing/skills/user-testing.md +1 -1
- package/templates/modules/vision-workshop/agents/ceo/skills/vision-workshop.md +1 -1
- package/templates/presets/repo-maintenance/preset.meta.json +3 -3
- package/templates/roles/audio-designer/role.meta.json +5 -2
- package/templates/roles/cmo/role.meta.json +2 -1
- package/templates/roles/code-reviewer/AGENTS.md +3 -3
- package/templates/roles/code-reviewer/role.meta.json +4 -1
- package/templates/roles/cto/role.meta.json +2 -1
- package/templates/roles/customer-success/role.meta.json +2 -1
- package/templates/roles/devops/role.meta.json +2 -1
- package/templates/roles/engineer/role.meta.json +2 -1
- package/templates/roles/game-artist/role.meta.json +5 -2
- package/templates/roles/game-designer/role.meta.json +4 -1
- package/templates/roles/level-designer/role.meta.json +4 -1
- package/templates/roles/product-owner/role.meta.json +4 -1
- package/templates/roles/qa/role.meta.json +2 -1
- package/templates/roles/security-engineer/role.meta.json +2 -1
- package/templates/roles/technical-writer/role.meta.json +2 -1
- package/templates/roles/ui-designer/role.meta.json +2 -1
- package/templates/roles/ux-researcher/role.meta.json +4 -1
package/dist/ui/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/ui/index.tsx", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/shared/src/utils/mergeClasses.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/shared/src/utils/toKebabCase.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/shared/src/utils/toCamelCase.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/shared/src/utils/toPascalCase.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/defaultAttributes.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/shared/src/utils/hasA11yProp.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/Icon.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/createLucideIcon.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/arrow-right.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/arrow-up-right.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/atom.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/blocks.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/building-2.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/check.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/chevron-down.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/chevron-left.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/chevron-right.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/circle-check.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/circle-plus.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/clipboard-check.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/cpu.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/crown.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/external-link.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/file-text.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/flask-conical.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/git-branch.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/github.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/layers.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/list-checks.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/loader-circle.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/lock.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/message-square.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/pencil.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/refresh-cw.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/rocket.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/rotate-ccw.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/send.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/settings-2.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/settings.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/shield.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/sparkles.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/target.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/triangle-alert.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/user.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/users.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/workflow.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/wrench.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/x.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/zap.ts", "../../src/ui/components/WizardShell.tsx", "../../src/ui/context/WizardContext.tsx", "../../src/ui/components/steps/StepOnboarding.tsx", "../../src/ui/components/ui/card.tsx", "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/utils.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/class-group-utils.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/lru-cache.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/parse-class-name.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/sort-modifiers.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/config-utils.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/merge-classlist.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/tw-join.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/from-theme.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/validators.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/default-config.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/merge-configs.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/tw-merge.ts", "../../src/ui/lib/utils.ts", "../../src/ui/components/ui/input.tsx", "../../src/ui/components/ui/button.tsx", "../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs", "../../src/ui/components/steps/StepName.tsx", "../../src/ui/components/steps/StepGoal.tsx", "../../src/ui/components/steps/StepRepository.tsx", "../../src/ui/lib/repository.ts", "../../src/ui/components/ui/badge.tsx", "../../src/ui/components/steps/StepPreset.tsx", "../../src/ui/components/steps/StepModules.tsx", "../../src/ui/components/steps/StepRoles.tsx", "../../src/ui/components/steps/StepSummary.tsx", "../../src/ui/components/ConfigReview.tsx", "../../src/ui/components/ui/hover-card.tsx", "../../src/ui/components/steps/StepAiWizard.tsx", "raw:/paperclip/paperclip-plugin-company-wizard/src/ui/prompts/interview-system.md", "raw:/paperclip/paperclip-plugin-company-wizard/src/ui/prompts/single-shot-system.md", "../../src/ui/prompts/messages.json", "../../src/ui/prompts/examples.json", "../../src/ui/components/steps/StepProvision.tsx", "../../src/ui/components/steps/StepDone.tsx"],
|
|
4
|
-
"sourcesContent": ["import {\n usePluginData,\n type PluginPageProps,\n type PluginSidebarProps,\n type PluginWidgetProps,\n} from '@paperclipai/plugin-sdk/ui';\nimport { Loader2, Sparkles, AlertTriangle } from 'lucide-react';\nimport { WizardShell } from './components/WizardShell';\nimport { WizardProvider } from './context/WizardContext';\nimport './index.css';\nimport type { TemplateData } from './types';\n\nconst PLUGIN_ID = 'starlein.paperclip-plugin-company-wizard';\n\nexport function WizardPage(_props: PluginPageProps) {\n const { data: templates, loading, error } = usePluginData<TemplateData>('templates');\n\n if (error) {\n return (\n <div className=\"flex items-center justify-center min-h-[400px] text-sm text-destructive\">\n Failed to load templates: {error.message}\n </div>\n );\n }\n\n if (loading || !templates) {\n return (\n <div className=\"flex flex-col items-center justify-center min-h-[400px] gap-4 text-center px-6\">\n <Loader2 className=\"h-6 w-6 animate-spin text-muted-foreground\" />\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium\">Loading templates</p>\n <p className=\"text-xs text-muted-foreground max-w-xs\">\n Checking your templates directory. If no local templates are found, they'll be\n downloaded from GitHub \u2014 this may take a moment.\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-3\">\n {templates.loadErrors && templates.loadErrors.length > 0 && (\n <div className=\"mx-4 mt-4 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-800 dark:text-amber-200\">\n <div className=\"flex items-start gap-2\">\n <AlertTriangle className=\"h-4 w-4 shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium\">Some template files could not be loaded</p>\n <p className=\"mt-0.5 text-amber-700 dark:text-amber-300\">\n {templates.loadErrors.length} parse warning\n {templates.loadErrors.length > 1 ? 's' : ''} detected. Check worker logs for\n file-level details.\n </p>\n </div>\n </div>\n </div>\n )}\n <WizardProvider templates={templates}>\n <WizardShell />\n </WizardProvider>\n </div>\n );\n}\n\nexport function ToolbarButton({ context }: PluginWidgetProps) {\n const companyPrefix = (context as any).companyPrefix;\n const href = companyPrefix ? `/${companyPrefix}/company-creator` : '#';\n\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n if (href !== '#') window.history.pushState({}, '', href);\n window.dispatchEvent(new PopStateEvent('popstate'));\n };\n\n return (\n <a\n href={href}\n onClick={handleClick}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.375rem',\n padding: '0.25rem 0.625rem',\n fontSize: '12px',\n fontWeight: 500,\n borderRadius: '0.375rem',\n border: '1px solid var(--border)',\n color: 'inherit',\n textDecoration: 'none',\n transition: 'background-color 0.15s',\n }}\n >\n + Company\n </a>\n );\n}\n\nexport function SidebarLink({ context }: PluginSidebarProps) {\n const href = context.companyPrefix ? `/${context.companyPrefix}/company-creator` : '#';\n const isActive =\n typeof window !== 'undefined' && window.location.pathname.endsWith('/company-creator');\n\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n if (href !== '#') window.history.pushState({}, '', href);\n window.dispatchEvent(new PopStateEvent('popstate'));\n };\n\n return (\n <a\n href={href}\n onClick={handleClick}\n aria-current={isActive ? 'page' : undefined}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.625rem',\n padding: '0.5rem 0.75rem',\n fontSize: '13px',\n fontWeight: 500,\n borderRadius: '0.375rem',\n color: 'inherit',\n textDecoration: 'none',\n transition: 'background-color 0.15s',\n backgroundColor: isActive ? 'var(--accent)' : 'transparent',\n }}\n >\n <Sparkles style={{ width: 16, height: 16, flexShrink: 0 }} />\n <span style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n Create Company\n </span>\n </a>\n );\n}\n", "/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n", "/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n", "/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n", "import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n", "export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n", "/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n", "import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n", "import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M7 7h10v10', key: '1tivn9' }],\n ['path', { d: 'M7 17 17 7', key: '1vkiza' }],\n];\n\n/**\n * @component @name ArrowUpRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/arrow-up-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowUpRight = createLucideIcon('arrow-up-right', __iconNode);\n\nexport default ArrowUpRight;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n [\n 'path',\n {\n d: 'M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z',\n key: '1l2ple',\n },\n ],\n [\n 'path',\n {\n d: 'M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z',\n key: '1wam0m',\n },\n ],\n];\n\n/**\n * @component @name Atom\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/atom\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Atom = createLucideIcon('atom', __iconNode);\n\nexport default Atom;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M10 22V7a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5a1 1 0 0 0-1-1H2',\n key: '1ah6g2',\n },\n ],\n ['rect', { x: '14', y: '2', width: '8', height: '8', rx: '1', key: '88lufb' }],\n];\n\n/**\n * @component @name Blocks\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/blocks\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Blocks = createLucideIcon('blocks', __iconNode);\n\nexport default Blocks;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 12h4', key: 'a56b0p' }],\n ['path', { d: 'M10 8h4', key: '1sr2af' }],\n ['path', { d: 'M14 21v-3a2 2 0 0 0-4 0v3', key: '1rgiei' }],\n [\n 'path',\n {\n d: 'M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2',\n key: 'secmi2',\n },\n ],\n ['path', { d: 'M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16', key: '16ra0t' }],\n];\n\n/**\n * @component @name Building2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/building-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Building2 = createLucideIcon('building-2', __iconNode);\n\nexport default Building2;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]];\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon('check', __iconNode);\n\nexport default Check;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }]];\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('chevron-left', __iconNode);\n\nexport default ChevronLeft;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'm9 12 2 2 4-4', key: 'dzmm74' }],\n];\n\n/**\n * @component @name CircleCheck\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleCheck = createLucideIcon('circle-check', __iconNode);\n\nexport default CircleCheck;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M8 12h8', key: '1wcyev' }],\n ['path', { d: 'M12 8v8', key: 'napkw2' }],\n];\n\n/**\n * @component @name CirclePlus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CirclePlus = createLucideIcon('circle-plus', __iconNode);\n\nexport default CirclePlus;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '8', height: '4', x: '8', y: '2', rx: '1', ry: '1', key: 'tgr4d6' }],\n [\n 'path',\n {\n d: 'M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2',\n key: '116196',\n },\n ],\n ['path', { d: 'm9 14 2 2 4-4', key: 'df797q' }],\n];\n\n/**\n * @component @name ClipboardCheck\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/clipboard-check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ClipboardCheck = createLucideIcon('clipboard-check', __iconNode);\n\nexport default ClipboardCheck;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 20v2', key: '1lh1kg' }],\n ['path', { d: 'M12 2v2', key: 'tus03m' }],\n ['path', { d: 'M17 20v2', key: '1rnc9c' }],\n ['path', { d: 'M17 2v2', key: '11trls' }],\n ['path', { d: 'M2 12h2', key: '1t8f8n' }],\n ['path', { d: 'M2 17h2', key: '7oei6x' }],\n ['path', { d: 'M2 7h2', key: 'asdhe0' }],\n ['path', { d: 'M20 12h2', key: '1q8mjw' }],\n ['path', { d: 'M20 17h2', key: '1fpfkl' }],\n ['path', { d: 'M20 7h2', key: '1o8tra' }],\n ['path', { d: 'M7 20v2', key: '4gnj0m' }],\n ['path', { d: 'M7 2v2', key: '1i4yhu' }],\n ['rect', { x: '4', y: '4', width: '16', height: '16', rx: '2', key: '1vbyd7' }],\n ['rect', { x: '8', y: '8', width: '8', height: '8', rx: '1', key: 'z9xiuo' }],\n];\n\n/**\n * @component @name Cpu\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/cpu\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Cpu = createLucideIcon('cpu', __iconNode);\n\nexport default Cpu;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z',\n key: '1vdc57',\n },\n ],\n ['path', { d: 'M5 21h14', key: '11awu3' }],\n];\n\n/**\n * @component @name Crown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/crown\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Crown = createLucideIcon('crown', __iconNode);\n\nexport default Crown;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n];\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('external-link', __iconNode);\n\nexport default ExternalLink;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M10 9H8', key: 'b1mrlr' }],\n ['path', { d: 'M16 13H8', key: 't4e002' }],\n ['path', { d: 'M16 17H8', key: 'z1uh3a' }],\n];\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon('file-text', __iconNode);\n\nexport default FileText;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2',\n key: '18mbvz',\n },\n ],\n ['path', { d: 'M6.453 15h11.094', key: '3shlmq' }],\n ['path', { d: 'M8.5 2h7', key: 'csnxdl' }],\n];\n\n/**\n * @component @name FlaskConical\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/flask-conical\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FlaskConical = createLucideIcon('flask-conical', __iconNode);\n\nexport default FlaskConical;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 6a9 9 0 0 0-9 9V3', key: '1cii5b' }],\n ['circle', { cx: '18', cy: '6', r: '3', key: '1h7g24' }],\n ['circle', { cx: '6', cy: '18', r: '3', key: 'fqmcym' }],\n];\n\n/**\n * @component @name GitBranch\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/git-branch\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitBranch = createLucideIcon('git-branch', __iconNode);\n\nexport default GitBranch;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4',\n key: 'tonef',\n },\n ],\n ['path', { d: 'M9 18c-4.51 2-5-2-7-2', key: '9comsn' }],\n];\n\n/**\n * @component @name Github\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/github\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n * @deprecated Brand icons have been deprecated and are due to be removed, please refer to https://github.com/lucide-icons/lucide/issues/670. We recommend using https://simpleicons.org/?q=github instead. This icon will be removed in v1.0\n */\nconst Github = createLucideIcon('github', __iconNode);\n\nexport default Github;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z',\n key: 'zw3jo',\n },\n ],\n [\n 'path',\n {\n d: 'M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12',\n key: '1wduqc',\n },\n ],\n [\n 'path',\n {\n d: 'M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17',\n key: 'kqbvx6',\n },\n ],\n];\n\n/**\n * @component @name Layers\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/layers\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Layers = createLucideIcon('layers', __iconNode);\n\nexport default Layers;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M13 5h8', key: 'a7qcls' }],\n ['path', { d: 'M13 12h8', key: 'h98zly' }],\n ['path', { d: 'M13 19h8', key: 'c3s6r1' }],\n ['path', { d: 'm3 17 2 2 4-4', key: '1jhpwq' }],\n ['path', { d: 'm3 7 2 2 4-4', key: '1obspn' }],\n];\n\n/**\n * @component @name ListChecks\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/list-checks\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ListChecks = createLucideIcon('list-checks', __iconNode);\n\nexport default ListChecks;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '11', x: '3', y: '11', rx: '2', ry: '2', key: '1w4ew1' }],\n ['path', { d: 'M7 11V7a5 5 0 0 1 10 0v4', key: 'fwvmzm' }],\n];\n\n/**\n * @component @name Lock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/lock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lock = createLucideIcon('lock', __iconNode);\n\nexport default Lock;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z',\n key: '18887p',\n },\n ],\n];\n\n/**\n * @component @name MessageSquare\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/message-square\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MessageSquare = createLucideIcon('message-square', __iconNode);\n\nexport default MessageSquare;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n];\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/pencil\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pencil = createLucideIcon('pencil', __iconNode);\n\nexport default Pencil;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8', key: 'v9h5vc' }],\n ['path', { d: 'M21 3v5h-5', key: '1q7to0' }],\n ['path', { d: 'M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16', key: '3uifl3' }],\n ['path', { d: 'M8 16H3v5', key: '1cv678' }],\n];\n\n/**\n * @component @name RefreshCw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/refresh-cw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RefreshCw = createLucideIcon('refresh-cw', __iconNode);\n\nexport default RefreshCw;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5', key: 'qeys4' }],\n [\n 'path',\n {\n d: 'M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09',\n key: 'u4xsad',\n },\n ],\n [\n 'path',\n {\n d: 'M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z',\n key: '676m9',\n },\n ],\n ['path', { d: 'M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05', key: '92ym6u' }],\n];\n\n/**\n * @component @name Rocket\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/rocket\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Rocket = createLucideIcon('rocket', __iconNode);\n\nexport default Rocket;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8', key: '1357e3' }],\n ['path', { d: 'M3 3v5h5', key: '1xhq8a' }],\n];\n\n/**\n * @component @name RotateCcw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/rotate-ccw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RotateCcw = createLucideIcon('rotate-ccw', __iconNode);\n\nexport default RotateCcw;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z',\n key: '1ffxy3',\n },\n ],\n ['path', { d: 'm21.854 2.147-10.94 10.939', key: '12cjpa' }],\n];\n\n/**\n * @component @name Send\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/send\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Send = createLucideIcon('send', __iconNode);\n\nexport default Send;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M14 17H5', key: 'gfn3mx' }],\n ['path', { d: 'M19 7h-9', key: '6i9tg' }],\n ['circle', { cx: '17', cy: '17', r: '3', key: '18b49y' }],\n ['circle', { cx: '7', cy: '7', r: '3', key: 'dfmy0x' }],\n];\n\n/**\n * @component @name Settings2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/settings-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Settings2 = createLucideIcon('settings-2', __iconNode);\n\nexport default Settings2;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915',\n key: '1i5ecw',\n },\n ],\n ['circle', { cx: '12', cy: '12', r: '3', key: '1v7zrd' }],\n];\n\n/**\n * @component @name Settings\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/settings\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Settings = createLucideIcon('settings', __iconNode);\n\nexport default Settings;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n];\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('shield', __iconNode);\n\nexport default Shield;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n];\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Sparkles = createLucideIcon('sparkles', __iconNode);\n\nexport default Sparkles;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3',\n key: 'wmoenq',\n },\n ],\n ['path', { d: 'M12 9v4', key: 'juzpu7' }],\n ['path', { d: 'M12 17h.01', key: 'p32p05' }],\n];\n\n/**\n * @component @name TriangleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/triangle-alert\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TriangleAlert = createLucideIcon('triangle-alert', __iconNode);\n\nexport default TriangleAlert;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2', key: '1yyitq' }],\n ['path', { d: 'M16 3.128a4 4 0 0 1 0 7.744', key: '16gr8j' }],\n ['path', { d: 'M22 21v-2a4 4 0 0 0-3-3.87', key: 'kshegd' }],\n ['circle', { cx: '9', cy: '7', r: '4', key: 'nufk8' }],\n];\n\n/**\n * @component @name Users\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/users\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Users = createLucideIcon('users', __iconNode);\n\nexport default Users;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '8', height: '8', x: '3', y: '3', rx: '2', key: 'by2w9f' }],\n ['path', { d: 'M7 11v4a2 2 0 0 0 2 2h4', key: 'xkn7yn' }],\n ['rect', { width: '8', height: '8', x: '13', y: '13', rx: '2', key: '1cgmvn' }],\n];\n\n/**\n * @component @name Workflow\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/workflow\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Workflow = createLucideIcon('workflow', __iconNode);\n\nexport default Workflow;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z',\n key: '1ngwbx',\n },\n ],\n];\n\n/**\n * @component @name Wrench\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/wrench\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Wrench = createLucideIcon('wrench', __iconNode);\n\nexport default Wrench;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n];\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('x', __iconNode);\n\nexport default X;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z',\n key: '1xq2db',\n },\n ],\n];\n\n/**\n * @component @name Zap\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/zap\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Zap = createLucideIcon('zap', __iconNode);\n\nexport default Zap;\n", "import { useEffect } from 'react';\nimport {\n useWizard,\n useWizardDispatch,\n prevStep,\n getUserStepIndex,\n getTotalSteps,\n} from '../context/WizardContext';\nimport { StepOnboarding } from './steps/StepOnboarding';\nimport { StepName } from './steps/StepName';\nimport { StepGoal } from './steps/StepGoal';\nimport { StepRepository } from './steps/StepRepository';\nimport { StepPreset } from './steps/StepPreset';\nimport { StepModules } from './steps/StepModules';\nimport { StepRoles } from './steps/StepRoles';\nimport { StepSummary } from './steps/StepSummary';\nimport { StepAiWizard } from './steps/StepAiWizard';\nimport { StepProvision } from './steps/StepProvision';\nimport { StepDone } from './steps/StepDone';\nimport { Button } from './ui/button';\n\nconst STEP_COMPONENTS = {\n onboarding: StepOnboarding,\n name: StepName,\n goal: StepGoal,\n repository: StepRepository,\n preset: StepPreset,\n modules: StepModules,\n roles: StepRoles,\n summary: StepSummary,\n 'ai-wizard': StepAiWizard,\n provision: StepProvision,\n done: StepDone,\n} as const;\n\nfunction StepIndicator() {\n const state = useWizard();\n const current = getUserStepIndex(state);\n const total = getTotalSteps(state);\n\n if (\n current < 1 ||\n state.step === 'provision' ||\n state.step === 'done' ||\n state.step === 'ai-wizard'\n )\n return null;\n\n return (\n <div className=\"flex items-center gap-1.5\">\n {Array.from({ length: total }, (_, i) => (\n <div\n key={i}\n className={`h-1.5 rounded-full transition-all duration-300 ${\n i + 1 <= current ? 'w-6 bg-foreground' : 'w-1.5 bg-muted-foreground/30'\n }`}\n />\n ))}\n <span className=\"ml-2 text-xs text-muted-foreground\">\n {current}/{total}\n </span>\n </div>\n );\n}\n\nexport function WizardShell() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n\n const StepComponent = STEP_COMPONENTS[state.step];\n\n useEffect(() => {\n window.scrollTo({ top: 0 });\n }, [state.step]);\n\n return (\n <div className=\"flex flex-col\">\n {/* Step indicator (compact, no standalone header) */}\n {getUserStepIndex(state) >= 1 && state.step !== 'provision' && state.step !== 'done' && (\n <div className=\"flex items-center justify-end px-6 py-3\">\n <StepIndicator />\n </div>\n )}\n\n {/* Content */}\n <main className=\"flex-1 flex items-start justify-center p-6\">\n <div className=\"w-full max-w-2xl\">\n <StepComponent />\n </div>\n </main>\n\n {/* Error bar */}\n {state.error && (\n <div className=\"fixed bottom-0 inset-x-0 bg-destructive/10 border-t border-destructive/20 px-6 py-3 text-sm text-destructive flex items-center justify-between\">\n <span>{state.error}</span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => dispatch({ type: 'SET_ERROR', error: null })}\n >\n Dismiss\n </Button>\n </div>\n )}\n </div>\n );\n}\n", "import { createContext, useCallback, useContext, useState, type ReactNode } from 'react';\nimport type { PresetData, ModuleData, RoleData } from '../types';\n\n// --- Types ---\n\nexport type WizardPath = 'manual' | 'ai';\n\nexport type Step =\n | 'onboarding'\n | 'name'\n | 'goal'\n | 'repository'\n | 'preset'\n | 'modules'\n | 'roles'\n | 'summary'\n | 'ai-wizard'\n | 'provision'\n | 'done';\n\nexport interface Goal {\n title: string;\n description: string;\n parentGoal?: string;\n}\n\nexport interface WizardProject {\n name: string;\n description: string;\n goals: string[]; // goal titles this project is linked to\n workspace?: ProjectWorkspaceConfig;\n workspaceSourceType?: ProjectWorkspaceConfig['sourceType'];\n repoUrl?: string;\n repoRef?: string;\n defaultRef?: string;\n executionWorkspacePolicy?: ProjectExecutionWorkspacePolicy;\n}\n\nexport interface WizardIssue {\n title: string;\n description: string;\n priority?: string;\n assignTo?: string; // role name (e.g. \"engineer\") or \"user\"; resolved at assembly\n}\n\nexport interface ProjectWorkspaceConfig {\n name?: string;\n sourceType?: 'local_path' | 'git_repo' | 'remote_managed' | 'non_git_path' | string;\n cwd?: string | null;\n repoUrl?: string | null;\n repoRef?: string | null;\n defaultRef?: string | null;\n isPrimary?: boolean;\n visibility?: 'default' | 'advanced' | string;\n setupCommand?: string | null;\n cleanupCommand?: string | null;\n remoteProvider?: string | null;\n remoteWorkspaceRef?: string | null;\n sharedWorkspaceKey?: string | null;\n metadata?: Record<string, unknown> | null;\n runtimeConfig?: Record<string, unknown> | null;\n}\n\nexport interface ProjectExecutionWorkspacePolicy {\n defaultMode?:\n | 'shared_workspace'\n | 'isolated_workspace'\n | 'operator_branch'\n | 'adapter_default'\n | string;\n allowIssueOverride?: boolean;\n defaultProjectWorkspaceId?: string | null;\n environmentId?: string | null;\n workspaceStrategy?: {\n type?: string;\n baseRef?: string;\n [key: string]: unknown;\n } | null;\n [key: string]: unknown;\n}\n\nexport interface CeoAdapter {\n type: string;\n cwd: string;\n model: string;\n}\n\nexport interface ProvisionResult {\n companyId: string;\n issuePrefix?: string;\n paperclipUrl?: string;\n goalId?: string;\n agentIds: Record<string, string>;\n issueIds: string[];\n}\n\nexport interface WizardState {\n step: Step;\n path: WizardPath | null;\n\n // User input\n companyName: string;\n goals: Goal[];\n projects: WizardProject[];\n issues: WizardIssue[];\n ceoAdapter: CeoAdapter;\n existingCompanyId: string;\n presetName: string;\n selectedModules: string[];\n selectedRoles: string[];\n\n // AI wizard\n aiDescription: string;\n aiExplanation: string;\n companyDescription: string;\n aiLoading: boolean;\n\n // Templates\n presets: PresetData[];\n modules: ModuleData[];\n roles: RoleData[];\n\n // File overrides: relative path \u2192 edited content (applied during provisioning)\n fileOverrides: Record<string, string>;\n\n // Results\n provisioning: boolean;\n provisionLog: string[];\n provisionResult: ProvisionResult | null;\n error: string | null;\n}\n\n// --- Actions ---\n\ntype Action =\n | { type: 'SET_PATH'; path: WizardPath }\n | { type: 'GO_TO'; step: Step }\n | { type: 'SET_COMPANY_NAME'; value: string }\n | { type: 'SET_GOALS'; goals: Goal[] }\n | { type: 'SET_PROJECTS'; projects: WizardProject[] }\n | { type: 'SET_CEO_ADAPTER'; adapter: Partial<CeoAdapter> }\n | { type: 'SET_EXISTING_COMPANY_ID'; value: string }\n | { type: 'SET_PRESET'; name: string }\n | { type: 'SET_MODULES'; modules: string[] }\n | { type: 'SET_ROLES'; roles: string[] }\n | { type: 'SET_AI_DESCRIPTION'; value: string }\n | { type: 'SET_AI_LOADING'; value: boolean }\n | { type: 'APPLY_AI_RESULT'; result: Partial<WizardState> }\n | { type: 'SET_FILE_OVERRIDE'; path: string; content: string }\n | { type: 'DELETE_FILE_OVERRIDE'; path: string }\n | { type: 'CLEAR_FILE_OVERRIDES' }\n | { type: 'SET_PROVISIONING'; value: boolean }\n | { type: 'ADD_PROVISION_LOG'; line: string }\n | { type: 'SET_PROVISION_RESULT'; result: ProvisionResult }\n | { type: 'SET_ERROR'; error: string | null }\n | { type: 'RESET' };\n\n// --- Step flow ---\n\nconst MANUAL_STEPS: Step[] = [\n 'onboarding',\n 'name',\n 'goal',\n 'repository',\n 'preset',\n 'modules',\n 'roles',\n 'summary',\n 'provision',\n 'done',\n];\n\nconst AI_STEPS: Step[] = ['onboarding', 'ai-wizard', 'provision', 'done'];\n\nexport function getStepIndex(state: WizardState): number {\n const steps = state.path === 'ai' ? AI_STEPS : MANUAL_STEPS;\n return steps.indexOf(state.step);\n}\n\nexport function getTotalSteps(state: WizardState): number {\n const steps = state.path === 'ai' ? AI_STEPS : MANUAL_STEPS;\n return steps.filter((s) => s !== 'onboarding' && s !== 'provision' && s !== 'done').length;\n}\n\nexport function getUserStepIndex(state: WizardState): number {\n const steps = state.path === 'ai' ? AI_STEPS : MANUAL_STEPS;\n const userSteps = steps.filter((s) => s !== 'onboarding' && s !== 'provision' && s !== 'done');\n return userSteps.indexOf(state.step as (typeof userSteps)[number]) + 1;\n}\n\nexport function nextStep(state: WizardState): Step {\n const steps = state.path === 'ai' ? AI_STEPS : MANUAL_STEPS;\n const idx = steps.indexOf(state.step);\n return steps[Math.min(idx + 1, steps.length - 1)];\n}\n\nexport function prevStep(state: WizardState): Step {\n const steps = state.path === 'ai' ? AI_STEPS : MANUAL_STEPS;\n const idx = steps.indexOf(state.step);\n return steps[Math.max(idx - 1, 0)];\n}\n\n// --- Derived state ---\n\nexport function getAllRoles(state: WizardState): string[] {\n const baseRoles = state.roles.filter((r) => r._base).map((r) => r.name);\n return [...new Set([...baseRoles, ...state.selectedRoles])];\n}\n\nexport function getActiveModules(state: WizardState): ModuleData[] {\n const allRoles = new Set(getAllRoles(state));\n return state.modules.filter((m) => {\n if (!state.selectedModules.includes(m.name)) return false;\n if (m.activatesWithRoles?.length) {\n return m.activatesWithRoles.some((r) => allRoles.has(r));\n }\n return true;\n });\n}\n\n// --- Reducer ---\n\nconst initialState: WizardState = {\n step: 'onboarding',\n path: null,\n companyName: '',\n goals: [],\n projects: [],\n issues: [],\n ceoAdapter: { type: 'codex_local', cwd: '', model: 'gpt-5.5' },\n existingCompanyId: '',\n presetName: '',\n selectedModules: [],\n selectedRoles: [],\n aiDescription: '',\n aiExplanation: '',\n companyDescription: '',\n aiLoading: false,\n presets: [],\n modules: [],\n roles: [],\n fileOverrides: {},\n provisioning: false,\n provisionLog: [],\n provisionResult: null,\n error: null,\n};\n\nfunction reducer(state: WizardState, action: Action): WizardState {\n switch (action.type) {\n case 'SET_PATH':\n return {\n ...state,\n path: action.path,\n step: action.path === 'ai' ? 'ai-wizard' : 'name',\n };\n case 'GO_TO':\n return { ...state, step: action.step, error: null };\n case 'SET_COMPANY_NAME':\n return { ...state, companyName: action.value };\n case 'SET_GOALS':\n return { ...state, goals: action.goals };\n case 'SET_PROJECTS':\n return { ...state, projects: action.projects };\n case 'SET_CEO_ADAPTER':\n return { ...state, ceoAdapter: { ...state.ceoAdapter, ...action.adapter } };\n case 'SET_EXISTING_COMPANY_ID':\n return { ...state, existingCompanyId: action.value };\n case 'SET_PRESET': {\n const preset = state.presets.find((p) => p.name === action.name);\n return {\n ...state,\n presetName: action.name,\n selectedModules: preset?.modules ?? [],\n selectedRoles: preset?.roles ?? [],\n fileOverrides: {},\n };\n }\n case 'SET_MODULES':\n return { ...state, selectedModules: action.modules, fileOverrides: {} };\n case 'SET_ROLES':\n return { ...state, selectedRoles: action.roles, fileOverrides: {} };\n case 'SET_AI_DESCRIPTION':\n return { ...state, aiDescription: action.value };\n case 'SET_AI_LOADING':\n return { ...state, aiLoading: action.value };\n case 'APPLY_AI_RESULT':\n return { ...state, ...action.result };\n case 'SET_FILE_OVERRIDE':\n return { ...state, fileOverrides: { ...state.fileOverrides, [action.path]: action.content } };\n case 'DELETE_FILE_OVERRIDE': {\n const next = { ...state.fileOverrides };\n delete next[action.path];\n return { ...state, fileOverrides: next };\n }\n case 'CLEAR_FILE_OVERRIDES':\n return { ...state, fileOverrides: {} };\n case 'SET_PROVISIONING':\n return {\n ...state,\n provisioning: action.value,\n provisionLog: action.value ? [] : state.provisionLog,\n };\n case 'ADD_PROVISION_LOG':\n return {\n ...state,\n provisionLog: [...state.provisionLog, action.line],\n };\n case 'SET_PROVISION_RESULT':\n return {\n ...state,\n provisionResult: action.result,\n provisioning: false,\n };\n case 'SET_ERROR':\n return { ...state, error: action.error, provisioning: false };\n case 'RESET':\n return {\n ...initialState,\n presets: state.presets,\n modules: state.modules,\n roles: state.roles,\n };\n default:\n return state;\n }\n}\n\n// --- Context ---\n\nconst WizardContext = createContext<WizardState>(initialState);\nconst WizardDispatchContext = createContext<(action: Action) => void>(() => {});\n\nexport function WizardProvider({\n children,\n templates,\n}: {\n children: ReactNode;\n templates: { presets: PresetData[]; modules: ModuleData[]; roles: RoleData[] };\n}) {\n const [state, setState] = useState<WizardState>({\n ...initialState,\n ...templates,\n });\n const dispatch = useCallback((action: Action) => setState((prev) => reducer(prev, action)), []);\n\n return (\n <WizardContext.Provider value={state}>\n <WizardDispatchContext.Provider value={dispatch}>{children}</WizardDispatchContext.Provider>\n </WizardContext.Provider>\n );\n}\n\nexport function useWizard() {\n return useContext(WizardContext);\n}\n\nexport function useWizardDispatch() {\n return useContext(WizardDispatchContext);\n}\n", "import { useEffect, useState } from 'react';\nimport { useWizardDispatch } from '../../context/WizardContext';\nimport { usePluginAction } from '@paperclipai/plugin-sdk/ui';\nimport { Card, CardHeader, CardTitle, CardDescription, CardContent } from '../ui/card';\nimport { Building2, Sparkles, RefreshCw, ExternalLink } from 'lucide-react';\nimport { cn } from '../../lib/utils';\n\ntype UpdateInfo = {\n ok?: boolean;\n updateAvailable?: boolean;\n currentVersion?: string;\n latestVersion?: string;\n url?: string;\n};\n\nfunction PathCard({\n icon: Icon,\n title,\n description,\n details,\n onClick,\n}: {\n icon: React.ElementType;\n title: string;\n description: string;\n details: string[];\n onClick: () => void;\n}) {\n return (\n <Card\n className={cn(\n 'cursor-pointer transition-all duration-200',\n 'hover:border-foreground/20 hover:shadow-md',\n 'active:scale-[0.98]',\n )}\n onClick={onClick}\n >\n <CardHeader>\n <div className=\"flex items-center gap-3\">\n <div className=\"h-10 w-10 rounded-lg bg-secondary flex items-center justify-center\">\n <Icon className=\"h-5 w-5\" />\n </div>\n <div>\n <CardTitle className=\"text-base\">{title}</CardTitle>\n <CardDescription>{description}</CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent>\n <ul className=\"space-y-1.5\">\n {details.map((d, i) => (\n <li key={i} className=\"text-sm text-muted-foreground flex items-baseline gap-2\">\n <span className=\"text-foreground/40 shrink-0\">-</span>\n {d}\n </li>\n ))}\n </ul>\n </CardContent>\n </Card>\n );\n}\n\nexport function StepOnboarding() {\n const dispatch = useWizardDispatch();\n const refreshTemplates = usePluginAction('refresh-templates');\n const checkUpdate = usePluginAction('check-update');\n const [refreshing, setRefreshing] = useState(false);\n const [refreshMsg, setRefreshMsg] = useState<string | null>(null);\n const [updateInfo, setUpdateInfo] = useState<UpdateInfo | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n checkUpdate({})\n .then((result: unknown) => {\n if (!cancelled) setUpdateInfo(result as UpdateInfo);\n })\n .catch(() => {\n if (!cancelled) setUpdateInfo(null);\n });\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleRefresh = async () => {\n setRefreshing(true);\n setRefreshMsg(null);\n try {\n const result = (await refreshTemplates({})) as { ok?: boolean; error?: string };\n if (result?.error) {\n setRefreshMsg(result.error);\n } else {\n setRefreshMsg('Templates updated \u2014 reload the page to use them.');\n }\n } catch (err) {\n setRefreshMsg(err instanceof Error ? err.message : 'Refresh failed');\n } finally {\n setRefreshing(false);\n }\n };\n\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-2\">\n <h1 className=\"text-2xl font-semibold tracking-tight\">Create a company</h1>\n <p className=\"text-muted-foreground\">\n Choose how you'd like to set up your AI agent organization.\n </p>\n </div>\n\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <PathCard\n icon={Building2}\n title=\"Setup my own org\"\n description=\"Configure step by step\"\n details={[\n 'Choose team preset or go custom',\n 'Pick modules and roles',\n 'Define goal and first project',\n 'Full control over every detail',\n ]}\n onClick={() => dispatch({ type: 'SET_PATH', path: 'manual' })}\n />\n <PathCard\n icon={Sparkles}\n title=\"Autonomous from idea\"\n description=\"Describe it, we'll configure it\"\n details={[\n 'Describe your company in plain English',\n 'AI selects optimal team and modules',\n 'Review and adjust before creating',\n 'Fastest way to get started',\n ]}\n onClick={() => dispatch({ type: 'SET_PATH', path: 'ai' })}\n />\n </div>\n\n <div className=\"flex flex-wrap items-center justify-center gap-2 pt-2\">\n <button\n onClick={handleRefresh}\n disabled={refreshing}\n className=\"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors disabled:opacity-50\"\n >\n <RefreshCw className={cn('h-3 w-3', refreshing && 'animate-spin')} />\n {refreshing ? 'Updating templates\u2026' : 'Update templates'}\n </button>\n {updateInfo?.ok && updateInfo.updateAvailable && (\n <>\n <span className=\"text-xs text-muted-foreground/40\">|</span>\n <span className=\"inline-flex items-center gap-1 text-xs text-muted-foreground\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-amber-500\" />\n Company Wizard plugin update: {updateInfo.currentVersion} \u2192 {updateInfo.latestVersion}\n {updateInfo.url && (\n <a\n href={updateInfo.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"inline-flex items-center gap-0.5 font-medium text-foreground hover:underline\"\n title=\"Update the Company Wizard plugin package, then reload Paperclip\"\n >\n npm\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n )}\n </span>\n </>\n )}\n {refreshMsg && <span className=\"text-xs text-muted-foreground\">{refreshMsg}</span>}\n </div>\n </div>\n );\n}\n", "import * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('rounded-xl border bg-card text-card-foreground shadow-sm', className)}\n {...props}\n />\n ),\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n ),\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n ),\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />\n ),\n);\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n ),\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />\n ),\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n", "function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;", "/**\n * Concatenates two arrays faster than the array spread operator.\n */\nexport const concatArrays = <T, U>(\n array1: readonly T[],\n array2: readonly U[],\n): readonly (T | U)[] => {\n // Pre-allocate for better V8 optimization\n const combinedArray: (T | U)[] = new Array(array1.length + array2.length)\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i]!\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i]!\n }\n return combinedArray\n}\n", "import {\n AnyClassGroupIds,\n AnyConfig,\n AnyThemeGroupIds,\n ClassGroup,\n ClassValidator,\n Config,\n ThemeGetter,\n ThemeObject,\n} from './types'\nimport { concatArrays } from './utils'\n\nexport interface ClassPartObject {\n nextPart: Map<string, ClassPartObject>\n validators: ClassValidatorObject[] | null\n classGroupId: AnyClassGroupIds | undefined // Always define optional props for consistent shape\n}\n\ninterface ClassValidatorObject {\n classGroupId: AnyClassGroupIds\n validator: ClassValidator\n}\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (\n classGroupId: AnyClassGroupIds,\n validator: ClassValidator,\n): ClassValidatorObject => ({\n classGroupId,\n validator,\n})\n\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (\n nextPart: Map<string, ClassPartObject> = new Map(),\n validators: ClassValidatorObject[] | null = null,\n classGroupId?: AnyClassGroupIds,\n): ClassPartObject => ({\n nextPart,\n validators,\n classGroupId,\n})\n\nconst CLASS_PART_SEPARATOR = '-'\n\nconst EMPTY_CONFLICTS: readonly AnyClassGroupIds[] = []\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n const getClassGroupId = (className: string) => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className)\n }\n\n const classParts = className.split(CLASS_PART_SEPARATOR)\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0\n return getGroupRecursive(classParts, startIndex, classMap)\n }\n\n const getConflictingClassGroupIds = (\n classGroupId: AnyClassGroupIds,\n hasPostfixModifier: boolean,\n ): readonly AnyClassGroupIds[] => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId]\n const baseConflicts = conflictingClassGroups[classGroupId]\n\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts)\n }\n // Only modifier conflicts\n return modifierConflicts\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS\n }\n\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nconst getGroupRecursive = (\n classParts: string[],\n startIndex: number,\n classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n const classPathsLength = classParts.length - startIndex\n if (classPathsLength === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[startIndex]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject)\n if (result) return result\n }\n\n const validators = classPartObject.validators\n if (validators === null) {\n return undefined\n }\n\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest =\n startIndex === 0\n ? classParts.join(CLASS_PART_SEPARATOR)\n : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR)\n const validatorsLength = validators.length\n\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i]!\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId\n }\n }\n\n return undefined\n}\n\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = (className: string): AnyClassGroupIds | undefined =>\n className.slice(1, -1).indexOf(':') === -1\n ? undefined\n : (() => {\n const content = className.slice(1, -1)\n const colonIndex = content.indexOf(':')\n const property = content.slice(0, colonIndex)\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined\n })()\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config<AnyClassGroupIds, AnyThemeGroupIds>) => {\n const { theme, classGroups } = config\n return processClassGroups(classGroups, theme)\n}\n\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (\n classGroups: Record<AnyClassGroupIds, ClassGroup<AnyThemeGroupIds>>,\n theme: ThemeObject<AnyThemeGroupIds>,\n): ClassPartObject => {\n const classMap = createClassPartObject()\n\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId]!\n processClassesRecursively(group, classMap, classGroupId, theme)\n }\n\n return classMap\n}\n\nconst processClassesRecursively = (\n classGroup: ClassGroup<AnyThemeGroupIds>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const len = classGroup.length\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i]!\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme)\n }\n}\n\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (\n classDefinition: ClassGroup<AnyThemeGroupIds>[number],\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId)\n return\n }\n\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme)\n return\n }\n\n processObjectDefinition(\n classDefinition as Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject,\n classGroupId,\n theme,\n )\n}\n\nconst processStringDefinition = (\n classDefinition: string,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n) => {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n}\n\nconst processFunctionDefinition = (\n classDefinition: Function,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme)\n return\n }\n\n if (classPartObject.validators === null) {\n classPartObject.validators = []\n }\n classPartObject.validators.push(\n createClassValidatorObject(classGroupId, classDefinition as ClassValidator),\n )\n}\n\nconst processObjectDefinition = (\n classDefinition: Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const entries = Object.entries(classDefinition)\n const len = entries.length\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i]!\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme)\n }\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string): ClassPartObject => {\n let current = classPartObject\n const parts = path.split(CLASS_PART_SEPARATOR)\n const len = parts.length\n\n for (let i = 0; i < len; i++) {\n const part = parts[i]!\n\n let next = current.nextPart.get(part)\n if (!next) {\n next = createClassPartObject()\n current.nextPart.set(part, next)\n }\n current = next\n }\n\n return current\n}\n\n// Type guard maintains monomorphic check\nconst isThemeGetter = (func: Function): func is ThemeGetter =>\n 'isThemeGetter' in func && (func as ThemeGetter).isThemeGetter === true\n", "// Export is needed because TypeScript complains about an error otherwise:\n// Error: \u2026/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"\u2026/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache<Key extends string, Value> {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\n\n// LRU cache implementation using plain objects for simplicity\nexport const createLruCache = <Key extends string, Value>(\n maxCacheSize: number,\n): LruCache<Key, Value> => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache: Record<Key, Value> = Object.create(null)\n let previousCache: Record<Key, Value> = Object.create(null)\n\n const update = (key: Key, value: Value) => {\n cache[key] = value\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = Object.create(null)\n }\n }\n\n return {\n get(key) {\n let value = cache[key]\n\n if (value !== undefined) {\n return value\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value)\n return value\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value\n } else {\n update(key, value)\n }\n },\n }\n}\n", "import { AnyConfig, ParsedClassName } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nconst MODIFIER_SEPARATOR = ':'\nconst EMPTY_MODIFIERS: string[] = []\n\n// Pre-allocated result object shape for consistency\nconst createResultObject = (\n modifiers: string[],\n hasImportantModifier: boolean,\n baseClassName: string,\n maybePostfixModifierPosition?: number,\n isExternal?: boolean,\n): ParsedClassName => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal,\n})\n\nexport const createParseClassName = (config: AnyConfig) => {\n const { prefix, experimentalParseClassName } = config\n\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = (className: string): ParsedClassName => {\n // Use simple array with push for better performance\n const modifiers: string[] = []\n\n let bracketDepth = 0\n let parenDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n const len = className.length\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index]!\n\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + 1\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') bracketDepth++\n else if (currentCharacter === ']') bracketDepth--\n else if (currentCharacter === '(') parenDepth++\n else if (currentCharacter === ')') parenDepth--\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.slice(modifierStart)\n\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier\n let hasImportantModifier = false\n\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1)\n hasImportantModifier = true\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n ) {\n baseClassName = baseClassNameWithImportantModifier.slice(1)\n hasImportantModifier = true\n }\n\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return createResultObject(\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n )\n }\n\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n className.startsWith(fullPrefix)\n ? parseClassNameOriginal(className.slice(fullPrefix.length))\n : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true)\n }\n\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n experimentalParseClassName({ className, parseClassName: parseClassNameOriginal })\n }\n\n return parseClassName\n}\n", "import { AnyConfig } from './types'\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport const createSortModifiers = (config: AnyConfig) => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map<string, number>()\n\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index) // High weights for sensitive mods\n })\n\n return (modifiers: readonly string[]): string[] => {\n const result: string[] = []\n let currentSegment: string[] = []\n\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i]!\n\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '['\n const isOrderSensitive = modifierWeights.has(modifier)\n\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n currentSegment = []\n }\n result.push(modifier)\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier)\n }\n }\n\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n }\n\n return result\n }\n}\n", "import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { createSortModifiers } from './sort-modifiers'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n cache: createLruCache<string, string>(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config),\n})\n", "import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } =\n configUtils\n\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict: string[] = []\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n let result = ''\n\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index]!\n\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n } = parseClassName(originalClassName)\n\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n let hasPostfixModifier = !!maybePostfixModifierPosition\n let classGroupId = getClassGroupId(\n hasPostfixModifier\n ? baseClassName.substring(0, maybePostfixModifierPosition)\n : baseClassName,\n )\n\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n hasPostfixModifier = false\n }\n\n // Fast path: skip sorting for empty or single modifier\n const variantModifier =\n modifiers.length === 0\n ? ''\n : modifiers.length === 1\n ? modifiers[0]!\n : sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue\n }\n\n classGroupsInConflict.push(classId)\n\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier)\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i]!\n classGroupsInConflict.push(modifierId + group)\n }\n\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n }\n\n return result\n}\n", "/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport const twJoin = (...classLists: ClassNameValue[]): string => {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\n while (index < classLists.length) {\n if ((argument = classLists[index++])) {\n if ((resolvedValue = toValue(argument))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n return string\n}\n\nconst toValue = (mix: ClassNameArray | string): string => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n", "import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createTailwindMerge = (\n createConfigFirst: CreateConfigFirst,\n ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge => {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall: (classList: string) => string\n\n const initTailwindMerge = (classList: string) => {\n const config = createConfigRest.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n createConfigFirst() as AnyConfig,\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n const tailwindMerge = (classList: string) => {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n functionToCall = initTailwindMerge\n\n return (...args: ClassNameValue[]) => functionToCall(twJoin(...args))\n}\n", "import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nconst fallbackThemeArr: ThemeObject<DefaultThemeGroupIds>[DefaultThemeGroupIds] = []\n\nexport const fromTheme = <\n AdditionalThemeGroupIds extends string = never,\n DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(\n key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>,\n): ThemeGetter => {\n const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>\n theme[key] || fallbackThemeArr\n\n themeGetter.isThemeGetter = true as const\n\n return themeGetter\n}\n", "const arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\nconst imageRegex =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isFraction = (value: string) => fractionRegex.test(value)\n\nexport const isNumber = (value: string) => !!value && !Number.isNaN(Number(value))\n\nexport const isInteger = (value: string) => !!value && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nexport const isAny = () => true\n\nconst isLengthOnly = (value: string) =>\n // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n\nexport const isAnyNonArbitrary = (value: string) =>\n !isArbitraryValue(value) && !isArbitraryVariable(value)\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, isLabelSize, isNever)\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n getIsArbitraryValue(value, isLabelLength, isLengthOnly)\n\nexport const isArbitraryNumber = (value: string) =>\n getIsArbitraryValue(value, isLabelNumber, isNumber)\n\nexport const isArbitraryWeight = (value: string) => getIsArbitraryValue(value, isLabelWeight, isAny)\n\nexport const isArbitraryFamilyName = (value: string) =>\n getIsArbitraryValue(value, isLabelFamilyName, isNever)\n\nexport const isArbitraryPosition = (value: string) =>\n getIsArbitraryValue(value, isLabelPosition, isNever)\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, isLabelImage, isImage)\n\nexport const isArbitraryShadow = (value: string) =>\n getIsArbitraryValue(value, isLabelShadow, isShadow)\n\nexport const isArbitraryVariable = (value: string) => arbitraryVariableRegex.test(value)\n\nexport const isArbitraryVariableLength = (value: string) =>\n getIsArbitraryVariable(value, isLabelLength)\n\nexport const isArbitraryVariableFamilyName = (value: string) =>\n getIsArbitraryVariable(value, isLabelFamilyName)\n\nexport const isArbitraryVariablePosition = (value: string) =>\n getIsArbitraryVariable(value, isLabelPosition)\n\nexport const isArbitraryVariableSize = (value: string) => getIsArbitraryVariable(value, isLabelSize)\n\nexport const isArbitraryVariableImage = (value: string) =>\n getIsArbitraryVariable(value, isLabelImage)\n\nexport const isArbitraryVariableShadow = (value: string) =>\n getIsArbitraryVariable(value, isLabelShadow, true)\n\nexport const isArbitraryVariableWeight = (value: string) =>\n getIsArbitraryVariable(value, isLabelWeight, true)\n\n// Helpers\n\nconst getIsArbitraryValue = (\n value: string,\n testLabel: (label: string) => boolean,\n testValue: (value: string) => boolean,\n) => {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nconst getIsArbitraryVariable = (\n value: string,\n testLabel: (label: string) => boolean,\n shouldMatchNoLabel = false,\n) => {\n const result = arbitraryVariableRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n return shouldMatchNoLabel\n }\n\n return false\n}\n\n// Labels\n\nconst isLabelPosition = (label: string) => label === 'position' || label === 'percentage'\n\nconst isLabelImage = (label: string) => label === 'image' || label === 'url'\n\nconst isLabelSize = (label: string) => label === 'length' || label === 'size' || label === 'bg-size'\n\nconst isLabelLength = (label: string) => label === 'length'\n\nconst isLabelNumber = (label: string) => label === 'number'\n\nconst isLabelFamilyName = (label: string) => label === 'family-name'\n\nconst isLabelWeight = (label: string) => label === 'number' || label === 'weight'\n\nconst isLabelShadow = (label: string) => label === 'shadow'\n", "import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n\n const themeColor = fromTheme('color')\n const themeFont = fromTheme('font')\n const themeText = fromTheme('text')\n const themeFontWeight = fromTheme('font-weight')\n const themeTracking = fromTheme('tracking')\n const themeLeading = fromTheme('leading')\n const themeBreakpoint = fromTheme('breakpoint')\n const themeContainer = fromTheme('container')\n const themeSpacing = fromTheme('spacing')\n const themeRadius = fromTheme('radius')\n const themeShadow = fromTheme('shadow')\n const themeInsetShadow = fromTheme('inset-shadow')\n const themeTextShadow = fromTheme('text-shadow')\n const themeDropShadow = fromTheme('drop-shadow')\n const themeBlur = fromTheme('blur')\n const themePerspective = fromTheme('perspective')\n const themeAspect = fromTheme('aspect')\n const themeEase = fromTheme('ease')\n const themeAnimate = fromTheme('animate')\n\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n\n const scaleBreak = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const scalePosition = () =>\n [\n 'center',\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top',\n 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top',\n 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom',\n 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom',\n ] as const\n const scalePositionWithArbitrary = () =>\n [...scalePosition(), isArbitraryVariable, isArbitraryValue] as const\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const scaleOverscroll = () => ['auto', 'contain', 'none'] as const\n const scaleUnambiguousSpacing = () =>\n [isArbitraryVariable, isArbitraryValue, themeSpacing] as const\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()] as const\n const scaleGridTemplateColsRows = () =>\n [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridColRowStartAndEnd = () =>\n [\n 'auto',\n { span: ['full', isInteger, isArbitraryVariable, isArbitraryValue] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleGridColRowStartOrEnd = () =>\n [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridAutoColsRows = () =>\n ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue] as const\n const scaleAlignPrimaryAxis = () =>\n [\n 'start',\n 'end',\n 'center',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n 'center-safe',\n 'end-safe',\n ] as const\n const scaleAlignSecondaryAxis = () =>\n ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'] as const\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()] as const\n const scaleSizing = () =>\n [\n isFraction,\n 'auto',\n 'full',\n 'dvw',\n 'dvh',\n 'lvw',\n 'lvh',\n 'svw',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleSizingInline = () =>\n [\n isFraction,\n 'screen',\n 'full',\n 'dvw',\n 'lvw',\n 'svw',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleSizingBlock = () =>\n [\n isFraction,\n 'screen',\n 'full',\n 'lh',\n 'dvh',\n 'lvh',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue] as const\n const scaleBgPosition = () =>\n [\n ...scalePosition(),\n isArbitraryVariablePosition,\n isArbitraryPosition,\n { position: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleBgRepeat = () => ['no-repeat', { repeat: ['', 'x', 'y', 'space', 'round'] }] as const\n const scaleBgSize = () =>\n [\n 'auto',\n 'cover',\n 'contain',\n isArbitraryVariableSize,\n isArbitrarySize,\n { size: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleGradientStopPosition = () =>\n [isPercent, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleRadius = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n 'full',\n themeRadius,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleBorderWidth = () =>\n ['', isNumber, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'] as const\n const scaleBlendMode = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ] as const\n const scaleMaskImagePosition = () =>\n [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition] as const\n const scaleBlur = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeBlur,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()] as const\n\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n ],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest'],\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [\n {\n aspect: [\n 'auto',\n 'square',\n isFraction,\n isArbitraryValue,\n isArbitraryVariable,\n themeAspect,\n ],\n },\n ],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [\n { columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer] },\n ],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': scaleBreak() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': scaleBreak() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: scalePositionWithArbitrary() }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: scaleOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': scaleOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': scaleOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: scaleOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': scaleOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': scaleOverscroll() }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{ inset: scaleInset() }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': scaleInset() }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': scaleInset() }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [\n {\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset(),\n },\n ],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [\n {\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset(),\n },\n ],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{ 'inset-bs': scaleInset() }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{ 'inset-be': scaleInset() }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: scaleInset() }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: scaleInset() }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: scaleInset() }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: scaleInset() }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [\n {\n basis: [\n isFraction,\n 'full',\n 'auto',\n themeContainer,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['nowrap', 'wrap', 'wrap-reverse'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [\n {\n order: [\n isInteger,\n 'first',\n 'last',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': scaleGridTemplateColsRows() }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{ col: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': scaleGridTemplateColsRows() }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{ row: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': scaleGridAutoColsRows() }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': scaleGridAutoColsRows() }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: scaleUnambiguousSpacing() }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': scaleUnambiguousSpacing() }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': scaleUnambiguousSpacing() }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: [...scaleAlignPrimaryAxis(), 'normal'] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...scaleAlignPrimaryAxis()] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: [...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [\n { self: ['auto', ...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] },\n ],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': scaleAlignPrimaryAxis() }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: scaleUnambiguousSpacing() }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: scaleUnambiguousSpacing() }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{ pbs: scaleUnambiguousSpacing() }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{ pbe: scaleUnambiguousSpacing() }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: scaleUnambiguousSpacing() }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: scaleUnambiguousSpacing() }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: scaleUnambiguousSpacing() }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: scaleUnambiguousSpacing() }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: scaleMargin() }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: scaleMargin() }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: scaleMargin() }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: scaleMargin() }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: scaleMargin() }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{ mbs: scaleMargin() }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{ mbe: scaleMargin() }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: scaleMargin() }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: scaleMargin() }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: scaleMargin() }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: scaleMargin() }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{ 'space-x': scaleUnambiguousSpacing() }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{ 'space-y': scaleUnambiguousSpacing() }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n\n // --------------\n // --- Sizing ---\n // --------------\n\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{ size: scaleSizing() }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{ inline: ['auto', ...scaleSizingInline()] }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{ 'min-inline': ['auto', ...scaleSizingInline()] }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{ 'max-inline': ['none', ...scaleSizingInline()] }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{ block: ['auto', ...scaleSizingBlock()] }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{ 'min-block': ['auto', ...scaleSizingBlock()] }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{ 'max-block': ['none', ...scaleSizingBlock()] }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{ w: [themeContainer, 'screen', ...scaleSizing()] }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [\n {\n 'min-w': [\n themeContainer,\n 'screen',\n /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none',\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n themeContainer,\n 'screen',\n 'none',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n { screen: [themeBreakpoint] },\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{ h: ['screen', 'lh', ...scaleSizing()] }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{ 'min-h': ['screen', 'lh', 'none', ...scaleSizing()] }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{ 'max-h': ['screen', 'lh', ...scaleSizing()] }],\n\n // ------------------\n // --- Typography ---\n // ------------------\n\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [\n { text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [\n {\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight],\n },\n ],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [\n {\n 'font-stretch': [\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n isPercent,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [\n { font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont] },\n ],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{ 'font-features': [isArbitraryValue] }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [\n { 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber] },\n ],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryVariable, isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [\n { list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: scaleColor() }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: scaleColor() }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{ decoration: [...scaleLineStyle(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [\n {\n decoration: [\n isNumber,\n 'from-font',\n 'auto',\n isArbitraryVariable,\n isArbitraryLength,\n ],\n },\n ],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: scaleColor() }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [\n { 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: scaleUnambiguousSpacing() }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [\n { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n ],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{ wrap: ['break-word', 'anywhere', 'normal'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // -------------------\n // --- Backgrounds ---\n // -------------------\n\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: scaleBgPosition() }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: scaleBgRepeat() }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: scaleBgSize() }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n {\n linear: [\n { to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue],\n },\n isArbitraryVariableImage,\n isArbitraryImage,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: scaleColor() }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: scaleColor() }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: scaleColor() }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: scaleColor() }],\n\n // ---------------\n // --- Borders ---\n // ---------------\n\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: scaleRadius() }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': scaleRadius() }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': scaleRadius() }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': scaleRadius() }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': scaleRadius() }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': scaleRadius() }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': scaleRadius() }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': scaleRadius() }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': scaleRadius() }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': scaleRadius() }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': scaleRadius() }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': scaleRadius() }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': scaleRadius() }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': scaleRadius() }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': scaleRadius() }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: scaleBorderWidth() }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': scaleBorderWidth() }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': scaleBorderWidth() }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': scaleBorderWidth() }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': scaleBorderWidth() }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{ 'border-bs': scaleBorderWidth() }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{ 'border-be': scaleBorderWidth() }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': scaleBorderWidth() }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': scaleBorderWidth() }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': scaleBorderWidth() }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': scaleBorderWidth() }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{ 'divide-x': scaleBorderWidth() }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{ 'divide-y': scaleBorderWidth() }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{ divide: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: scaleColor() }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': scaleColor() }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': scaleColor() }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{ 'border-s': scaleColor() }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{ 'border-e': scaleColor() }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{ 'border-bs': scaleColor() }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{ 'border-be': scaleColor() }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': scaleColor() }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': scaleColor() }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': scaleColor() }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': scaleColor() }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: scaleColor() }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: [...scaleLineStyle(), 'none', 'hidden'] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [\n { 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [\n { outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: scaleColor() }],\n\n // ---------------\n // --- Effects ---\n // ---------------\n\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [\n {\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{ shadow: scaleColor() }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [\n {\n 'inset-shadow': [\n 'none',\n themeInsetShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{ 'inset-shadow': scaleColor() }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{ ring: scaleBorderWidth() }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{ ring: scaleColor() }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{ 'ring-offset': [isNumber, isArbitraryLength] }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{ 'ring-offset': scaleColor() }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{ 'inset-ring': scaleBorderWidth() }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{ 'inset-ring': scaleColor() }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [\n {\n 'text-shadow': [\n 'none',\n themeTextShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{ 'text-shadow': scaleColor() }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter'] }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': scaleBlendMode() }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [\n { 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n 'mask-no-clip',\n ],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{ mask: ['add', 'subtract', 'intersect', 'exclude'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{ 'mask-linear': [isNumber] }],\n 'mask-image-linear-from-pos': [{ 'mask-linear-from': scaleMaskImagePosition() }],\n 'mask-image-linear-to-pos': [{ 'mask-linear-to': scaleMaskImagePosition() }],\n 'mask-image-linear-from-color': [{ 'mask-linear-from': scaleColor() }],\n 'mask-image-linear-to-color': [{ 'mask-linear-to': scaleColor() }],\n 'mask-image-t-from-pos': [{ 'mask-t-from': scaleMaskImagePosition() }],\n 'mask-image-t-to-pos': [{ 'mask-t-to': scaleMaskImagePosition() }],\n 'mask-image-t-from-color': [{ 'mask-t-from': scaleColor() }],\n 'mask-image-t-to-color': [{ 'mask-t-to': scaleColor() }],\n 'mask-image-r-from-pos': [{ 'mask-r-from': scaleMaskImagePosition() }],\n 'mask-image-r-to-pos': [{ 'mask-r-to': scaleMaskImagePosition() }],\n 'mask-image-r-from-color': [{ 'mask-r-from': scaleColor() }],\n 'mask-image-r-to-color': [{ 'mask-r-to': scaleColor() }],\n 'mask-image-b-from-pos': [{ 'mask-b-from': scaleMaskImagePosition() }],\n 'mask-image-b-to-pos': [{ 'mask-b-to': scaleMaskImagePosition() }],\n 'mask-image-b-from-color': [{ 'mask-b-from': scaleColor() }],\n 'mask-image-b-to-color': [{ 'mask-b-to': scaleColor() }],\n 'mask-image-l-from-pos': [{ 'mask-l-from': scaleMaskImagePosition() }],\n 'mask-image-l-to-pos': [{ 'mask-l-to': scaleMaskImagePosition() }],\n 'mask-image-l-from-color': [{ 'mask-l-from': scaleColor() }],\n 'mask-image-l-to-color': [{ 'mask-l-to': scaleColor() }],\n 'mask-image-x-from-pos': [{ 'mask-x-from': scaleMaskImagePosition() }],\n 'mask-image-x-to-pos': [{ 'mask-x-to': scaleMaskImagePosition() }],\n 'mask-image-x-from-color': [{ 'mask-x-from': scaleColor() }],\n 'mask-image-x-to-color': [{ 'mask-x-to': scaleColor() }],\n 'mask-image-y-from-pos': [{ 'mask-y-from': scaleMaskImagePosition() }],\n 'mask-image-y-to-pos': [{ 'mask-y-to': scaleMaskImagePosition() }],\n 'mask-image-y-from-color': [{ 'mask-y-from': scaleColor() }],\n 'mask-image-y-to-color': [{ 'mask-y-to': scaleColor() }],\n 'mask-image-radial': [{ 'mask-radial': [isArbitraryVariable, isArbitraryValue] }],\n 'mask-image-radial-from-pos': [{ 'mask-radial-from': scaleMaskImagePosition() }],\n 'mask-image-radial-to-pos': [{ 'mask-radial-to': scaleMaskImagePosition() }],\n 'mask-image-radial-from-color': [{ 'mask-radial-from': scaleColor() }],\n 'mask-image-radial-to-color': [{ 'mask-radial-to': scaleColor() }],\n 'mask-image-radial-shape': [{ 'mask-radial': ['circle', 'ellipse'] }],\n 'mask-image-radial-size': [\n { 'mask-radial': [{ closest: ['side', 'corner'], farthest: ['side', 'corner'] }] },\n ],\n 'mask-image-radial-pos': [{ 'mask-radial-at': scalePosition() }],\n 'mask-image-conic-pos': [{ 'mask-conic': [isNumber] }],\n 'mask-image-conic-from-pos': [{ 'mask-conic-from': scaleMaskImagePosition() }],\n 'mask-image-conic-to-pos': [{ 'mask-conic-to': scaleMaskImagePosition() }],\n 'mask-image-conic-from-color': [{ 'mask-conic-from': scaleColor() }],\n 'mask-image-conic-to-color': [{ 'mask-conic-to': scaleColor() }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{ mask: ['alpha', 'luminance', 'match'] }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [\n { 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n ],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{ mask: scaleBgPosition() }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{ mask: scaleBgRepeat() }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{ mask: scaleBgSize() }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{ 'mask-type': ['alpha', 'luminance'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{ mask: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // ---------------\n // --- Filters ---\n // ---------------\n\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [\n {\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: scaleBlur() }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [\n {\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeDropShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{ 'drop-shadow': scaleColor() }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [\n {\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': scaleBlur() }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [\n { 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [\n { 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [\n { 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [\n { 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [\n { 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [\n { 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [\n { 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [\n { 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n\n // --------------\n // --- Tables ---\n // --------------\n\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': scaleUnambiguousSpacing() }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n '',\n 'all',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{ transition: ['normal', 'discrete'] }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue] }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [\n { ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------\n // --- Transforms ---\n // ------------------\n\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{ backface: ['hidden', 'visible'] }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [\n { perspective: [themePerspective, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{ 'perspective-origin': scalePositionWithArbitrary() }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: scaleRotate() }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{ 'rotate-x': scaleRotate() }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{ 'rotate-y': scaleRotate() }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{ 'rotate-z': scaleRotate() }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: scaleScale() }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': scaleScale() }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': scaleScale() }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{ 'scale-z': scaleScale() }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{ skew: scaleSkew() }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': scaleSkew() }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': scaleSkew() }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [\n { transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu'] },\n ],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{ origin: scalePositionWithArbitrary() }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{ transform: ['3d', 'flat'] }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{ translate: scaleTranslate() }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': scaleTranslate() }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': scaleTranslate() }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{ 'translate-z': scaleTranslate() }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: scaleColor() }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{ appearance: ['none', 'auto'] }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: scaleColor() }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [\n { scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light'] },\n ],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{ 'field-sizing': ['fixed', 'content'] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['auto', 'none'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', '', 'y', 'x'] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{ 'scroll-mbs': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{ 'scroll-mbe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{ 'scroll-pbs': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{ 'scroll-pbe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': scaleUnambiguousSpacing() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{ touch: ['auto', 'none', 'manipulation'] }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{ 'touch-pan': ['x', 'left', 'right'] }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{ 'touch-pan': ['y', 'up', 'down'] }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n {\n 'will-change': [\n 'auto',\n 'scroll',\n 'contents',\n 'transform',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n\n // -----------\n // --- SVG ---\n // -----------\n\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: ['none', ...scaleColor()] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [\n {\n stroke: [\n isNumber,\n isArbitraryVariableLength,\n isArbitraryLength,\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: ['none', ...scaleColor()] }],\n\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: [\n 'inset-x',\n 'inset-y',\n 'inset-bs',\n 'inset-be',\n 'start',\n 'end',\n 'top',\n 'right',\n 'bottom',\n 'left',\n ],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': [\n 'border-w-x',\n 'border-w-y',\n 'border-w-s',\n 'border-w-e',\n 'border-w-bs',\n 'border-w-be',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-x',\n 'border-color-y',\n 'border-color-s',\n 'border-color-e',\n 'border-color-bs',\n 'border-color-be',\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mbs',\n 'scroll-mbe',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pbs',\n 'scroll-pbe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch'],\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading'],\n },\n orderSensitiveModifiers: [\n '*',\n '**',\n 'after',\n 'backdrop',\n 'before',\n 'details-content',\n 'file',\n 'first-letter',\n 'first-line',\n 'marker',\n 'placeholder',\n 'selection',\n ],\n } as const satisfies Config<DefaultClassGroupIds, DefaultThemeGroupIds>\n}\n", "import { AnyConfig, ConfigExtension, NoInfer } from './types'\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nexport const mergeConfigs = <ClassGroupIds extends string, ThemeGroupIds extends string = never>(\n baseConfig: AnyConfig,\n {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {},\n }: ConfigExtension<ClassGroupIds, ThemeGroupIds>,\n) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize)\n overrideProperty(baseConfig, 'prefix', prefix)\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName)\n\n overrideConfigProperties(baseConfig.theme, override.theme)\n overrideConfigProperties(baseConfig.classGroups, override.classGroups)\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups)\n overrideConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n override.conflictingClassGroupModifiers,\n )\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers)\n\n mergeConfigProperties(baseConfig.theme, extend.theme)\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups)\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups)\n mergeConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n extend.conflictingClassGroupModifiers,\n )\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers')\n\n return baseConfig\n}\n\nconst overrideProperty = <T extends object, K extends keyof T>(\n baseObject: T,\n overrideKey: K,\n overrideValue: T[K] | undefined,\n) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue\n }\n}\n\nconst overrideConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n overrideObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key])\n }\n }\n}\n\nconst mergeConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n mergeObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key)\n }\n }\n}\n\nconst mergeArrayProperties = <Key extends string>(\n baseObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n mergeObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n key: Key,\n) => {\n const mergeValue = mergeObject[key]\n\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue\n }\n}\n", "import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { AnyConfig, ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\n\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\n\nexport const extendTailwindMerge = <\n AdditionalClassGroupIds extends string = never,\n AdditionalThemeGroupIds extends string = never,\n>(\n configExtension:\n | ConfigExtension<\n DefaultClassGroupIds | AdditionalClassGroupIds,\n DefaultThemeGroupIds | AdditionalThemeGroupIds\n >\n | CreateConfigSubsequent,\n ...createConfig: CreateConfigSubsequent[]\n) =>\n typeof configExtension === 'function'\n ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n : createTailwindMerge(\n () => mergeConfigs(getDefaultConfig(), configExtension),\n ...createConfig,\n )\n", "import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n", "import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function getPluginSettingsUrl(): string {\n // Extract the plugin UUID from the breadcrumb anchor in the Paperclip UI.\n const link = document.querySelector<HTMLAnchorElement>('a[href*=\"/settings/plugins/\"]');\n if (link) {\n const match = link.href.match(/\\/settings\\/plugins\\/([0-9a-f-]+)/);\n if (match) return `/instance/settings/plugins/${match[1]}`;\n }\n return `/instance/settings/plugins`;\n}\n\nexport function toPascalCase(str: string): string {\n return str\n .replace(/[^a-zA-Z0-9\\s\\-_]/g, '')\n .split(/[\\s\\-_]+/)\n .filter(Boolean)\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join('');\n}\n", "import * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst Input = React.forwardRef<HTMLInputElement, React.InputHTMLAttributes<HTMLInputElement>>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = 'Input';\n\nexport { Input };\n", "import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n destructive: 'bg-destructive text-white shadow-sm hover:bg-destructive/90',\n outline:\n 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',\n secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs',\n lg: 'h-10 rounded-md px-8',\n icon: 'h-9 w-9',\n },\n },\n defaultVariants: { variant: 'default', size: 'default' },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, children, ...props }, ref) => {\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<any>, {\n className: cn(\n buttonVariants({ variant, size, className }),\n (children as any).props?.className,\n ),\n ref,\n ...props,\n });\n }\n return (\n <button className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props}>\n {children}\n </button>\n );\n },\n);\nButton.displayName = 'Button';\n\nexport { Button, buttonVariants };\n", "/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n", "import { useWizard, useWizardDispatch, nextStep } from '../../context/WizardContext';\nimport { Input } from '../ui/input';\nimport { Button } from '../ui/button';\nimport { toPascalCase } from '../../lib/utils';\nimport { useCallback, useState } from 'react';\nimport { ChevronDown, ChevronRight, Settings2 } from 'lucide-react';\n\nconst ADAPTER_TYPES = [\n { value: 'claude_local', label: 'Claude Code', desc: 'Local Claude agent' },\n { value: 'codex_local', label: 'Codex', desc: 'Local Codex agent' },\n { value: 'opencode_local', label: 'OpenCode', desc: 'Local OpenCode agent' },\n { value: 'cursor', label: 'Cursor', desc: 'Cursor IDE agent' },\n { value: 'openclaw_gateway', label: 'OpenClaw', desc: 'OpenClaw gateway' },\n { value: 'hermes_local', label: 'Hermes', desc: 'Local Hermes agent' },\n];\n\nexport function StepName() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const [showCeoSetup, setShowCeoSetup] = useState(false);\n\n const handleNext = useCallback(() => {\n if (state.companyName.trim()) {\n dispatch({ type: 'GO_TO', step: nextStep(state) });\n }\n }, [state, dispatch]);\n\n const dirName = state.companyName.trim() ? toPascalCase(state.companyName) : 'YourCompany';\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Company name</h2>\n <p className=\"text-sm text-muted-foreground\">What should your AI company be called?</p>\n </div>\n\n <div className=\"space-y-3\">\n <Input\n placeholder=\"e.g. Acme Corp, Black Mesa, Initech\"\n value={state.companyName}\n onChange={(e) => dispatch({ type: 'SET_COMPANY_NAME', value: e.target.value })}\n onKeyDown={(e) => e.key === 'Enter' && handleNext()}\n autoFocus\n className=\"text-base h-11\"\n />\n <p className=\"text-xs text-muted-foreground\">\n Workspace directory: <code className=\"bg-muted px-1.5 py-0.5 rounded\">{dirName}/</code>\n </p>\n </div>\n\n {/* CEO Setup \u2014 collapsible, default collapsed */}\n <div className=\"rounded-lg border\">\n <button\n onClick={() => setShowCeoSetup((v) => !v)}\n className=\"w-full flex items-center gap-2 px-4 py-3 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors\"\n >\n <Settings2 className=\"h-4 w-4\" />\n CEO Agent Setup\n {showCeoSetup ? (\n <ChevronDown className=\"h-3.5 w-3.5 ml-auto\" />\n ) : (\n <ChevronRight className=\"h-3.5 w-3.5 ml-auto\" />\n )}\n {!showCeoSetup && (\n <span className=\"text-xs text-muted-foreground/60 ml-1\">\n {ADAPTER_TYPES.find((a) => a.value === state.ceoAdapter.type)?.label ||\n state.ceoAdapter.type}\n {state.ceoAdapter.cwd ? ` \u00B7 ${state.ceoAdapter.cwd}` : ''}\n {state.ceoAdapter.model ? ` \u00B7 ${state.ceoAdapter.model}` : ''}\n </span>\n )}\n </button>\n\n {showCeoSetup && (\n <div className=\"px-4 pb-4 space-y-4 border-t pt-4\">\n <p className=\"text-xs text-muted-foreground\">\n These defaults apply to all generated agents. You can override per agent in the review\n step.\n </p>\n\n {/* Adapter type */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Adapter type</label>\n <div className=\"grid grid-cols-3 gap-2\">\n {ADAPTER_TYPES.map((adapter) => (\n <button\n key={adapter.value}\n onClick={() =>\n dispatch({ type: 'SET_CEO_ADAPTER', adapter: { type: adapter.value } })\n }\n className={`flex flex-col items-center gap-1 rounded-lg border p-3 text-center transition-all duration-150 ${\n state.ceoAdapter.type === adapter.value\n ? 'border-foreground/30 bg-accent'\n : 'border-border hover:border-foreground/15 hover:bg-accent/50'\n }`}\n >\n <span className=\"text-xs font-medium\">{adapter.label}</span>\n <span className=\"text-[10px] text-muted-foreground\">{adapter.desc}</span>\n </button>\n ))}\n </div>\n </div>\n\n {/* Working directory */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">\n Working directory{' '}\n <span className=\"text-muted-foreground font-normal\">(optional)</span>\n </label>\n <Input\n placeholder=\"/path/to/project\"\n value={state.ceoAdapter.cwd}\n onChange={(e) =>\n dispatch({ type: 'SET_CEO_ADAPTER', adapter: { cwd: e.target.value } })\n }\n />\n <p className=\"text-xs text-muted-foreground\">\n Where generated agent files will be written. Leave empty to use the default\n Paperclip workspace.\n </p>\n </div>\n\n {/* Model */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">\n Model <span className=\"text-muted-foreground font-normal\">(optional)</span>\n </label>\n <Input\n placeholder=\"gpt-5.5\"\n value={state.ceoAdapter.model}\n onChange={(e) =>\n dispatch({ type: 'SET_CEO_ADAPTER', adapter: { model: e.target.value } })\n }\n />\n </div>\n </div>\n )}\n </div>\n\n <div className=\"flex justify-end\">\n <Button onClick={handleNext} disabled={!state.companyName.trim()}>\n Continue\n </Button>\n </div>\n </div>\n );\n}\n", "import { useWizard, useWizardDispatch, nextStep } from '../../context/WizardContext';\nimport { Input } from '../ui/input';\nimport { Button } from '../ui/button';\nimport { useCallback } from 'react';\n\nexport function StepGoal() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n\n const handleNext = useCallback(() => {\n dispatch({ type: 'GO_TO', step: nextStep(state) });\n }, [state, dispatch]);\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Company goal</h2>\n <p className=\"text-sm text-muted-foreground\">\n What's the top-level outcome? Lead with the primary deliverable or operating result; put\n secondary constraints such as compliance, security, or accessibility in the description as\n quality bars.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Goal title</label>\n <Input\n placeholder=\"e.g. Build and launch the core product\"\n value={state.goals[0]?.title || ''}\n onChange={(e) =>\n dispatch({\n type: 'SET_GOALS',\n goals: [{ title: e.target.value, description: state.goals[0]?.description || '' }],\n })\n }\n onKeyDown={(e) => e.key === 'Enter' && handleNext()}\n autoFocus\n />\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">\n Description <span className=\"text-muted-foreground font-normal\">(optional)</span>\n </label>\n <textarea\n className=\"flex min-h-[80px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring resize-none\"\n placeholder=\"Primary outcome and scope first. Then add constraints / quality bars such as compliance, security, accessibility, or performance.\"\n value={state.goals[0]?.description || ''}\n onChange={(e) =>\n dispatch({\n type: 'SET_GOALS',\n goals: [{ title: state.goals[0]?.title || '', description: e.target.value }],\n })\n }\n style={{ fieldSizing: 'content' } as React.CSSProperties}\n />\n </div>\n </div>\n\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"ghost\" onClick={handleNext}>\n Skip\n </Button>\n <Button onClick={handleNext}>Continue</Button>\n </div>\n </div>\n );\n}\n", "import { useCallback, useState } from 'react';\nimport {\n nextStep,\n useWizard,\n useWizardDispatch,\n type WizardProject,\n} from '../../context/WizardContext';\nimport { Button } from '../ui/button';\nimport { Input } from '../ui/input';\nimport { cn } from '../../lib/utils';\nimport { Check, GitBranch, Github, PlusCircle } from 'lucide-react';\nimport {\n type RepositoryMode,\n getRepositoryMode,\n getRepositoryRef,\n getRepositoryUrl,\n repositoryProjectFields,\n} from '../../lib/repository';\n\nfunction getPrimaryProject(stateProjects: WizardProject[]): WizardProject | null {\n return stateProjects.length > 0 ? stateProjects[0] : null;\n}\n\nfunction buildProject({\n existing,\n companyName,\n goalTitles,\n goalDescription,\n mode,\n repoUrl,\n repoRef,\n}: {\n existing: WizardProject | null;\n companyName: string;\n goalTitles: string[];\n goalDescription: string;\n mode: RepositoryMode;\n repoUrl: string;\n repoRef: string;\n}): WizardProject {\n const name = existing?.name?.trim() || companyName || 'Main Project';\n const description =\n existing?.description?.trim() || goalDescription || `Main project for ${companyName}`;\n const goals = existing?.goals?.length ? existing.goals : goalTitles;\n\n return {\n ...(existing ?? {}),\n name,\n description,\n goals,\n ...repositoryProjectFields(mode, repoUrl, repoRef),\n };\n}\n\nfunction ModeCard({\n icon: Icon,\n title,\n description,\n selected,\n onClick,\n}: {\n icon: React.ElementType;\n title: string;\n description: string;\n selected: boolean;\n onClick: () => void;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n 'flex items-start gap-4 rounded-lg border p-4 text-left transition-all duration-150',\n selected\n ? 'border-foreground/30 bg-accent'\n : 'border-border hover:border-foreground/15 hover:bg-accent/50',\n )}\n >\n <div\n className={cn(\n 'mt-0.5 h-8 w-8 rounded-md flex items-center justify-center shrink-0',\n selected ? 'bg-foreground text-background' : 'bg-secondary',\n )}\n >\n {selected ? <Check className=\"h-4 w-4\" /> : <Icon className=\"h-4 w-4\" />}\n </div>\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">{title}</p>\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n </div>\n </button>\n );\n}\n\nexport function StepRepository() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const existingProject = getPrimaryProject(state.projects);\n const initialMode = getRepositoryMode(existingProject);\n const [mode, setMode] = useState<RepositoryMode>(initialMode);\n const [repoUrl, setRepoUrl] = useState(getRepositoryUrl(existingProject));\n const [repoRef, setRepoRef] = useState(getRepositoryRef(existingProject, initialMode));\n\n const companyName = state.companyName.trim() || 'Company';\n const goalTitles = state.goals.map((g) => g.title).filter(Boolean);\n const goalDescription = state.goals[0]?.description || '';\n const externalRepoMissing = mode === 'external' && !repoUrl.trim();\n\n const chooseMode = (nextMode: RepositoryMode) => {\n setMode(nextMode);\n if (nextMode === 'new' && (!repoRef.trim() || repoRef.trim().startsWith('origin/'))) {\n setRepoRef('main');\n }\n };\n\n const handleNext = useCallback(() => {\n if (externalRepoMissing) return;\n const updatedProject = buildProject({\n existing: existingProject,\n companyName,\n goalTitles,\n goalDescription,\n mode,\n repoUrl,\n repoRef,\n });\n dispatch({ type: 'SET_PROJECTS', projects: [updatedProject, ...state.projects.slice(1)] });\n dispatch({ type: 'GO_TO', step: nextStep(state) });\n }, [\n companyName,\n dispatch,\n existingProject,\n externalRepoMissing,\n goalDescription,\n goalTitles,\n mode,\n repoRef,\n repoUrl,\n state,\n ]);\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Repository setup</h2>\n <p className=\"text-sm text-muted-foreground\">\n Should Paperclip create a fresh Git repository for this project, or should the agents work\n from an existing external repository such as GitHub?\n </p>\n </div>\n\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <ModeCard\n icon={PlusCircle}\n title=\"Create a new Git repository\"\n description=\"Start with a fresh local project workspace. Paperclip will initialize Git during bootstrap.\"\n selected={mode === 'new'}\n onClick={() => chooseMode('new')}\n />\n <ModeCard\n icon={Github}\n title=\"Use an external repository\"\n description=\"Connect an existing GitHub, GitLab, or other remote Git repository.\"\n selected={mode === 'external'}\n onClick={() => chooseMode('external')}\n />\n </div>\n\n {mode === 'external' ? (\n <div className=\"space-y-4 rounded-lg border p-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Repository URL</label>\n <Input\n placeholder=\"https://github.com/org/repo\"\n value={repoUrl}\n onChange={(e) => setRepoUrl(e.target.value)}\n autoFocus\n />\n <p className=\"text-xs text-muted-foreground\">\n Do not paste tokens or credentials into the URL. Configure provider access as\n Paperclip company secrets instead.\n </p>\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">\n Default ref <span className=\"text-muted-foreground font-normal\">(optional)</span>\n </label>\n <Input\n placeholder=\"Leave blank to use Paperclip/project default, or enter an explicit ref\"\n value={repoRef}\n onChange={(e) => setRepoRef(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleNext()}\n />\n </div>\n </div>\n ) : (\n <div className=\"space-y-4 rounded-lg border p-4\">\n <div className=\"flex items-start gap-3\">\n <GitBranch className=\"h-4 w-4 text-muted-foreground shrink-0 mt-0.5\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">Fresh repository workspace</p>\n <p className=\"text-sm text-muted-foreground\">\n The bootstrap will create project \"{existingProject?.name || companyName}\" with a\n local workspace and run{' '}\n <code className=\"bg-muted px-1 py-0.5 rounded\">git init</code>.\n </p>\n </div>\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">\n Initial branch <span className=\"text-muted-foreground font-normal\">(optional)</span>\n </label>\n <Input\n placeholder=\"main\"\n value={repoRef}\n onChange={(e) => setRepoRef(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleNext()}\n />\n </div>\n </div>\n )}\n\n <div className=\"flex justify-end\">\n <Button onClick={handleNext} disabled={externalRepoMissing}>\n Continue\n </Button>\n </div>\n </div>\n );\n}\n", "import type { WizardProject } from '../context/WizardContext';\n\nexport type RepositoryMode = 'new' | 'external';\n\nfunction resolveWorkspaceSourceType(project: WizardProject | null | undefined): string | undefined {\n const sourceType = project?.workspace?.sourceType || project?.workspaceSourceType;\n return typeof sourceType === 'string' ? sourceType.trim() : undefined;\n}\n\n/** Derives the repository mode from a project's current workspace config. */\nexport function getRepositoryMode(project: WizardProject | null | undefined): RepositoryMode {\n const workspace = project?.workspace;\n const sourceType = resolveWorkspaceSourceType(project);\n if (\n sourceType === 'git_repo' ||\n workspace?.repoUrl ||\n project?.repoUrl ||\n (typeof sourceType === 'string' && sourceType !== 'local_path' && sourceType.length > 0)\n ) {\n return 'external';\n }\n return 'new';\n}\n\nexport function isExternalRepository(project: WizardProject | null | undefined): boolean {\n const sourceType = resolveWorkspaceSourceType(project);\n return (\n (typeof sourceType === 'string' && sourceType !== 'local_path' && sourceType.length > 0) ||\n Boolean(project?.workspace?.repoUrl || project?.repoUrl)\n );\n}\n\nexport function getRepositoryUrl(project: WizardProject | null | undefined): string {\n return project?.workspace?.repoUrl || project?.repoUrl || '';\n}\n\nexport function getRepositoryRef(\n project: WizardProject | null | undefined,\n mode: RepositoryMode,\n): string {\n const configured =\n project?.workspace?.defaultRef ||\n project?.workspace?.repoRef ||\n project?.defaultRef ||\n project?.repoRef ||\n '';\n return configured || (mode === 'new' ? 'main' : '');\n}\n\nexport function normalizeExternalRepoRef(value: string): string {\n const trimmed = value.trim();\n if (!trimmed) return '';\n return /^[A-Za-z0-9._:/-]+$/.test(trimmed) ? trimmed : '';\n}\n\nexport function normalizeNewRepoBranch(value: string): string {\n const raw = value.trim().replace(/^origin\\//, '') || 'main';\n return /^[A-Za-z0-9._/-]+$/.test(raw) ? raw : 'main';\n}\n\n/**\n * Builds the repository-related fields of a project from the chosen mode.\n *\n * Repository selection deliberately carries NO `executionWorkspacePolicy`.\n * Isolated worktrees are an instance/project policy and are applied by the\n * assembler only when Paperclip's isolated-workspace experiment is enabled.\n */\nexport function repositoryProjectFields(\n mode: RepositoryMode,\n repoUrl: string,\n repoRef: string,\n): Pick<\n WizardProject,\n | 'repoUrl'\n | 'repoRef'\n | 'defaultRef'\n | 'workspace'\n | 'executionWorkspacePolicy'\n | 'workspaceSourceType'\n> {\n if (mode === 'external') {\n const ref = normalizeExternalRepoRef(repoRef);\n const url = repoUrl.trim();\n return {\n workspaceSourceType: 'git_repo',\n repoUrl: url,\n ...(ref ? { repoRef: ref, defaultRef: ref } : { repoRef: undefined, defaultRef: undefined }),\n workspace: {\n sourceType: 'git_repo',\n repoUrl: url,\n ...(ref ? { repoRef: ref, defaultRef: ref } : {}),\n isPrimary: true,\n },\n executionWorkspacePolicy: undefined,\n };\n }\n\n const branch = normalizeNewRepoBranch(repoRef);\n return {\n workspaceSourceType: 'local_path',\n repoUrl: undefined,\n repoRef: undefined,\n defaultRef: branch,\n workspace: {\n sourceType: 'local_path',\n defaultRef: branch,\n setupCommand: `git init -b ${branch}`,\n isPrimary: true,\n },\n executionWorkspacePolicy: undefined,\n };\n}\n", "import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground shadow',\n secondary: 'border-transparent bg-secondary text-secondary-foreground',\n destructive: 'border-transparent bg-destructive text-white shadow',\n outline: 'text-foreground',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return <div className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n", "import { useWizard, useWizardDispatch, nextStep } from '../../context/WizardContext';\nimport { Button } from '../ui/button';\nimport { Badge } from '../ui/badge';\nimport { cn } from '../../lib/utils';\nimport { Check, Zap, Shield, Rocket, FlaskConical, Atom, Settings } from 'lucide-react';\n\nconst PRESET_ICONS: Record<string, React.ElementType> = {\n fast: Zap,\n quality: Shield,\n startup: Rocket,\n research: FlaskConical,\n rad: Atom,\n full: Settings,\n};\n\nexport function StepPreset() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n\n const handleSelect = (name: string) => {\n dispatch({ type: 'SET_PRESET', name });\n };\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Team preset</h2>\n <p className=\"text-sm text-muted-foreground\">\n Choose a pre-configured team setup, or go custom.\n </p>\n </div>\n\n <div className=\"grid gap-3 max-h-[60vh] overflow-y-auto pr-1\">\n {state.presets.map((preset) => {\n const Icon = PRESET_ICONS[preset.name] || Settings;\n const selected = state.presetName === preset.name;\n return (\n <button\n key={preset.name}\n onClick={() => handleSelect(preset.name)}\n className={cn(\n 'flex items-start gap-4 rounded-lg border p-4 text-left transition-all duration-150',\n selected\n ? 'border-foreground/30 bg-accent'\n : 'border-border hover:border-foreground/15 hover:bg-accent/50',\n )}\n >\n <div\n className={cn(\n 'mt-0.5 h-8 w-8 rounded-md flex items-center justify-center shrink-0',\n selected ? 'bg-foreground text-background' : 'bg-secondary',\n )}\n >\n {selected ? <Check className=\"h-4 w-4\" /> : <Icon className=\"h-4 w-4\" />}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium text-sm capitalize\">{preset.name}</span>\n {preset.modules && (\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n {preset.modules.length} modules\n </Badge>\n )}\n {preset.roles && preset.roles.length > 0 && (\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n +{preset.roles.length} roles\n </Badge>\n )}\n </div>\n <p className=\"text-sm text-muted-foreground mt-0.5\">{preset.description}</p>\n {preset.constraints && preset.constraints.length > 0 && (\n <p className=\"text-xs text-muted-foreground/70 mt-1\">\n {preset.constraints.join(' \u00B7 ')}\n </p>\n )}\n </div>\n </button>\n );\n })}\n\n {/* Custom option */}\n <button\n onClick={() => handleSelect('custom')}\n className={cn(\n 'flex items-start gap-4 rounded-lg border border-dashed p-4 text-left transition-all duration-150',\n state.presetName === 'custom'\n ? 'border-foreground/30 bg-accent'\n : 'border-border hover:border-foreground/15 hover:bg-accent/50',\n )}\n >\n <div\n className={cn(\n 'mt-0.5 h-8 w-8 rounded-md flex items-center justify-center shrink-0',\n state.presetName === 'custom' ? 'bg-foreground text-background' : 'bg-secondary',\n )}\n >\n {state.presetName === 'custom' ? (\n <Check className=\"h-4 w-4\" />\n ) : (\n <Settings className=\"h-4 w-4\" />\n )}\n </div>\n <div>\n <span className=\"font-medium text-sm\">Custom</span>\n <p className=\"text-sm text-muted-foreground mt-0.5\">Pick modules and roles manually</p>\n </div>\n </button>\n </div>\n\n <div className=\"flex justify-end\">\n <Button\n onClick={() => dispatch({ type: 'GO_TO', step: nextStep(state) })}\n disabled={!state.presetName}\n >\n Continue\n </Button>\n </div>\n </div>\n );\n}\n", "import { useWizard, useWizardDispatch, nextStep } from '../../context/WizardContext';\nimport { Button } from '../ui/button';\nimport { Badge } from '../ui/badge';\nimport { cn } from '../../lib/utils';\nimport { Check, Lock } from 'lucide-react';\n\nexport function StepModules() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n\n // Build module index for dependency resolution\n const modulesByName = new Map(state.modules.map((m) => [m.name, m]));\n const selected = new Set(state.selectedModules);\n\n const getAllDependencies = (moduleName: string, seen = new Set<string>()): Set<string> => {\n const mod = modulesByName.get(moduleName);\n if (!mod) return seen;\n\n for (const dep of mod.requires ?? []) {\n if (seen.has(dep)) continue;\n seen.add(dep);\n getAllDependencies(dep, seen);\n }\n\n return seen;\n };\n\n const getBlockingDependents = (moduleName: string): string[] => {\n const blockers: string[] = [];\n for (const selectedName of selected) {\n if (selectedName === moduleName) continue;\n if (getAllDependencies(selectedName).has(moduleName)) {\n blockers.push(selectedName);\n }\n }\n return blockers;\n };\n\n const toggle = (name: string) => {\n const mod = state.modules.find((m) => m.name === name);\n if (!mod) return;\n\n const next = new Set(selected);\n if (next.has(name)) {\n // Block deselection if any selected module depends on this one (directly or transitively)\n if (getBlockingDependents(name).length > 0) return;\n next.delete(name);\n } else {\n next.add(name);\n // Auto-add full transitive dependency chain\n for (const dep of getAllDependencies(name)) {\n next.add(dep);\n }\n }\n dispatch({ type: 'SET_MODULES', modules: [...next] });\n };\n\n const isLocked = (name: string) => {\n return selected.has(name) && getBlockingDependents(name).length > 0;\n };\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Modules</h2>\n <p className=\"text-sm text-muted-foreground\">\n Capabilities to enable. Dependencies are auto-selected.\n </p>\n </div>\n\n <div className=\"grid gap-2 max-h-[60vh] overflow-y-auto pr-1\">\n {state.modules.map((mod) => {\n const isSelected = selected.has(mod.name);\n const locked = isLocked(mod.name);\n const capCount = mod.capabilities?.length ?? 0;\n return (\n <button\n key={mod.name}\n onClick={() => toggle(mod.name)}\n disabled={locked && isSelected}\n className={cn(\n 'flex items-center gap-3 rounded-lg border p-3 text-left transition-all duration-150',\n isSelected\n ? 'border-foreground/20 bg-accent'\n : 'border-border hover:border-foreground/10 hover:bg-accent/30',\n locked && isSelected && 'opacity-80',\n )}\n >\n <div\n className={cn(\n 'h-5 w-5 rounded flex items-center justify-center shrink-0 border mt-0.5',\n isSelected ? 'bg-foreground border-foreground text-background' : 'border-input',\n )}\n >\n {isSelected &&\n (locked ? <Lock className=\"h-3 w-3\" /> : <Check className=\"h-3 w-3\" />)}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"text-sm font-medium\">{mod.name}</span>\n {mod.activatesWithRoles && mod.activatesWithRoles.length > 0 && (\n <Badge variant=\"outline\" className=\"text-[10px]\">\n needs {mod.activatesWithRoles.join('/')}\n </Badge>\n )}\n {(mod.issues?.length ?? mod.tasks?.length ?? 0) > 0 && (\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n {mod.issues?.length ?? mod.tasks?.length ?? 0} tasks\n </Badge>\n )}\n {capCount > 0 && (\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n {capCount} {capCount === 1 ? 'capability' : 'capabilities'}\n </Badge>\n )}\n </div>\n <p className=\"text-xs text-muted-foreground mt-0.5\">{mod.description}</p>\n {capCount > 0 && (\n <div className=\"flex flex-wrap gap-x-3 gap-y-0.5 mt-1\">\n {mod.capabilities!.map((cap) => (\n <span key={cap.skill} className=\"text-[11px] text-muted-foreground/70\">\n {cap.skill}{' '}\n <span className=\"text-muted-foreground/40\">\u2192 {cap.owners.join(', ')}</span>\n </span>\n ))}\n </div>\n )}\n {mod.requires && mod.requires.length > 0 && (\n <p className=\"text-[11px] text-muted-foreground/60 mt-0.5\">\n requires {mod.requires.join(', ')}\n </p>\n )}\n </div>\n </button>\n );\n })}\n </div>\n\n <div className=\"flex items-center justify-between\">\n <p className=\"text-xs text-muted-foreground\">\n {selected.size} of {state.modules.length} selected\n </p>\n <Button onClick={() => dispatch({ type: 'GO_TO', step: nextStep(state) })}>Continue</Button>\n </div>\n </div>\n );\n}\n", "import { useWizard, useWizardDispatch, nextStep } from '../../context/WizardContext';\nimport { Button } from '../ui/button';\nimport { Badge } from '../ui/badge';\nimport { cn } from '../../lib/utils';\nimport { Check, Crown } from 'lucide-react';\n\nexport function StepRoles() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n\n const baseRoles = state.roles.filter((r) => r._base);\n const extraRoles = state.roles.filter((r) => !r._base);\n const selected = new Set(state.selectedRoles);\n\n const toggle = (name: string) => {\n const next = new Set(selected);\n if (next.has(name)) {\n next.delete(name);\n } else {\n next.add(name);\n }\n dispatch({ type: 'SET_ROLES', roles: [...next] });\n };\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Team roles</h2>\n <p className=\"text-sm text-muted-foreground\">\n Base roles are always included. Add specialists as needed.\n </p>\n </div>\n\n <div className=\"max-h-[60vh] overflow-y-auto pr-1 space-y-4\">\n {/* Base roles (locked) */}\n <div className=\"space-y-2\">\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n Base team\n </p>\n <div className=\"grid gap-2\">\n {baseRoles.map((role) => (\n <div\n key={role.name}\n className=\"flex items-start gap-3 rounded-lg border border-foreground/10 bg-accent/50 p-3\"\n >\n <div className=\"h-5 w-5 rounded flex items-center justify-center shrink-0 bg-foreground text-background mt-0.5\">\n <Crown className=\"h-3 w-3\" />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">{role.title}</span>\n {role.division && (\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {role.division}\n </Badge>\n )}\n <Badge variant=\"secondary\" className=\"ml-auto text-[10px]\">\n required\n </Badge>\n </div>\n <p className=\"text-xs text-muted-foreground mt-0.5\">{role.description}</p>\n {role.tagline && (\n <p className=\"text-[11px] text-muted-foreground/60 mt-0.5 italic\">\n {role.tagline}\n </p>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {/* Extra roles (toggleable) */}\n <div className=\"space-y-2\">\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n Specialists\n </p>\n <div className=\"grid gap-2\">\n {extraRoles.map((role) => {\n const isSelected = selected.has(role.name);\n return (\n <button\n key={role.name}\n onClick={() => toggle(role.name)}\n className={cn(\n 'flex items-start gap-3 rounded-lg border p-3 text-left transition-all duration-150',\n isSelected\n ? 'border-foreground/20 bg-accent'\n : 'border-border hover:border-foreground/10 hover:bg-accent/30',\n )}\n >\n <div\n className={cn(\n 'h-5 w-5 rounded flex items-center justify-center shrink-0 border mt-0.5',\n isSelected\n ? 'bg-foreground border-foreground text-background'\n : 'border-input',\n )}\n >\n {isSelected && <Check className=\"h-3 w-3\" />}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"text-sm font-medium\">{role.title}</span>\n {role.division && (\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {role.division}\n </Badge>\n )}\n {role.reportsTo && (\n <span className=\"text-[10px] text-muted-foreground\">\n reports to {role.reportsTo}\n </span>\n )}\n </div>\n <p className=\"text-xs text-muted-foreground mt-0.5\">{role.description}</p>\n {role.tagline && (\n <p className=\"text-[11px] text-muted-foreground/60 mt-0.5 italic\">\n {role.tagline}\n </p>\n )}\n {isSelected && role.enhances && role.enhances.length > 0 && (\n <div className=\"flex flex-wrap gap-x-3 gap-y-0.5 mt-1\">\n {role.enhances.map((e, i) => (\n <span key={i} className=\"text-[11px] text-muted-foreground/70\">\n + {e}\n </span>\n ))}\n </div>\n )}\n </div>\n </button>\n );\n })}\n </div>\n </div>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <p className=\"text-xs text-muted-foreground\">\n {baseRoles.length + selected.size} total agents\n </p>\n <Button onClick={() => dispatch({ type: 'GO_TO', step: nextStep(state) })}>Continue</Button>\n </div>\n </div>\n );\n}\n", "import { useEffect, useRef, useState } from 'react';\nimport { useWizard, useWizardDispatch } from '../../context/WizardContext';\nimport { usePluginAction } from '@paperclipai/plugin-sdk/ui';\nimport { Button } from '../ui/button';\nimport { ConfigReview } from '../ConfigReview';\nimport { AlertTriangle, Settings } from 'lucide-react';\nimport { getPluginSettingsUrl } from '../../lib/utils';\n\nexport function StepSummary() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const checkAuth = usePluginAction('check-auth');\n const [authError, setAuthError] = useState<string | null>(null);\n const checked = useRef(false);\n\n useEffect(() => {\n if (checked.current) return;\n checked.current = true;\n checkAuth({})\n .then((result: any) => {\n if (!result?.ok) setAuthError(result?.error || 'Authentication failed');\n })\n .catch((err: any) => {\n setAuthError(err?.message || 'Could not verify API connection');\n });\n }, []);\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Review</h2>\n <p className=\"text-sm text-muted-foreground\">\n Confirm your company configuration before creating. Click any field to edit.\n </p>\n </div>\n\n <ConfigReview />\n\n {authError && (\n <div className=\"flex items-start gap-3 rounded-lg border border-amber-500/30 bg-amber-500/10 p-4\">\n <AlertTriangle className=\"h-4 w-4 text-amber-500 shrink-0 mt-0.5\" />\n <div className=\"space-y-2 flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-amber-800 dark:text-amber-200\">\n API connection failed\n </p>\n <p className=\"text-xs text-amber-700 dark:text-amber-300 wrap-break-word\">\n {authError}\n </p>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"text-xs\"\n onClick={() => {\n window.location.href = getPluginSettingsUrl();\n }}\n >\n <Settings className=\"h-3 w-3 mr-1.5\" />\n Plugin Settings\n </Button>\n </div>\n </div>\n )}\n\n <div className=\"flex justify-end gap-3\">\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'GO_TO', step: 'roles' })}>\n Back\n </Button>\n <Button onClick={() => dispatch({ type: 'GO_TO', step: 'provision' })}>\n {state.existingCompanyId ? 'Provision into Existing Company' : 'Create Company'}\n </Button>\n </div>\n </div>\n );\n}\n", "import { useEffect, useState, useCallback, useRef } from 'react';\nimport {\n useWizard,\n useWizardDispatch,\n getAllRoles,\n getActiveModules,\n} from '../context/WizardContext';\nimport { usePluginAction } from '@paperclipai/plugin-sdk/ui';\nimport type { ModuleData, RoleData } from '../types';\nimport type { WizardProject } from '../context/WizardContext';\nimport { Badge } from './ui/badge';\nimport { Card, CardContent } from './ui/card';\nimport { cn, toPascalCase } from '../lib/utils';\nimport {\n type RepositoryMode,\n getRepositoryMode,\n isExternalRepository,\n getRepositoryRef,\n getRepositoryUrl,\n repositoryProjectFields,\n} from '../lib/repository';\nimport {\n HoverCardRoot,\n HoverCardTrigger,\n HoverCardContent,\n HoverCardPortal,\n} from './ui/hover-card';\nimport {\n Building2,\n Target,\n Blocks,\n Users,\n AlertTriangle,\n Pencil,\n Check,\n X,\n ChevronDown,\n ChevronRight,\n Cpu,\n ListChecks,\n Workflow,\n ArrowUpRight,\n Crown,\n Wrench,\n Shield,\n Layers,\n FileText,\n Loader2,\n RefreshCw,\n RotateCcw,\n GitBranch,\n Github,\n PlusCircle,\n} from 'lucide-react';\n\n// --- Shared helpers ---\n\nfunction SummaryRow({\n icon: Icon,\n label,\n onEdit,\n children,\n}: {\n icon: React.ElementType;\n label: string;\n onEdit?: () => void;\n children: React.ReactNode;\n}) {\n return (\n <div className=\"group flex items-start gap-3 py-3\">\n <Icon className=\"h-4 w-4 mt-0.5 text-muted-foreground shrink-0\" />\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 mb-1\">\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n {label}\n </p>\n {onEdit && (\n <button\n onClick={onEdit}\n className=\"opacity-0 group-hover:opacity-100 transition-opacity text-muted-foreground hover:text-foreground\"\n >\n <Pencil className=\"h-3 w-3\" />\n </button>\n )}\n </div>\n <div className=\"text-sm\">{children}</div>\n </div>\n </div>\n );\n}\n\nfunction InlineEdit({\n value,\n onSave,\n onCancel,\n multiline,\n placeholder,\n}: {\n value: string;\n onSave: (v: string) => void;\n onCancel: () => void;\n multiline?: boolean;\n placeholder?: string;\n}) {\n const [draft, setDraft] = useState(value);\n const InputTag = multiline ? 'textarea' : 'input';\n\n return (\n <div className=\"flex gap-1.5 items-start\">\n <InputTag\n className={cn(\n 'flex w-full rounded-md border border-input bg-transparent px-2 py-1 text-sm shadow-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n multiline && 'min-h-[60px] resize-none',\n )}\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n placeholder={placeholder}\n autoFocus\n onKeyDown={(e) => {\n if (e.key === 'Enter' && !e.shiftKey && !multiline) {\n e.preventDefault();\n onSave(draft);\n }\n if (e.key === 'Escape') onCancel();\n }}\n />\n <button\n onClick={() => onSave(draft)}\n className=\"h-7 w-7 rounded flex items-center justify-center border hover:bg-accent shrink-0\"\n >\n <Check className=\"h-3.5 w-3.5\" />\n </button>\n <button\n onClick={onCancel}\n className=\"h-7 w-7 rounded flex items-center justify-center border hover:bg-accent shrink-0\"\n >\n <X className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n );\n}\n\n/** Inline editor for the primary project's repository setup (new vs. external). */\nfunction RepositoryEdit({\n project,\n onSave,\n onCancel,\n}: {\n project: WizardProject | null;\n onSave: (repo: ReturnType<typeof repositoryProjectFields>) => void;\n onCancel: () => void;\n}) {\n const initialMode = getRepositoryMode(project);\n const [mode, setMode] = useState<RepositoryMode>(initialMode);\n const [repoUrl, setRepoUrl] = useState(getRepositoryUrl(project));\n const [repoRef, setRepoRef] = useState(getRepositoryRef(project, initialMode));\n\n const chooseMode = (next: RepositoryMode) => {\n setMode(next);\n if (next === 'new' && (!repoRef.trim() || repoRef.trim().startsWith('origin/'))) {\n setRepoRef('main');\n }\n };\n\n const externalRepoMissing = mode === 'external' && !repoUrl.trim();\n\n const save = () => {\n if (externalRepoMissing) return;\n onSave(repositoryProjectFields(mode, repoUrl, repoRef));\n };\n\n const modeButton = (value: RepositoryMode, Icon: React.ElementType, label: string) => (\n <button\n type=\"button\"\n onClick={() => chooseMode(value)}\n className={cn(\n 'flex items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-xs transition-colors',\n mode === value\n ? 'border-foreground/30 bg-accent text-foreground'\n : 'border-border text-muted-foreground hover:bg-accent/50',\n )}\n >\n <Icon className=\"h-3.5 w-3.5\" />\n {label}\n </button>\n );\n\n const inputClass =\n 'flex w-full rounded-md border border-input bg-transparent px-2 py-1 text-sm shadow-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring';\n\n return (\n <div className=\"space-y-2.5 py-1\">\n <div className=\"flex gap-2\">\n {modeButton('new', PlusCircle, 'New repository')}\n {modeButton('external', Github, 'Existing repository')}\n </div>\n\n {mode === 'external' ? (\n <div className=\"space-y-2\">\n <input\n className={inputClass}\n value={repoUrl}\n onChange={(e) => setRepoUrl(e.target.value)}\n placeholder=\"https://github.com/org/repo\"\n autoFocus\n onKeyDown={(e) => {\n if (e.key === 'Enter') save();\n if (e.key === 'Escape') onCancel();\n }}\n />\n <input\n className={inputClass}\n value={repoRef}\n onChange={(e) => setRepoRef(e.target.value)}\n placeholder=\"Leave blank to use Paperclip/project default, or enter an explicit ref\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') save();\n if (e.key === 'Escape') onCancel();\n }}\n />\n <p className=\"text-xs text-muted-foreground\">\n Do not paste tokens or credentials. Configure provider access as company secrets.\n </p>\n </div>\n ) : (\n <input\n className={inputClass}\n value={repoRef}\n onChange={(e) => setRepoRef(e.target.value)}\n placeholder=\"Initial branch (e.g. main)\"\n autoFocus\n onKeyDown={(e) => {\n if (e.key === 'Enter') save();\n if (e.key === 'Escape') onCancel();\n }}\n />\n )}\n\n <div className=\"flex items-center gap-1.5\">\n <button\n type=\"button\"\n onClick={save}\n disabled={externalRepoMissing}\n className=\"flex items-center gap-1 text-xs px-2 py-1 rounded border hover:bg-accent disabled:opacity-50\"\n >\n <Check className=\"h-3 w-3\" /> Save\n </button>\n <button\n type=\"button\"\n onClick={onCancel}\n className=\"flex items-center gap-1 text-xs px-2 py-1 rounded border hover:bg-accent\"\n >\n <X className=\"h-3 w-3\" /> Cancel\n </button>\n </div>\n </div>\n );\n}\n\n// --- Detailed view components ---\n\nfunction ModuleDetail({ mod, allRoleNames }: { mod: ModuleData; allRoleNames: Set<string> }) {\n const moduleIssues = mod.issues ?? mod.tasks ?? [];\n const hasCapabilities = mod.capabilities && mod.capabilities.length > 0;\n const hasTasks = moduleIssues.length > 0;\n const hasRequires = mod.requires && mod.requires.length > 0;\n const hasRoleGating = mod.activatesWithRoles && mod.activatesWithRoles.length > 0;\n const isGated = hasRoleGating && !mod.activatesWithRoles!.some((r) => allRoleNames.has(r));\n\n return (\n <div className={cn('rounded-lg border p-3 space-y-2.5', isGated && 'opacity-50')}>\n <div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">{mod.name}</span>\n {isGated && (\n <Badge\n variant=\"outline\"\n className=\"text-[10px] border-amber-500/40 text-amber-700 dark:text-amber-400\"\n >\n inactive\n </Badge>\n )}\n </div>\n {mod.description && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">{mod.description}</p>\n )}\n </div>\n\n {hasRequires && (\n <div className=\"flex items-center gap-1.5 text-xs text-muted-foreground\">\n <Layers className=\"h-3 w-3 shrink-0\" />\n <span>Requires: {mod.requires!.join(', ')}</span>\n </div>\n )}\n\n {hasRoleGating && (\n <div className=\"flex items-center gap-1.5 text-xs text-muted-foreground\">\n <Shield className=\"h-3 w-3 shrink-0\" />\n <span>Activates with: {mod.activatesWithRoles!.join(', ')}</span>\n </div>\n )}\n\n {hasCapabilities && (\n <div className=\"space-y-1\">\n <p className=\"text-[10px] font-medium text-muted-foreground uppercase tracking-wider flex items-center gap-1\">\n <Workflow className=\"h-3 w-3\" /> Capabilities\n </p>\n <div className=\"space-y-1\">\n {mod.capabilities!.map((cap) => (\n <div\n key={cap.skill}\n className=\"flex items-start gap-2 rounded bg-accent/50 px-2 py-1.5\"\n >\n <Wrench className=\"h-3 w-3 mt-0.5 text-muted-foreground shrink-0\" />\n <div className=\"text-xs\">\n <span className=\"font-medium\">{cap.skill}</span>\n <span className=\"text-muted-foreground ml-1.5\">{cap.owners.join(' \u2192 ')}</span>\n {cap.fallbackSkill && (\n <span className=\"text-muted-foreground ml-1\">\n (fallback: {cap.fallbackSkill})\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {hasTasks && (\n <div className=\"space-y-1\">\n <p className=\"text-[10px] font-medium text-muted-foreground uppercase tracking-wider flex items-center gap-1\">\n <ListChecks className=\"h-3 w-3\" /> Initial tasks\n </p>\n <div className=\"space-y-1\">\n {moduleIssues.map((task) => (\n <div\n key={task.title}\n className=\"flex items-start gap-2 rounded bg-accent/50 px-2 py-1.5\"\n >\n <ChevronRight className=\"h-3 w-3 mt-0.5 text-muted-foreground shrink-0\" />\n <div className=\"text-xs\">\n <span className=\"font-medium\">{task.title}</span>\n <span className=\"text-muted-foreground ml-1.5\">\u2192 {task.assignTo}</span>\n {task.description && (\n <p className=\"text-muted-foreground mt-0.5\">{task.description}</p>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction RoleDetail({ role }: { role: RoleData }) {\n const adapter = role.adapter as { model?: string; effort?: string } | undefined;\n\n return (\n <div className=\"rounded-lg border p-3 space-y-2\">\n <div>\n <div className=\"flex items-center gap-2\">\n {role._base && <Crown className=\"h-3.5 w-3.5 text-muted-foreground\" />}\n <span className=\"text-sm font-medium\">{role.title}</span>\n <span className=\"text-xs text-muted-foreground\">{role.name}</span>\n </div>\n <p className=\"text-xs text-muted-foreground mt-0.5\">{role.description}</p>\n </div>\n\n <div className=\"flex flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground\">\n {role.paperclipRole && (\n <span className=\"flex items-center gap-1\">\n <Cpu className=\"h-3 w-3\" />\n {role.paperclipRole}\n </span>\n )}\n {role.reportsTo && (\n <span className=\"flex items-center gap-1\">\n <ArrowUpRight className=\"h-3 w-3\" />\n reports to {role.reportsTo}\n </span>\n )}\n {adapter?.model && (\n <span className=\"flex items-center gap-1\">\n <Wrench className=\"h-3 w-3\" />\n {adapter.model}\n {adapter.effort && ` (${adapter.effort})`}\n </span>\n )}\n </div>\n\n {role.enhances && role.enhances.length > 0 && (\n <div className=\"space-y-1\">\n <p className=\"text-[10px] font-medium text-muted-foreground uppercase tracking-wider\">\n Enhances\n </p>\n <ul className=\"space-y-0.5\">\n {role.enhances.map((e, i) => (\n <li key={i} className=\"text-xs text-muted-foreground flex items-start gap-1.5\">\n <span className=\"text-foreground/30 mt-px\">\u00B7</span>\n {e}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n );\n}\n\n// --- File preview section ---\n\n/** Groups flat file paths by their first-level directory prefix. */\nfunction groupFiles(files: Record<string, string>): Array<{ group: string; paths: string[] }> {\n const map = new Map<string, string[]>();\n for (const p of Object.keys(files).sort()) {\n // For agents/, group by agents/<role>/ (two levels deep)\n const parts = p.split('/');\n let group: string;\n if (parts.length >= 3 && parts[0] === 'agents') {\n group = `${parts[0]}/${parts[1]}`;\n } else {\n group = parts.length > 1 ? parts[0] : '';\n }\n if (!map.has(group)) map.set(group, []);\n map.get(group)!.push(p);\n }\n // Sort: root files first, then alphabetical groups\n const result: Array<{ group: string; paths: string[] }> = [];\n if (map.has('')) result.push({ group: '', paths: map.get('')! });\n for (const [group, paths] of map) {\n if (group !== '') result.push({ group, paths });\n }\n return result;\n}\n\nfunction FileEntry({\n filePath,\n content,\n override,\n onSaveOverride,\n onResetOverride,\n}: {\n filePath: string;\n content: string;\n override: string | undefined;\n onSaveOverride: (content: string) => void;\n onResetOverride: () => void;\n}) {\n const [expanded, setExpanded] = useState(false);\n const [editing, setEditing] = useState(false);\n const [draft, setDraft] = useState(override ?? content);\n // Show filename relative to group: for \"agents/ceo/skills/foo.md\" under group \"agents/ceo\", show \"skills/foo.md\"\n const parts = filePath.split('/');\n const fileName =\n parts.length >= 3 && parts[0] === 'agents' ? parts.slice(2).join('/') : parts.pop()!;\n const hasOverride = override !== undefined;\n\n const handleEdit = () => {\n setDraft(override ?? content);\n setEditing(true);\n setExpanded(true);\n };\n\n const handleSave = () => {\n onSaveOverride(draft);\n setEditing(false);\n };\n\n const handleCancel = () => {\n setDraft(override ?? content);\n setEditing(false);\n };\n\n const handleReset = () => {\n setDraft(content);\n onResetOverride();\n setEditing(false);\n };\n\n const displayContent = override ?? content;\n\n return (\n <div\n className={cn('rounded border', hasOverride && 'border-blue-400/60 dark:border-blue-500/50')}\n >\n <button\n className=\"w-full flex items-center gap-2 px-3 py-2 text-left hover:bg-accent/50 transition-colors\"\n onClick={() => {\n if (!editing) setExpanded((v) => !v);\n }}\n >\n <FileText className=\"h-3.5 w-3.5 text-muted-foreground shrink-0\" />\n <span className=\"text-xs font-medium flex-1 min-w-0 truncate\">\n {fileName}\n {hasOverride && (\n <span className=\"ml-1.5 text-[10px] text-blue-600 dark:text-blue-400 font-normal\">\n edited\n </span>\n )}\n </span>\n {!editing && (\n <span\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation();\n handleEdit();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.stopPropagation();\n handleEdit();\n }\n }}\n className=\"opacity-0 group-hover:opacity-100 transition-opacity text-muted-foreground hover:text-foreground p-0.5 rounded\"\n >\n <Pencil className=\"h-3 w-3\" />\n </span>\n )}\n {!editing &&\n (expanded ? (\n <ChevronDown className=\"h-3.5 w-3.5 text-muted-foreground shrink-0\" />\n ) : (\n <ChevronRight className=\"h-3.5 w-3.5 text-muted-foreground shrink-0\" />\n ))}\n </button>\n\n {(expanded || editing) && (\n <div className=\"border-t\">\n {editing ? (\n <div className=\"p-2 space-y-1.5\">\n <textarea\n className=\"w-full font-mono text-xs rounded border border-input bg-transparent px-2 py-1.5 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring resize-y\"\n style={{ minHeight: '200px' }}\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n autoFocus\n />\n <div className=\"flex items-center gap-1.5\">\n <button\n onClick={handleSave}\n className=\"flex items-center gap-1 text-xs px-2 py-1 rounded border hover:bg-accent\"\n >\n <Check className=\"h-3 w-3\" /> Save\n </button>\n <button\n onClick={handleCancel}\n className=\"flex items-center gap-1 text-xs px-2 py-1 rounded border hover:bg-accent\"\n >\n <X className=\"h-3 w-3\" /> Cancel\n </button>\n {hasOverride && (\n <button\n onClick={handleReset}\n className=\"flex items-center gap-1 text-xs px-2 py-1 rounded border hover:bg-accent text-muted-foreground ml-auto\"\n >\n <RotateCcw className=\"h-3 w-3\" /> Reset to default\n </button>\n )}\n </div>\n </div>\n ) : (\n <div className=\"group relative\">\n <pre className=\"p-3 font-mono text-xs overflow-x-auto whitespace-pre-wrap wrap-break-word text-muted-foreground max-h-[400px] overflow-y-auto\">\n {displayContent}\n </pre>\n <button\n onClick={handleEdit}\n className=\"absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity flex items-center gap-1 text-xs px-1.5 py-0.5 rounded border bg-background hover:bg-accent\"\n >\n <Pencil className=\"h-3 w-3\" /> Edit\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\n// --- Main component ---\n\ntype EditingField = 'name' | 'goal' | 'goalDesc' | 'existingCompanyId' | 'repository' | null;\n\nexport function ConfigReview() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const [editing, setEditing] = useState<EditingField>(null);\n const [showDetails, setShowDetails] = useState(false);\n const [showFiles, setShowFiles] = useState(false);\n const [loadingFiles, setLoadingFiles] = useState(false);\n const [previewFiles, setPreviewFiles] = useState<Record<string, string> | null>(null);\n const [previewError, setPreviewError] = useState<string | null>(null);\n const lastPreviewRepoFingerprint = useRef<string>('');\n const previewFilesAction = usePluginAction('preview-files');\n\n const loadPreview = useCallback(async () => {\n setLoadingFiles(true);\n setPreviewError(null);\n try {\n const result = (await previewFilesAction({\n companyName: state.companyName || 'Preview',\n presetName: state.presetName,\n selectedModules: state.selectedModules,\n selectedRoles: state.selectedRoles,\n goals: state.goals.length > 0 ? state.goals : undefined,\n projects: state.projects.length > 0 ? state.projects : undefined,\n issues: state.issues.length > 0 ? state.issues : undefined,\n })) as { files: Record<string, string>; error?: string };\n if (result.error) {\n setPreviewError(result.error);\n return;\n }\n setPreviewFiles(result.files);\n } catch (e) {\n setPreviewError(e instanceof Error ? e.message : 'Failed to load preview');\n } finally {\n setLoadingFiles(false);\n }\n }, [\n state.companyName,\n state.presetName,\n state.selectedModules,\n state.selectedRoles,\n state.goals,\n state.projects,\n state.issues,\n previewFilesAction,\n ]);\n\n const allRoles = getAllRoles(state);\n const allRoleNames = new Set(allRoles);\n const activeModules = getActiveModules(state);\n const skippedModules = state.selectedModules.filter(\n (name) => !activeModules.some((m) => m.name === name),\n );\n const totalTasks = activeModules.reduce(\n (sum, m) => sum + (m.issues?.length ?? m.tasks?.length ?? 0),\n 0,\n );\n\n const selectedModSet = new Set(state.selectedModules);\n const selectedRoleSet = new Set(state.selectedRoles);\n const baseRoleNames = state.roles.filter((r) => r._base).map((r) => r.name);\n\n const activeRoleData = state.roles.filter((r) => r._base || selectedRoleSet.has(r.name));\n const selectedModuleData = state.modules.filter((m) => selectedModSet.has(m.name));\n const primaryProject = state.projects[0];\n const primaryWorkspace = primaryProject?.workspace;\n const primaryRepoUrl = primaryWorkspace?.repoUrl || primaryProject?.repoUrl || '';\n const primaryRepoRef =\n primaryWorkspace?.defaultRef ||\n primaryWorkspace?.repoRef ||\n primaryProject?.defaultRef ||\n primaryProject?.repoRef ||\n '';\n const isExternalRepo = isExternalRepository(primaryProject);\n const repositoryFingerprint = `${isExternalRepo ? 'external' : 'new'}|${\n primaryWorkspace?.sourceType || primaryProject?.workspaceSourceType || ''\n }|${primaryRepoUrl}|${primaryRepoRef}|${primaryWorkspace?.defaultRef || ''}|${\n primaryWorkspace?.setupCommand || ''\n }`;\n\n const totalCapabilities = selectedModuleData.reduce(\n (sum, m) => sum + (m.capabilities?.length ?? 0),\n 0,\n );\n\n const toggleModule = (name: string) => {\n const next = new Set(selectedModSet);\n if (next.has(name)) {\n const dependents = state.modules.filter(\n (m) => m.requires?.includes(name) && next.has(m.name),\n );\n if (dependents.length > 0) return;\n next.delete(name);\n } else {\n next.add(name);\n const mod = state.modules.find((m) => m.name === name);\n for (const dep of mod?.requires ?? []) next.add(dep);\n }\n dispatch({ type: 'SET_MODULES', modules: [...next] });\n };\n\n const toggleRole = (name: string) => {\n if (baseRoleNames.includes(name)) return;\n const next = new Set(selectedRoleSet);\n if (next.has(name)) next.delete(name);\n else next.add(name);\n dispatch({ type: 'SET_ROLES', roles: [...next] });\n };\n\n const refreshPreview = useCallback(() => {\n if (!showFiles || loadingFiles) return;\n if (!previewFiles || lastPreviewRepoFingerprint.current !== repositoryFingerprint) {\n lastPreviewRepoFingerprint.current = repositoryFingerprint;\n loadPreview();\n }\n }, [loadingFiles, previewFiles, repositoryFingerprint, showFiles, loadPreview]);\n\n useEffect(() => {\n refreshPreview();\n }, [refreshPreview]);\n\n const saveRepository = (repo: ReturnType<typeof repositoryProjectFields>) => {\n const base: WizardProject = primaryProject ?? {\n name: state.companyName || 'Main Project',\n description: state.goals[0]?.description || '',\n goals: state.goals.map((g) => g.title).filter(Boolean),\n };\n dispatch({\n type: 'SET_PROJECTS',\n projects: [{ ...base, ...repo }, ...state.projects.slice(1)],\n });\n setEditing(null);\n };\n\n return (\n <>\n <Card>\n <CardContent className=\"divide-y p-0\">\n {/* Company name */}\n <div className=\"px-4\">\n <SummaryRow icon={Building2} label=\"Company\" onEdit={() => setEditing('name')}>\n {editing === 'name' ? (\n <InlineEdit\n value={state.companyName}\n onSave={(v) => {\n dispatch({ type: 'SET_COMPANY_NAME', value: v });\n setEditing(null);\n }}\n onCancel={() => setEditing(null)}\n placeholder=\"Company name\"\n />\n ) : (\n <>\n <span className=\"font-medium\">{state.companyName || '(unnamed)'}</span>\n <span className=\"text-muted-foreground ml-2\">\n \u2192 {toPascalCase(state.companyName || 'Company')}/\n </span>\n </>\n )}\n </SummaryRow>\n </div>\n\n {/* Target company */}\n <div className=\"px-4\">\n <SummaryRow\n icon={ArrowUpRight}\n label=\"Target\"\n onEdit={() => setEditing('existingCompanyId')}\n >\n {editing === 'existingCompanyId' ? (\n <InlineEdit\n value={state.existingCompanyId}\n onSave={(v) => {\n dispatch({ type: 'SET_EXISTING_COMPANY_ID', value: v.trim() });\n setEditing(null);\n }}\n onCancel={() => setEditing(null)}\n placeholder=\"Leave empty to create a new company, or paste existing company ID\"\n />\n ) : state.existingCompanyId ? (\n <>\n <span className=\"font-medium\">Existing company</span>\n <span className=\"text-muted-foreground ml-2 font-mono text-xs\">\n {state.existingCompanyId}\n </span>\n </>\n ) : (\n <span className=\"text-muted-foreground\">Create a new company</span>\n )}\n </SummaryRow>\n </div>\n\n {/* Repository */}\n <div className=\"px-4\">\n <SummaryRow icon={GitBranch} label=\"Repository\" onEdit={() => setEditing('repository')}>\n {editing === 'repository' ? (\n <RepositoryEdit\n project={primaryProject ?? null}\n onSave={(repo) => {\n saveRepository(repo);\n }}\n onCancel={() => setEditing(null)}\n />\n ) : (\n <button\n type=\"button\"\n onClick={() => setEditing('repository')}\n className=\"group/repo w-full text-left rounded-md -mx-1 px-1 py-0.5 hover:bg-accent/50 transition-colors\"\n >\n {isExternalRepo ? (\n <>\n <span className=\"font-medium\">External Git repository</span>\n <span className=\"ml-2 text-xs text-muted-foreground underline decoration-dotted underline-offset-2 group-hover/repo:text-foreground\">\n Change\n </span>\n {primaryRepoUrl && (\n <p className=\"text-xs text-muted-foreground mt-0.5 wrap-break-word\">\n {primaryRepoUrl}\n </p>\n )}\n {primaryRepoRef && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n Ref: {primaryRepoRef}\n </p>\n )}\n </>\n ) : (\n <>\n <span className=\"font-medium\">Create a new Git repository</span>\n <span className=\"ml-2 text-xs text-muted-foreground underline decoration-dotted underline-offset-2 group-hover/repo:text-foreground\">\n Change \u2014 use an existing repository\n </span>\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n Fresh local workspace{primaryRepoRef ? ` on ${primaryRepoRef}` : ''}\n {primaryWorkspace?.setupCommand\n ? ` \u00B7 ${primaryWorkspace.setupCommand}`\n : ''}\n </p>\n </>\n )}\n </button>\n )}\n </SummaryRow>\n </div>\n\n {/* Goals */}\n <div className=\"px-4\">\n <SummaryRow icon={Target} label=\"Goal\" onEdit={() => setEditing('goal')}>\n {editing === 'goal' ? (\n <InlineEdit\n value={state.goals[0]?.title || ''}\n onSave={(v) => {\n const updated = [...state.goals];\n if (updated.length === 0) updated.push({ title: '', description: '' });\n updated[0] = { ...updated[0], title: v };\n dispatch({ type: 'SET_GOALS', goals: updated });\n setEditing('goalDesc');\n }}\n onCancel={() => setEditing(null)}\n placeholder=\"Goal title\"\n />\n ) : editing === 'goalDesc' ? (\n <div className=\"space-y-1\">\n <span>{state.goals[0]?.title || '(no goal)'}</span>\n <InlineEdit\n value={state.goals[0]?.description || ''}\n onSave={(v) => {\n const updated = [...state.goals];\n if (updated.length === 0) updated.push({ title: '', description: '' });\n updated[0] = { ...updated[0], description: v };\n dispatch({ type: 'SET_GOALS', goals: updated });\n setEditing(null);\n }}\n onCancel={() => setEditing(null)}\n placeholder=\"Goal description (optional)\"\n multiline\n />\n </div>\n ) : (\n <>\n <span>{state.goals[0]?.title || '(no goal)'}</span>\n {state.goals[0]?.description && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n {state.goals[0].description}\n </p>\n )}\n {state.goals.length > 1 && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n + {state.goals.length - 1} sub-goal{state.goals.length > 2 ? 's' : ''}\n </p>\n )}\n </>\n )}\n </SummaryRow>\n </div>\n\n {/* Modules */}\n <div className=\"px-4\">\n <SummaryRow icon={Blocks} label={`Modules (${activeModules.length})`}>\n <div className=\"flex flex-wrap gap-1.5\">\n {state.modules.map((m) => {\n const isActive = selectedModSet.has(m.name);\n return (\n <HoverCardRoot key={m.name} openDelay={200} closeDelay={100}>\n <HoverCardTrigger asChild>\n <button onClick={() => toggleModule(m.name)}>\n <Badge\n variant={isActive ? 'secondary' : 'outline'}\n className={cn(\n 'text-xs cursor-pointer transition-colors',\n !isActive && 'opacity-40',\n )}\n >\n {m.name}\n </Badge>\n </button>\n </HoverCardTrigger>\n <HoverCardPortal>\n <HoverCardContent\n side=\"top\"\n align=\"center\"\n sideOffset={6}\n className=\"z-50 w-80 rounded-lg border bg-popover p-0 shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\"\n >\n <ModuleDetail mod={m} allRoleNames={allRoleNames} />\n </HoverCardContent>\n </HoverCardPortal>\n </HoverCardRoot>\n );\n })}\n </div>\n {(totalTasks > 0 || totalCapabilities > 0) && (\n <p className=\"text-xs text-muted-foreground mt-1.5\">\n {[\n totalTasks > 0 && `${totalTasks} initial tasks`,\n totalCapabilities > 0 && `${totalCapabilities} capabilities`,\n ]\n .filter(Boolean)\n .join(' \u00B7 ')}\n </p>\n )}\n </SummaryRow>\n </div>\n\n {/* Roles */}\n <div className=\"px-4\">\n <SummaryRow icon={Users} label={`Team (${allRoles.length} agents)`}>\n <div className=\"flex flex-wrap gap-1.5\">\n {state.roles.map((role) => {\n const isBase = role._base;\n const isActive = isBase || selectedRoleSet.has(role.name);\n return (\n <HoverCardRoot key={role.name} openDelay={200} closeDelay={100}>\n <HoverCardTrigger asChild>\n <button onClick={() => toggleRole(role.name)} disabled={isBase}>\n <Badge\n variant={isActive ? 'outline' : 'secondary'}\n className={cn(\n 'text-xs transition-colors',\n isBase && 'cursor-default',\n !isBase && 'cursor-pointer',\n !isActive && 'opacity-40',\n )}\n >\n {role.title}\n </Badge>\n </button>\n </HoverCardTrigger>\n <HoverCardPortal>\n <HoverCardContent\n side=\"top\"\n align=\"center\"\n sideOffset={6}\n className=\"z-50 w-80 rounded-lg border bg-popover p-0 shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\"\n >\n <RoleDetail role={role} />\n </HoverCardContent>\n </HoverCardPortal>\n </HoverCardRoot>\n );\n })}\n </div>\n </SummaryRow>\n </div>\n </CardContent>\n </Card>\n\n {skippedModules.length > 0 && (\n <div className=\"flex items-start gap-2 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm\">\n <AlertTriangle className=\"h-4 w-4 text-amber-500 shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium text-amber-800 dark:text-amber-200\">\n {skippedModules.length} module(s) will be skipped\n </p>\n <p className=\"text-xs text-amber-700 dark:text-amber-300 mt-0.5\">\n {skippedModules.join(', ')} \u2014 missing required roles\n </p>\n </div>\n </div>\n )}\n\n {/* Detailed configuration toggle */}\n <button\n type=\"button\"\n onClick={() => setShowDetails((v) => !v)}\n className=\"w-full flex items-center justify-center gap-2 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors py-2\"\n >\n {showDetails ? (\n <ChevronDown className=\"h-3.5 w-3.5\" />\n ) : (\n <ChevronRight className=\"h-3.5 w-3.5\" />\n )}\n {showDetails ? 'Hide' : 'Show'} detailed configuration\n <span className=\"text-muted-foreground/60\">\n ({activeRoleData.length} roles \u00B7 {selectedModuleData.length} modules \u00B7 {totalCapabilities}{' '}\n capabilities)\n </span>\n </button>\n\n {/* Generated files preview */}\n <button\n type=\"button\"\n onClick={() => {\n const next = !showFiles;\n setShowFiles(next);\n }}\n className=\"w-full flex items-center justify-center gap-2 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors py-2\"\n >\n {showFiles ? (\n <ChevronDown className=\"h-3.5 w-3.5\" />\n ) : (\n <ChevronRight className=\"h-3.5 w-3.5\" />\n )}\n {showFiles ? 'Hide' : 'Preview'} generated files\n {previewFiles && (\n <span className=\"text-muted-foreground/60\">\n ({Object.keys(previewFiles).length} files\n {Object.keys(state.fileOverrides).length > 0 &&\n ` \u00B7 ${Object.keys(state.fileOverrides).length} edited`}\n )\n </span>\n )}\n </button>\n\n {showFiles && (\n <div className=\"space-y-3\">\n {loadingFiles && (\n <div className=\"flex items-center justify-center gap-2 py-6 text-sm text-muted-foreground\">\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n Assembling preview...\n </div>\n )}\n\n {previewError && !loadingFiles && (\n <div className=\"flex items-start gap-2 rounded-lg border border-destructive/30 bg-destructive/5 p-3 text-sm\">\n <AlertTriangle className=\"h-4 w-4 text-destructive shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium\">Preview failed</p>\n <p className=\"text-xs text-muted-foreground mt-0.5\">{previewError}</p>\n </div>\n </div>\n )}\n\n {previewFiles && !loadingFiles && (\n <>\n <div className=\"flex items-center justify-between\">\n <p className=\"text-xs text-muted-foreground\">\n Click a file to expand. Use the edit button to override its content before\n provisioning.\n </p>\n <button\n type=\"button\"\n onClick={loadPreview}\n className=\"flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors\"\n >\n <RefreshCw className=\"h-3 w-3\" />\n Refresh\n </button>\n </div>\n\n {groupFiles(previewFiles).map(({ group, paths }) => (\n <div key={group || '_root'} className=\"space-y-1\">\n {group && (\n <p className=\"text-[10px] font-medium text-muted-foreground uppercase tracking-wider px-0.5\">\n {group}/\n </p>\n )}\n <div className=\"space-y-1\">\n {paths.map((filePath) => (\n <FileEntry\n key={filePath}\n filePath={filePath}\n content={previewFiles[filePath]}\n override={state.fileOverrides[filePath]}\n onSaveOverride={(content) =>\n dispatch({ type: 'SET_FILE_OVERRIDE', path: filePath, content })\n }\n onResetOverride={() =>\n dispatch({ type: 'DELETE_FILE_OVERRIDE', path: filePath })\n }\n />\n ))}\n </div>\n </div>\n ))}\n </>\n )}\n </div>\n )}\n\n {showDetails && (\n <div className=\"space-y-6\">\n {/* Preset info */}\n {state.presetName &&\n state.presetName !== 'custom' &&\n (() => {\n const preset = state.presets.find((p) => p.name === state.presetName);\n if (!preset) return null;\n return (\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2\">\n Preset\n </p>\n <Card>\n <CardContent className=\"p-3 space-y-1.5\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium capitalize\">{preset.name}</span>\n {preset.base && (\n <Badge variant=\"outline\" className=\"text-[10px]\">\n extends {preset.base}\n </Badge>\n )}\n </div>\n <p className=\"text-xs text-muted-foreground\">{preset.description}</p>\n {preset.constraints && preset.constraints.length > 0 && (\n <div className=\"flex items-start gap-1.5 text-xs text-amber-700 dark:text-amber-300 mt-1\">\n <AlertTriangle className=\"h-3 w-3 shrink-0 mt-0.5\" />\n <span>{preset.constraints.join(' \u00B7 ')}</span>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n );\n })()}\n\n {/* Detailed roles */}\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2\">\n Team \u2014 {activeRoleData.length} agents\n </p>\n <div className=\"grid gap-2\">\n {activeRoleData.map((role) => (\n <RoleDetail key={role.name} role={role} />\n ))}\n </div>\n </div>\n\n {/* Detailed modules */}\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2\">\n Modules \u2014 {selectedModuleData.length} active\n </p>\n <div className=\"grid gap-2\">\n {selectedModuleData.map((mod) => (\n <ModuleDetail key={mod.name} mod={mod} allRoleNames={allRoleNames} />\n ))}\n </div>\n </div>\n </div>\n )}\n </>\n );\n}\n", "import {\n useState,\n useRef,\n useEffect,\n useCallback,\n createContext,\n useContext,\n type ReactNode,\n} from 'react';\nimport * as ReactDOM from 'react-dom';\n\n// Context to pass open state + trigger rect from Root to Content\nconst HoverCardContext = createContext<{\n open: boolean;\n triggerRef: React.RefObject<HTMLElement | null>;\n}>({ open: false, triggerRef: { current: null } });\n\nfunction HoverCardRoot({\n children,\n openDelay = 200,\n closeDelay = 100,\n}: {\n children: ReactNode;\n openDelay?: number;\n closeDelay?: number;\n}) {\n const [open, setOpen] = useState(false);\n const openTimer = useRef<ReturnType<typeof setTimeout>>(undefined);\n const closeTimer = useRef<ReturnType<typeof setTimeout>>(undefined);\n const triggerRef = useRef<HTMLDivElement>(null);\n\n const handleEnter = useCallback(() => {\n clearTimeout(closeTimer.current);\n openTimer.current = setTimeout(() => setOpen(true), openDelay);\n }, [openDelay]);\n\n const handleLeave = useCallback(() => {\n clearTimeout(openTimer.current);\n closeTimer.current = setTimeout(() => setOpen(false), closeDelay);\n }, [closeDelay]);\n\n useEffect(\n () => () => {\n clearTimeout(openTimer.current);\n clearTimeout(closeTimer.current);\n },\n [],\n );\n\n return (\n <HoverCardContext.Provider value={{ open, triggerRef }}>\n <div\n ref={triggerRef}\n style={{ display: 'inline-block' }}\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n >\n {children}\n </div>\n </HoverCardContext.Provider>\n );\n}\n\nfunction HoverCardTrigger({ children }: { children: ReactNode; asChild?: boolean }) {\n return <>{children}</>;\n}\n\nfunction HoverCardContent({\n children,\n className,\n side = 'top',\n align = 'center',\n sideOffset = 6,\n}: {\n children: ReactNode;\n className?: string;\n side?: string;\n align?: string;\n sideOffset?: number;\n}) {\n const { open, triggerRef } = useContext(HoverCardContext);\n const [pos, setPos] = useState<{ top: number; left: number } | null>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!open || !triggerRef.current) {\n setPos(null);\n return;\n }\n const rect = triggerRef.current.getBoundingClientRect();\n const contentEl = contentRef.current;\n const contentWidth = contentEl?.offsetWidth || 320;\n\n let top: number;\n let left: number;\n\n if (side === 'top') {\n top = rect.top - sideOffset;\n // Will be adjusted after render with transform\n } else {\n top = rect.bottom + sideOffset;\n }\n\n if (align === 'center') {\n left = rect.left + rect.width / 2 - contentWidth / 2;\n } else if (align === 'end') {\n left = rect.right - contentWidth;\n } else {\n left = rect.left;\n }\n\n // Keep within viewport\n left = Math.max(8, Math.min(left, window.innerWidth - contentWidth - 8));\n\n setPos({ top, left });\n }, [open, side, align, sideOffset, triggerRef]);\n\n if (!open) return null;\n\n return (\n <div\n ref={contentRef}\n className={className}\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: pos ? pos.top : -9999,\n left: pos ? pos.left : -9999,\n transform: side === 'top' ? 'translateY(-100%)' : undefined,\n pointerEvents: 'auto',\n }}\n >\n {children}\n </div>\n );\n}\n\nfunction HoverCardPortal({ children }: { children: ReactNode }) {\n if (typeof document === 'undefined') return null;\n return ReactDOM.createPortal(children, document.body);\n}\n\nexport { HoverCardRoot, HoverCardTrigger, HoverCardContent, HoverCardPortal };\n", "import { useState, useRef, useEffect } from 'react';\nimport { usePluginAction } from '@paperclipai/plugin-sdk/ui';\nimport {\n useWizard,\n useWizardDispatch,\n type Goal,\n type ProjectExecutionWorkspacePolicy,\n type ProjectWorkspaceConfig,\n type WizardIssue,\n type WizardProject,\n} from '../../context/WizardContext';\nimport { Button } from '../ui/button';\nimport { ConfigReview } from '../ConfigReview';\nimport { cn, getPluginSettingsUrl } from '../../lib/utils';\nimport {\n Sparkles,\n Loader2,\n Send,\n User,\n RotateCcw,\n Zap,\n MessageSquare,\n Settings2,\n ClipboardCheck,\n ArrowRight,\n CheckCircle2,\n ChevronLeft,\n AlertTriangle,\n Settings,\n} from 'lucide-react';\nimport interviewSystemPrompt from '../../prompts/interview-system.md?raw';\nimport singleShotSystemPrompt from '../../prompts/single-shot-system.md?raw';\nimport promptMessages from '../../prompts/messages.json';\nimport EXAMPLE_PROMPTS from '../../prompts/examples.json';\n\ninterface Message {\n role: 'user' | 'assistant';\n content: string;\n}\n\ntype InterviewPhase = 'describe' | 'interview' | 'configuring' | 'review';\n\nconst LOADING_MESSAGES = [\n 'Understanding your vision...',\n 'Analyzing requirements...',\n 'Thinking about team structure...',\n 'Considering the best approach...',\n 'Evaluating module combinations...',\n];\n\nconst CONFIG_STEPS = [\n 'Selecting strategy preset',\n 'Choosing capability modules',\n 'Assembling agent team',\n 'Resolving repository setup',\n 'Defining company goal',\n 'Finalizing configuration',\n];\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction copyStringField(\n source: Record<string, unknown>,\n target: Record<string, unknown>,\n key: string,\n) {\n const value = source[key];\n if (typeof value === 'string' && value.trim()) target[key] = value.trim();\n}\n\nfunction normalizeWorkspaceConfig(value: unknown): ProjectWorkspaceConfig | undefined {\n if (!isPlainObject(value)) return undefined;\n const workspace: Record<string, unknown> = {};\n for (const key of [\n 'name',\n 'sourceType',\n 'cwd',\n 'repoUrl',\n 'repoRef',\n 'defaultRef',\n 'visibility',\n 'setupCommand',\n 'cleanupCommand',\n 'remoteProvider',\n 'remoteWorkspaceRef',\n 'sharedWorkspaceKey',\n ]) {\n copyStringField(value, workspace, key);\n }\n if (typeof value.isPrimary === 'boolean') workspace.isPrimary = value.isPrimary;\n if (isPlainObject(value.metadata)) workspace.metadata = value.metadata;\n if (isPlainObject(value.runtimeConfig)) workspace.runtimeConfig = value.runtimeConfig;\n return Object.keys(workspace).length > 0 ? (workspace as ProjectWorkspaceConfig) : undefined;\n}\n\nfunction normalizeExecutionWorkspacePolicy(\n value: unknown,\n): ProjectExecutionWorkspacePolicy | undefined {\n if (!isPlainObject(value)) return undefined;\n const policy: Record<string, unknown> = {};\n copyStringField(value, policy, 'defaultMode');\n copyStringField(value, policy, 'defaultProjectWorkspaceId');\n copyStringField(value, policy, 'environmentId');\n if (typeof value.allowIssueOverride === 'boolean') {\n policy.allowIssueOverride = value.allowIssueOverride;\n }\n if (isPlainObject(value.workspaceStrategy)) {\n policy.workspaceStrategy = { ...value.workspaceStrategy };\n }\n return Object.keys(policy).length > 0 ? (policy as ProjectExecutionWorkspacePolicy) : undefined;\n}\n\nfunction PhaseIndicator({\n phase,\n questionCount,\n}: {\n phase: InterviewPhase;\n questionCount: number;\n}) {\n const phases = [\n { key: 'describe', icon: Zap, label: 'Describe' },\n { key: 'interview', icon: MessageSquare, label: 'Interview' },\n { key: 'configuring', icon: Settings2, label: 'Configure' },\n { key: 'review', icon: ClipboardCheck, label: 'Review' },\n ] as const;\n\n const phaseKeys = phases.map((p) => p.key);\n const activeIdx = phaseKeys.indexOf(phase);\n\n return (\n <div className=\"flex items-center gap-1\">\n {phases.map((p, i) => {\n const Icon = p.icon;\n const isActive = i === activeIdx;\n const isDone = i < activeIdx;\n return (\n <div key={p.key} className=\"flex items-center gap-1\">\n {i > 0 && <div className={cn('w-6 h-px', isDone ? 'bg-foreground' : 'bg-border')} />}\n <div\n className={cn(\n 'flex items-center gap-1.5 px-2 py-1 rounded-full text-xs font-medium transition-all duration-300',\n isActive && 'bg-foreground text-background',\n isDone && 'bg-foreground/10 text-foreground',\n !isActive && !isDone && 'text-muted-foreground',\n )}\n >\n {isDone ? (\n <CheckCircle2 className=\"h-3 w-3\" />\n ) : (\n <Icon className={cn('h-3 w-3', isActive && 'animate-pulse')} />\n )}\n <span className=\"hidden sm:inline\">{p.label}</span>\n {p.key === 'interview' && isActive && questionCount > 0 && (\n <span className=\"text-[10px] opacity-70\">{questionCount}/3</span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction ConfiguringAnimation({ ready, onDone }: { ready: boolean; onDone: () => void }) {\n const [step, setStep] = useState(0);\n const [animDone, setAnimDone] = useState(false);\n\n useEffect(() => {\n if (step < CONFIG_STEPS.length) {\n const timer = setTimeout(() => setStep((s) => s + 1), 600);\n return () => clearTimeout(timer);\n } else {\n setAnimDone(true);\n }\n }, [step]);\n\n // Proceed when both animation is done AND config is ready\n useEffect(() => {\n if (animDone && ready) {\n const timer = setTimeout(onDone, 300);\n return () => clearTimeout(timer);\n }\n }, [animDone, ready, onDone]);\n\n const allStepsDone = step >= CONFIG_STEPS.length;\n\n return (\n <div className=\"flex flex-col items-center justify-center py-12 space-y-6\">\n <div className=\"relative\">\n <div className=\"h-12 w-12 rounded-full bg-foreground/5 flex items-center justify-center\">\n <Sparkles className=\"h-6 w-6 text-foreground animate-pulse\" />\n </div>\n <div className=\"absolute inset-0 rounded-full border-2 border-foreground/20 animate-ping\" />\n </div>\n <div className=\"space-y-2 w-full max-w-xs\">\n {CONFIG_STEPS.map((label, i) => (\n <div\n key={label}\n className={cn(\n 'flex items-center gap-2.5 text-sm transition-all duration-300',\n i < step && 'text-foreground',\n i === step && 'text-foreground',\n i > step && 'text-muted-foreground/40',\n )}\n >\n <div className=\"w-4 flex justify-center\">\n {i < step ? (\n <CheckCircle2 className=\"h-3.5 w-3.5\" />\n ) : i === step ? (\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n ) : (\n <div className=\"h-1.5 w-1.5 rounded-full bg-current\" />\n )}\n </div>\n {label}\n </div>\n ))}\n </div>\n {allStepsDone && !ready && (\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n Waiting for AI response...\n </div>\n )}\n </div>\n );\n}\n\nexport function StepAiWizard() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const aiChat = usePluginAction('ai-chat');\n const checkAiConfig = usePluginAction('check-ai-config');\n const [messages, setMessages] = useState<Message[]>([]);\n const [input, setInput] = useState('');\n const [loading, setLoading] = useState(false);\n const [phase, setPhase] = useState<InterviewPhase>('describe');\n const [questionCount, setQuestionCount] = useState(0);\n const [loadingMsg, setLoadingMsg] = useState(LOADING_MESSAGES[0]);\n const [configReady, setConfigReady] = useState(false);\n const [configWarning, setConfigWarning] = useState<string | null>(null);\n const scrollRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const pendingConfigRef = useRef<Record<string, unknown> | null>(null);\n\n // Pre-check: surface missing API key before the user types anything\n useEffect(() => {\n checkAiConfig({})\n .then((result: any) => {\n if (!result.ok) setConfigWarning(result.error);\n else setConfigWarning(null);\n })\n .catch(() => {});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n scrollRef.current?.scrollTo({ top: scrollRef.current.scrollHeight, behavior: 'smooth' });\n }, [messages, loading]);\n\n useEffect(() => {\n if (!loading && phase === 'interview') {\n inputRef.current?.focus();\n }\n }, [loading, phase]);\n\n useEffect(() => {\n if (!loading) return;\n const interval = setInterval(() => {\n setLoadingMsg(LOADING_MESSAGES[Math.floor(Math.random() * LOADING_MESSAGES.length)]);\n }, 2000);\n return () => clearInterval(interval);\n }, [loading]);\n\n const buildCatalog = () => {\n return [\n '## Available Presets',\n ...state.presets.map(\n (p) =>\n `- **${p.name}**: ${p.description} (modules: ${p.modules?.join(', ')}; roles: ${(p.roles as string[] | undefined)?.length ? (p.roles as string[]).join(', ') : 'none'})`,\n ),\n '',\n '## Available Modules',\n ...state.modules.map((m) => `- **${m.name}**: ${m.description}`),\n '',\n '## Available Extra Roles',\n ...state.roles\n .filter((r) => !r._base)\n .map((r) => `- **${r.name}** (${r.title}): ${r.description}`),\n '',\n '## Base Roles (always included)',\n ...state.roles\n .filter((r) => r._base)\n .map((r) => `- **${r.name}** (${r.title}): ${r.description}`),\n ].join('\\n');\n };\n\n const systemPrompt = interviewSystemPrompt\n .replace('{{CATALOG}}', buildCatalog())\n .replace('{{CONFIG_FORMAT}}', promptMessages.configFormat);\n\n const singleShotPrompt = singleShotSystemPrompt\n .replace('{{CATALOG}}', buildCatalog())\n .replace('{{CONFIG_FORMAT}}', promptMessages.configFormat);\n\n // Every Anthropic call goes through the worker's async job model (start + poll).\n // The host kills any single performAction RPC at 30s; an Opus generation \u2014 even a\n // short interview turn, but especially the final full-spec config \u2014 can exceed\n // that. Starting a background job and polling means no single RPC ever blocks\n // long enough to time out, so this is used for ALL paths (interview, chat,\n // quick-generate, and the generate-config button).\n const callApi = async (allMessages: Message[], system?: string): Promise<string> => {\n const start = (await aiChat({\n mode: 'start',\n messages: allMessages.map((m) => ({ role: m.role, content: m.content })),\n system: system || systemPrompt,\n })) as { jobId?: string; error?: string };\n if (start.error) throw new Error(start.error);\n if (!start.jobId) throw new Error('AI did not start a generation job');\n\n const POLL_INTERVAL_MS = 1500;\n const MAX_ATTEMPTS = 320; // ~8 minutes \u2014 headroom for large, full-spec configs\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS));\n const poll = (await aiChat({ mode: 'poll', jobId: start.jobId })) as {\n status?: string;\n text?: string;\n error?: string;\n };\n if (poll.status === 'done') return poll.text || '';\n if (poll.status === 'error') throw new Error(poll.error || 'AI generation failed');\n // status === 'pending' \u2014 keep polling\n }\n throw new Error('AI generation timed out. Please try again.');\n };\n\n const tryExtractConfig = (text: string) => {\n // Extract top-level JSON objects by tracking brace depth, skipping string contents.\n const candidates: string[] = [];\n let depth = 0;\n let start = -1;\n let inString = false;\n let escape = false;\n for (let i = 0; i < text.length; i++) {\n const ch = text[i];\n if (escape) {\n escape = false;\n continue;\n }\n if (ch === '\\\\' && inString) {\n escape = true;\n continue;\n }\n if (ch === '\"') {\n inString = !inString;\n continue;\n }\n if (inString) continue;\n if (ch === '{') {\n if (depth === 0) start = i;\n depth++;\n } else if (ch === '}') {\n depth--;\n if (depth === 0 && start !== -1) {\n candidates.push(text.slice(start, i + 1));\n start = -1;\n }\n }\n }\n const isValidConfig = (obj: any) => obj && typeof obj === 'object' && obj.name && obj.preset;\n const tryParse = (raw: string) => {\n // 1. Try strict JSON\n try {\n return JSON.parse(raw);\n } catch {\n /* continue to cleanup */\n }\n // 2. Clean common AI artifacts and retry\n try {\n const cleaned = raw\n .replace(/,\\s*([\\]}])/g, '$1') // trailing commas\n .replace(/\\/\\/[^\\n]*/g, '') // line comments\n .replace(/\\n/g, '\\\\n') // unescaped newlines inside strings\n .replace(/\\t/g, '\\\\t'); // unescaped tabs\n return JSON.parse(cleaned);\n } catch {\n /* continue to last resort */\n }\n // 3. Last resort: try to fix unescaped newlines only inside JSON string values\n try {\n // Replace actual newlines between quotes with \\n escape\n const fixed = raw.replace(/\"([^\"\\\\]|\\\\.)*\"/g, (match) =>\n match.replace(/\\n/g, '\\\\n').replace(/\\t/g, '\\\\t'),\n );\n return JSON.parse(fixed.replace(/,\\s*([\\]}])/g, '$1'));\n } catch {\n return null;\n }\n };\n for (const candidate of candidates) {\n const config = tryParse(candidate);\n if (isValidConfig(config)) return config;\n }\n // Fallback: try extracting from markdown code fence\n const fenceMatch = text.match(/```(?:json)?\\s*\\n?([\\s\\S]*?)```/);\n if (fenceMatch) {\n const config = tryParse(fenceMatch[1].trim());\n if (isValidConfig(config)) return config;\n }\n return null;\n };\n\n const startInterview = async (description?: string) => {\n const desc = description || state.aiDescription;\n if (!desc.trim()) return;\n\n if (description) {\n dispatch({ type: 'SET_AI_DESCRIPTION', value: description });\n }\n dispatch({ type: 'SET_ERROR', error: null });\n\n setPhase('interview');\n setLoading(true);\n\n try {\n const startMessages: Message[] = [\n { role: 'user', content: promptMessages.interviewStart.replace('{{DESCRIPTION}}', desc) },\n ];\n const reply = await callApi(startMessages);\n setMessages([startMessages[0], { role: 'assistant', content: reply }]);\n setQuestionCount(1);\n } catch (err) {\n dispatch({\n type: 'SET_ERROR',\n error: err instanceof Error ? err.message : 'AI wizard failed',\n });\n setPhase('describe');\n } finally {\n setLoading(false);\n }\n };\n\n const quickGenerate = async (description?: string) => {\n const desc = description || state.aiDescription;\n if (!desc.trim()) return;\n\n if (description) {\n dispatch({ type: 'SET_AI_DESCRIPTION', value: description });\n }\n dispatch({ type: 'SET_ERROR', error: null });\n\n setConfigReady(false);\n setPhase('configuring');\n\n try {\n const reply = await callApi(\n [{ role: 'user', content: promptMessages.singleShot.replace('{{DESCRIPTION}}', desc) }],\n singleShotPrompt,\n );\n const config = tryExtractConfig(reply);\n if (config) {\n pendingConfigRef.current = config;\n setConfigReady(true);\n } else {\n console.error('[AI Wizard] Failed to parse config from single-shot response:', reply);\n throw new Error('Could not parse configuration from AI response');\n }\n } catch (err) {\n dispatch({\n type: 'SET_ERROR',\n error: err instanceof Error ? err.message : 'AI wizard failed',\n });\n setPhase('describe');\n }\n };\n\n const sendMessage = async () => {\n if (!input.trim() || loading) return;\n\n const userMsg: Message = { role: 'user', content: input };\n const newMessages = [...messages, userMsg];\n setMessages(newMessages);\n setInput('');\n setLoading(true);\n\n try {\n const reply = await callApi(newMessages);\n const allMessages = [...newMessages, { role: 'assistant' as const, content: reply }];\n setMessages(allMessages);\n setQuestionCount((c) => c + 1);\n\n const config = tryExtractConfig(reply);\n if (config) {\n pendingConfigRef.current = config;\n setConfigReady(true);\n setPhase('configuring');\n }\n } catch (err) {\n dispatch({\n type: 'SET_ERROR',\n error: err instanceof Error ? err.message : 'AI wizard failed',\n });\n } finally {\n setLoading(false);\n }\n };\n\n const requestConfig = async () => {\n // Immediately show the configuring animation \u2014 API call runs behind it\n setConfigReady(false);\n setPhase('configuring');\n\n const apiMessages: Message[] = [\n ...messages,\n { role: 'user', content: promptMessages.generateConfig },\n ];\n\n try {\n const reply = await callApi(apiMessages);\n const config = tryExtractConfig(reply);\n if (config) {\n pendingConfigRef.current = config;\n setConfigReady(true);\n } else {\n console.error('[AI Wizard] Failed to parse config from interview response:', reply);\n throw new Error('Could not parse configuration from AI response');\n }\n } catch (err) {\n dispatch({\n type: 'SET_ERROR',\n error: err instanceof Error ? err.message : 'AI wizard failed',\n });\n setPhase('interview');\n }\n };\n\n const applyConfigToState = () => {\n const config = pendingConfigRef.current;\n if (!config) return;\n\n // Expand module dependencies so required modules are included\n const knownModuleNames = new Set(state.modules.map((m) => m.name));\n const requiresMap = new Map(state.modules.map((m) => [m.name, m.requires ?? []]));\n const aiModules = (Array.isArray(config.modules) ? (config.modules as string[]) : []).filter(\n (m: string) => knownModuleNames.has(m),\n );\n const expanded = new Set(aiModules);\n const queue = [...aiModules];\n while (queue.length > 0) {\n const mod = queue.shift()!;\n for (const dep of requiresMap.get(mod) ?? []) {\n if (!expanded.has(dep) && knownModuleNames.has(dep)) {\n expanded.add(dep);\n queue.push(dep);\n }\n }\n }\n const validRoles = (Array.isArray(config.roles) ? (config.roles as string[]) : []).filter(\n (r: string) => state.roles.some((role) => role.name === r && !role._base),\n );\n\n // Merge preset modules and roles with AI-selected ones so preset defaults aren't lost\n const chosenPreset = state.presets.find((p) => p.name === config.preset);\n const presetModules = ((chosenPreset?.modules ?? []) as string[]).filter((m) =>\n knownModuleNames.has(m),\n );\n const mergedModules = [...new Set([...presetModules, ...expanded])];\n const presetRoles = (chosenPreset?.roles ?? []) as string[];\n const mergedRoles = [...new Set([...presetRoles, ...validRoles])];\n\n // Normalize goals: support both old flat format and new array format\n let parsedGoals: Goal[];\n if (Array.isArray(config.goals)) {\n parsedGoals = (config.goals as any[]).map((g: any) => ({\n title: String(g.title || ''),\n description: String(g.description || ''),\n ...(g.parentGoal ? { parentGoal: String(g.parentGoal) } : {}),\n }));\n } else if (config.goal) {\n // Backward compat: old flat format\n parsedGoals = [\n {\n title: String(config.goal),\n description: String(config.goalDescription || ''),\n },\n ];\n } else {\n parsedGoals = [];\n }\n\n // Normalize projects: support both old flat format and new array format\n let parsedProjects: WizardProject[];\n if (Array.isArray(config.projects)) {\n parsedProjects = (config.projects as any[]).map((p: any) => {\n const workspace = normalizeWorkspaceConfig(p.workspace);\n const executionWorkspacePolicy = normalizeExecutionWorkspacePolicy(\n p.executionWorkspacePolicy,\n );\n const project: WizardProject = {\n name: String(p.name || ''),\n description: String(p.description || ''),\n goals: Array.isArray(p.goals) ? p.goals.map(String) : [],\n };\n if (workspace) project.workspace = workspace;\n if (typeof p.workspaceSourceType === 'string' && p.workspaceSourceType.trim()) {\n project.workspaceSourceType = p.workspaceSourceType.trim();\n }\n if (typeof p.repoUrl === 'string' && p.repoUrl.trim()) project.repoUrl = p.repoUrl.trim();\n if (typeof p.repoRef === 'string' && p.repoRef.trim()) project.repoRef = p.repoRef.trim();\n if (typeof p.defaultRef === 'string' && p.defaultRef.trim()) {\n project.defaultRef = p.defaultRef.trim();\n }\n if (executionWorkspacePolicy) project.executionWorkspacePolicy = executionWorkspacePolicy;\n return project;\n });\n } else if (config.project) {\n // Backward compat: old flat format\n parsedProjects = [\n {\n name: String(config.project),\n description: String(config.projectDescription || ''),\n goals: parsedGoals.map((g) => g.title),\n },\n ];\n } else {\n parsedProjects = [];\n }\n\n // Domain-specific initial issues derived from the user's brief. These lead the\n // backlog ahead of the generic preset/module setup issues so the project starts\n // rolling in its actual domain instead of only doing generic scaffolding.\n const parsedIssues: WizardIssue[] = Array.isArray(config.issues)\n ? (config.issues as any[])\n .filter((i: any) => i && (i.title || i.name))\n .map((i: any) => ({\n title: String(i.title || i.name || ''),\n description: String(i.description || ''),\n ...(i.priority ? { priority: String(i.priority) } : {}),\n ...(i.assignTo ? { assignTo: String(i.assignTo) } : {}),\n }))\n : [];\n\n // Apply config to wizard state but stay on ai-wizard step\n dispatch({\n type: 'APPLY_AI_RESULT',\n result: {\n companyName: (config.name as string) || state.aiDescription.slice(0, 30),\n goals: parsedGoals,\n projects: parsedProjects,\n issues: parsedIssues,\n presetName: state.presets.some((p) => p.name === config.preset)\n ? (config.preset as string)\n : 'custom',\n selectedModules: mergedModules,\n selectedRoles: mergedRoles,\n companyDescription: (config.companyDescription as string) || '',\n aiExplanation: (config.explanation as string) || (config.reasoning as string) || '',\n step: 'ai-wizard' as const,\n },\n });\n setPhase('review');\n };\n\n const resetInterview = () => {\n setMessages([]);\n setPhase('describe');\n setQuestionCount(0);\n setInput('');\n setConfigReady(false);\n pendingConfigRef.current = null;\n };\n\n // --- Describe phase ---\n if (phase === 'describe') {\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <PhaseIndicator phase={phase} questionCount={questionCount} />\n <div>\n <h2 className=\"text-xl font-semibold tracking-tight\">What are you building?</h2>\n <p className=\"text-sm text-muted-foreground mt-1\">\n Describe your company or idea. Our AI will interview you and assemble the perfect\n agent team.\n </p>\n </div>\n </div>\n\n {configWarning && (\n <div className=\"rounded-lg border border-amber-500/30 bg-amber-500/10 dark:bg-amber-500/5 p-4\">\n <div className=\"flex items-start gap-3\">\n <AlertTriangle className=\"h-5 w-5 text-amber-500 dark:text-amber-400 shrink-0 mt-0.5\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">API key missing</p>\n <p className=\"text-sm text-muted-foreground\">{configWarning}</p>\n </div>\n </div>\n <div className=\"mt-3 pl-8\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n window.location.href = getPluginSettingsUrl();\n }}\n >\n <Settings className=\"h-3.5 w-3.5 mr-1.5\" />\n Plugin Settings\n </Button>\n </div>\n </div>\n )}\n\n <div className=\"space-y-3\">\n <textarea\n className=\"flex min-h-[120px] w-full rounded-lg border border-input bg-transparent px-3 py-2.5 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring resize-none\"\n placeholder=\"Describe your company, product, or idea...\"\n value={state.aiDescription}\n onChange={(e) => dispatch({ type: 'SET_AI_DESCRIPTION', value: e.target.value })}\n autoFocus\n />\n\n <div className=\"space-y-1.5\">\n <p className=\"text-xs text-muted-foreground\">Try an example:</p>\n <div className=\"flex flex-wrap gap-1.5\">\n {EXAMPLE_PROMPTS.map((prompt) => (\n <button\n key={prompt}\n onClick={() => {\n dispatch({ type: 'SET_AI_DESCRIPTION', value: prompt });\n startInterview(prompt);\n }}\n className=\"text-xs px-2.5 py-1 rounded-full border border-border hover:border-foreground/20 hover:bg-accent/50 text-muted-foreground hover:text-foreground transition-colors text-left\"\n >\n {prompt.length > 60 ? prompt.slice(0, 57) + '...' : prompt}\n </button>\n ))}\n </div>\n </div>\n </div>\n\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'GO_TO', step: 'onboarding' })}>\n Back\n </Button>\n <Button\n variant=\"outline\"\n onClick={() => quickGenerate()}\n disabled={!state.aiDescription.trim()}\n >\n <Zap className=\"h-4 w-4\" />\n Quick generate\n </Button>\n <Button onClick={() => startInterview()} disabled={!state.aiDescription.trim()}>\n <MessageSquare className=\"h-4 w-4\" />\n Interview\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n </div>\n );\n }\n\n // --- Configuring animation ---\n if (phase === 'configuring') {\n return (\n <div className=\"space-y-6\">\n <PhaseIndicator phase={phase} questionCount={questionCount} />\n <ConfiguringAnimation ready={configReady} onDone={applyConfigToState} />\n </div>\n );\n }\n\n // --- Review phase (inline, stays in AI wizard) ---\n if (phase === 'review') {\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <PhaseIndicator phase={phase} questionCount={questionCount} />\n <div>\n <h2 className=\"text-xl font-semibold tracking-tight\">Review configuration</h2>\n <p className=\"text-sm text-muted-foreground mt-1\">\n Here's what the AI assembled. Adjust anything, then create your company.\n </p>\n </div>\n </div>\n\n {state.aiExplanation && (\n <div className=\"rounded-lg border border-foreground/10 bg-accent/50 px-4 py-3\">\n <p className=\"text-sm text-foreground/80 leading-relaxed\">{state.aiExplanation}</p>\n </div>\n )}\n\n <ConfigReview />\n\n <div className=\"flex justify-between\">\n <Button\n variant=\"outline\"\n onClick={() => setPhase(messages.length > 0 ? 'interview' : 'describe')}\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n {messages.length > 0 ? 'Back to interview' : 'Back'}\n </Button>\n <Button onClick={() => dispatch({ type: 'GO_TO', step: 'provision' })}>\n <Sparkles className=\"h-4 w-4\" />\n Create Company\n </Button>\n </div>\n </div>\n );\n }\n\n // --- Interview chat phase ---\n return (\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <PhaseIndicator phase={phase} questionCount={questionCount} />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={resetInterview}\n className=\"text-muted-foreground\"\n >\n <RotateCcw className=\"h-3 w-3\" />\n Reset\n </Button>\n </div>\n\n {/* Chat messages */}\n <div\n ref={scrollRef}\n className=\"space-y-4 max-h-[420px] overflow-y-auto rounded-lg border bg-accent/20 p-4\"\n >\n {messages.map((msg, i) => (\n <div\n key={i}\n className={cn('flex gap-2.5 items-start', msg.role === 'user' && 'flex-row-reverse')}\n >\n <div\n className={cn(\n 'h-7 w-7 rounded-full flex items-center justify-center shrink-0',\n msg.role === 'user'\n ? 'bg-foreground text-background'\n : 'bg-background border border-border',\n )}\n >\n {msg.role === 'user' ? (\n <User className=\"h-3.5 w-3.5\" />\n ) : (\n <Sparkles className=\"h-3.5 w-3.5\" />\n )}\n </div>\n <div\n className={cn(\n 'rounded-lg px-3 py-2 max-w-[85%]',\n msg.role === 'user'\n ? 'bg-foreground text-background'\n : 'bg-background border border-border',\n )}\n >\n <div className=\"text-sm whitespace-pre-wrap leading-relaxed\">{msg.content}</div>\n </div>\n </div>\n ))}\n {loading && (\n <div className=\"flex gap-2.5 items-start\">\n <div className=\"h-7 w-7 rounded-full flex items-center justify-center shrink-0 bg-background border border-border\">\n <Sparkles className=\"h-3.5 w-3.5 animate-pulse\" />\n </div>\n <div className=\"rounded-lg px-3 py-2 bg-background border border-border\">\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n {loadingMsg}\n </div>\n </div>\n </div>\n )}\n </div>\n\n {/* Generate CTA \u2014 always visible, emphasized after 3 questions */}\n {!loading && (\n <button\n onClick={requestConfig}\n className={cn(\n 'w-full flex items-center justify-center gap-2 rounded-lg border-2 border-dashed py-3 text-sm font-medium transition-colors',\n questionCount >= 3\n ? 'border-foreground/30 hover:border-foreground/50 hover:bg-accent/50'\n : 'border-border hover:border-foreground/20 hover:bg-accent/30 text-muted-foreground',\n )}\n >\n <Sparkles className=\"h-4 w-4\" />\n {questionCount >= 3 ? 'Generate configuration' : 'Skip \u2014 generate now'}\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </button>\n )}\n\n {/* Input area */}\n <div className=\"flex gap-2\">\n <input\n ref={inputRef}\n type=\"text\"\n className=\"flex h-9 flex-1 rounded-lg border border-input bg-transparent px-3 py-1 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n placeholder=\"Type your answer...\"\n value={input}\n onChange={(e) => setInput(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && !e.shiftKey && sendMessage()}\n disabled={loading}\n autoFocus\n />\n <Button\n size=\"sm\"\n onClick={sendMessage}\n disabled={!input.trim() || loading}\n className=\"rounded-lg\"\n >\n <Send className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n </div>\n );\n}\n", "export default \"You are the Company Wizard \u2014 an expert at assembling AI agent teams. You're enthusiastic but concise. Company Wizard bootstraps AI-agent company workspaces from composable templates.\\n\\nYou are conducting a guided interview to understand what company to set up.\\n\\n{{CATALOG}}\\n\\n## How Roles Work\\n\\n- **Base roles** (marked \\\"always included\\\") are auto-added. You do NOT list them in the JSON.\\n- **All other roles** (listed under \\\"Available Extra Roles\\\") are OPTIONAL and must be EXPLICITLY listed in your JSON `roles` array if you want them.\\n- **Critically: `engineer` is NOT a base role.** Most software projects need an engineer. If the project involves writing code, building software, or maintaining a repository, you MUST include `engineer` in your `roles` array. The preset does NOT auto-add roles \u2014 you must list every non-base role the company needs.\\n- When in doubt, include the engineer. A company that builds software without an engineer agent will have no one to write code.\\n\\n## Interview Rules\\n\\n- Ask exactly ONE question per turn. Keep it short and energetic (1-2 sentences). Use a conversational tone.\\n- Do NOT output JSON during questions \u2014 just ask the question as plain text.\\n- Tailor each question based on previous answers. Show you understood what they said.\\n- After 3 questions, summarize what you understood in a brief, enthusiastic paragraph. End with: \\\"Ready to generate your configuration?\\\"\\n- When the user confirms, output a human-readable recommendation with reasoning, then the JSON config.\\n\\n## What to Ask About\\n\\nAcross your 3 questions, try to cover as many of these as the user's initial description left unclear:\\n\\n1. **What they're building** \u2014 Product type, target users, domain (fintech, SaaS, game, etc.)\\n2. **Current stage** \u2014 Greenfield, existing codebase, research phase, relaunch?\\n3. **Quality vs speed** \u2014 Ship fast, iterate? Or production-grade, high quality from the start?\\n4. **Team needs** \u2014 Do they need code review, security, design, marketing, docs, DevOps?\\n5. **Special requirements** \u2014 Compliance, accessibility, specific tech stack, CI/CD, game engine?\\n6. **Repository** \u2014 Should Paperclip create a new Git repository/workspace, or should the agents use an existing external repo such as GitHub/GitLab? If external, ask for URL and branch/ref; never ask for tokens.\\n\\nDon't ask about things already clear from the initial description. Skip to what's missing.\\n\\n## Information Preservation\\n\\nThe user's interview answers are the primary source of context for the company. When generating the configuration:\\n\\n- **`companyDescription`**: Write a comprehensive 2-4 paragraph description that captures EVERYTHING learned during the interview \u2014 what the company does, what it's building, who it's for, key technical decisions, constraints, priorities, and any special context. This is the company's permanent record. Be thorough. Do NOT summarize into a single vague sentence.\\n- **`goals`**: Array of goals. The first goal is the main user-specific company goal \u2014 its description is the most important field. Keep it outcome-first and product-first: the title and opening sentence must state the primary deliverable or operating outcome, not a supporting constraint. Write a THOROUGH, DETAILED description that includes EVERYTHING the user shared: full requirements, technical specs, acceptance criteria, constraints, edge cases, API contracts, user stories, design decisions, performance targets. Put compliance/security/accessibility/performance constraints in a clearly labelled \\\"Constraints / quality bars\\\" section unless the user explicitly says that constraint is the primary project. If the user's wording mixes a main outcome with secondary facts, determine which thing the agents should build/operate first and write that as the top-level goal; put side facts into acceptance criteria, risks, or sub-goals only when they are independent workstreams. Preset/module template goals are added by the wizard after your JSON, so do NOT replace the user's objective with generic preset goals like \\\"Build a REST API\\\" or \\\"Set up CI/CD\\\" unless the user explicitly asked only for that.\\n- **`projects`**: Array of projects. Each has a `name`, `description`, `goals` array (goal titles it's linked to), and repository workspace metadata. If the user chose an external repo, use `workspace.sourceType: \\\"git_repo\\\"` with `repoUrl`, plus `repoRef`/`defaultRef` exactly when the user or repository context provides one; do not force a branch name or remote prefix. If no external repo was provided, use a fresh local Git repository with `workspace.sourceType: \\\"local_path\\\"`, `workspace.defaultRef: \\\"main\\\"` unless the user requested another initial branch, `workspace.setupCommand: \\\"git init -b <defaultRef>\\\"`, and `workspace.isPrimary: true`. Do not include `executionWorkspacePolicy`; the assembler applies isolated worktrees only when Paperclip's experimental isolated-workspaces setting is enabled and a usable project base ref exists.\\n- **`issues`**: Array of 6-12 CONCRETE, domain-specific initial work items taken straight from what you learned in the interview \u2014 the real features, components, and integrations the user actually described, each with a `title`, a `description` with acceptance criteria, a `priority` (`critical`/`high`/`medium`/`low`), and `assignTo` set to a role on the team. These seed the backlog so the project starts in its actual domain. Issue titles should lead with the core product capability; secondary constraints belong in acceptance criteria or risk notes unless the issue is specifically about that constraint. Do NOT put generic scaffolding here (vision docs, linters, CI, branch protection) \u2014 the wizard adds those automatically.\\n\\n## RECOMMENDATION Format (when generating config)\\n\\n- One paragraph explaining your reasoning: why this preset, why these modules, why these roles.\\n- A bullet list of the key choices.\\n\\nThen output the JSON (no markdown fences):\\n{{CONFIG_FORMAT}}\\n\\n## Rules\\n\\n- `modules` should list ALL modules to activate (including preset ones).\\n- `roles` should list ALL non-base roles the company needs. This includes roles that come with the preset. The system does not auto-add preset roles \u2014 you must list them explicitly.\\n- If the project involves building software, `engineer` MUST be in `roles`.\\n- The primary project MUST state whether it uses a fresh local Git repository or an external Git repository. Do not put credentials or tokens in repository fields.\\n- Be pragmatic \u2014 don't over-engineer. Match the config to actual needs.\\n\";", "export default \"You are the Company Wizard. Company Wizard bootstraps AI-agent company workspaces from composable templates.\\n\\nGiven a natural language description of what the user wants to build, you select the best configuration.\\n\\n{{CATALOG}}\\n\\n## How Roles Work\\n\\n- **Base roles** (marked \\\"always included\\\") are auto-added. You do NOT list them in the JSON.\\n- **All other roles** (listed under \\\"Available Extra Roles\\\") are OPTIONAL and must be EXPLICITLY listed in your JSON `roles` array if you want them.\\n- **Critically: `engineer` is NOT a base role.** Most software projects need an engineer. If the project involves writing code, building software, or maintaining a repository, you MUST include `engineer` in your `roles` array. The preset does NOT auto-add roles \u2014 you must list every non-base role the company needs.\\n- When in doubt, include the engineer. A company that builds software without an engineer agent will have no one to write code.\\n\\n## Instructions\\n\\n1. Analyze the user's description to understand: what they're building, their team size preference, quality vs speed priority, and any specific needs.\\n2. Select the best preset as a starting point.\\n3. List ALL modules to activate (including preset ones). Add extra modules beyond the preset if the description warrants them.\\n4. List ALL non-base roles the company needs. This includes roles from the preset. If the project involves software, include `engineer`.\\n5. Suggest a company name (PascalCase-friendly, short, memorable) if not obvious from the description.\\n6. Write a thorough company description (2-4 paragraphs) capturing everything the user described \u2014 product, audience, tech stack, constraints, priorities, stage, and special context. This is the company's permanent record.\\n7. Define goals as an array. The first goal is the main user-specific company goal \u2014 its description is the most important field. Keep it **outcome-first and product-first**: the title and opening sentence must state the primary deliverable or operating outcome, not a supporting constraint. Preserve compliance, security, accessibility, performance, tech-stack, and domain constraints inside the description under a clear \\\"Constraints / quality bars\\\" section unless the user explicitly says that constraint is the primary project. If the user's wording mixes a main outcome with secondary facts, ask yourself which thing the agents should build/operate first and write that as the top-level goal; put side facts into acceptance criteria, risks, or sub-goals only when they are independent workstreams. Include EVERYTHING the user described: full requirements, technical specs, acceptance criteria, constraints, edge cases, API contracts, user stories, performance targets. If the user provided a detailed spec, reproduce it in full, but do not let one constraint dominate the goal or initial issues. Preset/module template goals are added by the wizard after your JSON, so do NOT replace the user's objective with generic preset goals like \\\"Build a REST API\\\" or \\\"Set up CI/CD\\\" unless the user explicitly asked only for that.\\n8. Define projects as an array. Most setups need one project linked to all goals. Name and describe the project concretely.\\n9. Always decide the repository setup for the primary project:\\n - If the user gives an existing GitHub/GitLab/remote Git repo, set `workspace.sourceType: \\\"git_repo\\\"`, include `repoUrl`, and set `repoRef`/`defaultRef` exactly when the user or repository context provides one. Do not force a branch name or remote prefix; Paperclip's project/worktree settings decide the worktree base ref.\\n - If no external repository is given, assume Paperclip should create a fresh local Git repository. Set `workspace.sourceType: \\\"local_path\\\"`, `workspace.defaultRef: \\\"main\\\"` unless the user requested another initial branch, `workspace.setupCommand: \\\"git init -b <defaultRef>\\\"`, and `workspace.isPrimary: true`. Do NOT include an `executionWorkspacePolicy`; the assembler applies isolated worktrees only when Paperclip's experimental isolated-workspaces setting is enabled and a usable project base ref exists.\\n - Never include credentials or tokens in repository URLs or project text.\\n10. Define an `issues` array of 6-12 CONCRETE, domain-specific initial work items taken straight from the description \u2014 the real features, components, and integrations the user actually described, each with a `title`, a `description` with acceptance criteria, a `priority`, and `assignTo` set to a role on the team. These seed the backlog so the project starts in its actual domain instead of only doing generic setup. Issue titles should lead with the core product capability; secondary constraints belong in acceptance criteria or risk notes unless the issue is specifically about that constraint. Do NOT put generic scaffolding here (vision docs, linters, CI, branch protection) \u2014 the wizard adds those automatically.\\n\\nFirst write one paragraph explaining your reasoning: why this preset, why these modules, why these roles.\\n\\nThen output the JSON (no markdown fences):\\n{{CONFIG_FORMAT}}\\n\";", "{\n \"interviewStart\": \"Here's what I want to build:\\n\\n{{DESCRIPTION}}\\n\\nStart the interview. Ask your first question.\",\n \"singleShot\": \"{{DESCRIPTION}}\",\n \"generateConfig\": \"Generate the configuration now. Remember: include ALL non-base roles the company needs in the roles array (engineer is NOT a base role \u2014 list it if this project involves code). Write a thorough companyDescription that captures everything we discussed. The goals array must preserve the user-specific objectives; preset/module template goals are added later by the wizard, so do not replace the user's requested outcome with a generic preset goal like \\\"Build a REST API\\\" unless that is truly the entire objective. The first goal's description must contain ALL requirements, specs, and details \u2014 this is the primary brief for all agents. The primary project must explicitly choose repository setup: either a fresh local Git repository or an external Git repository such as GitHub. Never include credentials or tokens in repository fields. Also include an `issues` array of 6-12 CONCRETE, domain-specific initial work items taken straight from the brief \u2014 the real features, components, and integrations the user's spec actually describes, each with a `title`, a `description` with acceptance criteria, a `priority`, and `assignTo` set to a role on the team. These seed the backlog so the project starts in its actual domain. Do NOT put generic scaffolding here (vision docs, linters, CI, branch protection) \u2014 the wizard adds those automatically.\",\n \"configFormat\": \"Respond with ONLY a JSON object using this shape. Use exactly one project object for a single-project setup. For a fresh/new repository, use workspace.sourceType=local_path, defaultRef=main unless another initial branch was requested, setupCommand=git init -b <defaultRef>, and isPrimary=true, and do NOT include executionWorkspacePolicy. For an existing external repo, use workspace.sourceType=git_repo, include repoUrl plus repoRef/defaultRef only when the user or repository context provides one. Do not force a branch name or remote prefix. Do not include executionWorkspacePolicy; the assembler applies isolated worktrees only when Paperclip's experimental isolated-workspaces setting is enabled.\\n{\\n \\\"name\\\": \\\"CompanyName\\\",\\n \\\"companyDescription\\\": \\\"Comprehensive 2-4 paragraph description of what this company does, what it is building, who it is for, key technical decisions, priorities, constraints, and any special context. This is the company's permanent record \u2014 be thorough and specific.\\\",\\n \\\"goals\\\": [\\n {\\n \\\"title\\\": \\\"Main user-specific goal title\\\",\\n \\\"description\\\": \\\"THOROUGH description with ALL requirements, specs, acceptance criteria, constraints, edge cases, and every detail the user provided. This is the primary brief for all agents \u2014 preserve every detail, do NOT summarize. Multiple paragraphs expected. Lead with the primary deliverable or operating outcome; put side constraints under Constraints / quality bars unless one is explicitly the main project.\\\"\\n },\\n {\\n \\\"title\\\": \\\"Additional user-specific goal if needed\\\",\\n \\\"description\\\": \\\"Sub-goal or parallel objective description...\\\",\\n \\\"parentGoal\\\": \\\"Main user-specific goal title\\\"\\n }\\n ],\\n \\\"projects\\\": [\\n {\\n \\\"name\\\": \\\"ProjectName\\\",\\n \\\"description\\\": \\\"Concrete project description \u2014 what is being built and key technical details.\\\",\\n \\\"goals\\\": [\\n \\\"Main user-specific goal title\\\",\\n \\\"Additional user-specific goal if needed\\\"\\n ],\\n \\\"workspace\\\": {\\n \\\"sourceType\\\": \\\"local_path\\\",\\n \\\"defaultRef\\\": \\\"main\\\",\\n \\\"setupCommand\\\": \\\"git init -b main\\\",\\n \\\"isPrimary\\\": true\\n }\\n }\\n ],\\n \\\"issues\\\": [\\n {\\n \\\"title\\\": \\\"Concrete, project-specific first work item taken straight from the brief\\\",\\n \\\"description\\\": \\\"What to build and the acceptance criteria, grounded in the user's actual spec \u2014 NOT generic scaffolding.\\\",\\n \\\"priority\\\": \\\"critical | high | medium | low\\\",\\n \\\"assignTo\\\": \\\"engineer\\\"\\n }\\n ],\\n \\\"preset\\\": \\\"preset-name\\\",\\n \\\"modules\\\": [\\n \\\"all-modules-to-activate-including-preset-ones\\\"\\n ],\\n \\\"roles\\\": [\\n \\\"all-non-base-roles-needed-including-preset-ones-engineer-is-not-base\\\"\\n ],\\n \\\"explanation\\\": \\\"2-3 sentences explaining WHY this configuration fits the described company.\\\"\\n}\"\n}\n", "[\n \"A fintech startup building a payment API \u2014 strong engineering, code review, move fast\",\n \"Marketing agency with 5 clients \u2014 content creation, social media, brand strategy\",\n \"Research lab exploring LLM applications \u2014 papers, experiments, rapid prototyping\",\n \"SaaS startup building project management tool \u2014 focus on quality and UX\"\n]\n", "import { useEffect, useRef } from 'react';\nimport { useWizard, useWizardDispatch, getAllRoles } from '../../context/WizardContext';\nimport { usePluginAction } from '@paperclipai/plugin-sdk/ui';\nimport { Loader2, Settings, AlertTriangle, RotateCcw } from 'lucide-react';\nimport { Button } from '../ui/button';\nimport { getPluginSettingsUrl } from '../../lib/utils';\n\nfunction isConfigError(error: string): boolean {\n return /authenticat|PAPERCLIP_EMAIL|PAPERCLIP_PASSWORD|paperclipEmail|paperclipPassword|credentials|unauthorized|forbidden/i.test(\n error,\n );\n}\n\nexport function StepProvision() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const started = useRef(false);\n const logEndRef = useRef<HTMLDivElement>(null);\n const startProvision = usePluginAction('start-provision');\n\n useEffect(() => {\n logEndRef.current?.scrollIntoView({ behavior: 'smooth' });\n }, [state.provisionLog]);\n\n useEffect(() => {\n if (started.current) return;\n started.current = true;\n\n dispatch({ type: 'SET_PROVISIONING', value: true });\n dispatch({ type: 'ADD_PROVISION_LOG', line: 'Starting provisioning...' });\n dispatch({ type: 'ADD_PROVISION_LOG', line: '' });\n\n const allRoles = getAllRoles(state);\n\n startProvision({\n companyName: state.companyName,\n companyDescription: state.companyDescription || undefined,\n goals: state.goals.length > 0 ? state.goals : undefined,\n projects: state.projects.length > 0 ? state.projects : undefined,\n issues: state.issues.length > 0 ? state.issues : undefined,\n ceoAdapter: state.ceoAdapter,\n presetName: state.presetName,\n selectedModules: state.selectedModules,\n selectedRoles: state.selectedRoles,\n allRoles,\n fileOverrides: Object.keys(state.fileOverrides).length > 0 ? state.fileOverrides : undefined,\n existingCompanyId: state.existingCompanyId.trim() || undefined,\n })\n .then((result: any) => {\n // Action returns result directly with logs\n if (result?.logs) {\n for (const line of result.logs) {\n dispatch({ type: 'ADD_PROVISION_LOG', line });\n }\n }\n // Graceful error return \u2014 action no longer throws, check result.error\n if (result?.error) {\n dispatch({ type: 'SET_PROVISIONING', value: false });\n dispatch({ type: 'SET_ERROR', error: result.error });\n return;\n }\n dispatch({ type: 'ADD_PROVISION_LOG', line: '' });\n dispatch({ type: 'ADD_PROVISION_LOG', line: 'All done!' });\n dispatch({ type: 'SET_PROVISION_RESULT', result });\n setTimeout(() => dispatch({ type: 'GO_TO', step: 'done' }), 2000);\n })\n .catch((err: unknown) => {\n // Fallback \u2014 should rarely fire now that the worker returns errors gracefully\n const message =\n err instanceof Error\n ? err.message\n : typeof err === 'object' && err !== null && 'message' in err\n ? String((err as { message: unknown }).message)\n : 'Provisioning failed';\n dispatch({ type: 'SET_PROVISIONING', value: false });\n dispatch({ type: 'SET_ERROR', error: message });\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const isDone = !state.provisioning && state.provisionResult;\n const showConfigHint = state.error && isConfigError(state.error);\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight flex items-center gap-2\">\n {state.provisioning && <Loader2 className=\"h-5 w-5 animate-spin\" />}\n {state.provisioning ? 'Provisioning...' : state.error ? 'Error' : 'Provisioned'}\n </h2>\n {isDone && (\n <p className=\"text-sm text-muted-foreground\">\n Company created. CEO will bootstrap the team on first heartbeat.\n </p>\n )}\n </div>\n\n {/* Config error with actionable hint */}\n {showConfigHint && (\n <div className=\"rounded-lg border border-amber-500/30 bg-amber-500/10 dark:bg-amber-500/5 p-4 space-y-3\">\n <div className=\"flex items-start gap-3\">\n <AlertTriangle className=\"h-5 w-5 text-amber-500 dark:text-amber-400 shrink-0 mt-0.5\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">Authentication required</p>\n <p className=\"text-sm text-muted-foreground\">\n This Paperclip instance requires credentials. Configure{' '}\n <span className=\"font-medium\">paperclipEmail</span> and{' '}\n <span className=\"font-medium\">paperclipPassword</span> in the plugin settings.\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-2 pl-8\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n window.location.href = getPluginSettingsUrl();\n }}\n >\n <Settings className=\"h-3.5 w-3.5 mr-1.5\" />\n Plugin Settings\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n dispatch({ type: 'SET_ERROR', error: null });\n started.current = false;\n dispatch({ type: 'SET_PROVISIONING', value: false });\n dispatch({ type: 'GO_TO', step: state.path === 'ai' ? 'ai-wizard' : 'summary' });\n }}\n >\n <RotateCcw className=\"h-3.5 w-3.5 mr-1.5\" />\n Back to Summary\n </Button>\n </div>\n </div>\n )}\n\n {/* Generic error (non-config) */}\n {state.error && !showConfigHint && (\n <div className=\"rounded-lg border border-destructive/30 bg-destructive/5 p-4 space-y-3\">\n <div className=\"flex items-start gap-3\">\n <AlertTriangle className=\"h-5 w-5 text-destructive shrink-0 mt-0.5\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">Provisioning failed</p>\n <p className=\"text-sm text-muted-foreground\">{state.error}</p>\n </div>\n </div>\n <div className=\"pl-8\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n dispatch({ type: 'SET_ERROR', error: null });\n started.current = false;\n dispatch({ type: 'SET_PROVISIONING', value: false });\n dispatch({ type: 'GO_TO', step: state.path === 'ai' ? 'ai-wizard' : 'summary' });\n }}\n >\n <RotateCcw className=\"h-3.5 w-3.5 mr-1.5\" />\n Back to Summary\n </Button>\n </div>\n </div>\n )}\n\n <div className=\"rounded-lg border bg-card p-4 font-mono text-xs max-h-[400px] overflow-y-auto\">\n {state.provisionLog.map((line, i) => (\n <div\n key={i}\n className={\n line.startsWith('\u2713')\n ? 'text-green-600 py-0.5'\n : line.startsWith('!')\n ? 'text-yellow-600 py-0.5'\n : line.startsWith('Error')\n ? 'text-destructive py-0.5'\n : line.startsWith('+') || line.startsWith(' ')\n ? 'text-foreground pl-2 py-0.5 bg-muted/50 rounded my-0.5'\n : 'text-muted-foreground py-0.5'\n }\n >\n {line || '\\u00A0'}\n </div>\n ))}\n <div ref={logEndRef} />\n </div>\n </div>\n );\n}\n", "import { useWizard, useWizardDispatch, getAllRoles } from '../../context/WizardContext';\nimport { Button } from '../ui/button';\nimport { Card, CardContent } from '../ui/card';\nimport { Badge } from '../ui/badge';\nimport { CheckCircle2, RotateCcw, ExternalLink } from 'lucide-react';\n\nexport function StepDone() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const allRoles = getAllRoles(state);\n const result = state.provisionResult;\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-start gap-3\">\n <CheckCircle2 className=\"h-6 w-6 text-green-600 shrink-0 mt-0.5\" />\n <div>\n <h2 className=\"text-xl font-semibold tracking-tight\">{state.companyName}</h2>\n <p className=\"text-sm text-muted-foreground mt-1\">\n {state.existingCompanyId\n ? 'Workspace has been assembled and bootstrap tasks were added to the existing Paperclip company.'\n : 'Company has been assembled and registered with Paperclip.'}\n </p>\n </div>\n </div>\n\n <Card>\n <CardContent className=\"pt-6 space-y-4\">\n {state.goals[0]?.title && (\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1\">\n Goal\n </p>\n <p className=\"text-sm\">{state.goals[0].title}</p>\n </div>\n )}\n\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2\">\n Team ({allRoles.length} agents)\n </p>\n <div className=\"flex flex-wrap gap-1.5\">\n {allRoles.map((r) => {\n const role = state.roles.find((ro) => ro.name === r);\n return (\n <Badge key={r} variant=\"outline\" className=\"text-xs\">\n {role?.title || r}\n </Badge>\n );\n })}\n </div>\n </div>\n\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2\">\n Modules ({state.selectedModules.length})\n </p>\n <div className=\"flex flex-wrap gap-1.5\">\n {state.selectedModules.map((m) => (\n <Badge key={m} variant=\"secondary\" className=\"text-xs\">\n {m}\n </Badge>\n ))}\n </div>\n </div>\n\n {result?.issueIds && result.issueIds.length > 0 && (\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1\">\n Issues\n </p>\n <p className=\"text-sm\">{result.issueIds.length} issues provisioned</p>\n </div>\n )}\n\n {state.presetName && (\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1\">\n Preset\n </p>\n <p className=\"text-sm capitalize\">{state.presetName}</p>\n </div>\n )}\n\n {result?.companyId && (\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1\">\n Company ID\n </p>\n <p className=\"font-mono text-xs\">{result.companyId}</p>\n </div>\n )}\n </CardContent>\n </Card>\n\n <div className=\"flex gap-3\">\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'RESET' })}>\n <RotateCcw className=\"h-4 w-4\" />\n Create another\n </Button>\n <Button asChild>\n <a\n href={\n result?.paperclipUrl && result?.issuePrefix\n ? `${result.paperclipUrl}/${result.issuePrefix}/dashboard`\n : result?.paperclipUrl || 'http://localhost:3100'\n }\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <ExternalLink className=\"h-4 w-4\" />\n Open Paperclip\n </a>\n </Button>\n </div>\n </div>\n );\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["forwardRef", "createElement", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "useEffect", "r", "useState", "concatArrays", "array1", "array2", "combinedArray", "Array", "length", "i", "createClassValidatorObject", "classGroupId", "validator", "createClassPartObject", "nextPart", "Map", "validators", "CLASS_PART_SEPARATOR", "EMPTY_CONFLICTS", "ARBITRARY_PROPERTY_PREFIX", "createClassGroupUtils", "config", "classMap", "createClassMap", "conflictingClassGroups", "conflictingClassGroupModifiers", "getClassGroupId", "className", "startsWith", "endsWith", "getGroupIdForArbitraryProperty", "classParts", "split", "startIndex", "getGroupRecursive", "getConflictingClassGroupIds", "hasPostfixModifier", "modifierConflicts", "baseConflicts", "classPartObject", "classPathsLength", "currentClassPart", "nextClassPartObject", "get", "result", "undefined", "classRest", "join", "slice", "validatorsLength", "validatorObj", "indexOf", "content", "colonIndex", "property", "theme", "classGroups", "processClassGroups", "group", "processClassesRecursively", "classGroup", "len", "classDefinition", "processClassDefinition", "processStringDefinition", "processFunctionDefinition", "processObjectDefinition", "classPartObjectToEdit", "getPart", "isThemeGetter", "push", "entries", "Object", "key", "value", "path", "current", "parts", "part", "next", "set", "func", "createLruCache", "maxCacheSize", "cacheSize", "cache", "create", "previousCache", "update", "IMPORTANT_MODIFIER", "MODIFIER_SEPARATOR", "EMPTY_MODIFIERS", "createResultObject", "modifiers", "hasImportantModifier", "baseClassName", "maybePostfixModifierPosition", "isExternal", "createParseClassName", "prefix", "experimentalParseClassName", "parseClassName", "bracketDepth", "parenDepth", "modifierStart", "postfixModifierPosition", "index", "currentCharacter", "baseClassNameWithImportantModifier", "fullPrefix", "parseClassNameOriginal", "createSortModifiers", "modifierWeights", "orderSensitiveModifiers", "forEach", "mod", "currentSegment", "modifier", "isArbitrary", "isOrderSensitive", "has", "sort", "createConfigUtils", "sortModifiers", "SPLIT_CLASSES_REGEX", "mergeClassList", "classList", "configUtils", "classGroupsInConflict", "classNames", "trim", "originalClassName", "substring", "variantModifier", "modifierId", "classId", "conflictGroups", "twJoin", "classLists", "argument", "resolvedValue", "string", "toValue", "mix", "k", "createTailwindMerge", "createConfigFirst", "createConfigRest", "cacheGet", "cacheSet", "functionToCall", "initTailwindMerge", "reduce", "previousConfig", "createConfigCurrent", "tailwindMerge", "cachedResult", "args", "fallbackThemeArr", "fromTheme", "themeGetter", "arbitraryValueRegex", "arbitraryVariableRegex", "fractionRegex", "tshirtUnitRegex", "lengthUnitRegex", "colorFunctionRegex", "shadowRegex", "imageRegex", "isFraction", "test", "isNumber", "Number", "isNaN", "isInteger", "isPercent", "isTshirtSize", "isAny", "isLengthOnly", "isNever", "isShadow", "isImage", "isAnyNonArbitrary", "isArbitraryValue", "isArbitraryVariable", "isArbitrarySize", "getIsArbitraryValue", "isLabelSize", "isArbitraryLength", "isLabelLength", "isArbitraryNumber", "isLabelNumber", "isArbitraryWeight", "isLabelWeight", "isArbitraryFamilyName", "isLabelFamilyName", "isArbitraryPosition", "isLabelPosition", "isArbitraryImage", "isLabelImage", "isArbitraryShadow", "isLabelShadow", "isArbitraryVariableLength", "getIsArbitraryVariable", "isArbitraryVariableFamilyName", "isArbitraryVariablePosition", "isArbitraryVariableSize", "isArbitraryVariableImage", "isArbitraryVariableShadow", "isArbitraryVariableWeight", "testLabel", "testValue", "exec", "shouldMatchNoLabel", "label", "getDefaultConfig", "themeColor", "fromTheme", "themeFont", "themeText", "themeFontWeight", "themeTracking", "themeLeading", "themeBreakpoint", "themeContainer", "themeSpacing", "themeRadius", "themeShadow", "themeInsetShadow", "themeTextShadow", "themeDropShadow", "themeBlur", "themePerspective", "themeAspect", "themeEase", "themeAnimate", "scaleBreak", "scalePosition", "scalePositionWithArbitrary", "isArbitraryVariable", "isArbitraryValue", "scaleOverflow", "scaleOverscroll", "scaleUnambiguousSpacing", "scaleInset", "isFraction", "scaleGridTemplateColsRows", "isInteger", "scaleGridColRowStartAndEnd", "span", "scaleGridColRowStartOrEnd", "scaleGridAutoColsRows", "scaleAlignPrimaryAxis", "scaleAlignSecondaryAxis", "scaleMargin", "scaleSizing", "scaleSizingInline", "scaleSizingBlock", "scaleColor", "scaleBgPosition", "isArbitraryVariablePosition", "isArbitraryPosition", "position", "scaleBgRepeat", "repeat", "scaleBgSize", "isArbitraryVariableSize", "isArbitrarySize", "size", "scaleGradientStopPosition", "isPercent", "isArbitraryVariableLength", "isArbitraryLength", "scaleRadius", "scaleBorderWidth", "isNumber", "scaleLineStyle", "scaleBlendMode", "scaleMaskImagePosition", "scaleBlur", "scaleRotate", "scaleScale", "scaleSkew", "scaleTranslate", "cacheSize", "theme", "animate", "aspect", "blur", "isTshirtSize", "breakpoint", "color", "isAny", "container", "ease", "font", "isAnyNonArbitrary", "leading", "perspective", "radius", "shadow", "spacing", "text", "tracking", "classGroups", "columns", "box", "display", "sr", "float", "clear", "isolation", "object", "overflow", "overscroll", "inset", "start", "end", "top", "right", "bottom", "left", "visibility", "z", "basis", "flex", "grow", "shrink", "order", "col", "row", "gap", "justify", "content", "items", "baseline", "self", "p", "px", "py", "ps", "pe", "pbs", "pbe", "pt", "pr", "pb", "pl", "m", "mx", "my", "ms", "me", "mbs", "mbe", "mt", "mr", "mb", "ml", "inline", "block", "w", "screen", "h", "isArbitraryVariableWeight", "isArbitraryWeight", "isArbitraryVariableFamilyName", "isArbitraryFamilyName", "isArbitraryNumber", "list", "placeholder", "decoration", "indent", "align", "whitespace", "break", "wrap", "hyphens", "bg", "linear", "to", "radial", "conic", "isArbitraryVariableImage", "isArbitraryImage", "from", "via", "rounded", "border", "divide", "outline", "isArbitraryVariableShadow", "isArbitraryShadow", "ring", "opacity", "mask", "closest", "farthest", "filter", "brightness", "contrast", "grayscale", "invert", "saturate", "sepia", "table", "caption", "transition", "duration", "delay", "backface", "rotate", "scale", "skew", "transform", "origin", "translate", "accent", "appearance", "caret", "scheme", "cursor", "resize", "scroll", "snap", "touch", "select", "fill", "stroke", "conflictingClassGroups", "conflictingClassGroupModifiers", "orderSensitiveModifiers", "twMerge", "createTailwindMerge", "getDefaultConfig", "toPascalCase", "jsx", "jsx", "Icon", "useState", "React", "jsx", "React", "param", "jsx", "useCallback", "useState", "jsx", "jsxs", "useState", "useCallback", "toPascalCase", "useCallback", "jsx", "jsxs", "useCallback", "useState", "jsx", "jsxs", "Icon", "useState", "useCallback", "jsx", "jsx", "jsxs", "Icon", "jsx", "jsxs", "jsx", "jsxs", "r", "useEffect", "useRef", "useState", "usePluginAction", "useEffect", "useState", "useCallback", "useRef", "usePluginAction", "useState", "useEffect", "useCallback", "createContext", "useContext", "Fragment", "jsx", "Fragment", "jsx", "jsxs", "Icon", "useState", "r", "useRef", "usePluginAction", "useCallback", "useEffect", "toPascalCase", "jsx", "jsxs", "usePluginAction", "useState", "useRef", "useEffect", "useState", "useRef", "useEffect", "usePluginAction", "jsx", "jsxs", "Icon", "useState", "useEffect", "usePluginAction", "useRef", "r", "useEffect", "useRef", "usePluginAction", "jsx", "jsxs", "useRef", "usePluginAction", "useEffect", "jsx", "jsxs", "r", "jsx", "jsxs", "useEffect", "jsx", "jsxs", "jsxs", "jsx"]
|
|
3
|
+
"sources": ["../../src/ui/index.tsx", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/shared/src/utils/mergeClasses.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/shared/src/utils/toKebabCase.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/shared/src/utils/toCamelCase.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/shared/src/utils/toPascalCase.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/defaultAttributes.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/shared/src/utils/hasA11yProp.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/Icon.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/createLucideIcon.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/arrow-right.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/arrow-up-right.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/atom.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/blocks.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/building-2.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/check.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/chevron-down.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/chevron-left.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/chevron-right.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/circle-alert.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/circle-check-big.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/circle-check.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/circle-plus.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/clipboard-check.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/cpu.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/crown.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/external-link.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/file-text.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/flask-conical.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/git-branch.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/github.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/layers.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/list-checks.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/loader-circle.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/lock.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/message-square.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/pencil.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/refresh-cw.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/rocket.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/rotate-ccw.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/send.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/settings-2.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/settings.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/shield.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/sparkles.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/target.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/triangle-alert.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/user-minus.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/user-plus.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/user.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/users.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/workflow.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/wrench.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/x.ts", "../../node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/src/icons/zap.ts", "../../src/ui/components/WizardShell.tsx", "../../src/ui/context/WizardContext.tsx", "../../src/ui/components/steps/StepOnboarding.tsx", "../../src/ui/components/ui/card.tsx", "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/utils.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/class-group-utils.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/lru-cache.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/parse-class-name.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/sort-modifiers.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/config-utils.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/merge-classlist.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/tw-join.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/from-theme.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/validators.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/default-config.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/merge-configs.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts", "../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/src/lib/tw-merge.ts", "../../src/ui/lib/utils.ts", "../../src/ui/components/ui/input.tsx", "../../src/ui/components/ui/button.tsx", "../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs", "../../src/ui/components/steps/StepName.tsx", "../../src/ui/components/steps/StepGoal.tsx", "../../src/ui/components/steps/StepRepository.tsx", "../../src/ui/lib/repository.ts", "../../src/ui/components/ui/badge.tsx", "../../src/ui/components/steps/StepPreset.tsx", "../../src/ui/components/steps/StepModules.tsx", "../../src/ui/components/steps/StepRoles.tsx", "../../src/ui/components/steps/StepSummary.tsx", "../../src/ui/components/ConfigReview.tsx", "../../src/ui/components/ui/hover-card.tsx", "../../src/ui/components/steps/StepAiWizard.tsx", "raw:/paperclip/paperclip-plugin-company-wizard/src/ui/prompts/interview-system.md", "raw:/paperclip/paperclip-plugin-company-wizard/src/ui/prompts/single-shot-system.md", "../../src/ui/prompts/messages.json", "../../src/ui/prompts/examples.json", "../../src/ui/components/steps/StepProvision.tsx", "../../src/ui/components/steps/StepPreview.tsx", "../../src/ui/components/steps/StepExistingCompany.tsx", "../../src/ui/components/steps/StepDone.tsx"],
|
|
4
|
+
"sourcesContent": ["import {\n usePluginData,\n type PluginPageProps,\n type PluginSidebarProps,\n type PluginWidgetProps,\n} from '@paperclipai/plugin-sdk/ui';\nimport { Loader2, Sparkles, AlertTriangle } from 'lucide-react';\nimport { WizardShell } from './components/WizardShell';\nimport { WizardProvider } from './context/WizardContext';\nimport './index.css';\nimport type { TemplateData } from './types';\n\nconst PLUGIN_ID = 'starlein.paperclip-plugin-company-wizard';\n\nexport function WizardPage(_props: PluginPageProps) {\n const { data: templates, loading, error } = usePluginData<TemplateData>('templates');\n\n if (error) {\n return (\n <div className=\"flex items-center justify-center min-h-[400px] text-sm text-destructive\">\n Failed to load templates: {error.message}\n </div>\n );\n }\n\n if (loading || !templates) {\n return (\n <div className=\"flex flex-col items-center justify-center min-h-[400px] gap-4 text-center px-6\">\n <Loader2 className=\"h-6 w-6 animate-spin text-muted-foreground\" />\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium\">Loading templates</p>\n <p className=\"text-xs text-muted-foreground max-w-xs\">\n Checking your templates directory. If no local templates are found, they'll be\n downloaded from GitHub \u2014 this may take a moment.\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-3\">\n {templates.loadErrors && templates.loadErrors.length > 0 && (\n <div className=\"mx-4 mt-4 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-800 dark:text-amber-200\">\n <div className=\"flex items-start gap-2\">\n <AlertTriangle className=\"h-4 w-4 shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium\">Some template files could not be loaded</p>\n <p className=\"mt-0.5 text-amber-700 dark:text-amber-300\">\n {templates.loadErrors.length} parse warning\n {templates.loadErrors.length > 1 ? 's' : ''} detected. Check worker logs for\n file-level details.\n </p>\n </div>\n </div>\n </div>\n )}\n <WizardProvider templates={templates}>\n <WizardShell />\n </WizardProvider>\n </div>\n );\n}\n\nexport function ToolbarButton({ context }: PluginWidgetProps) {\n const companyPrefix = (context as any).companyPrefix;\n const href = companyPrefix ? `/${companyPrefix}/company-creator` : '#';\n\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n if (href !== '#') window.history.pushState({}, '', href);\n window.dispatchEvent(new PopStateEvent('popstate'));\n };\n\n return (\n <a\n href={href}\n onClick={handleClick}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.375rem',\n padding: '0.25rem 0.625rem',\n fontSize: '12px',\n fontWeight: 500,\n borderRadius: '0.375rem',\n border: '1px solid var(--border)',\n color: 'inherit',\n textDecoration: 'none',\n transition: 'background-color 0.15s',\n }}\n >\n + Company\n </a>\n );\n}\n\nexport function SidebarLink({ context }: PluginSidebarProps) {\n const href = context.companyPrefix ? `/${context.companyPrefix}/company-creator` : '#';\n const isActive =\n typeof window !== 'undefined' && window.location.pathname.endsWith('/company-creator');\n\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n if (href !== '#') window.history.pushState({}, '', href);\n window.dispatchEvent(new PopStateEvent('popstate'));\n };\n\n return (\n <a\n href={href}\n onClick={handleClick}\n aria-current={isActive ? 'page' : undefined}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.625rem',\n padding: '0.5rem 0.75rem',\n fontSize: '13px',\n fontWeight: 500,\n borderRadius: '0.375rem',\n color: 'inherit',\n textDecoration: 'none',\n transition: 'background-color 0.15s',\n backgroundColor: isActive ? 'var(--accent)' : 'transparent',\n }}\n >\n <Sparkles style={{ width: 16, height: 16, flexShrink: 0 }} />\n <span style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n Create Company\n </span>\n </a>\n );\n}\n", "/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n", "/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n", "/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n", "import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n", "export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n", "/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n", "import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n", "import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M7 7h10v10', key: '1tivn9' }],\n ['path', { d: 'M7 17 17 7', key: '1vkiza' }],\n];\n\n/**\n * @component @name ArrowUpRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/arrow-up-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowUpRight = createLucideIcon('arrow-up-right', __iconNode);\n\nexport default ArrowUpRight;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n [\n 'path',\n {\n d: 'M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z',\n key: '1l2ple',\n },\n ],\n [\n 'path',\n {\n d: 'M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z',\n key: '1wam0m',\n },\n ],\n];\n\n/**\n * @component @name Atom\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/atom\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Atom = createLucideIcon('atom', __iconNode);\n\nexport default Atom;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M10 22V7a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5a1 1 0 0 0-1-1H2',\n key: '1ah6g2',\n },\n ],\n ['rect', { x: '14', y: '2', width: '8', height: '8', rx: '1', key: '88lufb' }],\n];\n\n/**\n * @component @name Blocks\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/blocks\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Blocks = createLucideIcon('blocks', __iconNode);\n\nexport default Blocks;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 12h4', key: 'a56b0p' }],\n ['path', { d: 'M10 8h4', key: '1sr2af' }],\n ['path', { d: 'M14 21v-3a2 2 0 0 0-4 0v3', key: '1rgiei' }],\n [\n 'path',\n {\n d: 'M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2',\n key: 'secmi2',\n },\n ],\n ['path', { d: 'M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16', key: '16ra0t' }],\n];\n\n/**\n * @component @name Building2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/building-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Building2 = createLucideIcon('building-2', __iconNode);\n\nexport default Building2;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]];\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon('check', __iconNode);\n\nexport default Check;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }]];\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('chevron-left', __iconNode);\n\nexport default ChevronLeft;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['line', { x1: '12', x2: '12', y1: '8', y2: '12', key: '1pkeuh' }],\n ['line', { x1: '12', x2: '12.01', y1: '16', y2: '16', key: '4dfq90' }],\n];\n\n/**\n * @component @name CircleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-alert\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleAlert = createLucideIcon('circle-alert', __iconNode);\n\nexport default CircleAlert;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M21.801 10A10 10 0 1 1 17 3.335', key: 'yps3ct' }],\n ['path', { d: 'm9 11 3 3L22 4', key: '1pflzl' }],\n];\n\n/**\n * @component @name CircleCheckBig\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-check-big\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleCheckBig = createLucideIcon('circle-check-big', __iconNode);\n\nexport default CircleCheckBig;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'm9 12 2 2 4-4', key: 'dzmm74' }],\n];\n\n/**\n * @component @name CircleCheck\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleCheck = createLucideIcon('circle-check', __iconNode);\n\nexport default CircleCheck;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M8 12h8', key: '1wcyev' }],\n ['path', { d: 'M12 8v8', key: 'napkw2' }],\n];\n\n/**\n * @component @name CirclePlus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CirclePlus = createLucideIcon('circle-plus', __iconNode);\n\nexport default CirclePlus;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '8', height: '4', x: '8', y: '2', rx: '1', ry: '1', key: 'tgr4d6' }],\n [\n 'path',\n {\n d: 'M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2',\n key: '116196',\n },\n ],\n ['path', { d: 'm9 14 2 2 4-4', key: 'df797q' }],\n];\n\n/**\n * @component @name ClipboardCheck\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/clipboard-check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ClipboardCheck = createLucideIcon('clipboard-check', __iconNode);\n\nexport default ClipboardCheck;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 20v2', key: '1lh1kg' }],\n ['path', { d: 'M12 2v2', key: 'tus03m' }],\n ['path', { d: 'M17 20v2', key: '1rnc9c' }],\n ['path', { d: 'M17 2v2', key: '11trls' }],\n ['path', { d: 'M2 12h2', key: '1t8f8n' }],\n ['path', { d: 'M2 17h2', key: '7oei6x' }],\n ['path', { d: 'M2 7h2', key: 'asdhe0' }],\n ['path', { d: 'M20 12h2', key: '1q8mjw' }],\n ['path', { d: 'M20 17h2', key: '1fpfkl' }],\n ['path', { d: 'M20 7h2', key: '1o8tra' }],\n ['path', { d: 'M7 20v2', key: '4gnj0m' }],\n ['path', { d: 'M7 2v2', key: '1i4yhu' }],\n ['rect', { x: '4', y: '4', width: '16', height: '16', rx: '2', key: '1vbyd7' }],\n ['rect', { x: '8', y: '8', width: '8', height: '8', rx: '1', key: 'z9xiuo' }],\n];\n\n/**\n * @component @name Cpu\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/cpu\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Cpu = createLucideIcon('cpu', __iconNode);\n\nexport default Cpu;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z',\n key: '1vdc57',\n },\n ],\n ['path', { d: 'M5 21h14', key: '11awu3' }],\n];\n\n/**\n * @component @name Crown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/crown\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Crown = createLucideIcon('crown', __iconNode);\n\nexport default Crown;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n];\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('external-link', __iconNode);\n\nexport default ExternalLink;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M10 9H8', key: 'b1mrlr' }],\n ['path', { d: 'M16 13H8', key: 't4e002' }],\n ['path', { d: 'M16 17H8', key: 'z1uh3a' }],\n];\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon('file-text', __iconNode);\n\nexport default FileText;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2',\n key: '18mbvz',\n },\n ],\n ['path', { d: 'M6.453 15h11.094', key: '3shlmq' }],\n ['path', { d: 'M8.5 2h7', key: 'csnxdl' }],\n];\n\n/**\n * @component @name FlaskConical\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/flask-conical\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FlaskConical = createLucideIcon('flask-conical', __iconNode);\n\nexport default FlaskConical;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 6a9 9 0 0 0-9 9V3', key: '1cii5b' }],\n ['circle', { cx: '18', cy: '6', r: '3', key: '1h7g24' }],\n ['circle', { cx: '6', cy: '18', r: '3', key: 'fqmcym' }],\n];\n\n/**\n * @component @name GitBranch\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/git-branch\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitBranch = createLucideIcon('git-branch', __iconNode);\n\nexport default GitBranch;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4',\n key: 'tonef',\n },\n ],\n ['path', { d: 'M9 18c-4.51 2-5-2-7-2', key: '9comsn' }],\n];\n\n/**\n * @component @name Github\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/github\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n * @deprecated Brand icons have been deprecated and are due to be removed, please refer to https://github.com/lucide-icons/lucide/issues/670. We recommend using https://simpleicons.org/?q=github instead. This icon will be removed in v1.0\n */\nconst Github = createLucideIcon('github', __iconNode);\n\nexport default Github;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z',\n key: 'zw3jo',\n },\n ],\n [\n 'path',\n {\n d: 'M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12',\n key: '1wduqc',\n },\n ],\n [\n 'path',\n {\n d: 'M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17',\n key: 'kqbvx6',\n },\n ],\n];\n\n/**\n * @component @name Layers\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/layers\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Layers = createLucideIcon('layers', __iconNode);\n\nexport default Layers;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M13 5h8', key: 'a7qcls' }],\n ['path', { d: 'M13 12h8', key: 'h98zly' }],\n ['path', { d: 'M13 19h8', key: 'c3s6r1' }],\n ['path', { d: 'm3 17 2 2 4-4', key: '1jhpwq' }],\n ['path', { d: 'm3 7 2 2 4-4', key: '1obspn' }],\n];\n\n/**\n * @component @name ListChecks\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/list-checks\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ListChecks = createLucideIcon('list-checks', __iconNode);\n\nexport default ListChecks;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '11', x: '3', y: '11', rx: '2', ry: '2', key: '1w4ew1' }],\n ['path', { d: 'M7 11V7a5 5 0 0 1 10 0v4', key: 'fwvmzm' }],\n];\n\n/**\n * @component @name Lock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/lock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lock = createLucideIcon('lock', __iconNode);\n\nexport default Lock;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z',\n key: '18887p',\n },\n ],\n];\n\n/**\n * @component @name MessageSquare\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/message-square\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MessageSquare = createLucideIcon('message-square', __iconNode);\n\nexport default MessageSquare;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n];\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/pencil\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pencil = createLucideIcon('pencil', __iconNode);\n\nexport default Pencil;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8', key: 'v9h5vc' }],\n ['path', { d: 'M21 3v5h-5', key: '1q7to0' }],\n ['path', { d: 'M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16', key: '3uifl3' }],\n ['path', { d: 'M8 16H3v5', key: '1cv678' }],\n];\n\n/**\n * @component @name RefreshCw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/refresh-cw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RefreshCw = createLucideIcon('refresh-cw', __iconNode);\n\nexport default RefreshCw;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5', key: 'qeys4' }],\n [\n 'path',\n {\n d: 'M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09',\n key: 'u4xsad',\n },\n ],\n [\n 'path',\n {\n d: 'M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z',\n key: '676m9',\n },\n ],\n ['path', { d: 'M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05', key: '92ym6u' }],\n];\n\n/**\n * @component @name Rocket\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/rocket\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Rocket = createLucideIcon('rocket', __iconNode);\n\nexport default Rocket;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8', key: '1357e3' }],\n ['path', { d: 'M3 3v5h5', key: '1xhq8a' }],\n];\n\n/**\n * @component @name RotateCcw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/rotate-ccw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RotateCcw = createLucideIcon('rotate-ccw', __iconNode);\n\nexport default RotateCcw;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z',\n key: '1ffxy3',\n },\n ],\n ['path', { d: 'm21.854 2.147-10.94 10.939', key: '12cjpa' }],\n];\n\n/**\n * @component @name Send\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/send\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Send = createLucideIcon('send', __iconNode);\n\nexport default Send;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M14 17H5', key: 'gfn3mx' }],\n ['path', { d: 'M19 7h-9', key: '6i9tg' }],\n ['circle', { cx: '17', cy: '17', r: '3', key: '18b49y' }],\n ['circle', { cx: '7', cy: '7', r: '3', key: 'dfmy0x' }],\n];\n\n/**\n * @component @name Settings2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/settings-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Settings2 = createLucideIcon('settings-2', __iconNode);\n\nexport default Settings2;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915',\n key: '1i5ecw',\n },\n ],\n ['circle', { cx: '12', cy: '12', r: '3', key: '1v7zrd' }],\n];\n\n/**\n * @component @name Settings\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/settings\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Settings = createLucideIcon('settings', __iconNode);\n\nexport default Settings;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n];\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('shield', __iconNode);\n\nexport default Shield;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n];\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Sparkles = createLucideIcon('sparkles', __iconNode);\n\nexport default Sparkles;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3',\n key: 'wmoenq',\n },\n ],\n ['path', { d: 'M12 9v4', key: 'juzpu7' }],\n ['path', { d: 'M12 17h.01', key: 'p32p05' }],\n];\n\n/**\n * @component @name TriangleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/triangle-alert\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TriangleAlert = createLucideIcon('triangle-alert', __iconNode);\n\nexport default TriangleAlert;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2', key: '1yyitq' }],\n ['circle', { cx: '9', cy: '7', r: '4', key: 'nufk8' }],\n ['line', { x1: '22', x2: '16', y1: '11', y2: '11', key: '1shjgl' }],\n];\n\n/**\n * @component @name UserMinus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/user-minus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst UserMinus = createLucideIcon('user-minus', __iconNode);\n\nexport default UserMinus;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2', key: '1yyitq' }],\n ['circle', { cx: '9', cy: '7', r: '4', key: 'nufk8' }],\n ['line', { x1: '19', x2: '19', y1: '8', y2: '14', key: '1bvyxn' }],\n ['line', { x1: '22', x2: '16', y1: '11', y2: '11', key: '1shjgl' }],\n];\n\n/**\n * @component @name UserPlus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/user-plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst UserPlus = createLucideIcon('user-plus', __iconNode);\n\nexport default UserPlus;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2', key: '1yyitq' }],\n ['path', { d: 'M16 3.128a4 4 0 0 1 0 7.744', key: '16gr8j' }],\n ['path', { d: 'M22 21v-2a4 4 0 0 0-3-3.87', key: 'kshegd' }],\n ['circle', { cx: '9', cy: '7', r: '4', key: 'nufk8' }],\n];\n\n/**\n * @component @name Users\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/users\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Users = createLucideIcon('users', __iconNode);\n\nexport default Users;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '8', height: '8', x: '3', y: '3', rx: '2', key: 'by2w9f' }],\n ['path', { d: 'M7 11v4a2 2 0 0 0 2 2h4', key: 'xkn7yn' }],\n ['rect', { width: '8', height: '8', x: '13', y: '13', rx: '2', key: '1cgmvn' }],\n];\n\n/**\n * @component @name Workflow\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/workflow\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Workflow = createLucideIcon('workflow', __iconNode);\n\nexport default Workflow;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z',\n key: '1ngwbx',\n },\n ],\n];\n\n/**\n * @component @name Wrench\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/wrench\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Wrench = createLucideIcon('wrench', __iconNode);\n\nexport default Wrench;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n];\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('x', __iconNode);\n\nexport default X;\n", "import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z',\n key: '1xq2db',\n },\n ],\n];\n\n/**\n * @component @name Zap\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/zap\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Zap = createLucideIcon('zap', __iconNode);\n\nexport default Zap;\n", "import { useEffect } from 'react';\nimport {\n useWizard,\n useWizardDispatch,\n prevStep,\n getUserStepIndex,\n getTotalSteps,\n} from '../context/WizardContext';\nimport { StepOnboarding } from './steps/StepOnboarding';\nimport { StepName } from './steps/StepName';\nimport { StepGoal } from './steps/StepGoal';\nimport { StepRepository } from './steps/StepRepository';\nimport { StepPreset } from './steps/StepPreset';\nimport { StepModules } from './steps/StepModules';\nimport { StepRoles } from './steps/StepRoles';\nimport { StepSummary } from './steps/StepSummary';\nimport { StepAiWizard } from './steps/StepAiWizard';\nimport { StepProvision } from './steps/StepProvision';\nimport { StepPreview } from './steps/StepPreview';\nimport { StepExistingCompany } from './steps/StepExistingCompany';\nimport { StepDone } from './steps/StepDone';\nimport { Button } from './ui/button';\n\nconst STEP_COMPONENTS = {\n onboarding: StepOnboarding,\n name: StepName,\n goal: StepGoal,\n repository: StepRepository,\n preset: StepPreset,\n modules: StepModules,\n roles: StepRoles,\n 'existing-company': StepExistingCompany,\n summary: StepSummary,\n preview: StepPreview,\n 'ai-wizard': StepAiWizard,\n provision: StepProvision,\n done: StepDone,\n} as const;\n\nfunction StepIndicator() {\n const state = useWizard();\n const current = getUserStepIndex(state);\n const total = getTotalSteps(state);\n\n if (\n current < 1 ||\n state.step === 'provision' ||\n state.step === 'done' ||\n state.step === 'ai-wizard'\n )\n return null;\n\n return (\n <div className=\"flex items-center gap-1.5\">\n {Array.from({ length: total }, (_, i) => (\n <div\n key={i}\n className={`h-1.5 rounded-full transition-all duration-300 ${\n i + 1 <= current ? 'w-6 bg-foreground' : 'w-1.5 bg-muted-foreground/30'\n }`}\n />\n ))}\n <span className=\"ml-2 text-xs text-muted-foreground\">\n {current}/{total}\n </span>\n </div>\n );\n}\n\nexport function WizardShell() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n\n const StepComponent = STEP_COMPONENTS[state.step];\n\n useEffect(() => {\n window.scrollTo({ top: 0 });\n }, [state.step]);\n\n return (\n <div className=\"flex flex-col\">\n {/* Step indicator (compact, no standalone header) */}\n {getUserStepIndex(state) >= 1 && state.step !== 'provision' && state.step !== 'done' && (\n <div className=\"flex items-center justify-end px-6 py-3\">\n <StepIndicator />\n </div>\n )}\n\n {/* Content */}\n <main className=\"flex-1 flex items-start justify-center p-6\">\n <div className=\"w-full max-w-2xl\">\n <StepComponent />\n </div>\n </main>\n\n {/* Error bar */}\n {state.error && (\n <div className=\"fixed bottom-0 inset-x-0 bg-destructive/10 border-t border-destructive/20 px-6 py-3 text-sm text-destructive flex items-center justify-between\">\n <span>{state.error}</span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => dispatch({ type: 'SET_ERROR', error: null })}\n >\n Dismiss\n </Button>\n </div>\n )}\n </div>\n );\n}\n", "import { createContext, useCallback, useContext, useState, type ReactNode } from 'react';\nimport type { PresetData, ModuleData, RoleData } from '../types';\n\n// --- Types ---\n\nexport type WizardPath = 'manual' | 'ai' | 'update';\n\nexport type Step =\n | 'onboarding'\n | 'name'\n | 'goal'\n | 'repository'\n | 'preset'\n | 'modules'\n | 'roles'\n | 'summary'\n | 'existing-company'\n | 'preview'\n | 'ai-wizard'\n | 'provision'\n | 'done';\n\nexport interface Goal {\n title: string;\n description: string;\n parentGoal?: string;\n}\n\nexport interface WizardProject {\n name: string;\n description: string;\n goals: string[]; // goal titles this project is linked to\n workspace?: ProjectWorkspaceConfig;\n workspaceSourceType?: ProjectWorkspaceConfig['sourceType'];\n repoUrl?: string;\n repoRef?: string;\n defaultRef?: string;\n executionWorkspacePolicy?: ProjectExecutionWorkspacePolicy;\n}\n\nexport interface WizardIssue {\n title: string;\n description: string;\n priority?: string;\n assignTo?: string; // role name (e.g. \"engineer\") or \"user\"; resolved at assembly\n}\n\nexport interface ProjectWorkspaceConfig {\n name?: string;\n sourceType?: 'local_path' | 'git_repo' | 'remote_managed' | 'non_git_path' | string;\n cwd?: string | null;\n repoUrl?: string | null;\n repoRef?: string | null;\n defaultRef?: string | null;\n isPrimary?: boolean;\n visibility?: 'default' | 'advanced' | string;\n setupCommand?: string | null;\n cleanupCommand?: string | null;\n remoteProvider?: string | null;\n remoteWorkspaceRef?: string | null;\n sharedWorkspaceKey?: string | null;\n metadata?: Record<string, unknown> | null;\n runtimeConfig?: Record<string, unknown> | null;\n}\n\nexport interface ProjectExecutionWorkspacePolicy {\n defaultMode?:\n | 'shared_workspace'\n | 'isolated_workspace'\n | 'operator_branch'\n | 'adapter_default'\n | string;\n allowIssueOverride?: boolean;\n defaultProjectWorkspaceId?: string | null;\n environmentId?: string | null;\n workspaceStrategy?: {\n type?: string;\n baseRef?: string;\n [key: string]: unknown;\n } | null;\n [key: string]: unknown;\n}\n\nexport interface CeoAdapter {\n type: string;\n cwd: string;\n model: string;\n}\n\nexport interface ProvisionResult {\n companyId: string;\n issuePrefix?: string;\n paperclipUrl?: string;\n goalId?: string;\n agentIds: Record<string, string>;\n issueIds: string[];\n}\n\nexport interface WizardState {\n step: Step;\n path: WizardPath | null;\n\n // User input\n companyName: string;\n goals: Goal[];\n projects: WizardProject[];\n issues: WizardIssue[];\n ceoAdapter: CeoAdapter;\n existingCompanyId: string;\n presetName: string;\n selectedModules: string[];\n selectedRoles: string[];\n\n // AI wizard\n aiDescription: string;\n aiExplanation: string;\n companyDescription: string;\n aiLoading: boolean;\n\n // Templates\n presets: PresetData[];\n modules: ModuleData[];\n roles: RoleData[];\n\n // File overrides: relative path \u2192 edited content (applied during provisioning)\n fileOverrides: Record<string, string>;\n\n // Results\n provisioning: boolean;\n provisionLog: string[];\n provisionResult: ProvisionResult | null;\n error: string | null;\n}\n\n// --- Actions ---\n\ntype Action =\n | { type: 'SET_PATH'; path: WizardPath }\n | { type: 'GO_TO'; step: Step }\n | { type: 'SET_COMPANY_NAME'; value: string }\n | { type: 'SET_GOALS'; goals: Goal[] }\n | { type: 'SET_PROJECTS'; projects: WizardProject[] }\n | { type: 'SET_CEO_ADAPTER'; adapter: Partial<CeoAdapter> }\n | { type: 'SET_EXISTING_COMPANY_ID'; value: string }\n | { type: 'SET_PRESET'; name: string }\n | { type: 'SET_MODULES'; modules: string[] }\n | { type: 'SET_ROLES'; roles: string[] }\n | { type: 'SET_AI_DESCRIPTION'; value: string }\n | { type: 'SET_AI_LOADING'; value: boolean }\n | { type: 'APPLY_AI_RESULT'; result: Partial<WizardState> }\n | { type: 'SET_FILE_OVERRIDE'; path: string; content: string }\n | { type: 'DELETE_FILE_OVERRIDE'; path: string }\n | { type: 'CLEAR_FILE_OVERRIDES' }\n | { type: 'SET_PROVISIONING'; value: boolean }\n | { type: 'ADD_PROVISION_LOG'; line: string }\n | { type: 'SET_PROVISION_RESULT'; result: ProvisionResult }\n | { type: 'SET_ERROR'; error: string | null }\n | { type: 'RESET' };\n\n// --- Step flow ---\n\nconst MANUAL_STEPS: Step[] = [\n 'onboarding',\n 'name',\n 'goal',\n 'repository',\n 'preset',\n 'modules',\n 'roles',\n 'summary',\n 'provision',\n 'done',\n];\n\nconst AI_STEPS: Step[] = ['onboarding', 'ai-wizard', 'provision', 'done'];\n\nconst UPDATE_STEPS: Step[] = [\n 'onboarding',\n 'existing-company',\n 'preset',\n 'modules',\n 'roles',\n 'summary',\n 'preview',\n 'provision',\n 'done',\n];\n\nfunction stepsForPath(path: WizardPath | null): Step[] {\n if (path === 'ai') return AI_STEPS;\n if (path === 'update') return UPDATE_STEPS;\n return MANUAL_STEPS;\n}\n\nexport function getStepIndex(state: WizardState): number {\n const steps = stepsForPath(state.path);\n return steps.indexOf(state.step);\n}\n\nexport function getTotalSteps(state: WizardState): number {\n const steps = stepsForPath(state.path);\n return steps.filter((s) => s !== 'onboarding' && s !== 'provision' && s !== 'done').length;\n}\n\nexport function getUserStepIndex(state: WizardState): number {\n const steps = stepsForPath(state.path);\n const userSteps = steps.filter((s) => s !== 'onboarding' && s !== 'provision' && s !== 'done');\n return userSteps.indexOf(state.step as (typeof userSteps)[number]) + 1;\n}\n\nexport function nextStep(state: WizardState): Step {\n const steps = stepsForPath(state.path);\n const idx = steps.indexOf(state.step);\n return steps[Math.min(idx + 1, steps.length - 1)];\n}\n\nexport function prevStep(state: WizardState): Step {\n const steps = stepsForPath(state.path);\n const idx = steps.indexOf(state.step);\n return steps[Math.max(idx - 1, 0)];\n}\n\n// --- Derived state ---\n\nexport function getAllRoles(state: WizardState): string[] {\n const baseRoles = state.roles.filter((r) => r._base).map((r) => r.name);\n return [...new Set([...baseRoles, ...state.selectedRoles])];\n}\n\nexport function getActiveModules(state: WizardState): ModuleData[] {\n const allRoles = new Set(getAllRoles(state));\n return state.modules.filter((m) => {\n if (!state.selectedModules.includes(m.name)) return false;\n if (m.activatesWithRoles?.length) {\n return m.activatesWithRoles.some((r) => allRoles.has(r));\n }\n return true;\n });\n}\n\n// --- Reducer ---\n\nconst initialState: WizardState = {\n step: 'onboarding',\n path: null,\n companyName: '',\n goals: [],\n projects: [],\n issues: [],\n ceoAdapter: { type: 'codex_local', cwd: '', model: 'gpt-5.5' },\n existingCompanyId: '',\n presetName: '',\n selectedModules: [],\n selectedRoles: [],\n aiDescription: '',\n aiExplanation: '',\n companyDescription: '',\n aiLoading: false,\n presets: [],\n modules: [],\n roles: [],\n fileOverrides: {},\n provisioning: false,\n provisionLog: [],\n provisionResult: null,\n error: null,\n};\n\nfunction reducer(state: WizardState, action: Action): WizardState {\n switch (action.type) {\n case 'SET_PATH': {\n let step: Step;\n if (action.path === 'ai') step = 'ai-wizard';\n else if (action.path === 'update') step = 'existing-company';\n else step = 'name';\n return { ...state, path: action.path, step };\n }\n case 'GO_TO':\n return { ...state, step: action.step, error: null };\n case 'SET_COMPANY_NAME':\n return { ...state, companyName: action.value };\n case 'SET_GOALS':\n return { ...state, goals: action.goals };\n case 'SET_PROJECTS':\n return { ...state, projects: action.projects };\n case 'SET_CEO_ADAPTER':\n return { ...state, ceoAdapter: { ...state.ceoAdapter, ...action.adapter } };\n case 'SET_EXISTING_COMPANY_ID':\n return { ...state, existingCompanyId: action.value };\n case 'SET_PRESET': {\n const preset = state.presets.find((p) => p.name === action.name);\n return {\n ...state,\n presetName: action.name,\n selectedModules: preset?.modules ?? [],\n selectedRoles: preset?.roles ?? [],\n fileOverrides: {},\n };\n }\n case 'SET_MODULES':\n return { ...state, selectedModules: action.modules, fileOverrides: {} };\n case 'SET_ROLES':\n return { ...state, selectedRoles: action.roles, fileOverrides: {} };\n case 'SET_AI_DESCRIPTION':\n return { ...state, aiDescription: action.value };\n case 'SET_AI_LOADING':\n return { ...state, aiLoading: action.value };\n case 'APPLY_AI_RESULT':\n return { ...state, ...action.result };\n case 'SET_FILE_OVERRIDE':\n return { ...state, fileOverrides: { ...state.fileOverrides, [action.path]: action.content } };\n case 'DELETE_FILE_OVERRIDE': {\n const next = { ...state.fileOverrides };\n delete next[action.path];\n return { ...state, fileOverrides: next };\n }\n case 'CLEAR_FILE_OVERRIDES':\n return { ...state, fileOverrides: {} };\n case 'SET_PROVISIONING':\n return {\n ...state,\n provisioning: action.value,\n provisionLog: action.value ? [] : state.provisionLog,\n };\n case 'ADD_PROVISION_LOG':\n return {\n ...state,\n provisionLog: [...state.provisionLog, action.line],\n };\n case 'SET_PROVISION_RESULT':\n return {\n ...state,\n provisionResult: action.result,\n provisioning: false,\n };\n case 'SET_ERROR':\n return { ...state, error: action.error, provisioning: false };\n case 'RESET':\n return {\n ...initialState,\n presets: state.presets,\n modules: state.modules,\n roles: state.roles,\n };\n default:\n return state;\n }\n}\n\n// --- Context ---\n\nconst WizardContext = createContext<WizardState>(initialState);\nconst WizardDispatchContext = createContext<(action: Action) => void>(() => {});\n\nexport function WizardProvider({\n children,\n templates,\n}: {\n children: ReactNode;\n templates: { presets: PresetData[]; modules: ModuleData[]; roles: RoleData[] };\n}) {\n const [state, setState] = useState<WizardState>({\n ...initialState,\n ...templates,\n });\n const dispatch = useCallback((action: Action) => setState((prev) => reducer(prev, action)), []);\n\n return (\n <WizardContext.Provider value={state}>\n <WizardDispatchContext.Provider value={dispatch}>{children}</WizardDispatchContext.Provider>\n </WizardContext.Provider>\n );\n}\n\nexport function useWizard() {\n return useContext(WizardContext);\n}\n\nexport function useWizardDispatch() {\n return useContext(WizardDispatchContext);\n}\n", "import { useEffect, useState } from 'react';\nimport { useWizardDispatch } from '../../context/WizardContext';\nimport { usePluginAction } from '@paperclipai/plugin-sdk/ui';\nimport { Card, CardHeader, CardTitle, CardDescription, CardContent } from '../ui/card';\nimport { Building2, Sparkles, RefreshCw, ExternalLink } from 'lucide-react';\nimport { cn } from '../../lib/utils';\n\ntype UpdateInfo = {\n ok?: boolean;\n updateAvailable?: boolean;\n currentVersion?: string;\n latestVersion?: string;\n url?: string;\n};\n\nfunction PathCard({\n icon: Icon,\n title,\n description,\n details,\n onClick,\n}: {\n icon: React.ElementType;\n title: string;\n description: string;\n details: string[];\n onClick: () => void;\n}) {\n return (\n <Card\n className={cn(\n 'cursor-pointer transition-all duration-200',\n 'hover:border-foreground/20 hover:shadow-md',\n 'active:scale-[0.98]',\n )}\n onClick={onClick}\n >\n <CardHeader>\n <div className=\"flex items-center gap-3\">\n <div className=\"h-10 w-10 rounded-lg bg-secondary flex items-center justify-center\">\n <Icon className=\"h-5 w-5\" />\n </div>\n <div>\n <CardTitle className=\"text-base\">{title}</CardTitle>\n <CardDescription>{description}</CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent>\n <ul className=\"space-y-1.5\">\n {details.map((d, i) => (\n <li key={i} className=\"text-sm text-muted-foreground flex items-baseline gap-2\">\n <span className=\"text-foreground/40 shrink-0\">-</span>\n {d}\n </li>\n ))}\n </ul>\n </CardContent>\n </Card>\n );\n}\n\nexport function StepOnboarding() {\n const dispatch = useWizardDispatch();\n const refreshTemplates = usePluginAction('refresh-templates');\n const checkUpdate = usePluginAction('check-update');\n const [refreshing, setRefreshing] = useState(false);\n const [refreshMsg, setRefreshMsg] = useState<string | null>(null);\n const [updateInfo, setUpdateInfo] = useState<UpdateInfo | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n checkUpdate({})\n .then((result: unknown) => {\n if (!cancelled) setUpdateInfo(result as UpdateInfo);\n })\n .catch(() => {\n if (!cancelled) setUpdateInfo(null);\n });\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleRefresh = async () => {\n setRefreshing(true);\n setRefreshMsg(null);\n try {\n const result = (await refreshTemplates({})) as { ok?: boolean; error?: string };\n if (result?.error) {\n setRefreshMsg(result.error);\n } else {\n setRefreshMsg('Templates updated \u2014 reload the page to use them.');\n }\n } catch (err) {\n setRefreshMsg(err instanceof Error ? err.message : 'Refresh failed');\n } finally {\n setRefreshing(false);\n }\n };\n\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-2\">\n <h1 className=\"text-2xl font-semibold tracking-tight\">Create a company</h1>\n <p className=\"text-muted-foreground\">\n Choose how you'd like to set up your AI agent organization.\n </p>\n </div>\n\n <div className=\"grid gap-4 sm:grid-cols-3\">\n <PathCard\n icon={Building2}\n title=\"Setup my own org\"\n description=\"Configure step by step\"\n details={[\n 'Choose team preset or go custom',\n 'Pick modules and roles',\n 'Define goal and first project',\n 'Full control over every detail',\n ]}\n onClick={() => dispatch({ type: 'SET_PATH', path: 'manual' })}\n />\n <PathCard\n icon={Sparkles}\n title=\"Autonomous from idea\"\n description=\"Describe it, we'll configure it\"\n details={[\n 'Describe your company in plain English',\n 'AI selects optimal team and modules',\n 'Review and adjust before creating',\n 'Fastest way to get started',\n ]}\n onClick={() => dispatch({ type: 'SET_PATH', path: 'ai' })}\n />\n <PathCard\n icon={RefreshCw}\n title=\"Update existing company\"\n description=\"Re-provision or modify an existing org\"\n details={[\n 'Select company by ID',\n 'Choose preset, modules, and roles',\n 'Preview changes before applying',\n 'Preserves individual skill assignments',\n ]}\n onClick={() => dispatch({ type: 'SET_PATH', path: 'update' })}\n />\n </div>\n\n <div className=\"flex flex-wrap items-center justify-center gap-2 pt-2\">\n <button\n onClick={handleRefresh}\n disabled={refreshing}\n className=\"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors disabled:opacity-50\"\n >\n <RefreshCw className={cn('h-3 w-3', refreshing && 'animate-spin')} />\n {refreshing ? 'Updating templates\u2026' : 'Update templates'}\n </button>\n {updateInfo?.ok && updateInfo.updateAvailable && (\n <>\n <span className=\"text-xs text-muted-foreground/40\">|</span>\n <span className=\"inline-flex items-center gap-1 text-xs text-muted-foreground\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-amber-500\" />\n Company Wizard plugin update: {updateInfo.currentVersion} \u2192 {updateInfo.latestVersion}\n {updateInfo.url && (\n <a\n href={updateInfo.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"inline-flex items-center gap-0.5 font-medium text-foreground hover:underline\"\n title=\"Update the Company Wizard plugin package, then reload Paperclip\"\n >\n npm\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n )}\n </span>\n </>\n )}\n {refreshMsg && <span className=\"text-xs text-muted-foreground\">{refreshMsg}</span>}\n </div>\n </div>\n );\n}\n", "import * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('rounded-xl border bg-card text-card-foreground shadow-sm', className)}\n {...props}\n />\n ),\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n ),\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n ),\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />\n ),\n);\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n ),\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />\n ),\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n", "function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;", "/**\n * Concatenates two arrays faster than the array spread operator.\n */\nexport const concatArrays = <T, U>(\n array1: readonly T[],\n array2: readonly U[],\n): readonly (T | U)[] => {\n // Pre-allocate for better V8 optimization\n const combinedArray: (T | U)[] = new Array(array1.length + array2.length)\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i]!\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i]!\n }\n return combinedArray\n}\n", "import {\n AnyClassGroupIds,\n AnyConfig,\n AnyThemeGroupIds,\n ClassGroup,\n ClassValidator,\n Config,\n ThemeGetter,\n ThemeObject,\n} from './types'\nimport { concatArrays } from './utils'\n\nexport interface ClassPartObject {\n nextPart: Map<string, ClassPartObject>\n validators: ClassValidatorObject[] | null\n classGroupId: AnyClassGroupIds | undefined // Always define optional props for consistent shape\n}\n\ninterface ClassValidatorObject {\n classGroupId: AnyClassGroupIds\n validator: ClassValidator\n}\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (\n classGroupId: AnyClassGroupIds,\n validator: ClassValidator,\n): ClassValidatorObject => ({\n classGroupId,\n validator,\n})\n\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (\n nextPart: Map<string, ClassPartObject> = new Map(),\n validators: ClassValidatorObject[] | null = null,\n classGroupId?: AnyClassGroupIds,\n): ClassPartObject => ({\n nextPart,\n validators,\n classGroupId,\n})\n\nconst CLASS_PART_SEPARATOR = '-'\n\nconst EMPTY_CONFLICTS: readonly AnyClassGroupIds[] = []\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n const getClassGroupId = (className: string) => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className)\n }\n\n const classParts = className.split(CLASS_PART_SEPARATOR)\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0\n return getGroupRecursive(classParts, startIndex, classMap)\n }\n\n const getConflictingClassGroupIds = (\n classGroupId: AnyClassGroupIds,\n hasPostfixModifier: boolean,\n ): readonly AnyClassGroupIds[] => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId]\n const baseConflicts = conflictingClassGroups[classGroupId]\n\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts)\n }\n // Only modifier conflicts\n return modifierConflicts\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS\n }\n\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nconst getGroupRecursive = (\n classParts: string[],\n startIndex: number,\n classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n const classPathsLength = classParts.length - startIndex\n if (classPathsLength === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[startIndex]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject)\n if (result) return result\n }\n\n const validators = classPartObject.validators\n if (validators === null) {\n return undefined\n }\n\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest =\n startIndex === 0\n ? classParts.join(CLASS_PART_SEPARATOR)\n : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR)\n const validatorsLength = validators.length\n\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i]!\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId\n }\n }\n\n return undefined\n}\n\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = (className: string): AnyClassGroupIds | undefined =>\n className.slice(1, -1).indexOf(':') === -1\n ? undefined\n : (() => {\n const content = className.slice(1, -1)\n const colonIndex = content.indexOf(':')\n const property = content.slice(0, colonIndex)\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined\n })()\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config<AnyClassGroupIds, AnyThemeGroupIds>) => {\n const { theme, classGroups } = config\n return processClassGroups(classGroups, theme)\n}\n\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (\n classGroups: Record<AnyClassGroupIds, ClassGroup<AnyThemeGroupIds>>,\n theme: ThemeObject<AnyThemeGroupIds>,\n): ClassPartObject => {\n const classMap = createClassPartObject()\n\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId]!\n processClassesRecursively(group, classMap, classGroupId, theme)\n }\n\n return classMap\n}\n\nconst processClassesRecursively = (\n classGroup: ClassGroup<AnyThemeGroupIds>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const len = classGroup.length\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i]!\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme)\n }\n}\n\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (\n classDefinition: ClassGroup<AnyThemeGroupIds>[number],\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId)\n return\n }\n\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme)\n return\n }\n\n processObjectDefinition(\n classDefinition as Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject,\n classGroupId,\n theme,\n )\n}\n\nconst processStringDefinition = (\n classDefinition: string,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n) => {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n}\n\nconst processFunctionDefinition = (\n classDefinition: Function,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme)\n return\n }\n\n if (classPartObject.validators === null) {\n classPartObject.validators = []\n }\n classPartObject.validators.push(\n createClassValidatorObject(classGroupId, classDefinition as ClassValidator),\n )\n}\n\nconst processObjectDefinition = (\n classDefinition: Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const entries = Object.entries(classDefinition)\n const len = entries.length\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i]!\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme)\n }\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string): ClassPartObject => {\n let current = classPartObject\n const parts = path.split(CLASS_PART_SEPARATOR)\n const len = parts.length\n\n for (let i = 0; i < len; i++) {\n const part = parts[i]!\n\n let next = current.nextPart.get(part)\n if (!next) {\n next = createClassPartObject()\n current.nextPart.set(part, next)\n }\n current = next\n }\n\n return current\n}\n\n// Type guard maintains monomorphic check\nconst isThemeGetter = (func: Function): func is ThemeGetter =>\n 'isThemeGetter' in func && (func as ThemeGetter).isThemeGetter === true\n", "// Export is needed because TypeScript complains about an error otherwise:\n// Error: \u2026/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"\u2026/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache<Key extends string, Value> {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\n\n// LRU cache implementation using plain objects for simplicity\nexport const createLruCache = <Key extends string, Value>(\n maxCacheSize: number,\n): LruCache<Key, Value> => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache: Record<Key, Value> = Object.create(null)\n let previousCache: Record<Key, Value> = Object.create(null)\n\n const update = (key: Key, value: Value) => {\n cache[key] = value\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = Object.create(null)\n }\n }\n\n return {\n get(key) {\n let value = cache[key]\n\n if (value !== undefined) {\n return value\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value)\n return value\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value\n } else {\n update(key, value)\n }\n },\n }\n}\n", "import { AnyConfig, ParsedClassName } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nconst MODIFIER_SEPARATOR = ':'\nconst EMPTY_MODIFIERS: string[] = []\n\n// Pre-allocated result object shape for consistency\nconst createResultObject = (\n modifiers: string[],\n hasImportantModifier: boolean,\n baseClassName: string,\n maybePostfixModifierPosition?: number,\n isExternal?: boolean,\n): ParsedClassName => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal,\n})\n\nexport const createParseClassName = (config: AnyConfig) => {\n const { prefix, experimentalParseClassName } = config\n\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = (className: string): ParsedClassName => {\n // Use simple array with push for better performance\n const modifiers: string[] = []\n\n let bracketDepth = 0\n let parenDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n const len = className.length\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index]!\n\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + 1\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') bracketDepth++\n else if (currentCharacter === ']') bracketDepth--\n else if (currentCharacter === '(') parenDepth++\n else if (currentCharacter === ')') parenDepth--\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.slice(modifierStart)\n\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier\n let hasImportantModifier = false\n\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1)\n hasImportantModifier = true\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n ) {\n baseClassName = baseClassNameWithImportantModifier.slice(1)\n hasImportantModifier = true\n }\n\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return createResultObject(\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n )\n }\n\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n className.startsWith(fullPrefix)\n ? parseClassNameOriginal(className.slice(fullPrefix.length))\n : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true)\n }\n\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n experimentalParseClassName({ className, parseClassName: parseClassNameOriginal })\n }\n\n return parseClassName\n}\n", "import { AnyConfig } from './types'\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport const createSortModifiers = (config: AnyConfig) => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map<string, number>()\n\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index) // High weights for sensitive mods\n })\n\n return (modifiers: readonly string[]): string[] => {\n const result: string[] = []\n let currentSegment: string[] = []\n\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i]!\n\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '['\n const isOrderSensitive = modifierWeights.has(modifier)\n\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n currentSegment = []\n }\n result.push(modifier)\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier)\n }\n }\n\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n }\n\n return result\n }\n}\n", "import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { createSortModifiers } from './sort-modifiers'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n cache: createLruCache<string, string>(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config),\n})\n", "import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } =\n configUtils\n\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict: string[] = []\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n let result = ''\n\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index]!\n\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n } = parseClassName(originalClassName)\n\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n let hasPostfixModifier = !!maybePostfixModifierPosition\n let classGroupId = getClassGroupId(\n hasPostfixModifier\n ? baseClassName.substring(0, maybePostfixModifierPosition)\n : baseClassName,\n )\n\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n hasPostfixModifier = false\n }\n\n // Fast path: skip sorting for empty or single modifier\n const variantModifier =\n modifiers.length === 0\n ? ''\n : modifiers.length === 1\n ? modifiers[0]!\n : sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue\n }\n\n classGroupsInConflict.push(classId)\n\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier)\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i]!\n classGroupsInConflict.push(modifierId + group)\n }\n\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n }\n\n return result\n}\n", "/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport const twJoin = (...classLists: ClassNameValue[]): string => {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\n while (index < classLists.length) {\n if ((argument = classLists[index++])) {\n if ((resolvedValue = toValue(argument))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n return string\n}\n\nconst toValue = (mix: ClassNameArray | string): string => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n", "import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createTailwindMerge = (\n createConfigFirst: CreateConfigFirst,\n ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge => {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall: (classList: string) => string\n\n const initTailwindMerge = (classList: string) => {\n const config = createConfigRest.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n createConfigFirst() as AnyConfig,\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n const tailwindMerge = (classList: string) => {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n functionToCall = initTailwindMerge\n\n return (...args: ClassNameValue[]) => functionToCall(twJoin(...args))\n}\n", "import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nconst fallbackThemeArr: ThemeObject<DefaultThemeGroupIds>[DefaultThemeGroupIds] = []\n\nexport const fromTheme = <\n AdditionalThemeGroupIds extends string = never,\n DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(\n key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>,\n): ThemeGetter => {\n const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>\n theme[key] || fallbackThemeArr\n\n themeGetter.isThemeGetter = true as const\n\n return themeGetter\n}\n", "const arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\nconst imageRegex =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isFraction = (value: string) => fractionRegex.test(value)\n\nexport const isNumber = (value: string) => !!value && !Number.isNaN(Number(value))\n\nexport const isInteger = (value: string) => !!value && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nexport const isAny = () => true\n\nconst isLengthOnly = (value: string) =>\n // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n\nexport const isAnyNonArbitrary = (value: string) =>\n !isArbitraryValue(value) && !isArbitraryVariable(value)\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, isLabelSize, isNever)\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n getIsArbitraryValue(value, isLabelLength, isLengthOnly)\n\nexport const isArbitraryNumber = (value: string) =>\n getIsArbitraryValue(value, isLabelNumber, isNumber)\n\nexport const isArbitraryWeight = (value: string) => getIsArbitraryValue(value, isLabelWeight, isAny)\n\nexport const isArbitraryFamilyName = (value: string) =>\n getIsArbitraryValue(value, isLabelFamilyName, isNever)\n\nexport const isArbitraryPosition = (value: string) =>\n getIsArbitraryValue(value, isLabelPosition, isNever)\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, isLabelImage, isImage)\n\nexport const isArbitraryShadow = (value: string) =>\n getIsArbitraryValue(value, isLabelShadow, isShadow)\n\nexport const isArbitraryVariable = (value: string) => arbitraryVariableRegex.test(value)\n\nexport const isArbitraryVariableLength = (value: string) =>\n getIsArbitraryVariable(value, isLabelLength)\n\nexport const isArbitraryVariableFamilyName = (value: string) =>\n getIsArbitraryVariable(value, isLabelFamilyName)\n\nexport const isArbitraryVariablePosition = (value: string) =>\n getIsArbitraryVariable(value, isLabelPosition)\n\nexport const isArbitraryVariableSize = (value: string) => getIsArbitraryVariable(value, isLabelSize)\n\nexport const isArbitraryVariableImage = (value: string) =>\n getIsArbitraryVariable(value, isLabelImage)\n\nexport const isArbitraryVariableShadow = (value: string) =>\n getIsArbitraryVariable(value, isLabelShadow, true)\n\nexport const isArbitraryVariableWeight = (value: string) =>\n getIsArbitraryVariable(value, isLabelWeight, true)\n\n// Helpers\n\nconst getIsArbitraryValue = (\n value: string,\n testLabel: (label: string) => boolean,\n testValue: (value: string) => boolean,\n) => {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nconst getIsArbitraryVariable = (\n value: string,\n testLabel: (label: string) => boolean,\n shouldMatchNoLabel = false,\n) => {\n const result = arbitraryVariableRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n return shouldMatchNoLabel\n }\n\n return false\n}\n\n// Labels\n\nconst isLabelPosition = (label: string) => label === 'position' || label === 'percentage'\n\nconst isLabelImage = (label: string) => label === 'image' || label === 'url'\n\nconst isLabelSize = (label: string) => label === 'length' || label === 'size' || label === 'bg-size'\n\nconst isLabelLength = (label: string) => label === 'length'\n\nconst isLabelNumber = (label: string) => label === 'number'\n\nconst isLabelFamilyName = (label: string) => label === 'family-name'\n\nconst isLabelWeight = (label: string) => label === 'number' || label === 'weight'\n\nconst isLabelShadow = (label: string) => label === 'shadow'\n", "import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n\n const themeColor = fromTheme('color')\n const themeFont = fromTheme('font')\n const themeText = fromTheme('text')\n const themeFontWeight = fromTheme('font-weight')\n const themeTracking = fromTheme('tracking')\n const themeLeading = fromTheme('leading')\n const themeBreakpoint = fromTheme('breakpoint')\n const themeContainer = fromTheme('container')\n const themeSpacing = fromTheme('spacing')\n const themeRadius = fromTheme('radius')\n const themeShadow = fromTheme('shadow')\n const themeInsetShadow = fromTheme('inset-shadow')\n const themeTextShadow = fromTheme('text-shadow')\n const themeDropShadow = fromTheme('drop-shadow')\n const themeBlur = fromTheme('blur')\n const themePerspective = fromTheme('perspective')\n const themeAspect = fromTheme('aspect')\n const themeEase = fromTheme('ease')\n const themeAnimate = fromTheme('animate')\n\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n\n const scaleBreak = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const scalePosition = () =>\n [\n 'center',\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top',\n 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top',\n 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom',\n 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom',\n ] as const\n const scalePositionWithArbitrary = () =>\n [...scalePosition(), isArbitraryVariable, isArbitraryValue] as const\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const scaleOverscroll = () => ['auto', 'contain', 'none'] as const\n const scaleUnambiguousSpacing = () =>\n [isArbitraryVariable, isArbitraryValue, themeSpacing] as const\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()] as const\n const scaleGridTemplateColsRows = () =>\n [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridColRowStartAndEnd = () =>\n [\n 'auto',\n { span: ['full', isInteger, isArbitraryVariable, isArbitraryValue] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleGridColRowStartOrEnd = () =>\n [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridAutoColsRows = () =>\n ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue] as const\n const scaleAlignPrimaryAxis = () =>\n [\n 'start',\n 'end',\n 'center',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n 'center-safe',\n 'end-safe',\n ] as const\n const scaleAlignSecondaryAxis = () =>\n ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'] as const\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()] as const\n const scaleSizing = () =>\n [\n isFraction,\n 'auto',\n 'full',\n 'dvw',\n 'dvh',\n 'lvw',\n 'lvh',\n 'svw',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleSizingInline = () =>\n [\n isFraction,\n 'screen',\n 'full',\n 'dvw',\n 'lvw',\n 'svw',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleSizingBlock = () =>\n [\n isFraction,\n 'screen',\n 'full',\n 'lh',\n 'dvh',\n 'lvh',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue] as const\n const scaleBgPosition = () =>\n [\n ...scalePosition(),\n isArbitraryVariablePosition,\n isArbitraryPosition,\n { position: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleBgRepeat = () => ['no-repeat', { repeat: ['', 'x', 'y', 'space', 'round'] }] as const\n const scaleBgSize = () =>\n [\n 'auto',\n 'cover',\n 'contain',\n isArbitraryVariableSize,\n isArbitrarySize,\n { size: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleGradientStopPosition = () =>\n [isPercent, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleRadius = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n 'full',\n themeRadius,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleBorderWidth = () =>\n ['', isNumber, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'] as const\n const scaleBlendMode = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ] as const\n const scaleMaskImagePosition = () =>\n [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition] as const\n const scaleBlur = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeBlur,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()] as const\n\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n ],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest'],\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [\n {\n aspect: [\n 'auto',\n 'square',\n isFraction,\n isArbitraryValue,\n isArbitraryVariable,\n themeAspect,\n ],\n },\n ],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [\n { columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer] },\n ],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': scaleBreak() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': scaleBreak() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: scalePositionWithArbitrary() }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: scaleOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': scaleOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': scaleOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: scaleOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': scaleOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': scaleOverscroll() }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{ inset: scaleInset() }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': scaleInset() }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': scaleInset() }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [\n {\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset(),\n },\n ],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [\n {\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset(),\n },\n ],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{ 'inset-bs': scaleInset() }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{ 'inset-be': scaleInset() }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: scaleInset() }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: scaleInset() }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: scaleInset() }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: scaleInset() }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [\n {\n basis: [\n isFraction,\n 'full',\n 'auto',\n themeContainer,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['nowrap', 'wrap', 'wrap-reverse'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [\n {\n order: [\n isInteger,\n 'first',\n 'last',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': scaleGridTemplateColsRows() }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{ col: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': scaleGridTemplateColsRows() }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{ row: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': scaleGridAutoColsRows() }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': scaleGridAutoColsRows() }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: scaleUnambiguousSpacing() }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': scaleUnambiguousSpacing() }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': scaleUnambiguousSpacing() }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: [...scaleAlignPrimaryAxis(), 'normal'] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...scaleAlignPrimaryAxis()] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: [...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [\n { self: ['auto', ...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] },\n ],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': scaleAlignPrimaryAxis() }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: scaleUnambiguousSpacing() }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: scaleUnambiguousSpacing() }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{ pbs: scaleUnambiguousSpacing() }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{ pbe: scaleUnambiguousSpacing() }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: scaleUnambiguousSpacing() }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: scaleUnambiguousSpacing() }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: scaleUnambiguousSpacing() }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: scaleUnambiguousSpacing() }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: scaleMargin() }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: scaleMargin() }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: scaleMargin() }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: scaleMargin() }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: scaleMargin() }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{ mbs: scaleMargin() }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{ mbe: scaleMargin() }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: scaleMargin() }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: scaleMargin() }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: scaleMargin() }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: scaleMargin() }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{ 'space-x': scaleUnambiguousSpacing() }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{ 'space-y': scaleUnambiguousSpacing() }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n\n // --------------\n // --- Sizing ---\n // --------------\n\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{ size: scaleSizing() }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{ inline: ['auto', ...scaleSizingInline()] }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{ 'min-inline': ['auto', ...scaleSizingInline()] }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{ 'max-inline': ['none', ...scaleSizingInline()] }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{ block: ['auto', ...scaleSizingBlock()] }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{ 'min-block': ['auto', ...scaleSizingBlock()] }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{ 'max-block': ['none', ...scaleSizingBlock()] }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{ w: [themeContainer, 'screen', ...scaleSizing()] }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [\n {\n 'min-w': [\n themeContainer,\n 'screen',\n /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none',\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n themeContainer,\n 'screen',\n 'none',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n { screen: [themeBreakpoint] },\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{ h: ['screen', 'lh', ...scaleSizing()] }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{ 'min-h': ['screen', 'lh', 'none', ...scaleSizing()] }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{ 'max-h': ['screen', 'lh', ...scaleSizing()] }],\n\n // ------------------\n // --- Typography ---\n // ------------------\n\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [\n { text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [\n {\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight],\n },\n ],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [\n {\n 'font-stretch': [\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n isPercent,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [\n { font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont] },\n ],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{ 'font-features': [isArbitraryValue] }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [\n { 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber] },\n ],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryVariable, isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [\n { list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: scaleColor() }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: scaleColor() }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{ decoration: [...scaleLineStyle(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [\n {\n decoration: [\n isNumber,\n 'from-font',\n 'auto',\n isArbitraryVariable,\n isArbitraryLength,\n ],\n },\n ],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: scaleColor() }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [\n { 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: scaleUnambiguousSpacing() }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [\n { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n ],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{ wrap: ['break-word', 'anywhere', 'normal'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // -------------------\n // --- Backgrounds ---\n // -------------------\n\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: scaleBgPosition() }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: scaleBgRepeat() }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: scaleBgSize() }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n {\n linear: [\n { to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue],\n },\n isArbitraryVariableImage,\n isArbitraryImage,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: scaleColor() }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: scaleColor() }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: scaleColor() }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: scaleColor() }],\n\n // ---------------\n // --- Borders ---\n // ---------------\n\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: scaleRadius() }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': scaleRadius() }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': scaleRadius() }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': scaleRadius() }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': scaleRadius() }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': scaleRadius() }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': scaleRadius() }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': scaleRadius() }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': scaleRadius() }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': scaleRadius() }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': scaleRadius() }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': scaleRadius() }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': scaleRadius() }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': scaleRadius() }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': scaleRadius() }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: scaleBorderWidth() }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': scaleBorderWidth() }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': scaleBorderWidth() }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': scaleBorderWidth() }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': scaleBorderWidth() }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{ 'border-bs': scaleBorderWidth() }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{ 'border-be': scaleBorderWidth() }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': scaleBorderWidth() }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': scaleBorderWidth() }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': scaleBorderWidth() }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': scaleBorderWidth() }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{ 'divide-x': scaleBorderWidth() }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{ 'divide-y': scaleBorderWidth() }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{ divide: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: scaleColor() }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': scaleColor() }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': scaleColor() }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{ 'border-s': scaleColor() }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{ 'border-e': scaleColor() }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{ 'border-bs': scaleColor() }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{ 'border-be': scaleColor() }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': scaleColor() }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': scaleColor() }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': scaleColor() }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': scaleColor() }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: scaleColor() }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: [...scaleLineStyle(), 'none', 'hidden'] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [\n { 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [\n { outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: scaleColor() }],\n\n // ---------------\n // --- Effects ---\n // ---------------\n\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [\n {\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{ shadow: scaleColor() }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [\n {\n 'inset-shadow': [\n 'none',\n themeInsetShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{ 'inset-shadow': scaleColor() }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{ ring: scaleBorderWidth() }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{ ring: scaleColor() }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{ 'ring-offset': [isNumber, isArbitraryLength] }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{ 'ring-offset': scaleColor() }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{ 'inset-ring': scaleBorderWidth() }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{ 'inset-ring': scaleColor() }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [\n {\n 'text-shadow': [\n 'none',\n themeTextShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{ 'text-shadow': scaleColor() }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter'] }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': scaleBlendMode() }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [\n { 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n 'mask-no-clip',\n ],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{ mask: ['add', 'subtract', 'intersect', 'exclude'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{ 'mask-linear': [isNumber] }],\n 'mask-image-linear-from-pos': [{ 'mask-linear-from': scaleMaskImagePosition() }],\n 'mask-image-linear-to-pos': [{ 'mask-linear-to': scaleMaskImagePosition() }],\n 'mask-image-linear-from-color': [{ 'mask-linear-from': scaleColor() }],\n 'mask-image-linear-to-color': [{ 'mask-linear-to': scaleColor() }],\n 'mask-image-t-from-pos': [{ 'mask-t-from': scaleMaskImagePosition() }],\n 'mask-image-t-to-pos': [{ 'mask-t-to': scaleMaskImagePosition() }],\n 'mask-image-t-from-color': [{ 'mask-t-from': scaleColor() }],\n 'mask-image-t-to-color': [{ 'mask-t-to': scaleColor() }],\n 'mask-image-r-from-pos': [{ 'mask-r-from': scaleMaskImagePosition() }],\n 'mask-image-r-to-pos': [{ 'mask-r-to': scaleMaskImagePosition() }],\n 'mask-image-r-from-color': [{ 'mask-r-from': scaleColor() }],\n 'mask-image-r-to-color': [{ 'mask-r-to': scaleColor() }],\n 'mask-image-b-from-pos': [{ 'mask-b-from': scaleMaskImagePosition() }],\n 'mask-image-b-to-pos': [{ 'mask-b-to': scaleMaskImagePosition() }],\n 'mask-image-b-from-color': [{ 'mask-b-from': scaleColor() }],\n 'mask-image-b-to-color': [{ 'mask-b-to': scaleColor() }],\n 'mask-image-l-from-pos': [{ 'mask-l-from': scaleMaskImagePosition() }],\n 'mask-image-l-to-pos': [{ 'mask-l-to': scaleMaskImagePosition() }],\n 'mask-image-l-from-color': [{ 'mask-l-from': scaleColor() }],\n 'mask-image-l-to-color': [{ 'mask-l-to': scaleColor() }],\n 'mask-image-x-from-pos': [{ 'mask-x-from': scaleMaskImagePosition() }],\n 'mask-image-x-to-pos': [{ 'mask-x-to': scaleMaskImagePosition() }],\n 'mask-image-x-from-color': [{ 'mask-x-from': scaleColor() }],\n 'mask-image-x-to-color': [{ 'mask-x-to': scaleColor() }],\n 'mask-image-y-from-pos': [{ 'mask-y-from': scaleMaskImagePosition() }],\n 'mask-image-y-to-pos': [{ 'mask-y-to': scaleMaskImagePosition() }],\n 'mask-image-y-from-color': [{ 'mask-y-from': scaleColor() }],\n 'mask-image-y-to-color': [{ 'mask-y-to': scaleColor() }],\n 'mask-image-radial': [{ 'mask-radial': [isArbitraryVariable, isArbitraryValue] }],\n 'mask-image-radial-from-pos': [{ 'mask-radial-from': scaleMaskImagePosition() }],\n 'mask-image-radial-to-pos': [{ 'mask-radial-to': scaleMaskImagePosition() }],\n 'mask-image-radial-from-color': [{ 'mask-radial-from': scaleColor() }],\n 'mask-image-radial-to-color': [{ 'mask-radial-to': scaleColor() }],\n 'mask-image-radial-shape': [{ 'mask-radial': ['circle', 'ellipse'] }],\n 'mask-image-radial-size': [\n { 'mask-radial': [{ closest: ['side', 'corner'], farthest: ['side', 'corner'] }] },\n ],\n 'mask-image-radial-pos': [{ 'mask-radial-at': scalePosition() }],\n 'mask-image-conic-pos': [{ 'mask-conic': [isNumber] }],\n 'mask-image-conic-from-pos': [{ 'mask-conic-from': scaleMaskImagePosition() }],\n 'mask-image-conic-to-pos': [{ 'mask-conic-to': scaleMaskImagePosition() }],\n 'mask-image-conic-from-color': [{ 'mask-conic-from': scaleColor() }],\n 'mask-image-conic-to-color': [{ 'mask-conic-to': scaleColor() }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{ mask: ['alpha', 'luminance', 'match'] }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [\n { 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n ],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{ mask: scaleBgPosition() }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{ mask: scaleBgRepeat() }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{ mask: scaleBgSize() }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{ 'mask-type': ['alpha', 'luminance'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{ mask: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // ---------------\n // --- Filters ---\n // ---------------\n\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [\n {\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: scaleBlur() }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [\n {\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeDropShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{ 'drop-shadow': scaleColor() }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [\n {\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': scaleBlur() }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [\n { 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [\n { 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [\n { 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [\n { 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [\n { 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [\n { 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [\n { 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [\n { 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n\n // --------------\n // --- Tables ---\n // --------------\n\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': scaleUnambiguousSpacing() }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n '',\n 'all',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{ transition: ['normal', 'discrete'] }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue] }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [\n { ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------\n // --- Transforms ---\n // ------------------\n\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{ backface: ['hidden', 'visible'] }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [\n { perspective: [themePerspective, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{ 'perspective-origin': scalePositionWithArbitrary() }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: scaleRotate() }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{ 'rotate-x': scaleRotate() }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{ 'rotate-y': scaleRotate() }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{ 'rotate-z': scaleRotate() }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: scaleScale() }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': scaleScale() }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': scaleScale() }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{ 'scale-z': scaleScale() }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{ skew: scaleSkew() }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': scaleSkew() }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': scaleSkew() }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [\n { transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu'] },\n ],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{ origin: scalePositionWithArbitrary() }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{ transform: ['3d', 'flat'] }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{ translate: scaleTranslate() }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': scaleTranslate() }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': scaleTranslate() }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{ 'translate-z': scaleTranslate() }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: scaleColor() }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{ appearance: ['none', 'auto'] }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: scaleColor() }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [\n { scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light'] },\n ],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{ 'field-sizing': ['fixed', 'content'] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['auto', 'none'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', '', 'y', 'x'] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{ 'scroll-mbs': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{ 'scroll-mbe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{ 'scroll-pbs': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{ 'scroll-pbe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': scaleUnambiguousSpacing() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{ touch: ['auto', 'none', 'manipulation'] }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{ 'touch-pan': ['x', 'left', 'right'] }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{ 'touch-pan': ['y', 'up', 'down'] }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n {\n 'will-change': [\n 'auto',\n 'scroll',\n 'contents',\n 'transform',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n\n // -----------\n // --- SVG ---\n // -----------\n\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: ['none', ...scaleColor()] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [\n {\n stroke: [\n isNumber,\n isArbitraryVariableLength,\n isArbitraryLength,\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: ['none', ...scaleColor()] }],\n\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: [\n 'inset-x',\n 'inset-y',\n 'inset-bs',\n 'inset-be',\n 'start',\n 'end',\n 'top',\n 'right',\n 'bottom',\n 'left',\n ],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': [\n 'border-w-x',\n 'border-w-y',\n 'border-w-s',\n 'border-w-e',\n 'border-w-bs',\n 'border-w-be',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-x',\n 'border-color-y',\n 'border-color-s',\n 'border-color-e',\n 'border-color-bs',\n 'border-color-be',\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mbs',\n 'scroll-mbe',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pbs',\n 'scroll-pbe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch'],\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading'],\n },\n orderSensitiveModifiers: [\n '*',\n '**',\n 'after',\n 'backdrop',\n 'before',\n 'details-content',\n 'file',\n 'first-letter',\n 'first-line',\n 'marker',\n 'placeholder',\n 'selection',\n ],\n } as const satisfies Config<DefaultClassGroupIds, DefaultThemeGroupIds>\n}\n", "import { AnyConfig, ConfigExtension, NoInfer } from './types'\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nexport const mergeConfigs = <ClassGroupIds extends string, ThemeGroupIds extends string = never>(\n baseConfig: AnyConfig,\n {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {},\n }: ConfigExtension<ClassGroupIds, ThemeGroupIds>,\n) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize)\n overrideProperty(baseConfig, 'prefix', prefix)\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName)\n\n overrideConfigProperties(baseConfig.theme, override.theme)\n overrideConfigProperties(baseConfig.classGroups, override.classGroups)\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups)\n overrideConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n override.conflictingClassGroupModifiers,\n )\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers)\n\n mergeConfigProperties(baseConfig.theme, extend.theme)\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups)\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups)\n mergeConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n extend.conflictingClassGroupModifiers,\n )\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers')\n\n return baseConfig\n}\n\nconst overrideProperty = <T extends object, K extends keyof T>(\n baseObject: T,\n overrideKey: K,\n overrideValue: T[K] | undefined,\n) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue\n }\n}\n\nconst overrideConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n overrideObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key])\n }\n }\n}\n\nconst mergeConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n mergeObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key)\n }\n }\n}\n\nconst mergeArrayProperties = <Key extends string>(\n baseObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n mergeObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n key: Key,\n) => {\n const mergeValue = mergeObject[key]\n\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue\n }\n}\n", "import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { AnyConfig, ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\n\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\n\nexport const extendTailwindMerge = <\n AdditionalClassGroupIds extends string = never,\n AdditionalThemeGroupIds extends string = never,\n>(\n configExtension:\n | ConfigExtension<\n DefaultClassGroupIds | AdditionalClassGroupIds,\n DefaultThemeGroupIds | AdditionalThemeGroupIds\n >\n | CreateConfigSubsequent,\n ...createConfig: CreateConfigSubsequent[]\n) =>\n typeof configExtension === 'function'\n ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n : createTailwindMerge(\n () => mergeConfigs(getDefaultConfig(), configExtension),\n ...createConfig,\n )\n", "import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n", "import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function getPluginSettingsUrl(): string {\n // Extract the plugin UUID from the breadcrumb anchor in the Paperclip UI.\n const link = document.querySelector<HTMLAnchorElement>('a[href*=\"/settings/plugins/\"]');\n if (link) {\n const match = link.href.match(/\\/settings\\/plugins\\/([0-9a-f-]+)/);\n if (match) return `/instance/settings/plugins/${match[1]}`;\n }\n return `/instance/settings/plugins`;\n}\n\nexport function toPascalCase(str: string): string {\n return str\n .replace(/[^a-zA-Z0-9\\s\\-_]/g, '')\n .split(/[\\s\\-_]+/)\n .filter(Boolean)\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join('');\n}\n", "import * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst Input = React.forwardRef<HTMLInputElement, React.InputHTMLAttributes<HTMLInputElement>>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = 'Input';\n\nexport { Input };\n", "import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n destructive: 'bg-destructive text-white shadow-sm hover:bg-destructive/90',\n outline:\n 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',\n secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs',\n lg: 'h-10 rounded-md px-8',\n icon: 'h-9 w-9',\n },\n },\n defaultVariants: { variant: 'default', size: 'default' },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, children, ...props }, ref) => {\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<any>, {\n className: cn(\n buttonVariants({ variant, size, className }),\n (children as any).props?.className,\n ),\n ref,\n ...props,\n });\n }\n return (\n <button className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props}>\n {children}\n </button>\n );\n },\n);\nButton.displayName = 'Button';\n\nexport { Button, buttonVariants };\n", "/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n", "import { useWizard, useWizardDispatch, nextStep } from '../../context/WizardContext';\nimport { Input } from '../ui/input';\nimport { Button } from '../ui/button';\nimport { toPascalCase } from '../../lib/utils';\nimport { useCallback, useState } from 'react';\nimport { ChevronDown, ChevronRight, Settings2 } from 'lucide-react';\n\nconst ADAPTER_TYPES = [\n { value: 'claude_local', label: 'Claude Code', desc: 'Local Claude agent' },\n { value: 'codex_local', label: 'Codex', desc: 'Local Codex agent' },\n { value: 'opencode_local', label: 'OpenCode', desc: 'Local OpenCode agent' },\n { value: 'cursor', label: 'Cursor', desc: 'Cursor IDE agent' },\n { value: 'openclaw_gateway', label: 'OpenClaw', desc: 'OpenClaw gateway' },\n { value: 'hermes_local', label: 'Hermes', desc: 'Local Hermes agent' },\n];\n\nexport function StepName() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const [showCeoSetup, setShowCeoSetup] = useState(false);\n\n const handleNext = useCallback(() => {\n if (state.companyName.trim()) {\n dispatch({ type: 'GO_TO', step: nextStep(state) });\n }\n }, [state, dispatch]);\n\n const dirName = state.companyName.trim() ? toPascalCase(state.companyName) : 'YourCompany';\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Company name</h2>\n <p className=\"text-sm text-muted-foreground\">What should your AI company be called?</p>\n </div>\n\n <div className=\"space-y-3\">\n <Input\n placeholder=\"e.g. Acme Corp, Black Mesa, Initech\"\n value={state.companyName}\n onChange={(e) => dispatch({ type: 'SET_COMPANY_NAME', value: e.target.value })}\n onKeyDown={(e) => e.key === 'Enter' && handleNext()}\n autoFocus\n className=\"text-base h-11\"\n />\n <p className=\"text-xs text-muted-foreground\">\n Workspace directory: <code className=\"bg-muted px-1.5 py-0.5 rounded\">{dirName}/</code>\n </p>\n </div>\n\n {/* CEO Setup \u2014 collapsible, default collapsed */}\n <div className=\"rounded-lg border\">\n <button\n onClick={() => setShowCeoSetup((v) => !v)}\n className=\"w-full flex items-center gap-2 px-4 py-3 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors\"\n >\n <Settings2 className=\"h-4 w-4\" />\n CEO Agent Setup\n {showCeoSetup ? (\n <ChevronDown className=\"h-3.5 w-3.5 ml-auto\" />\n ) : (\n <ChevronRight className=\"h-3.5 w-3.5 ml-auto\" />\n )}\n {!showCeoSetup && (\n <span className=\"text-xs text-muted-foreground/60 ml-1\">\n {ADAPTER_TYPES.find((a) => a.value === state.ceoAdapter.type)?.label ||\n state.ceoAdapter.type}\n {state.ceoAdapter.cwd ? ` \u00B7 ${state.ceoAdapter.cwd}` : ''}\n {state.ceoAdapter.model ? ` \u00B7 ${state.ceoAdapter.model}` : ''}\n </span>\n )}\n </button>\n\n {showCeoSetup && (\n <div className=\"px-4 pb-4 space-y-4 border-t pt-4\">\n <p className=\"text-xs text-muted-foreground\">\n These defaults apply to all generated agents. You can override per agent in the review\n step.\n </p>\n\n {/* Adapter type */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Adapter type</label>\n <div className=\"grid grid-cols-3 gap-2\">\n {ADAPTER_TYPES.map((adapter) => (\n <button\n key={adapter.value}\n onClick={() =>\n dispatch({ type: 'SET_CEO_ADAPTER', adapter: { type: adapter.value } })\n }\n className={`flex flex-col items-center gap-1 rounded-lg border p-3 text-center transition-all duration-150 ${\n state.ceoAdapter.type === adapter.value\n ? 'border-foreground/30 bg-accent'\n : 'border-border hover:border-foreground/15 hover:bg-accent/50'\n }`}\n >\n <span className=\"text-xs font-medium\">{adapter.label}</span>\n <span className=\"text-[10px] text-muted-foreground\">{adapter.desc}</span>\n </button>\n ))}\n </div>\n </div>\n\n {/* Working directory */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">\n Working directory{' '}\n <span className=\"text-muted-foreground font-normal\">(optional)</span>\n </label>\n <Input\n placeholder=\"/path/to/project\"\n value={state.ceoAdapter.cwd}\n onChange={(e) =>\n dispatch({ type: 'SET_CEO_ADAPTER', adapter: { cwd: e.target.value } })\n }\n />\n <p className=\"text-xs text-muted-foreground\">\n Where generated agent files will be written. Leave empty to use the default\n Paperclip workspace.\n </p>\n </div>\n\n {/* Model */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">\n Model <span className=\"text-muted-foreground font-normal\">(optional)</span>\n </label>\n <Input\n placeholder=\"gpt-5.5\"\n value={state.ceoAdapter.model}\n onChange={(e) =>\n dispatch({ type: 'SET_CEO_ADAPTER', adapter: { model: e.target.value } })\n }\n />\n </div>\n </div>\n )}\n </div>\n\n <div className=\"flex justify-end\">\n <Button onClick={handleNext} disabled={!state.companyName.trim()}>\n Continue\n </Button>\n </div>\n </div>\n );\n}\n", "import { useWizard, useWizardDispatch, nextStep } from '../../context/WizardContext';\nimport { Input } from '../ui/input';\nimport { Button } from '../ui/button';\nimport { useCallback } from 'react';\n\nexport function StepGoal() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n\n const handleNext = useCallback(() => {\n dispatch({ type: 'GO_TO', step: nextStep(state) });\n }, [state, dispatch]);\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Company goal</h2>\n <p className=\"text-sm text-muted-foreground\">\n What's the top-level outcome? Lead with the primary deliverable or operating result; put\n secondary constraints such as compliance, security, or accessibility in the description as\n quality bars.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Goal title</label>\n <Input\n placeholder=\"e.g. Build and launch the core product\"\n value={state.goals[0]?.title || ''}\n onChange={(e) =>\n dispatch({\n type: 'SET_GOALS',\n goals: [{ title: e.target.value, description: state.goals[0]?.description || '' }],\n })\n }\n onKeyDown={(e) => e.key === 'Enter' && handleNext()}\n autoFocus\n />\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">\n Description <span className=\"text-muted-foreground font-normal\">(optional)</span>\n </label>\n <textarea\n className=\"flex min-h-[80px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring resize-none\"\n placeholder=\"Primary outcome and scope first. Then add constraints / quality bars such as compliance, security, accessibility, or performance.\"\n value={state.goals[0]?.description || ''}\n onChange={(e) =>\n dispatch({\n type: 'SET_GOALS',\n goals: [{ title: state.goals[0]?.title || '', description: e.target.value }],\n })\n }\n style={{ fieldSizing: 'content' } as React.CSSProperties}\n />\n </div>\n </div>\n\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"ghost\" onClick={handleNext}>\n Skip\n </Button>\n <Button onClick={handleNext}>Continue</Button>\n </div>\n </div>\n );\n}\n", "import { useCallback, useState } from 'react';\nimport {\n nextStep,\n useWizard,\n useWizardDispatch,\n type WizardProject,\n} from '../../context/WizardContext';\nimport { Button } from '../ui/button';\nimport { Input } from '../ui/input';\nimport { cn } from '../../lib/utils';\nimport { Check, GitBranch, Github, PlusCircle } from 'lucide-react';\nimport {\n type RepositoryMode,\n getRepositoryMode,\n getRepositoryRef,\n getRepositoryUrl,\n repositoryProjectFields,\n} from '../../lib/repository';\n\nfunction getPrimaryProject(stateProjects: WizardProject[]): WizardProject | null {\n return stateProjects.length > 0 ? stateProjects[0] : null;\n}\n\nfunction buildProject({\n existing,\n companyName,\n goalTitles,\n goalDescription,\n mode,\n repoUrl,\n repoRef,\n}: {\n existing: WizardProject | null;\n companyName: string;\n goalTitles: string[];\n goalDescription: string;\n mode: RepositoryMode;\n repoUrl: string;\n repoRef: string;\n}): WizardProject {\n const name = existing?.name?.trim() || companyName || 'Main Project';\n const description =\n existing?.description?.trim() || goalDescription || `Main project for ${companyName}`;\n const goals = existing?.goals?.length ? existing.goals : goalTitles;\n\n return {\n ...(existing ?? {}),\n name,\n description,\n goals,\n ...repositoryProjectFields(mode, repoUrl, repoRef),\n };\n}\n\nfunction ModeCard({\n icon: Icon,\n title,\n description,\n selected,\n onClick,\n}: {\n icon: React.ElementType;\n title: string;\n description: string;\n selected: boolean;\n onClick: () => void;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n 'flex items-start gap-4 rounded-lg border p-4 text-left transition-all duration-150',\n selected\n ? 'border-foreground/30 bg-accent'\n : 'border-border hover:border-foreground/15 hover:bg-accent/50',\n )}\n >\n <div\n className={cn(\n 'mt-0.5 h-8 w-8 rounded-md flex items-center justify-center shrink-0',\n selected ? 'bg-foreground text-background' : 'bg-secondary',\n )}\n >\n {selected ? <Check className=\"h-4 w-4\" /> : <Icon className=\"h-4 w-4\" />}\n </div>\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">{title}</p>\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n </div>\n </button>\n );\n}\n\nexport function StepRepository() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const existingProject = getPrimaryProject(state.projects);\n const initialMode = getRepositoryMode(existingProject);\n const [mode, setMode] = useState<RepositoryMode>(initialMode);\n const [repoUrl, setRepoUrl] = useState(getRepositoryUrl(existingProject));\n const [repoRef, setRepoRef] = useState(getRepositoryRef(existingProject, initialMode));\n\n const companyName = state.companyName.trim() || 'Company';\n const goalTitles = state.goals.map((g) => g.title).filter(Boolean);\n const goalDescription = state.goals[0]?.description || '';\n const externalRepoMissing = mode === 'external' && !repoUrl.trim();\n\n const chooseMode = (nextMode: RepositoryMode) => {\n setMode(nextMode);\n if (nextMode === 'new' && (!repoRef.trim() || repoRef.trim().startsWith('origin/'))) {\n setRepoRef('main');\n }\n };\n\n const handleNext = useCallback(() => {\n if (externalRepoMissing) return;\n const updatedProject = buildProject({\n existing: existingProject,\n companyName,\n goalTitles,\n goalDescription,\n mode,\n repoUrl,\n repoRef,\n });\n dispatch({ type: 'SET_PROJECTS', projects: [updatedProject, ...state.projects.slice(1)] });\n dispatch({ type: 'GO_TO', step: nextStep(state) });\n }, [\n companyName,\n dispatch,\n existingProject,\n externalRepoMissing,\n goalDescription,\n goalTitles,\n mode,\n repoRef,\n repoUrl,\n state,\n ]);\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Repository setup</h2>\n <p className=\"text-sm text-muted-foreground\">\n Should Paperclip create a fresh Git repository for this project, or should the agents work\n from an existing external repository such as GitHub?\n </p>\n </div>\n\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <ModeCard\n icon={PlusCircle}\n title=\"Create a new Git repository\"\n description=\"Start with a fresh local project workspace. Paperclip will initialize Git during bootstrap.\"\n selected={mode === 'new'}\n onClick={() => chooseMode('new')}\n />\n <ModeCard\n icon={Github}\n title=\"Use an external repository\"\n description=\"Connect an existing GitHub, GitLab, or other remote Git repository.\"\n selected={mode === 'external'}\n onClick={() => chooseMode('external')}\n />\n </div>\n\n {mode === 'external' ? (\n <div className=\"space-y-4 rounded-lg border p-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Repository URL</label>\n <Input\n placeholder=\"https://github.com/org/repo\"\n value={repoUrl}\n onChange={(e) => setRepoUrl(e.target.value)}\n autoFocus\n />\n <p className=\"text-xs text-muted-foreground\">\n Do not paste tokens or credentials into the URL. Configure provider access as\n Paperclip company secrets instead.\n </p>\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">\n Default ref <span className=\"text-muted-foreground font-normal\">(optional)</span>\n </label>\n <Input\n placeholder=\"Leave blank to use Paperclip/project default, or enter an explicit ref\"\n value={repoRef}\n onChange={(e) => setRepoRef(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleNext()}\n />\n </div>\n </div>\n ) : (\n <div className=\"space-y-4 rounded-lg border p-4\">\n <div className=\"flex items-start gap-3\">\n <GitBranch className=\"h-4 w-4 text-muted-foreground shrink-0 mt-0.5\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">Fresh repository workspace</p>\n <p className=\"text-sm text-muted-foreground\">\n The bootstrap will create project \"{existingProject?.name || companyName}\" with a\n local workspace and run{' '}\n <code className=\"bg-muted px-1 py-0.5 rounded\">git init</code>.\n </p>\n </div>\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">\n Initial branch <span className=\"text-muted-foreground font-normal\">(optional)</span>\n </label>\n <Input\n placeholder=\"main\"\n value={repoRef}\n onChange={(e) => setRepoRef(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleNext()}\n />\n </div>\n </div>\n )}\n\n <div className=\"flex justify-end\">\n <Button onClick={handleNext} disabled={externalRepoMissing}>\n Continue\n </Button>\n </div>\n </div>\n );\n}\n", "import type { WizardProject } from '../context/WizardContext';\n\nexport type RepositoryMode = 'new' | 'external';\n\nfunction resolveWorkspaceSourceType(project: WizardProject | null | undefined): string | undefined {\n const sourceType = project?.workspace?.sourceType || project?.workspaceSourceType;\n return typeof sourceType === 'string' ? sourceType.trim() : undefined;\n}\n\n/** Derives the repository mode from a project's current workspace config. */\nexport function getRepositoryMode(project: WizardProject | null | undefined): RepositoryMode {\n const workspace = project?.workspace;\n const sourceType = resolveWorkspaceSourceType(project);\n if (\n sourceType === 'git_repo' ||\n workspace?.repoUrl ||\n project?.repoUrl ||\n (typeof sourceType === 'string' && sourceType !== 'local_path' && sourceType.length > 0)\n ) {\n return 'external';\n }\n return 'new';\n}\n\nexport function isExternalRepository(project: WizardProject | null | undefined): boolean {\n const sourceType = resolveWorkspaceSourceType(project);\n return (\n (typeof sourceType === 'string' && sourceType !== 'local_path' && sourceType.length > 0) ||\n Boolean(project?.workspace?.repoUrl || project?.repoUrl)\n );\n}\n\nexport function getRepositoryUrl(project: WizardProject | null | undefined): string {\n return project?.workspace?.repoUrl || project?.repoUrl || '';\n}\n\nexport function getRepositoryRef(\n project: WizardProject | null | undefined,\n mode: RepositoryMode,\n): string {\n const configured =\n project?.workspace?.defaultRef ||\n project?.workspace?.repoRef ||\n project?.defaultRef ||\n project?.repoRef ||\n '';\n return configured || (mode === 'new' ? 'main' : '');\n}\n\nexport function normalizeExternalRepoRef(value: string): string {\n const trimmed = value.trim();\n if (!trimmed) return '';\n return /^[A-Za-z0-9._:/-]+$/.test(trimmed) ? trimmed : '';\n}\n\nexport function normalizeNewRepoBranch(value: string): string {\n const raw = value.trim().replace(/^origin\\//, '') || 'main';\n return /^[A-Za-z0-9._/-]+$/.test(raw) ? raw : 'main';\n}\n\n/**\n * Builds the repository-related fields of a project from the chosen mode.\n *\n * Repository selection deliberately carries NO `executionWorkspacePolicy`.\n * Isolated worktrees are an instance/project policy and are applied by the\n * assembler only when Paperclip's isolated-workspace experiment is enabled.\n */\nexport function repositoryProjectFields(\n mode: RepositoryMode,\n repoUrl: string,\n repoRef: string,\n): Pick<\n WizardProject,\n | 'repoUrl'\n | 'repoRef'\n | 'defaultRef'\n | 'workspace'\n | 'executionWorkspacePolicy'\n | 'workspaceSourceType'\n> {\n if (mode === 'external') {\n const ref = normalizeExternalRepoRef(repoRef);\n const url = repoUrl.trim();\n return {\n workspaceSourceType: 'git_repo',\n repoUrl: url,\n ...(ref ? { repoRef: ref, defaultRef: ref } : { repoRef: undefined, defaultRef: undefined }),\n workspace: {\n sourceType: 'git_repo',\n repoUrl: url,\n ...(ref ? { repoRef: ref, defaultRef: ref } : {}),\n isPrimary: true,\n },\n executionWorkspacePolicy: undefined,\n };\n }\n\n const branch = normalizeNewRepoBranch(repoRef);\n return {\n workspaceSourceType: 'local_path',\n repoUrl: undefined,\n repoRef: undefined,\n defaultRef: branch,\n workspace: {\n sourceType: 'local_path',\n defaultRef: branch,\n setupCommand: `git init -b ${branch}`,\n isPrimary: true,\n },\n executionWorkspacePolicy: undefined,\n };\n}\n", "import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground shadow',\n secondary: 'border-transparent bg-secondary text-secondary-foreground',\n destructive: 'border-transparent bg-destructive text-white shadow',\n outline: 'text-foreground',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return <div className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n", "import { useWizard, useWizardDispatch, nextStep } from '../../context/WizardContext';\nimport { Button } from '../ui/button';\nimport { Badge } from '../ui/badge';\nimport { cn } from '../../lib/utils';\nimport { Check, Zap, Shield, Rocket, FlaskConical, Atom, Settings } from 'lucide-react';\n\nconst PRESET_ICONS: Record<string, React.ElementType> = {\n fast: Zap,\n quality: Shield,\n startup: Rocket,\n research: FlaskConical,\n rad: Atom,\n full: Settings,\n};\n\nexport function StepPreset() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n\n const handleSelect = (name: string) => {\n dispatch({ type: 'SET_PRESET', name });\n };\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Team preset</h2>\n <p className=\"text-sm text-muted-foreground\">\n Choose a pre-configured team setup, or go custom.\n </p>\n </div>\n\n <div className=\"grid gap-3 max-h-[60vh] overflow-y-auto pr-1\">\n {state.presets.map((preset) => {\n const Icon = PRESET_ICONS[preset.name] || Settings;\n const selected = state.presetName === preset.name;\n return (\n <button\n key={preset.name}\n onClick={() => handleSelect(preset.name)}\n className={cn(\n 'flex items-start gap-4 rounded-lg border p-4 text-left transition-all duration-150',\n selected\n ? 'border-foreground/30 bg-accent'\n : 'border-border hover:border-foreground/15 hover:bg-accent/50',\n )}\n >\n <div\n className={cn(\n 'mt-0.5 h-8 w-8 rounded-md flex items-center justify-center shrink-0',\n selected ? 'bg-foreground text-background' : 'bg-secondary',\n )}\n >\n {selected ? <Check className=\"h-4 w-4\" /> : <Icon className=\"h-4 w-4\" />}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium text-sm capitalize\">{preset.name}</span>\n {preset.modules && (\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n {preset.modules.length} modules\n </Badge>\n )}\n {preset.roles && preset.roles.length > 0 && (\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n +{preset.roles.length} roles\n </Badge>\n )}\n </div>\n <p className=\"text-sm text-muted-foreground mt-0.5\">{preset.description}</p>\n {preset.constraints && preset.constraints.length > 0 && (\n <p className=\"text-xs text-muted-foreground/70 mt-1\">\n {preset.constraints.join(' \u00B7 ')}\n </p>\n )}\n </div>\n </button>\n );\n })}\n\n {/* Custom option */}\n <button\n onClick={() => handleSelect('custom')}\n className={cn(\n 'flex items-start gap-4 rounded-lg border border-dashed p-4 text-left transition-all duration-150',\n state.presetName === 'custom'\n ? 'border-foreground/30 bg-accent'\n : 'border-border hover:border-foreground/15 hover:bg-accent/50',\n )}\n >\n <div\n className={cn(\n 'mt-0.5 h-8 w-8 rounded-md flex items-center justify-center shrink-0',\n state.presetName === 'custom' ? 'bg-foreground text-background' : 'bg-secondary',\n )}\n >\n {state.presetName === 'custom' ? (\n <Check className=\"h-4 w-4\" />\n ) : (\n <Settings className=\"h-4 w-4\" />\n )}\n </div>\n <div>\n <span className=\"font-medium text-sm\">Custom</span>\n <p className=\"text-sm text-muted-foreground mt-0.5\">Pick modules and roles manually</p>\n </div>\n </button>\n </div>\n\n <div className=\"flex justify-end\">\n <Button\n onClick={() => dispatch({ type: 'GO_TO', step: nextStep(state) })}\n disabled={!state.presetName}\n >\n Continue\n </Button>\n </div>\n </div>\n );\n}\n", "import { useWizard, useWizardDispatch, nextStep } from '../../context/WizardContext';\nimport { Button } from '../ui/button';\nimport { Badge } from '../ui/badge';\nimport { cn } from '../../lib/utils';\nimport { Check, Lock } from 'lucide-react';\n\nexport function StepModules() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n\n // Build module index for dependency resolution\n const modulesByName = new Map(state.modules.map((m) => [m.name, m]));\n const selected = new Set(state.selectedModules);\n\n const getAllDependencies = (moduleName: string, seen = new Set<string>()): Set<string> => {\n const mod = modulesByName.get(moduleName);\n if (!mod) return seen;\n\n for (const dep of mod.requires ?? []) {\n if (seen.has(dep)) continue;\n seen.add(dep);\n getAllDependencies(dep, seen);\n }\n\n return seen;\n };\n\n const getBlockingDependents = (moduleName: string): string[] => {\n const blockers: string[] = [];\n for (const selectedName of selected) {\n if (selectedName === moduleName) continue;\n if (getAllDependencies(selectedName).has(moduleName)) {\n blockers.push(selectedName);\n }\n }\n return blockers;\n };\n\n const toggle = (name: string) => {\n const mod = state.modules.find((m) => m.name === name);\n if (!mod) return;\n\n const next = new Set(selected);\n if (next.has(name)) {\n // Block deselection if any selected module depends on this one (directly or transitively)\n if (getBlockingDependents(name).length > 0) return;\n next.delete(name);\n } else {\n next.add(name);\n // Auto-add full transitive dependency chain\n for (const dep of getAllDependencies(name)) {\n next.add(dep);\n }\n }\n dispatch({ type: 'SET_MODULES', modules: [...next] });\n };\n\n const isLocked = (name: string) => {\n return selected.has(name) && getBlockingDependents(name).length > 0;\n };\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Modules</h2>\n <p className=\"text-sm text-muted-foreground\">\n Capabilities to enable. Dependencies are auto-selected.\n </p>\n </div>\n\n <div className=\"grid gap-2 max-h-[60vh] overflow-y-auto pr-1\">\n {state.modules.map((mod) => {\n const isSelected = selected.has(mod.name);\n const locked = isLocked(mod.name);\n const capCount = mod.capabilities?.length ?? 0;\n return (\n <button\n key={mod.name}\n onClick={() => toggle(mod.name)}\n disabled={locked && isSelected}\n className={cn(\n 'flex items-center gap-3 rounded-lg border p-3 text-left transition-all duration-150',\n isSelected\n ? 'border-foreground/20 bg-accent'\n : 'border-border hover:border-foreground/10 hover:bg-accent/30',\n locked && isSelected && 'opacity-80',\n )}\n >\n <div\n className={cn(\n 'h-5 w-5 rounded flex items-center justify-center shrink-0 border mt-0.5',\n isSelected ? 'bg-foreground border-foreground text-background' : 'border-input',\n )}\n >\n {isSelected &&\n (locked ? <Lock className=\"h-3 w-3\" /> : <Check className=\"h-3 w-3\" />)}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"text-sm font-medium\">{mod.name}</span>\n {mod.activatesWithRoles && mod.activatesWithRoles.length > 0 && (\n <Badge variant=\"outline\" className=\"text-[10px]\">\n needs {mod.activatesWithRoles.join('/')}\n </Badge>\n )}\n {(mod.issues?.length ?? mod.tasks?.length ?? 0) > 0 && (\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n {mod.issues?.length ?? mod.tasks?.length ?? 0} tasks\n </Badge>\n )}\n {capCount > 0 && (\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n {capCount} {capCount === 1 ? 'capability' : 'capabilities'}\n </Badge>\n )}\n </div>\n <p className=\"text-xs text-muted-foreground mt-0.5\">{mod.description}</p>\n {capCount > 0 && (\n <div className=\"flex flex-wrap gap-x-3 gap-y-0.5 mt-1\">\n {mod.capabilities!.map((cap) => (\n <span key={cap.skill} className=\"text-[11px] text-muted-foreground/70\">\n {cap.skill}{' '}\n <span className=\"text-muted-foreground/40\">\u2192 {cap.owners.join(', ')}</span>\n </span>\n ))}\n </div>\n )}\n {mod.requires && mod.requires.length > 0 && (\n <p className=\"text-[11px] text-muted-foreground/60 mt-0.5\">\n requires {mod.requires.join(', ')}\n </p>\n )}\n </div>\n </button>\n );\n })}\n </div>\n\n <div className=\"flex items-center justify-between\">\n <p className=\"text-xs text-muted-foreground\">\n {selected.size} of {state.modules.length} selected\n </p>\n <Button onClick={() => dispatch({ type: 'GO_TO', step: nextStep(state) })}>Continue</Button>\n </div>\n </div>\n );\n}\n", "import { useWizard, useWizardDispatch, nextStep } from '../../context/WizardContext';\nimport { Button } from '../ui/button';\nimport { Badge } from '../ui/badge';\nimport { cn } from '../../lib/utils';\nimport { Check, Crown } from 'lucide-react';\n\nexport function StepRoles() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n\n const baseRoles = state.roles.filter((r) => r._base);\n const extraRoles = state.roles.filter((r) => !r._base);\n const selected = new Set(state.selectedRoles);\n\n const toggle = (name: string) => {\n const next = new Set(selected);\n if (next.has(name)) {\n next.delete(name);\n } else {\n next.add(name);\n }\n dispatch({ type: 'SET_ROLES', roles: [...next] });\n };\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Team roles</h2>\n <p className=\"text-sm text-muted-foreground\">\n Base roles are always included. Add specialists as needed.\n </p>\n </div>\n\n <div className=\"max-h-[60vh] overflow-y-auto pr-1 space-y-4\">\n {/* Base roles (locked) */}\n <div className=\"space-y-2\">\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n Base team\n </p>\n <div className=\"grid gap-2\">\n {baseRoles.map((role) => (\n <div\n key={role.name}\n className=\"flex items-start gap-3 rounded-lg border border-foreground/10 bg-accent/50 p-3\"\n >\n <div className=\"h-5 w-5 rounded flex items-center justify-center shrink-0 bg-foreground text-background mt-0.5\">\n <Crown className=\"h-3 w-3\" />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">{role.title}</span>\n {role.division && (\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {role.division}\n </Badge>\n )}\n <Badge variant=\"secondary\" className=\"ml-auto text-[10px]\">\n required\n </Badge>\n </div>\n <p className=\"text-xs text-muted-foreground mt-0.5\">{role.description}</p>\n {role.tagline && (\n <p className=\"text-[11px] text-muted-foreground/60 mt-0.5 italic\">\n {role.tagline}\n </p>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {/* Extra roles (toggleable) */}\n <div className=\"space-y-2\">\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n Specialists\n </p>\n <div className=\"grid gap-2\">\n {extraRoles.map((role) => {\n const isSelected = selected.has(role.name);\n return (\n <button\n key={role.name}\n onClick={() => toggle(role.name)}\n className={cn(\n 'flex items-start gap-3 rounded-lg border p-3 text-left transition-all duration-150',\n isSelected\n ? 'border-foreground/20 bg-accent'\n : 'border-border hover:border-foreground/10 hover:bg-accent/30',\n )}\n >\n <div\n className={cn(\n 'h-5 w-5 rounded flex items-center justify-center shrink-0 border mt-0.5',\n isSelected\n ? 'bg-foreground border-foreground text-background'\n : 'border-input',\n )}\n >\n {isSelected && <Check className=\"h-3 w-3\" />}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"text-sm font-medium\">{role.title}</span>\n {role.division && (\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {role.division}\n </Badge>\n )}\n {role.reportsTo && (\n <span className=\"text-[10px] text-muted-foreground\">\n reports to {role.reportsTo}\n </span>\n )}\n </div>\n <p className=\"text-xs text-muted-foreground mt-0.5\">{role.description}</p>\n {role.tagline && (\n <p className=\"text-[11px] text-muted-foreground/60 mt-0.5 italic\">\n {role.tagline}\n </p>\n )}\n {isSelected && role.enhances && role.enhances.length > 0 && (\n <div className=\"flex flex-wrap gap-x-3 gap-y-0.5 mt-1\">\n {role.enhances.map((e, i) => (\n <span key={i} className=\"text-[11px] text-muted-foreground/70\">\n + {e}\n </span>\n ))}\n </div>\n )}\n </div>\n </button>\n );\n })}\n </div>\n </div>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <p className=\"text-xs text-muted-foreground\">\n {baseRoles.length + selected.size} total agents\n </p>\n <Button onClick={() => dispatch({ type: 'GO_TO', step: nextStep(state) })}>Continue</Button>\n </div>\n </div>\n );\n}\n", "import { useEffect, useRef, useState } from 'react';\nimport { useWizard, useWizardDispatch } from '../../context/WizardContext';\nimport { usePluginAction } from '@paperclipai/plugin-sdk/ui';\nimport { Button } from '../ui/button';\nimport { ConfigReview } from '../ConfigReview';\nimport { AlertTriangle, Settings } from 'lucide-react';\nimport { getPluginSettingsUrl } from '../../lib/utils';\n\nexport function StepSummary() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const checkAuth = usePluginAction('check-auth');\n const [authError, setAuthError] = useState<string | null>(null);\n const checked = useRef(false);\n\n useEffect(() => {\n if (checked.current) return;\n checked.current = true;\n checkAuth({})\n .then((result: any) => {\n if (!result?.ok) setAuthError(result?.error || 'Authentication failed');\n })\n .catch((err: any) => {\n setAuthError(err?.message || 'Could not verify API connection');\n });\n }, []);\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Review</h2>\n <p className=\"text-sm text-muted-foreground\">\n Confirm your company configuration before creating. Click any field to edit.\n </p>\n </div>\n\n <ConfigReview />\n\n {authError && (\n <div className=\"flex items-start gap-3 rounded-lg border border-amber-500/30 bg-amber-500/10 p-4\">\n <AlertTriangle className=\"h-4 w-4 text-amber-500 shrink-0 mt-0.5\" />\n <div className=\"space-y-2 flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-amber-800 dark:text-amber-200\">\n API connection failed\n </p>\n <p className=\"text-xs text-amber-700 dark:text-amber-300 wrap-break-word\">\n {authError}\n </p>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"text-xs\"\n onClick={() => {\n window.location.href = getPluginSettingsUrl();\n }}\n >\n <Settings className=\"h-3 w-3 mr-1.5\" />\n Plugin Settings\n </Button>\n </div>\n </div>\n )}\n\n <div className=\"flex justify-end gap-3\">\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'GO_TO', step: 'roles' })}>\n Back\n </Button>\n <Button\n onClick={() =>\n dispatch({ type: 'GO_TO', step: state.path === 'update' ? 'preview' : 'provision' })\n }\n >\n {state.existingCompanyId ? 'Preview Changes' : 'Create Company'}\n </Button>\n </div>\n </div>\n );\n}\n", "import { useEffect, useState, useCallback, useRef } from 'react';\nimport {\n useWizard,\n useWizardDispatch,\n getAllRoles,\n getActiveModules,\n} from '../context/WizardContext';\nimport { usePluginAction } from '@paperclipai/plugin-sdk/ui';\nimport type { ModuleData, RoleData } from '../types';\nimport type { WizardProject } from '../context/WizardContext';\nimport { Badge } from './ui/badge';\nimport { Card, CardContent } from './ui/card';\nimport { cn, toPascalCase } from '../lib/utils';\nimport {\n type RepositoryMode,\n getRepositoryMode,\n isExternalRepository,\n getRepositoryRef,\n getRepositoryUrl,\n repositoryProjectFields,\n} from '../lib/repository';\nimport {\n HoverCardRoot,\n HoverCardTrigger,\n HoverCardContent,\n HoverCardPortal,\n} from './ui/hover-card';\nimport {\n Building2,\n Target,\n Blocks,\n Users,\n AlertTriangle,\n Pencil,\n Check,\n X,\n ChevronDown,\n ChevronRight,\n Cpu,\n ListChecks,\n Workflow,\n ArrowUpRight,\n Crown,\n Wrench,\n Shield,\n Layers,\n FileText,\n Loader2,\n RefreshCw,\n RotateCcw,\n GitBranch,\n Github,\n PlusCircle,\n} from 'lucide-react';\n\n// --- Shared helpers ---\n\nfunction SummaryRow({\n icon: Icon,\n label,\n onEdit,\n children,\n}: {\n icon: React.ElementType;\n label: string;\n onEdit?: () => void;\n children: React.ReactNode;\n}) {\n return (\n <div className=\"group flex items-start gap-3 py-3\">\n <Icon className=\"h-4 w-4 mt-0.5 text-muted-foreground shrink-0\" />\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 mb-1\">\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n {label}\n </p>\n {onEdit && (\n <button\n onClick={onEdit}\n className=\"opacity-0 group-hover:opacity-100 transition-opacity text-muted-foreground hover:text-foreground\"\n >\n <Pencil className=\"h-3 w-3\" />\n </button>\n )}\n </div>\n <div className=\"text-sm\">{children}</div>\n </div>\n </div>\n );\n}\n\nfunction InlineEdit({\n value,\n onSave,\n onCancel,\n multiline,\n placeholder,\n}: {\n value: string;\n onSave: (v: string) => void;\n onCancel: () => void;\n multiline?: boolean;\n placeholder?: string;\n}) {\n const [draft, setDraft] = useState(value);\n const InputTag = multiline ? 'textarea' : 'input';\n\n return (\n <div className=\"flex gap-1.5 items-start\">\n <InputTag\n className={cn(\n 'flex w-full rounded-md border border-input bg-transparent px-2 py-1 text-sm shadow-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n multiline && 'min-h-[60px] resize-none',\n )}\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n placeholder={placeholder}\n autoFocus\n onKeyDown={(e) => {\n if (e.key === 'Enter' && !e.shiftKey && !multiline) {\n e.preventDefault();\n onSave(draft);\n }\n if (e.key === 'Escape') onCancel();\n }}\n />\n <button\n onClick={() => onSave(draft)}\n className=\"h-7 w-7 rounded flex items-center justify-center border hover:bg-accent shrink-0\"\n >\n <Check className=\"h-3.5 w-3.5\" />\n </button>\n <button\n onClick={onCancel}\n className=\"h-7 w-7 rounded flex items-center justify-center border hover:bg-accent shrink-0\"\n >\n <X className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n );\n}\n\n/** Inline editor for the primary project's repository setup (new vs. external). */\nfunction RepositoryEdit({\n project,\n onSave,\n onCancel,\n}: {\n project: WizardProject | null;\n onSave: (repo: ReturnType<typeof repositoryProjectFields>) => void;\n onCancel: () => void;\n}) {\n const initialMode = getRepositoryMode(project);\n const [mode, setMode] = useState<RepositoryMode>(initialMode);\n const [repoUrl, setRepoUrl] = useState(getRepositoryUrl(project));\n const [repoRef, setRepoRef] = useState(getRepositoryRef(project, initialMode));\n\n const chooseMode = (next: RepositoryMode) => {\n setMode(next);\n if (next === 'new' && (!repoRef.trim() || repoRef.trim().startsWith('origin/'))) {\n setRepoRef('main');\n }\n };\n\n const externalRepoMissing = mode === 'external' && !repoUrl.trim();\n\n const save = () => {\n if (externalRepoMissing) return;\n onSave(repositoryProjectFields(mode, repoUrl, repoRef));\n };\n\n const modeButton = (value: RepositoryMode, Icon: React.ElementType, label: string) => (\n <button\n type=\"button\"\n onClick={() => chooseMode(value)}\n className={cn(\n 'flex items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-xs transition-colors',\n mode === value\n ? 'border-foreground/30 bg-accent text-foreground'\n : 'border-border text-muted-foreground hover:bg-accent/50',\n )}\n >\n <Icon className=\"h-3.5 w-3.5\" />\n {label}\n </button>\n );\n\n const inputClass =\n 'flex w-full rounded-md border border-input bg-transparent px-2 py-1 text-sm shadow-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring';\n\n return (\n <div className=\"space-y-2.5 py-1\">\n <div className=\"flex gap-2\">\n {modeButton('new', PlusCircle, 'New repository')}\n {modeButton('external', Github, 'Existing repository')}\n </div>\n\n {mode === 'external' ? (\n <div className=\"space-y-2\">\n <input\n className={inputClass}\n value={repoUrl}\n onChange={(e) => setRepoUrl(e.target.value)}\n placeholder=\"https://github.com/org/repo\"\n autoFocus\n onKeyDown={(e) => {\n if (e.key === 'Enter') save();\n if (e.key === 'Escape') onCancel();\n }}\n />\n <input\n className={inputClass}\n value={repoRef}\n onChange={(e) => setRepoRef(e.target.value)}\n placeholder=\"Leave blank to use Paperclip/project default, or enter an explicit ref\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') save();\n if (e.key === 'Escape') onCancel();\n }}\n />\n <p className=\"text-xs text-muted-foreground\">\n Do not paste tokens or credentials. Configure provider access as company secrets.\n </p>\n </div>\n ) : (\n <input\n className={inputClass}\n value={repoRef}\n onChange={(e) => setRepoRef(e.target.value)}\n placeholder=\"Initial branch (e.g. main)\"\n autoFocus\n onKeyDown={(e) => {\n if (e.key === 'Enter') save();\n if (e.key === 'Escape') onCancel();\n }}\n />\n )}\n\n <div className=\"flex items-center gap-1.5\">\n <button\n type=\"button\"\n onClick={save}\n disabled={externalRepoMissing}\n className=\"flex items-center gap-1 text-xs px-2 py-1 rounded border hover:bg-accent disabled:opacity-50\"\n >\n <Check className=\"h-3 w-3\" /> Save\n </button>\n <button\n type=\"button\"\n onClick={onCancel}\n className=\"flex items-center gap-1 text-xs px-2 py-1 rounded border hover:bg-accent\"\n >\n <X className=\"h-3 w-3\" /> Cancel\n </button>\n </div>\n </div>\n );\n}\n\n// --- Detailed view components ---\n\nfunction ModuleDetail({ mod, allRoleNames }: { mod: ModuleData; allRoleNames: Set<string> }) {\n const moduleIssues = mod.issues ?? mod.tasks ?? [];\n const hasCapabilities = mod.capabilities && mod.capabilities.length > 0;\n const hasTasks = moduleIssues.length > 0;\n const hasRequires = mod.requires && mod.requires.length > 0;\n const hasRoleGating = mod.activatesWithRoles && mod.activatesWithRoles.length > 0;\n const isGated = hasRoleGating && !mod.activatesWithRoles!.some((r) => allRoleNames.has(r));\n\n return (\n <div className={cn('rounded-lg border p-3 space-y-2.5', isGated && 'opacity-50')}>\n <div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">{mod.name}</span>\n {isGated && (\n <Badge\n variant=\"outline\"\n className=\"text-[10px] border-amber-500/40 text-amber-700 dark:text-amber-400\"\n >\n inactive\n </Badge>\n )}\n </div>\n {mod.description && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">{mod.description}</p>\n )}\n </div>\n\n {hasRequires && (\n <div className=\"flex items-center gap-1.5 text-xs text-muted-foreground\">\n <Layers className=\"h-3 w-3 shrink-0\" />\n <span>Requires: {mod.requires!.join(', ')}</span>\n </div>\n )}\n\n {hasRoleGating && (\n <div className=\"flex items-center gap-1.5 text-xs text-muted-foreground\">\n <Shield className=\"h-3 w-3 shrink-0\" />\n <span>Activates with: {mod.activatesWithRoles!.join(', ')}</span>\n </div>\n )}\n\n {hasCapabilities && (\n <div className=\"space-y-1\">\n <p className=\"text-[10px] font-medium text-muted-foreground uppercase tracking-wider flex items-center gap-1\">\n <Workflow className=\"h-3 w-3\" /> Capabilities\n </p>\n <div className=\"space-y-1\">\n {mod.capabilities!.map((cap) => (\n <div\n key={cap.skill}\n className=\"flex items-start gap-2 rounded bg-accent/50 px-2 py-1.5\"\n >\n <Wrench className=\"h-3 w-3 mt-0.5 text-muted-foreground shrink-0\" />\n <div className=\"text-xs\">\n <span className=\"font-medium\">{cap.skill}</span>\n <span className=\"text-muted-foreground ml-1.5\">{cap.owners.join(' \u2192 ')}</span>\n {cap.fallbackSkill && (\n <span className=\"text-muted-foreground ml-1\">\n (fallback: {cap.fallbackSkill})\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {hasTasks && (\n <div className=\"space-y-1\">\n <p className=\"text-[10px] font-medium text-muted-foreground uppercase tracking-wider flex items-center gap-1\">\n <ListChecks className=\"h-3 w-3\" /> Initial tasks\n </p>\n <div className=\"space-y-1\">\n {moduleIssues.map((task) => (\n <div\n key={task.title}\n className=\"flex items-start gap-2 rounded bg-accent/50 px-2 py-1.5\"\n >\n <ChevronRight className=\"h-3 w-3 mt-0.5 text-muted-foreground shrink-0\" />\n <div className=\"text-xs\">\n <span className=\"font-medium\">{task.title}</span>\n <span className=\"text-muted-foreground ml-1.5\">\u2192 {task.assignTo}</span>\n {task.description && (\n <p className=\"text-muted-foreground mt-0.5\">{task.description}</p>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction RoleDetail({ role }: { role: RoleData }) {\n const adapter = role.adapter as { model?: string; effort?: string } | undefined;\n\n return (\n <div className=\"rounded-lg border p-3 space-y-2\">\n <div>\n <div className=\"flex items-center gap-2\">\n {role._base && <Crown className=\"h-3.5 w-3.5 text-muted-foreground\" />}\n <span className=\"text-sm font-medium\">{role.title}</span>\n <span className=\"text-xs text-muted-foreground\">{role.name}</span>\n </div>\n <p className=\"text-xs text-muted-foreground mt-0.5\">{role.description}</p>\n </div>\n\n <div className=\"flex flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground\">\n {role.paperclipRole && (\n <span className=\"flex items-center gap-1\">\n <Cpu className=\"h-3 w-3\" />\n {role.paperclipRole}\n </span>\n )}\n {role.reportsTo && (\n <span className=\"flex items-center gap-1\">\n <ArrowUpRight className=\"h-3 w-3\" />\n reports to {role.reportsTo}\n </span>\n )}\n {adapter?.model && (\n <span className=\"flex items-center gap-1\">\n <Wrench className=\"h-3 w-3\" />\n {adapter.model}\n {adapter.effort && ` (${adapter.effort})`}\n </span>\n )}\n </div>\n\n {role.enhances && role.enhances.length > 0 && (\n <div className=\"space-y-1\">\n <p className=\"text-[10px] font-medium text-muted-foreground uppercase tracking-wider\">\n Enhances\n </p>\n <ul className=\"space-y-0.5\">\n {role.enhances.map((e, i) => (\n <li key={i} className=\"text-xs text-muted-foreground flex items-start gap-1.5\">\n <span className=\"text-foreground/30 mt-px\">\u00B7</span>\n {e}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n );\n}\n\n// --- File preview section ---\n\n/** Groups flat file paths by their first-level directory prefix. */\nfunction groupFiles(files: Record<string, string>): Array<{ group: string; paths: string[] }> {\n const map = new Map<string, string[]>();\n for (const p of Object.keys(files).sort()) {\n // For agents/, group by agents/<role>/ (two levels deep)\n const parts = p.split('/');\n let group: string;\n if (parts.length >= 3 && parts[0] === 'agents') {\n group = `${parts[0]}/${parts[1]}`;\n } else {\n group = parts.length > 1 ? parts[0] : '';\n }\n if (!map.has(group)) map.set(group, []);\n map.get(group)!.push(p);\n }\n // Sort: root files first, then alphabetical groups\n const result: Array<{ group: string; paths: string[] }> = [];\n if (map.has('')) result.push({ group: '', paths: map.get('')! });\n for (const [group, paths] of map) {\n if (group !== '') result.push({ group, paths });\n }\n return result;\n}\n\nfunction FileEntry({\n filePath,\n content,\n override,\n onSaveOverride,\n onResetOverride,\n}: {\n filePath: string;\n content: string;\n override: string | undefined;\n onSaveOverride: (content: string) => void;\n onResetOverride: () => void;\n}) {\n const [expanded, setExpanded] = useState(false);\n const [editing, setEditing] = useState(false);\n const [draft, setDraft] = useState(override ?? content);\n // Show filename relative to group: for \"agents/ceo/skills/foo.md\" under group \"agents/ceo\", show \"skills/foo.md\"\n const parts = filePath.split('/');\n const fileName =\n parts.length >= 3 && parts[0] === 'agents' ? parts.slice(2).join('/') : parts.pop()!;\n const hasOverride = override !== undefined;\n\n const handleEdit = () => {\n setDraft(override ?? content);\n setEditing(true);\n setExpanded(true);\n };\n\n const handleSave = () => {\n onSaveOverride(draft);\n setEditing(false);\n };\n\n const handleCancel = () => {\n setDraft(override ?? content);\n setEditing(false);\n };\n\n const handleReset = () => {\n setDraft(content);\n onResetOverride();\n setEditing(false);\n };\n\n const displayContent = override ?? content;\n\n return (\n <div\n className={cn('rounded border', hasOverride && 'border-blue-400/60 dark:border-blue-500/50')}\n >\n <button\n className=\"w-full flex items-center gap-2 px-3 py-2 text-left hover:bg-accent/50 transition-colors\"\n onClick={() => {\n if (!editing) setExpanded((v) => !v);\n }}\n >\n <FileText className=\"h-3.5 w-3.5 text-muted-foreground shrink-0\" />\n <span className=\"text-xs font-medium flex-1 min-w-0 truncate\">\n {fileName}\n {hasOverride && (\n <span className=\"ml-1.5 text-[10px] text-blue-600 dark:text-blue-400 font-normal\">\n edited\n </span>\n )}\n </span>\n {!editing && (\n <span\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation();\n handleEdit();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.stopPropagation();\n handleEdit();\n }\n }}\n className=\"opacity-0 group-hover:opacity-100 transition-opacity text-muted-foreground hover:text-foreground p-0.5 rounded\"\n >\n <Pencil className=\"h-3 w-3\" />\n </span>\n )}\n {!editing &&\n (expanded ? (\n <ChevronDown className=\"h-3.5 w-3.5 text-muted-foreground shrink-0\" />\n ) : (\n <ChevronRight className=\"h-3.5 w-3.5 text-muted-foreground shrink-0\" />\n ))}\n </button>\n\n {(expanded || editing) && (\n <div className=\"border-t\">\n {editing ? (\n <div className=\"p-2 space-y-1.5\">\n <textarea\n className=\"w-full font-mono text-xs rounded border border-input bg-transparent px-2 py-1.5 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring resize-y\"\n style={{ minHeight: '200px' }}\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n autoFocus\n />\n <div className=\"flex items-center gap-1.5\">\n <button\n onClick={handleSave}\n className=\"flex items-center gap-1 text-xs px-2 py-1 rounded border hover:bg-accent\"\n >\n <Check className=\"h-3 w-3\" /> Save\n </button>\n <button\n onClick={handleCancel}\n className=\"flex items-center gap-1 text-xs px-2 py-1 rounded border hover:bg-accent\"\n >\n <X className=\"h-3 w-3\" /> Cancel\n </button>\n {hasOverride && (\n <button\n onClick={handleReset}\n className=\"flex items-center gap-1 text-xs px-2 py-1 rounded border hover:bg-accent text-muted-foreground ml-auto\"\n >\n <RotateCcw className=\"h-3 w-3\" /> Reset to default\n </button>\n )}\n </div>\n </div>\n ) : (\n <div className=\"group relative\">\n <pre className=\"p-3 font-mono text-xs overflow-x-auto whitespace-pre-wrap wrap-break-word text-muted-foreground max-h-[400px] overflow-y-auto\">\n {displayContent}\n </pre>\n <button\n onClick={handleEdit}\n className=\"absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity flex items-center gap-1 text-xs px-1.5 py-0.5 rounded border bg-background hover:bg-accent\"\n >\n <Pencil className=\"h-3 w-3\" /> Edit\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\n// --- Main component ---\n\ntype EditingField = 'name' | 'goal' | 'goalDesc' | 'existingCompanyId' | 'repository' | null;\n\nexport function ConfigReview() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const [editing, setEditing] = useState<EditingField>(null);\n const [showDetails, setShowDetails] = useState(false);\n const [showFiles, setShowFiles] = useState(false);\n const [loadingFiles, setLoadingFiles] = useState(false);\n const [previewFiles, setPreviewFiles] = useState<Record<string, string> | null>(null);\n const [previewError, setPreviewError] = useState<string | null>(null);\n const lastPreviewRepoFingerprint = useRef<string>('');\n const previewFilesAction = usePluginAction('preview-files');\n\n const loadPreview = useCallback(async () => {\n setLoadingFiles(true);\n setPreviewError(null);\n try {\n const result = (await previewFilesAction({\n companyName: state.companyName || 'Preview',\n presetName: state.presetName,\n selectedModules: state.selectedModules,\n selectedRoles: state.selectedRoles,\n goals: state.goals.length > 0 ? state.goals : undefined,\n projects: state.projects.length > 0 ? state.projects : undefined,\n issues: state.issues.length > 0 ? state.issues : undefined,\n })) as { files: Record<string, string>; error?: string };\n if (result.error) {\n setPreviewError(result.error);\n return;\n }\n setPreviewFiles(result.files);\n } catch (e) {\n setPreviewError(e instanceof Error ? e.message : 'Failed to load preview');\n } finally {\n setLoadingFiles(false);\n }\n }, [\n state.companyName,\n state.presetName,\n state.selectedModules,\n state.selectedRoles,\n state.goals,\n state.projects,\n state.issues,\n previewFilesAction,\n ]);\n\n const allRoles = getAllRoles(state);\n const allRoleNames = new Set(allRoles);\n const activeModules = getActiveModules(state);\n const skippedModules = state.selectedModules.filter(\n (name) => !activeModules.some((m) => m.name === name),\n );\n const totalTasks = activeModules.reduce(\n (sum, m) => sum + (m.issues?.length ?? m.tasks?.length ?? 0),\n 0,\n );\n\n const selectedModSet = new Set(state.selectedModules);\n const selectedRoleSet = new Set(state.selectedRoles);\n const baseRoleNames = state.roles.filter((r) => r._base).map((r) => r.name);\n\n const activeRoleData = state.roles.filter((r) => r._base || selectedRoleSet.has(r.name));\n const selectedModuleData = state.modules.filter((m) => selectedModSet.has(m.name));\n const primaryProject = state.projects[0];\n const primaryWorkspace = primaryProject?.workspace;\n const primaryRepoUrl = primaryWorkspace?.repoUrl || primaryProject?.repoUrl || '';\n const primaryRepoRef =\n primaryWorkspace?.defaultRef ||\n primaryWorkspace?.repoRef ||\n primaryProject?.defaultRef ||\n primaryProject?.repoRef ||\n '';\n const isExternalRepo = isExternalRepository(primaryProject);\n const repositoryFingerprint = `${isExternalRepo ? 'external' : 'new'}|${\n primaryWorkspace?.sourceType || primaryProject?.workspaceSourceType || ''\n }|${primaryRepoUrl}|${primaryRepoRef}|${primaryWorkspace?.defaultRef || ''}|${\n primaryWorkspace?.setupCommand || ''\n }`;\n\n const totalCapabilities = selectedModuleData.reduce(\n (sum, m) => sum + (m.capabilities?.length ?? 0),\n 0,\n );\n\n const toggleModule = (name: string) => {\n const next = new Set(selectedModSet);\n if (next.has(name)) {\n const dependents = state.modules.filter(\n (m) => m.requires?.includes(name) && next.has(m.name),\n );\n if (dependents.length > 0) return;\n next.delete(name);\n } else {\n next.add(name);\n const mod = state.modules.find((m) => m.name === name);\n for (const dep of mod?.requires ?? []) next.add(dep);\n }\n dispatch({ type: 'SET_MODULES', modules: [...next] });\n };\n\n const toggleRole = (name: string) => {\n if (baseRoleNames.includes(name)) return;\n const next = new Set(selectedRoleSet);\n if (next.has(name)) next.delete(name);\n else next.add(name);\n dispatch({ type: 'SET_ROLES', roles: [...next] });\n };\n\n const refreshPreview = useCallback(() => {\n if (!showFiles || loadingFiles) return;\n if (!previewFiles || lastPreviewRepoFingerprint.current !== repositoryFingerprint) {\n lastPreviewRepoFingerprint.current = repositoryFingerprint;\n loadPreview();\n }\n }, [loadingFiles, previewFiles, repositoryFingerprint, showFiles, loadPreview]);\n\n useEffect(() => {\n refreshPreview();\n }, [refreshPreview]);\n\n const saveRepository = (repo: ReturnType<typeof repositoryProjectFields>) => {\n const base: WizardProject = primaryProject ?? {\n name: state.companyName || 'Main Project',\n description: state.goals[0]?.description || '',\n goals: state.goals.map((g) => g.title).filter(Boolean),\n };\n dispatch({\n type: 'SET_PROJECTS',\n projects: [{ ...base, ...repo }, ...state.projects.slice(1)],\n });\n setEditing(null);\n };\n\n return (\n <>\n <Card>\n <CardContent className=\"divide-y p-0\">\n {/* Company name */}\n <div className=\"px-4\">\n <SummaryRow icon={Building2} label=\"Company\" onEdit={() => setEditing('name')}>\n {editing === 'name' ? (\n <InlineEdit\n value={state.companyName}\n onSave={(v) => {\n dispatch({ type: 'SET_COMPANY_NAME', value: v });\n setEditing(null);\n }}\n onCancel={() => setEditing(null)}\n placeholder=\"Company name\"\n />\n ) : (\n <>\n <span className=\"font-medium\">{state.companyName || '(unnamed)'}</span>\n <span className=\"text-muted-foreground ml-2\">\n \u2192 {toPascalCase(state.companyName || 'Company')}/\n </span>\n </>\n )}\n </SummaryRow>\n </div>\n\n {/* Target company */}\n <div className=\"px-4\">\n <SummaryRow\n icon={ArrowUpRight}\n label=\"Target\"\n onEdit={() => setEditing('existingCompanyId')}\n >\n {editing === 'existingCompanyId' ? (\n <InlineEdit\n value={state.existingCompanyId}\n onSave={(v) => {\n dispatch({ type: 'SET_EXISTING_COMPANY_ID', value: v.trim() });\n setEditing(null);\n }}\n onCancel={() => setEditing(null)}\n placeholder=\"Leave empty to create a new company, or paste existing company ID\"\n />\n ) : state.existingCompanyId ? (\n <>\n <span className=\"font-medium\">Existing company</span>\n <span className=\"text-muted-foreground ml-2 font-mono text-xs\">\n {state.existingCompanyId}\n </span>\n </>\n ) : (\n <span className=\"text-muted-foreground\">Create a new company</span>\n )}\n </SummaryRow>\n </div>\n\n {/* Repository */}\n <div className=\"px-4\">\n <SummaryRow icon={GitBranch} label=\"Repository\" onEdit={() => setEditing('repository')}>\n {editing === 'repository' ? (\n <RepositoryEdit\n project={primaryProject ?? null}\n onSave={(repo) => {\n saveRepository(repo);\n }}\n onCancel={() => setEditing(null)}\n />\n ) : (\n <button\n type=\"button\"\n onClick={() => setEditing('repository')}\n className=\"group/repo w-full text-left rounded-md -mx-1 px-1 py-0.5 hover:bg-accent/50 transition-colors\"\n >\n {isExternalRepo ? (\n <>\n <span className=\"font-medium\">External Git repository</span>\n <span className=\"ml-2 text-xs text-muted-foreground underline decoration-dotted underline-offset-2 group-hover/repo:text-foreground\">\n Change\n </span>\n {primaryRepoUrl && (\n <p className=\"text-xs text-muted-foreground mt-0.5 wrap-break-word\">\n {primaryRepoUrl}\n </p>\n )}\n {primaryRepoRef && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n Ref: {primaryRepoRef}\n </p>\n )}\n </>\n ) : (\n <>\n <span className=\"font-medium\">Create a new Git repository</span>\n <span className=\"ml-2 text-xs text-muted-foreground underline decoration-dotted underline-offset-2 group-hover/repo:text-foreground\">\n Change \u2014 use an existing repository\n </span>\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n Fresh local workspace{primaryRepoRef ? ` on ${primaryRepoRef}` : ''}\n {primaryWorkspace?.setupCommand\n ? ` \u00B7 ${primaryWorkspace.setupCommand}`\n : ''}\n </p>\n </>\n )}\n </button>\n )}\n </SummaryRow>\n </div>\n\n {/* Goals */}\n <div className=\"px-4\">\n <SummaryRow icon={Target} label=\"Goal\" onEdit={() => setEditing('goal')}>\n {editing === 'goal' ? (\n <InlineEdit\n value={state.goals[0]?.title || ''}\n onSave={(v) => {\n const updated = [...state.goals];\n if (updated.length === 0) updated.push({ title: '', description: '' });\n updated[0] = { ...updated[0], title: v };\n dispatch({ type: 'SET_GOALS', goals: updated });\n setEditing('goalDesc');\n }}\n onCancel={() => setEditing(null)}\n placeholder=\"Goal title\"\n />\n ) : editing === 'goalDesc' ? (\n <div className=\"space-y-1\">\n <span>{state.goals[0]?.title || '(no goal)'}</span>\n <InlineEdit\n value={state.goals[0]?.description || ''}\n onSave={(v) => {\n const updated = [...state.goals];\n if (updated.length === 0) updated.push({ title: '', description: '' });\n updated[0] = { ...updated[0], description: v };\n dispatch({ type: 'SET_GOALS', goals: updated });\n setEditing(null);\n }}\n onCancel={() => setEditing(null)}\n placeholder=\"Goal description (optional)\"\n multiline\n />\n </div>\n ) : (\n <>\n <span>{state.goals[0]?.title || '(no goal)'}</span>\n {state.goals[0]?.description && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n {state.goals[0].description}\n </p>\n )}\n {state.goals.length > 1 && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n + {state.goals.length - 1} sub-goal{state.goals.length > 2 ? 's' : ''}\n </p>\n )}\n </>\n )}\n </SummaryRow>\n </div>\n\n {/* Modules */}\n <div className=\"px-4\">\n <SummaryRow icon={Blocks} label={`Modules (${activeModules.length})`}>\n <div className=\"flex flex-wrap gap-1.5\">\n {state.modules.map((m) => {\n const isActive = selectedModSet.has(m.name);\n return (\n <HoverCardRoot key={m.name} openDelay={200} closeDelay={100}>\n <HoverCardTrigger asChild>\n <button onClick={() => toggleModule(m.name)}>\n <Badge\n variant={isActive ? 'secondary' : 'outline'}\n className={cn(\n 'text-xs cursor-pointer transition-colors',\n !isActive && 'opacity-40',\n )}\n >\n {m.name}\n </Badge>\n </button>\n </HoverCardTrigger>\n <HoverCardPortal>\n <HoverCardContent\n side=\"top\"\n align=\"center\"\n sideOffset={6}\n className=\"z-50 w-80 rounded-lg border bg-popover p-0 shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\"\n >\n <ModuleDetail mod={m} allRoleNames={allRoleNames} />\n </HoverCardContent>\n </HoverCardPortal>\n </HoverCardRoot>\n );\n })}\n </div>\n {(totalTasks > 0 || totalCapabilities > 0) && (\n <p className=\"text-xs text-muted-foreground mt-1.5\">\n {[\n totalTasks > 0 && `${totalTasks} initial tasks`,\n totalCapabilities > 0 && `${totalCapabilities} capabilities`,\n ]\n .filter(Boolean)\n .join(' \u00B7 ')}\n </p>\n )}\n </SummaryRow>\n </div>\n\n {/* Roles */}\n <div className=\"px-4\">\n <SummaryRow icon={Users} label={`Team (${allRoles.length} agents)`}>\n <div className=\"flex flex-wrap gap-1.5\">\n {state.roles.map((role) => {\n const isBase = role._base;\n const isActive = isBase || selectedRoleSet.has(role.name);\n return (\n <HoverCardRoot key={role.name} openDelay={200} closeDelay={100}>\n <HoverCardTrigger asChild>\n <button onClick={() => toggleRole(role.name)} disabled={isBase}>\n <Badge\n variant={isActive ? 'outline' : 'secondary'}\n className={cn(\n 'text-xs transition-colors',\n isBase && 'cursor-default',\n !isBase && 'cursor-pointer',\n !isActive && 'opacity-40',\n )}\n >\n {role.title}\n </Badge>\n </button>\n </HoverCardTrigger>\n <HoverCardPortal>\n <HoverCardContent\n side=\"top\"\n align=\"center\"\n sideOffset={6}\n className=\"z-50 w-80 rounded-lg border bg-popover p-0 shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\"\n >\n <RoleDetail role={role} />\n </HoverCardContent>\n </HoverCardPortal>\n </HoverCardRoot>\n );\n })}\n </div>\n </SummaryRow>\n </div>\n </CardContent>\n </Card>\n\n {skippedModules.length > 0 && (\n <div className=\"flex items-start gap-2 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm\">\n <AlertTriangle className=\"h-4 w-4 text-amber-500 shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium text-amber-800 dark:text-amber-200\">\n {skippedModules.length} module(s) will be skipped\n </p>\n <p className=\"text-xs text-amber-700 dark:text-amber-300 mt-0.5\">\n {skippedModules.join(', ')} \u2014 missing required roles\n </p>\n </div>\n </div>\n )}\n\n {/* Detailed configuration toggle */}\n <button\n type=\"button\"\n onClick={() => setShowDetails((v) => !v)}\n className=\"w-full flex items-center justify-center gap-2 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors py-2\"\n >\n {showDetails ? (\n <ChevronDown className=\"h-3.5 w-3.5\" />\n ) : (\n <ChevronRight className=\"h-3.5 w-3.5\" />\n )}\n {showDetails ? 'Hide' : 'Show'} detailed configuration\n <span className=\"text-muted-foreground/60\">\n ({activeRoleData.length} roles \u00B7 {selectedModuleData.length} modules \u00B7 {totalCapabilities}{' '}\n capabilities)\n </span>\n </button>\n\n {/* Generated files preview */}\n <button\n type=\"button\"\n onClick={() => {\n const next = !showFiles;\n setShowFiles(next);\n }}\n className=\"w-full flex items-center justify-center gap-2 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors py-2\"\n >\n {showFiles ? (\n <ChevronDown className=\"h-3.5 w-3.5\" />\n ) : (\n <ChevronRight className=\"h-3.5 w-3.5\" />\n )}\n {showFiles ? 'Hide' : 'Preview'} generated files\n {previewFiles && (\n <span className=\"text-muted-foreground/60\">\n ({Object.keys(previewFiles).length} files\n {Object.keys(state.fileOverrides).length > 0 &&\n ` \u00B7 ${Object.keys(state.fileOverrides).length} edited`}\n )\n </span>\n )}\n </button>\n\n {showFiles && (\n <div className=\"space-y-3\">\n {loadingFiles && (\n <div className=\"flex items-center justify-center gap-2 py-6 text-sm text-muted-foreground\">\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n Assembling preview...\n </div>\n )}\n\n {previewError && !loadingFiles && (\n <div className=\"flex items-start gap-2 rounded-lg border border-destructive/30 bg-destructive/5 p-3 text-sm\">\n <AlertTriangle className=\"h-4 w-4 text-destructive shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium\">Preview failed</p>\n <p className=\"text-xs text-muted-foreground mt-0.5\">{previewError}</p>\n </div>\n </div>\n )}\n\n {previewFiles && !loadingFiles && (\n <>\n <div className=\"flex items-center justify-between\">\n <p className=\"text-xs text-muted-foreground\">\n Click a file to expand. Use the edit button to override its content before\n provisioning.\n </p>\n <button\n type=\"button\"\n onClick={loadPreview}\n className=\"flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors\"\n >\n <RefreshCw className=\"h-3 w-3\" />\n Refresh\n </button>\n </div>\n\n {groupFiles(previewFiles).map(({ group, paths }) => (\n <div key={group || '_root'} className=\"space-y-1\">\n {group && (\n <p className=\"text-[10px] font-medium text-muted-foreground uppercase tracking-wider px-0.5\">\n {group}/\n </p>\n )}\n <div className=\"space-y-1\">\n {paths.map((filePath) => (\n <FileEntry\n key={filePath}\n filePath={filePath}\n content={previewFiles[filePath]}\n override={state.fileOverrides[filePath]}\n onSaveOverride={(content) =>\n dispatch({ type: 'SET_FILE_OVERRIDE', path: filePath, content })\n }\n onResetOverride={() =>\n dispatch({ type: 'DELETE_FILE_OVERRIDE', path: filePath })\n }\n />\n ))}\n </div>\n </div>\n ))}\n </>\n )}\n </div>\n )}\n\n {showDetails && (\n <div className=\"space-y-6\">\n {/* Preset info */}\n {state.presetName &&\n state.presetName !== 'custom' &&\n (() => {\n const preset = state.presets.find((p) => p.name === state.presetName);\n if (!preset) return null;\n return (\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2\">\n Preset\n </p>\n <Card>\n <CardContent className=\"p-3 space-y-1.5\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium capitalize\">{preset.name}</span>\n {preset.base && (\n <Badge variant=\"outline\" className=\"text-[10px]\">\n extends {preset.base}\n </Badge>\n )}\n </div>\n <p className=\"text-xs text-muted-foreground\">{preset.description}</p>\n {preset.constraints && preset.constraints.length > 0 && (\n <div className=\"flex items-start gap-1.5 text-xs text-amber-700 dark:text-amber-300 mt-1\">\n <AlertTriangle className=\"h-3 w-3 shrink-0 mt-0.5\" />\n <span>{preset.constraints.join(' \u00B7 ')}</span>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n );\n })()}\n\n {/* Detailed roles */}\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2\">\n Team \u2014 {activeRoleData.length} agents\n </p>\n <div className=\"grid gap-2\">\n {activeRoleData.map((role) => (\n <RoleDetail key={role.name} role={role} />\n ))}\n </div>\n </div>\n\n {/* Detailed modules */}\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2\">\n Modules \u2014 {selectedModuleData.length} active\n </p>\n <div className=\"grid gap-2\">\n {selectedModuleData.map((mod) => (\n <ModuleDetail key={mod.name} mod={mod} allRoleNames={allRoleNames} />\n ))}\n </div>\n </div>\n </div>\n )}\n </>\n );\n}\n", "import {\n useState,\n useRef,\n useEffect,\n useCallback,\n createContext,\n useContext,\n type ReactNode,\n} from 'react';\nimport * as ReactDOM from 'react-dom';\n\n// Context to pass open state + trigger rect from Root to Content\nconst HoverCardContext = createContext<{\n open: boolean;\n triggerRef: React.RefObject<HTMLElement | null>;\n}>({ open: false, triggerRef: { current: null } });\n\nfunction HoverCardRoot({\n children,\n openDelay = 200,\n closeDelay = 100,\n}: {\n children: ReactNode;\n openDelay?: number;\n closeDelay?: number;\n}) {\n const [open, setOpen] = useState(false);\n const openTimer = useRef<ReturnType<typeof setTimeout>>(undefined);\n const closeTimer = useRef<ReturnType<typeof setTimeout>>(undefined);\n const triggerRef = useRef<HTMLDivElement>(null);\n\n const handleEnter = useCallback(() => {\n clearTimeout(closeTimer.current);\n openTimer.current = setTimeout(() => setOpen(true), openDelay);\n }, [openDelay]);\n\n const handleLeave = useCallback(() => {\n clearTimeout(openTimer.current);\n closeTimer.current = setTimeout(() => setOpen(false), closeDelay);\n }, [closeDelay]);\n\n useEffect(\n () => () => {\n clearTimeout(openTimer.current);\n clearTimeout(closeTimer.current);\n },\n [],\n );\n\n return (\n <HoverCardContext.Provider value={{ open, triggerRef }}>\n <div\n ref={triggerRef}\n style={{ display: 'inline-block' }}\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n >\n {children}\n </div>\n </HoverCardContext.Provider>\n );\n}\n\nfunction HoverCardTrigger({ children }: { children: ReactNode; asChild?: boolean }) {\n return <>{children}</>;\n}\n\nfunction HoverCardContent({\n children,\n className,\n side = 'top',\n align = 'center',\n sideOffset = 6,\n}: {\n children: ReactNode;\n className?: string;\n side?: string;\n align?: string;\n sideOffset?: number;\n}) {\n const { open, triggerRef } = useContext(HoverCardContext);\n const [pos, setPos] = useState<{ top: number; left: number } | null>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!open || !triggerRef.current) {\n setPos(null);\n return;\n }\n const rect = triggerRef.current.getBoundingClientRect();\n const contentEl = contentRef.current;\n const contentWidth = contentEl?.offsetWidth || 320;\n\n let top: number;\n let left: number;\n\n if (side === 'top') {\n top = rect.top - sideOffset;\n // Will be adjusted after render with transform\n } else {\n top = rect.bottom + sideOffset;\n }\n\n if (align === 'center') {\n left = rect.left + rect.width / 2 - contentWidth / 2;\n } else if (align === 'end') {\n left = rect.right - contentWidth;\n } else {\n left = rect.left;\n }\n\n // Keep within viewport\n left = Math.max(8, Math.min(left, window.innerWidth - contentWidth - 8));\n\n setPos({ top, left });\n }, [open, side, align, sideOffset, triggerRef]);\n\n if (!open) return null;\n\n return (\n <div\n ref={contentRef}\n className={className}\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: pos ? pos.top : -9999,\n left: pos ? pos.left : -9999,\n transform: side === 'top' ? 'translateY(-100%)' : undefined,\n pointerEvents: 'auto',\n }}\n >\n {children}\n </div>\n );\n}\n\nfunction HoverCardPortal({ children }: { children: ReactNode }) {\n if (typeof document === 'undefined') return null;\n return ReactDOM.createPortal(children, document.body);\n}\n\nexport { HoverCardRoot, HoverCardTrigger, HoverCardContent, HoverCardPortal };\n", "import { useState, useRef, useEffect } from 'react';\nimport { usePluginAction } from '@paperclipai/plugin-sdk/ui';\nimport {\n useWizard,\n useWizardDispatch,\n type Goal,\n type ProjectExecutionWorkspacePolicy,\n type ProjectWorkspaceConfig,\n type WizardIssue,\n type WizardProject,\n} from '../../context/WizardContext';\nimport { Button } from '../ui/button';\nimport { ConfigReview } from '../ConfigReview';\nimport { cn, getPluginSettingsUrl } from '../../lib/utils';\nimport {\n Sparkles,\n Loader2,\n Send,\n User,\n RotateCcw,\n Zap,\n MessageSquare,\n Settings2,\n ClipboardCheck,\n ArrowRight,\n CheckCircle2,\n ChevronLeft,\n AlertTriangle,\n Settings,\n} from 'lucide-react';\nimport interviewSystemPrompt from '../../prompts/interview-system.md?raw';\nimport singleShotSystemPrompt from '../../prompts/single-shot-system.md?raw';\nimport promptMessages from '../../prompts/messages.json';\nimport EXAMPLE_PROMPTS from '../../prompts/examples.json';\n\ninterface Message {\n role: 'user' | 'assistant';\n content: string;\n}\n\ntype InterviewPhase = 'describe' | 'interview' | 'configuring' | 'review';\n\nconst LOADING_MESSAGES = [\n 'Understanding your vision...',\n 'Analyzing requirements...',\n 'Thinking about team structure...',\n 'Considering the best approach...',\n 'Evaluating module combinations...',\n];\n\nconst CONFIG_STEPS = [\n 'Selecting strategy preset',\n 'Choosing capability modules',\n 'Assembling agent team',\n 'Resolving repository setup',\n 'Defining company goal',\n 'Finalizing configuration',\n];\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction copyStringField(\n source: Record<string, unknown>,\n target: Record<string, unknown>,\n key: string,\n) {\n const value = source[key];\n if (typeof value === 'string' && value.trim()) target[key] = value.trim();\n}\n\nfunction normalizeWorkspaceConfig(value: unknown): ProjectWorkspaceConfig | undefined {\n if (!isPlainObject(value)) return undefined;\n const workspace: Record<string, unknown> = {};\n for (const key of [\n 'name',\n 'sourceType',\n 'cwd',\n 'repoUrl',\n 'repoRef',\n 'defaultRef',\n 'visibility',\n 'setupCommand',\n 'cleanupCommand',\n 'remoteProvider',\n 'remoteWorkspaceRef',\n 'sharedWorkspaceKey',\n ]) {\n copyStringField(value, workspace, key);\n }\n if (typeof value.isPrimary === 'boolean') workspace.isPrimary = value.isPrimary;\n if (isPlainObject(value.metadata)) workspace.metadata = value.metadata;\n if (isPlainObject(value.runtimeConfig)) workspace.runtimeConfig = value.runtimeConfig;\n return Object.keys(workspace).length > 0 ? (workspace as ProjectWorkspaceConfig) : undefined;\n}\n\nfunction normalizeExecutionWorkspacePolicy(\n value: unknown,\n): ProjectExecutionWorkspacePolicy | undefined {\n if (!isPlainObject(value)) return undefined;\n const policy: Record<string, unknown> = {};\n copyStringField(value, policy, 'defaultMode');\n copyStringField(value, policy, 'defaultProjectWorkspaceId');\n copyStringField(value, policy, 'environmentId');\n if (typeof value.allowIssueOverride === 'boolean') {\n policy.allowIssueOverride = value.allowIssueOverride;\n }\n if (isPlainObject(value.workspaceStrategy)) {\n policy.workspaceStrategy = { ...value.workspaceStrategy };\n }\n return Object.keys(policy).length > 0 ? (policy as ProjectExecutionWorkspacePolicy) : undefined;\n}\n\nfunction PhaseIndicator({\n phase,\n questionCount,\n}: {\n phase: InterviewPhase;\n questionCount: number;\n}) {\n const phases = [\n { key: 'describe', icon: Zap, label: 'Describe' },\n { key: 'interview', icon: MessageSquare, label: 'Interview' },\n { key: 'configuring', icon: Settings2, label: 'Configure' },\n { key: 'review', icon: ClipboardCheck, label: 'Review' },\n ] as const;\n\n const phaseKeys = phases.map((p) => p.key);\n const activeIdx = phaseKeys.indexOf(phase);\n\n return (\n <div className=\"flex items-center gap-1\">\n {phases.map((p, i) => {\n const Icon = p.icon;\n const isActive = i === activeIdx;\n const isDone = i < activeIdx;\n return (\n <div key={p.key} className=\"flex items-center gap-1\">\n {i > 0 && <div className={cn('w-6 h-px', isDone ? 'bg-foreground' : 'bg-border')} />}\n <div\n className={cn(\n 'flex items-center gap-1.5 px-2 py-1 rounded-full text-xs font-medium transition-all duration-300',\n isActive && 'bg-foreground text-background',\n isDone && 'bg-foreground/10 text-foreground',\n !isActive && !isDone && 'text-muted-foreground',\n )}\n >\n {isDone ? (\n <CheckCircle2 className=\"h-3 w-3\" />\n ) : (\n <Icon className={cn('h-3 w-3', isActive && 'animate-pulse')} />\n )}\n <span className=\"hidden sm:inline\">{p.label}</span>\n {p.key === 'interview' && isActive && questionCount > 0 && (\n <span className=\"text-[10px] opacity-70\">{questionCount}/3</span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction ConfiguringAnimation({ ready, onDone }: { ready: boolean; onDone: () => void }) {\n const [step, setStep] = useState(0);\n const [animDone, setAnimDone] = useState(false);\n\n useEffect(() => {\n if (step < CONFIG_STEPS.length) {\n const timer = setTimeout(() => setStep((s) => s + 1), 600);\n return () => clearTimeout(timer);\n } else {\n setAnimDone(true);\n }\n }, [step]);\n\n // Proceed when both animation is done AND config is ready\n useEffect(() => {\n if (animDone && ready) {\n const timer = setTimeout(onDone, 300);\n return () => clearTimeout(timer);\n }\n }, [animDone, ready, onDone]);\n\n const allStepsDone = step >= CONFIG_STEPS.length;\n\n return (\n <div className=\"flex flex-col items-center justify-center py-12 space-y-6\">\n <div className=\"relative\">\n <div className=\"h-12 w-12 rounded-full bg-foreground/5 flex items-center justify-center\">\n <Sparkles className=\"h-6 w-6 text-foreground animate-pulse\" />\n </div>\n <div className=\"absolute inset-0 rounded-full border-2 border-foreground/20 animate-ping\" />\n </div>\n <div className=\"space-y-2 w-full max-w-xs\">\n {CONFIG_STEPS.map((label, i) => (\n <div\n key={label}\n className={cn(\n 'flex items-center gap-2.5 text-sm transition-all duration-300',\n i < step && 'text-foreground',\n i === step && 'text-foreground',\n i > step && 'text-muted-foreground/40',\n )}\n >\n <div className=\"w-4 flex justify-center\">\n {i < step ? (\n <CheckCircle2 className=\"h-3.5 w-3.5\" />\n ) : i === step ? (\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n ) : (\n <div className=\"h-1.5 w-1.5 rounded-full bg-current\" />\n )}\n </div>\n {label}\n </div>\n ))}\n </div>\n {allStepsDone && !ready && (\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n Waiting for AI response...\n </div>\n )}\n </div>\n );\n}\n\nexport function StepAiWizard() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const aiChat = usePluginAction('ai-chat');\n const checkAiConfig = usePluginAction('check-ai-config');\n const [messages, setMessages] = useState<Message[]>([]);\n const [input, setInput] = useState('');\n const [loading, setLoading] = useState(false);\n const [phase, setPhase] = useState<InterviewPhase>('describe');\n const [questionCount, setQuestionCount] = useState(0);\n const [loadingMsg, setLoadingMsg] = useState(LOADING_MESSAGES[0]);\n const [configReady, setConfigReady] = useState(false);\n const [configWarning, setConfigWarning] = useState<string | null>(null);\n const scrollRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const pendingConfigRef = useRef<Record<string, unknown> | null>(null);\n\n // Pre-check: surface missing API key before the user types anything\n useEffect(() => {\n checkAiConfig({})\n .then((result: any) => {\n if (!result.ok) setConfigWarning(result.error);\n else setConfigWarning(null);\n })\n .catch(() => {});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n scrollRef.current?.scrollTo({ top: scrollRef.current.scrollHeight, behavior: 'smooth' });\n }, [messages, loading]);\n\n useEffect(() => {\n if (!loading && phase === 'interview') {\n inputRef.current?.focus();\n }\n }, [loading, phase]);\n\n useEffect(() => {\n if (!loading) return;\n const interval = setInterval(() => {\n setLoadingMsg(LOADING_MESSAGES[Math.floor(Math.random() * LOADING_MESSAGES.length)]);\n }, 2000);\n return () => clearInterval(interval);\n }, [loading]);\n\n const buildCatalog = () => {\n return [\n '## Available Presets',\n ...state.presets.map(\n (p) =>\n `- **${p.name}**: ${p.description} (modules: ${p.modules?.join(', ')}; roles: ${(p.roles as string[] | undefined)?.length ? (p.roles as string[]).join(', ') : 'none'})`,\n ),\n '',\n '## Available Modules',\n ...state.modules.map((m) => `- **${m.name}**: ${m.description}`),\n '',\n '## Available Extra Roles',\n ...state.roles\n .filter((r) => !r._base)\n .map((r) => `- **${r.name}** (${r.title}): ${r.description}`),\n '',\n '## Base Roles (always included)',\n ...state.roles\n .filter((r) => r._base)\n .map((r) => `- **${r.name}** (${r.title}): ${r.description}`),\n ].join('\\n');\n };\n\n const systemPrompt = interviewSystemPrompt\n .replace('{{CATALOG}}', buildCatalog())\n .replace('{{CONFIG_FORMAT}}', promptMessages.configFormat);\n\n const singleShotPrompt = singleShotSystemPrompt\n .replace('{{CATALOG}}', buildCatalog())\n .replace('{{CONFIG_FORMAT}}', promptMessages.configFormat);\n\n // Every Anthropic call goes through the worker's async job model (start + poll).\n // The host kills any single performAction RPC at 30s; an Opus generation \u2014 even a\n // short interview turn, but especially the final full-spec config \u2014 can exceed\n // that. Starting a background job and polling means no single RPC ever blocks\n // long enough to time out, so this is used for ALL paths (interview, chat,\n // quick-generate, and the generate-config button).\n const callApi = async (allMessages: Message[], system?: string): Promise<string> => {\n const start = (await aiChat({\n mode: 'start',\n messages: allMessages.map((m) => ({ role: m.role, content: m.content })),\n system: system || systemPrompt,\n })) as { jobId?: string; error?: string };\n if (start.error) throw new Error(start.error);\n if (!start.jobId) throw new Error('AI did not start a generation job');\n\n const POLL_INTERVAL_MS = 1500;\n const MAX_ATTEMPTS = 320; // ~8 minutes \u2014 headroom for large, full-spec configs\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS));\n const poll = (await aiChat({ mode: 'poll', jobId: start.jobId })) as {\n status?: string;\n text?: string;\n error?: string;\n };\n if (poll.status === 'done') return poll.text || '';\n if (poll.status === 'error') throw new Error(poll.error || 'AI generation failed');\n // status === 'pending' \u2014 keep polling\n }\n throw new Error('AI generation timed out. Please try again.');\n };\n\n const tryExtractConfig = (text: string) => {\n // Extract top-level JSON objects by tracking brace depth, skipping string contents.\n const candidates: string[] = [];\n let depth = 0;\n let start = -1;\n let inString = false;\n let escape = false;\n for (let i = 0; i < text.length; i++) {\n const ch = text[i];\n if (escape) {\n escape = false;\n continue;\n }\n if (ch === '\\\\' && inString) {\n escape = true;\n continue;\n }\n if (ch === '\"') {\n inString = !inString;\n continue;\n }\n if (inString) continue;\n if (ch === '{') {\n if (depth === 0) start = i;\n depth++;\n } else if (ch === '}') {\n depth--;\n if (depth === 0 && start !== -1) {\n candidates.push(text.slice(start, i + 1));\n start = -1;\n }\n }\n }\n const isValidConfig = (obj: any) => obj && typeof obj === 'object' && obj.name && obj.preset;\n const tryParse = (raw: string) => {\n // 1. Try strict JSON\n try {\n return JSON.parse(raw);\n } catch {\n /* continue to cleanup */\n }\n // 2. Clean common AI artifacts and retry\n try {\n const cleaned = raw\n .replace(/,\\s*([\\]}])/g, '$1') // trailing commas\n .replace(/\\/\\/[^\\n]*/g, '') // line comments\n .replace(/\\n/g, '\\\\n') // unescaped newlines inside strings\n .replace(/\\t/g, '\\\\t'); // unescaped tabs\n return JSON.parse(cleaned);\n } catch {\n /* continue to last resort */\n }\n // 3. Last resort: try to fix unescaped newlines only inside JSON string values\n try {\n // Replace actual newlines between quotes with \\n escape\n const fixed = raw.replace(/\"([^\"\\\\]|\\\\.)*\"/g, (match) =>\n match.replace(/\\n/g, '\\\\n').replace(/\\t/g, '\\\\t'),\n );\n return JSON.parse(fixed.replace(/,\\s*([\\]}])/g, '$1'));\n } catch {\n return null;\n }\n };\n for (const candidate of candidates) {\n const config = tryParse(candidate);\n if (isValidConfig(config)) return config;\n }\n // Fallback: try extracting from markdown code fence\n const fenceMatch = text.match(/```(?:json)?\\s*\\n?([\\s\\S]*?)```/);\n if (fenceMatch) {\n const config = tryParse(fenceMatch[1].trim());\n if (isValidConfig(config)) return config;\n }\n return null;\n };\n\n const startInterview = async (description?: string) => {\n const desc = description || state.aiDescription;\n if (!desc.trim()) return;\n\n if (description) {\n dispatch({ type: 'SET_AI_DESCRIPTION', value: description });\n }\n dispatch({ type: 'SET_ERROR', error: null });\n\n setPhase('interview');\n setLoading(true);\n\n try {\n const startMessages: Message[] = [\n { role: 'user', content: promptMessages.interviewStart.replace('{{DESCRIPTION}}', desc) },\n ];\n const reply = await callApi(startMessages);\n setMessages([startMessages[0], { role: 'assistant', content: reply }]);\n setQuestionCount(1);\n } catch (err) {\n dispatch({\n type: 'SET_ERROR',\n error: err instanceof Error ? err.message : 'AI wizard failed',\n });\n setPhase('describe');\n } finally {\n setLoading(false);\n }\n };\n\n const quickGenerate = async (description?: string) => {\n const desc = description || state.aiDescription;\n if (!desc.trim()) return;\n\n if (description) {\n dispatch({ type: 'SET_AI_DESCRIPTION', value: description });\n }\n dispatch({ type: 'SET_ERROR', error: null });\n\n setConfigReady(false);\n setPhase('configuring');\n\n try {\n const reply = await callApi(\n [{ role: 'user', content: promptMessages.singleShot.replace('{{DESCRIPTION}}', desc) }],\n singleShotPrompt,\n );\n const config = tryExtractConfig(reply);\n if (config) {\n pendingConfigRef.current = config;\n setConfigReady(true);\n } else {\n console.error('[AI Wizard] Failed to parse config from single-shot response:', reply);\n throw new Error('Could not parse configuration from AI response');\n }\n } catch (err) {\n dispatch({\n type: 'SET_ERROR',\n error: err instanceof Error ? err.message : 'AI wizard failed',\n });\n setPhase('describe');\n }\n };\n\n const sendMessage = async () => {\n if (!input.trim() || loading) return;\n\n const userMsg: Message = { role: 'user', content: input };\n const newMessages = [...messages, userMsg];\n setMessages(newMessages);\n setInput('');\n setLoading(true);\n\n try {\n const reply = await callApi(newMessages);\n const allMessages = [...newMessages, { role: 'assistant' as const, content: reply }];\n setMessages(allMessages);\n setQuestionCount((c) => c + 1);\n\n const config = tryExtractConfig(reply);\n if (config) {\n pendingConfigRef.current = config;\n setConfigReady(true);\n setPhase('configuring');\n }\n } catch (err) {\n dispatch({\n type: 'SET_ERROR',\n error: err instanceof Error ? err.message : 'AI wizard failed',\n });\n } finally {\n setLoading(false);\n }\n };\n\n const requestConfig = async () => {\n // Immediately show the configuring animation \u2014 API call runs behind it\n setConfigReady(false);\n setPhase('configuring');\n\n const apiMessages: Message[] = [\n ...messages,\n { role: 'user', content: promptMessages.generateConfig },\n ];\n\n try {\n const reply = await callApi(apiMessages);\n const config = tryExtractConfig(reply);\n if (config) {\n pendingConfigRef.current = config;\n setConfigReady(true);\n } else {\n console.error('[AI Wizard] Failed to parse config from interview response:', reply);\n throw new Error('Could not parse configuration from AI response');\n }\n } catch (err) {\n dispatch({\n type: 'SET_ERROR',\n error: err instanceof Error ? err.message : 'AI wizard failed',\n });\n setPhase('interview');\n }\n };\n\n const applyConfigToState = () => {\n const config = pendingConfigRef.current;\n if (!config) return;\n\n // Expand module dependencies so required modules are included\n const knownModuleNames = new Set(state.modules.map((m) => m.name));\n const requiresMap = new Map(state.modules.map((m) => [m.name, m.requires ?? []]));\n const aiModules = (Array.isArray(config.modules) ? (config.modules as string[]) : []).filter(\n (m: string) => knownModuleNames.has(m),\n );\n const expanded = new Set(aiModules);\n const queue = [...aiModules];\n while (queue.length > 0) {\n const mod = queue.shift()!;\n for (const dep of requiresMap.get(mod) ?? []) {\n if (!expanded.has(dep) && knownModuleNames.has(dep)) {\n expanded.add(dep);\n queue.push(dep);\n }\n }\n }\n const validRoles = (Array.isArray(config.roles) ? (config.roles as string[]) : []).filter(\n (r: string) => state.roles.some((role) => role.name === r && !role._base),\n );\n\n // Merge preset modules and roles with AI-selected ones so preset defaults aren't lost\n const chosenPreset = state.presets.find((p) => p.name === config.preset);\n const presetModules = ((chosenPreset?.modules ?? []) as string[]).filter((m) =>\n knownModuleNames.has(m),\n );\n const mergedModules = [...new Set([...presetModules, ...expanded])];\n const presetRoles = (chosenPreset?.roles ?? []) as string[];\n const mergedRoles = [...new Set([...presetRoles, ...validRoles])];\n\n // Normalize goals: support both old flat format and new array format\n let parsedGoals: Goal[];\n if (Array.isArray(config.goals)) {\n parsedGoals = (config.goals as any[]).map((g: any) => ({\n title: String(g.title || ''),\n description: String(g.description || ''),\n ...(g.parentGoal ? { parentGoal: String(g.parentGoal) } : {}),\n }));\n } else if (config.goal) {\n // Backward compat: old flat format\n parsedGoals = [\n {\n title: String(config.goal),\n description: String(config.goalDescription || ''),\n },\n ];\n } else {\n parsedGoals = [];\n }\n\n // Normalize projects: support both old flat format and new array format\n let parsedProjects: WizardProject[];\n if (Array.isArray(config.projects)) {\n parsedProjects = (config.projects as any[]).map((p: any) => {\n const workspace = normalizeWorkspaceConfig(p.workspace);\n const executionWorkspacePolicy = normalizeExecutionWorkspacePolicy(\n p.executionWorkspacePolicy,\n );\n const project: WizardProject = {\n name: String(p.name || ''),\n description: String(p.description || ''),\n goals: Array.isArray(p.goals) ? p.goals.map(String) : [],\n };\n if (workspace) project.workspace = workspace;\n if (typeof p.workspaceSourceType === 'string' && p.workspaceSourceType.trim()) {\n project.workspaceSourceType = p.workspaceSourceType.trim();\n }\n if (typeof p.repoUrl === 'string' && p.repoUrl.trim()) project.repoUrl = p.repoUrl.trim();\n if (typeof p.repoRef === 'string' && p.repoRef.trim()) project.repoRef = p.repoRef.trim();\n if (typeof p.defaultRef === 'string' && p.defaultRef.trim()) {\n project.defaultRef = p.defaultRef.trim();\n }\n if (executionWorkspacePolicy) project.executionWorkspacePolicy = executionWorkspacePolicy;\n return project;\n });\n } else if (config.project) {\n // Backward compat: old flat format\n parsedProjects = [\n {\n name: String(config.project),\n description: String(config.projectDescription || ''),\n goals: parsedGoals.map((g) => g.title),\n },\n ];\n } else {\n parsedProjects = [];\n }\n\n // Domain-specific initial issues derived from the user's brief. These lead the\n // backlog ahead of the generic preset/module setup issues so the project starts\n // rolling in its actual domain instead of only doing generic scaffolding.\n const parsedIssues: WizardIssue[] = Array.isArray(config.issues)\n ? (config.issues as any[])\n .filter((i: any) => i && (i.title || i.name))\n .map((i: any) => ({\n title: String(i.title || i.name || ''),\n description: String(i.description || ''),\n ...(i.priority ? { priority: String(i.priority) } : {}),\n ...(i.assignTo ? { assignTo: String(i.assignTo) } : {}),\n }))\n : [];\n\n // Apply config to wizard state but stay on ai-wizard step\n dispatch({\n type: 'APPLY_AI_RESULT',\n result: {\n companyName: (config.name as string) || state.aiDescription.slice(0, 30),\n goals: parsedGoals,\n projects: parsedProjects,\n issues: parsedIssues,\n presetName: state.presets.some((p) => p.name === config.preset)\n ? (config.preset as string)\n : 'custom',\n selectedModules: mergedModules,\n selectedRoles: mergedRoles,\n companyDescription: (config.companyDescription as string) || '',\n aiExplanation: (config.explanation as string) || (config.reasoning as string) || '',\n step: 'ai-wizard' as const,\n },\n });\n setPhase('review');\n };\n\n const resetInterview = () => {\n setMessages([]);\n setPhase('describe');\n setQuestionCount(0);\n setInput('');\n setConfigReady(false);\n pendingConfigRef.current = null;\n };\n\n // --- Describe phase ---\n if (phase === 'describe') {\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <PhaseIndicator phase={phase} questionCount={questionCount} />\n <div>\n <h2 className=\"text-xl font-semibold tracking-tight\">What are you building?</h2>\n <p className=\"text-sm text-muted-foreground mt-1\">\n Describe your company or idea. Our AI will interview you and assemble the perfect\n agent team.\n </p>\n </div>\n </div>\n\n {configWarning && (\n <div className=\"rounded-lg border border-amber-500/30 bg-amber-500/10 dark:bg-amber-500/5 p-4\">\n <div className=\"flex items-start gap-3\">\n <AlertTriangle className=\"h-5 w-5 text-amber-500 dark:text-amber-400 shrink-0 mt-0.5\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">API key missing</p>\n <p className=\"text-sm text-muted-foreground\">{configWarning}</p>\n </div>\n </div>\n <div className=\"mt-3 pl-8\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n window.location.href = getPluginSettingsUrl();\n }}\n >\n <Settings className=\"h-3.5 w-3.5 mr-1.5\" />\n Plugin Settings\n </Button>\n </div>\n </div>\n )}\n\n <div className=\"space-y-3\">\n <textarea\n className=\"flex min-h-[120px] w-full rounded-lg border border-input bg-transparent px-3 py-2.5 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring resize-none\"\n placeholder=\"Describe your company, product, or idea...\"\n value={state.aiDescription}\n onChange={(e) => dispatch({ type: 'SET_AI_DESCRIPTION', value: e.target.value })}\n autoFocus\n />\n\n <div className=\"space-y-1.5\">\n <p className=\"text-xs text-muted-foreground\">Try an example:</p>\n <div className=\"flex flex-wrap gap-1.5\">\n {EXAMPLE_PROMPTS.map((prompt) => (\n <button\n key={prompt}\n onClick={() => {\n dispatch({ type: 'SET_AI_DESCRIPTION', value: prompt });\n startInterview(prompt);\n }}\n className=\"text-xs px-2.5 py-1 rounded-full border border-border hover:border-foreground/20 hover:bg-accent/50 text-muted-foreground hover:text-foreground transition-colors text-left\"\n >\n {prompt.length > 60 ? prompt.slice(0, 57) + '...' : prompt}\n </button>\n ))}\n </div>\n </div>\n </div>\n\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'GO_TO', step: 'onboarding' })}>\n Back\n </Button>\n <Button\n variant=\"outline\"\n onClick={() => quickGenerate()}\n disabled={!state.aiDescription.trim()}\n >\n <Zap className=\"h-4 w-4\" />\n Quick generate\n </Button>\n <Button onClick={() => startInterview()} disabled={!state.aiDescription.trim()}>\n <MessageSquare className=\"h-4 w-4\" />\n Interview\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n </div>\n );\n }\n\n // --- Configuring animation ---\n if (phase === 'configuring') {\n return (\n <div className=\"space-y-6\">\n <PhaseIndicator phase={phase} questionCount={questionCount} />\n <ConfiguringAnimation ready={configReady} onDone={applyConfigToState} />\n </div>\n );\n }\n\n // --- Review phase (inline, stays in AI wizard) ---\n if (phase === 'review') {\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <PhaseIndicator phase={phase} questionCount={questionCount} />\n <div>\n <h2 className=\"text-xl font-semibold tracking-tight\">Review configuration</h2>\n <p className=\"text-sm text-muted-foreground mt-1\">\n Here's what the AI assembled. Adjust anything, then create your company.\n </p>\n </div>\n </div>\n\n {state.aiExplanation && (\n <div className=\"rounded-lg border border-foreground/10 bg-accent/50 px-4 py-3\">\n <p className=\"text-sm text-foreground/80 leading-relaxed\">{state.aiExplanation}</p>\n </div>\n )}\n\n <ConfigReview />\n\n <div className=\"flex justify-between\">\n <Button\n variant=\"outline\"\n onClick={() => setPhase(messages.length > 0 ? 'interview' : 'describe')}\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n {messages.length > 0 ? 'Back to interview' : 'Back'}\n </Button>\n <Button onClick={() => dispatch({ type: 'GO_TO', step: 'provision' })}>\n <Sparkles className=\"h-4 w-4\" />\n Create Company\n </Button>\n </div>\n </div>\n );\n }\n\n // --- Interview chat phase ---\n return (\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <PhaseIndicator phase={phase} questionCount={questionCount} />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={resetInterview}\n className=\"text-muted-foreground\"\n >\n <RotateCcw className=\"h-3 w-3\" />\n Reset\n </Button>\n </div>\n\n {/* Chat messages */}\n <div\n ref={scrollRef}\n className=\"space-y-4 max-h-[420px] overflow-y-auto rounded-lg border bg-accent/20 p-4\"\n >\n {messages.map((msg, i) => (\n <div\n key={i}\n className={cn('flex gap-2.5 items-start', msg.role === 'user' && 'flex-row-reverse')}\n >\n <div\n className={cn(\n 'h-7 w-7 rounded-full flex items-center justify-center shrink-0',\n msg.role === 'user'\n ? 'bg-foreground text-background'\n : 'bg-background border border-border',\n )}\n >\n {msg.role === 'user' ? (\n <User className=\"h-3.5 w-3.5\" />\n ) : (\n <Sparkles className=\"h-3.5 w-3.5\" />\n )}\n </div>\n <div\n className={cn(\n 'rounded-lg px-3 py-2 max-w-[85%]',\n msg.role === 'user'\n ? 'bg-foreground text-background'\n : 'bg-background border border-border',\n )}\n >\n <div className=\"text-sm whitespace-pre-wrap leading-relaxed\">{msg.content}</div>\n </div>\n </div>\n ))}\n {loading && (\n <div className=\"flex gap-2.5 items-start\">\n <div className=\"h-7 w-7 rounded-full flex items-center justify-center shrink-0 bg-background border border-border\">\n <Sparkles className=\"h-3.5 w-3.5 animate-pulse\" />\n </div>\n <div className=\"rounded-lg px-3 py-2 bg-background border border-border\">\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n {loadingMsg}\n </div>\n </div>\n </div>\n )}\n </div>\n\n {/* Generate CTA \u2014 always visible, emphasized after 3 questions */}\n {!loading && (\n <button\n onClick={requestConfig}\n className={cn(\n 'w-full flex items-center justify-center gap-2 rounded-lg border-2 border-dashed py-3 text-sm font-medium transition-colors',\n questionCount >= 3\n ? 'border-foreground/30 hover:border-foreground/50 hover:bg-accent/50'\n : 'border-border hover:border-foreground/20 hover:bg-accent/30 text-muted-foreground',\n )}\n >\n <Sparkles className=\"h-4 w-4\" />\n {questionCount >= 3 ? 'Generate configuration' : 'Skip \u2014 generate now'}\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </button>\n )}\n\n {/* Input area */}\n <div className=\"flex gap-2\">\n <input\n ref={inputRef}\n type=\"text\"\n className=\"flex h-9 flex-1 rounded-lg border border-input bg-transparent px-3 py-1 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n placeholder=\"Type your answer...\"\n value={input}\n onChange={(e) => setInput(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && !e.shiftKey && sendMessage()}\n disabled={loading}\n autoFocus\n />\n <Button\n size=\"sm\"\n onClick={sendMessage}\n disabled={!input.trim() || loading}\n className=\"rounded-lg\"\n >\n <Send className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n </div>\n );\n}\n", "export default \"You are the Company Wizard \u2014 an expert at assembling AI agent teams. You're enthusiastic but concise. Company Wizard bootstraps AI-agent company workspaces from composable templates.\\n\\nYou are conducting a guided interview to understand what company to set up.\\n\\n{{CATALOG}}\\n\\n## How Roles Work\\n\\n- **Base roles** (marked \\\"always included\\\") are auto-added. You do NOT list them in the JSON.\\n- **All other roles** (listed under \\\"Available Extra Roles\\\") are OPTIONAL and must be EXPLICITLY listed in your JSON `roles` array if you want them.\\n- **Critically: `engineer` is NOT a base role.** Most software projects need an engineer. If the project involves writing code, building software, or maintaining a repository, you MUST include `engineer` in your `roles` array. The preset does NOT auto-add roles \u2014 you must list every non-base role the company needs.\\n- When in doubt, include the engineer. A company that builds software without an engineer agent will have no one to write code.\\n\\n## Interview Rules\\n\\n- Ask exactly ONE question per turn. Keep it short and energetic (1-2 sentences). Use a conversational tone.\\n- Do NOT output JSON during questions \u2014 just ask the question as plain text.\\n- Tailor each question based on previous answers. Show you understood what they said.\\n- After 3 questions, summarize what you understood in a brief, enthusiastic paragraph. End with: \\\"Ready to generate your configuration?\\\"\\n- When the user confirms, output a human-readable recommendation with reasoning, then the JSON config.\\n\\n## What to Ask About\\n\\nAcross your 3 questions, try to cover as many of these as the user's initial description left unclear:\\n\\n1. **What they're building** \u2014 Product type, target users, domain (fintech, SaaS, game, etc.)\\n2. **Current stage** \u2014 Greenfield, existing codebase, research phase, relaunch?\\n3. **Quality vs speed** \u2014 Ship fast, iterate? Or production-grade, high quality from the start?\\n4. **Team needs** \u2014 Do they need code review, security, design, marketing, docs, DevOps?\\n5. **Special requirements** \u2014 Compliance, accessibility, specific tech stack, CI/CD, game engine?\\n6. **Repository** \u2014 Should Paperclip create a new Git repository/workspace, or should the agents use an existing external repo such as GitHub/GitLab? If external, ask for URL and branch/ref; never ask for tokens.\\n\\nDon't ask about things already clear from the initial description. Skip to what's missing.\\n\\n## Information Preservation\\n\\nThe user's interview answers are the primary source of context for the company. When generating the configuration:\\n\\n- **`companyDescription`**: Write a comprehensive 2-4 paragraph description that captures EVERYTHING learned during the interview \u2014 what the company does, what it's building, who it's for, key technical decisions, constraints, priorities, and any special context. This is the company's permanent record. Be thorough. Do NOT summarize into a single vague sentence.\\n- **`goals`**: Array of goals. The first goal is the main user-specific company goal \u2014 its description is the most important field. Keep it outcome-first and product-first: the title and opening sentence must state the primary deliverable or operating outcome, not a supporting constraint. Write a THOROUGH, DETAILED description that includes EVERYTHING the user shared: full requirements, technical specs, acceptance criteria, constraints, edge cases, API contracts, user stories, design decisions, performance targets. Put compliance/security/accessibility/performance constraints in a clearly labelled \\\"Constraints / quality bars\\\" section unless the user explicitly says that constraint is the primary project. If the user's wording mixes a main outcome with secondary facts, determine which thing the agents should build/operate first and write that as the top-level goal; put side facts into acceptance criteria, risks, or sub-goals only when they are independent workstreams. Preset/module template goals are added by the wizard after your JSON, so do NOT replace the user's objective with generic preset goals like \\\"Build a REST API\\\" or \\\"Set up CI/CD\\\" unless the user explicitly asked only for that.\\n- **`projects`**: Array of projects. Each has a `name`, `description`, `goals` array (goal titles it's linked to), and repository workspace metadata. If the user chose an external repo, use `workspace.sourceType: \\\"git_repo\\\"` with `repoUrl`, plus `repoRef`/`defaultRef` exactly when the user or repository context provides one; do not force a branch name or remote prefix. If no external repo was provided, use a fresh local Git repository with `workspace.sourceType: \\\"local_path\\\"`, `workspace.defaultRef: \\\"main\\\"` unless the user requested another initial branch, `workspace.setupCommand: \\\"git init -b <defaultRef>\\\"`, and `workspace.isPrimary: true`. Do not include `executionWorkspacePolicy`; the assembler applies isolated worktrees only when Paperclip's experimental isolated-workspaces setting is enabled and a usable project base ref exists.\\n- **`issues`**: Array of 6-12 CONCRETE, domain-specific initial work items taken straight from what you learned in the interview \u2014 the real features, components, and integrations the user actually described, each with a `title`, a `description` with acceptance criteria, a `priority` (`critical`/`high`/`medium`/`low`), and `assignTo` set to a role on the team. These seed the backlog so the project starts in its actual domain. Issue titles should lead with the core product capability; secondary constraints belong in acceptance criteria or risk notes unless the issue is specifically about that constraint. Do NOT put generic scaffolding here (vision docs, linters, CI, branch protection) \u2014 the wizard adds those automatically.\\n\\n## RECOMMENDATION Format (when generating config)\\n\\n- One paragraph explaining your reasoning: why this preset, why these modules, why these roles.\\n- A bullet list of the key choices.\\n\\nThen output the JSON (no markdown fences):\\n{{CONFIG_FORMAT}}\\n\\n## Rules\\n\\n- `modules` should list ALL modules to activate (including preset ones).\\n- `roles` should list ALL non-base roles the company needs. This includes roles that come with the preset. The system does not auto-add preset roles \u2014 you must list them explicitly.\\n- If the project involves building software, `engineer` MUST be in `roles`.\\n- The primary project MUST state whether it uses a fresh local Git repository or an external Git repository. Do not put credentials or tokens in repository fields.\\n- Be pragmatic \u2014 don't over-engineer. Match the config to actual needs.\\n\";", "export default \"You are the Company Wizard. Company Wizard bootstraps AI-agent company workspaces from composable templates.\\n\\nGiven a natural language description of what the user wants to build, you select the best configuration.\\n\\n{{CATALOG}}\\n\\n## How Roles Work\\n\\n- **Base roles** (marked \\\"always included\\\") are auto-added. You do NOT list them in the JSON.\\n- **All other roles** (listed under \\\"Available Extra Roles\\\") are OPTIONAL and must be EXPLICITLY listed in your JSON `roles` array if you want them.\\n- **Critically: `engineer` is NOT a base role.** Most software projects need an engineer. If the project involves writing code, building software, or maintaining a repository, you MUST include `engineer` in your `roles` array. The preset does NOT auto-add roles \u2014 you must list every non-base role the company needs.\\n- When in doubt, include the engineer. A company that builds software without an engineer agent will have no one to write code.\\n\\n## Instructions\\n\\n1. Analyze the user's description to understand: what they're building, their team size preference, quality vs speed priority, and any specific needs.\\n2. Select the best preset as a starting point.\\n3. List ALL modules to activate (including preset ones). Add extra modules beyond the preset if the description warrants them.\\n4. List ALL non-base roles the company needs. This includes roles from the preset. If the project involves software, include `engineer`.\\n5. Suggest a company name (PascalCase-friendly, short, memorable) if not obvious from the description.\\n6. Write a thorough company description (2-4 paragraphs) capturing everything the user described \u2014 product, audience, tech stack, constraints, priorities, stage, and special context. This is the company's permanent record.\\n7. Define goals as an array. The first goal is the main user-specific company goal \u2014 its description is the most important field. Keep it **outcome-first and product-first**: the title and opening sentence must state the primary deliverable or operating outcome, not a supporting constraint. Preserve compliance, security, accessibility, performance, tech-stack, and domain constraints inside the description under a clear \\\"Constraints / quality bars\\\" section unless the user explicitly says that constraint is the primary project. If the user's wording mixes a main outcome with secondary facts, ask yourself which thing the agents should build/operate first and write that as the top-level goal; put side facts into acceptance criteria, risks, or sub-goals only when they are independent workstreams. Include EVERYTHING the user described: full requirements, technical specs, acceptance criteria, constraints, edge cases, API contracts, user stories, performance targets. If the user provided a detailed spec, reproduce it in full, but do not let one constraint dominate the goal or initial issues. Preset/module template goals are added by the wizard after your JSON, so do NOT replace the user's objective with generic preset goals like \\\"Build a REST API\\\" or \\\"Set up CI/CD\\\" unless the user explicitly asked only for that.\\n8. Define projects as an array. Most setups need one project linked to all goals. Name and describe the project concretely.\\n9. Always decide the repository setup for the primary project:\\n - If the user gives an existing GitHub/GitLab/remote Git repo, set `workspace.sourceType: \\\"git_repo\\\"`, include `repoUrl`, and set `repoRef`/`defaultRef` exactly when the user or repository context provides one. Do not force a branch name or remote prefix; Paperclip's project/worktree settings decide the worktree base ref.\\n - If no external repository is given, assume Paperclip should create a fresh local Git repository. Set `workspace.sourceType: \\\"local_path\\\"`, `workspace.defaultRef: \\\"main\\\"` unless the user requested another initial branch, `workspace.setupCommand: \\\"git init -b <defaultRef>\\\"`, and `workspace.isPrimary: true`. Do NOT include an `executionWorkspacePolicy`; the assembler applies isolated worktrees only when Paperclip's experimental isolated-workspaces setting is enabled and a usable project base ref exists.\\n - Never include credentials or tokens in repository URLs or project text.\\n10. Define an `issues` array of 6-12 CONCRETE, domain-specific initial work items taken straight from the description \u2014 the real features, components, and integrations the user actually described, each with a `title`, a `description` with acceptance criteria, a `priority`, and `assignTo` set to a role on the team. These seed the backlog so the project starts in its actual domain instead of only doing generic setup. Issue titles should lead with the core product capability; secondary constraints belong in acceptance criteria or risk notes unless the issue is specifically about that constraint. Do NOT put generic scaffolding here (vision docs, linters, CI, branch protection) \u2014 the wizard adds those automatically.\\n\\nFirst write one paragraph explaining your reasoning: why this preset, why these modules, why these roles.\\n\\nThen output the JSON (no markdown fences):\\n{{CONFIG_FORMAT}}\\n\";", "{\n \"interviewStart\": \"Here's what I want to build:\\n\\n{{DESCRIPTION}}\\n\\nStart the interview. Ask your first question.\",\n \"singleShot\": \"{{DESCRIPTION}}\",\n \"generateConfig\": \"Generate the configuration now. Remember: include ALL non-base roles the company needs in the roles array (engineer is NOT a base role \u2014 list it if this project involves code). Write a thorough companyDescription that captures everything we discussed. The goals array must preserve the user-specific objectives; preset/module template goals are added later by the wizard, so do not replace the user's requested outcome with a generic preset goal like \\\"Build a REST API\\\" unless that is truly the entire objective. The first goal's description must contain ALL requirements, specs, and details \u2014 this is the primary brief for all agents. The primary project must explicitly choose repository setup: either a fresh local Git repository or an external Git repository such as GitHub. Never include credentials or tokens in repository fields. Also include an `issues` array of 6-12 CONCRETE, domain-specific initial work items taken straight from the brief \u2014 the real features, components, and integrations the user's spec actually describes, each with a `title`, a `description` with acceptance criteria, a `priority`, and `assignTo` set to a role on the team. These seed the backlog so the project starts in its actual domain. Do NOT put generic scaffolding here (vision docs, linters, CI, branch protection) \u2014 the wizard adds those automatically.\",\n \"configFormat\": \"Respond with ONLY a JSON object using this shape. Use exactly one project object for a single-project setup. For a fresh/new repository, use workspace.sourceType=local_path, defaultRef=main unless another initial branch was requested, setupCommand=git init -b <defaultRef>, and isPrimary=true, and do NOT include executionWorkspacePolicy. For an existing external repo, use workspace.sourceType=git_repo, include repoUrl plus repoRef/defaultRef only when the user or repository context provides one. Do not force a branch name or remote prefix. Do not include executionWorkspacePolicy; the assembler applies isolated worktrees only when Paperclip's experimental isolated-workspaces setting is enabled.\\n{\\n \\\"name\\\": \\\"CompanyName\\\",\\n \\\"companyDescription\\\": \\\"Comprehensive 2-4 paragraph description of what this company does, what it is building, who it is for, key technical decisions, priorities, constraints, and any special context. This is the company's permanent record \u2014 be thorough and specific.\\\",\\n \\\"goals\\\": [\\n {\\n \\\"title\\\": \\\"Main user-specific goal title\\\",\\n \\\"description\\\": \\\"THOROUGH description with ALL requirements, specs, acceptance criteria, constraints, edge cases, and every detail the user provided. This is the primary brief for all agents \u2014 preserve every detail, do NOT summarize. Multiple paragraphs expected. Lead with the primary deliverable or operating outcome; put side constraints under Constraints / quality bars unless one is explicitly the main project.\\\"\\n },\\n {\\n \\\"title\\\": \\\"Additional user-specific goal if needed\\\",\\n \\\"description\\\": \\\"Sub-goal or parallel objective description...\\\",\\n \\\"parentGoal\\\": \\\"Main user-specific goal title\\\"\\n }\\n ],\\n \\\"projects\\\": [\\n {\\n \\\"name\\\": \\\"ProjectName\\\",\\n \\\"description\\\": \\\"Concrete project description \u2014 what is being built and key technical details.\\\",\\n \\\"goals\\\": [\\n \\\"Main user-specific goal title\\\",\\n \\\"Additional user-specific goal if needed\\\"\\n ],\\n \\\"workspace\\\": {\\n \\\"sourceType\\\": \\\"local_path\\\",\\n \\\"defaultRef\\\": \\\"main\\\",\\n \\\"setupCommand\\\": \\\"git init -b main\\\",\\n \\\"isPrimary\\\": true\\n }\\n }\\n ],\\n \\\"issues\\\": [\\n {\\n \\\"title\\\": \\\"Concrete, project-specific first work item taken straight from the brief\\\",\\n \\\"description\\\": \\\"What to build and the acceptance criteria, grounded in the user's actual spec \u2014 NOT generic scaffolding.\\\",\\n \\\"priority\\\": \\\"critical | high | medium | low\\\",\\n \\\"assignTo\\\": \\\"engineer\\\"\\n }\\n ],\\n \\\"preset\\\": \\\"preset-name\\\",\\n \\\"modules\\\": [\\n \\\"all-modules-to-activate-including-preset-ones\\\"\\n ],\\n \\\"roles\\\": [\\n \\\"all-non-base-roles-needed-including-preset-ones-engineer-is-not-base\\\"\\n ],\\n \\\"explanation\\\": \\\"2-3 sentences explaining WHY this configuration fits the described company.\\\"\\n}\"\n}\n", "[\n \"A fintech startup building a payment API \u2014 strong engineering, code review, move fast\",\n \"Marketing agency with 5 clients \u2014 content creation, social media, brand strategy\",\n \"Research lab exploring LLM applications \u2014 papers, experiments, rapid prototyping\",\n \"SaaS startup building project management tool \u2014 focus on quality and UX\"\n]\n", "import { useEffect, useRef } from 'react';\nimport { useWizard, useWizardDispatch, getAllRoles } from '../../context/WizardContext';\nimport { usePluginAction } from '@paperclipai/plugin-sdk/ui';\nimport { Loader2, Settings, AlertTriangle, RotateCcw } from 'lucide-react';\nimport { Button } from '../ui/button';\nimport { getPluginSettingsUrl } from '../../lib/utils';\n\nfunction isConfigError(error: string): boolean {\n return /authenticat|PAPERCLIP_EMAIL|PAPERCLIP_PASSWORD|paperclipEmail|paperclipPassword|credentials|unauthorized|forbidden/i.test(\n error,\n );\n}\n\nexport function StepProvision() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const started = useRef(false);\n const logEndRef = useRef<HTMLDivElement>(null);\n const startProvision = usePluginAction('start-provision');\n\n useEffect(() => {\n logEndRef.current?.scrollIntoView({ behavior: 'smooth' });\n }, [state.provisionLog]);\n\n useEffect(() => {\n if (started.current) return;\n started.current = true;\n\n dispatch({ type: 'SET_PROVISIONING', value: true });\n dispatch({ type: 'ADD_PROVISION_LOG', line: 'Starting provisioning...' });\n dispatch({ type: 'ADD_PROVISION_LOG', line: '' });\n\n const allRoles = getAllRoles(state);\n\n startProvision({\n companyName: state.companyName,\n companyDescription: state.companyDescription || undefined,\n goals: state.goals.length > 0 ? state.goals : undefined,\n projects: state.projects.length > 0 ? state.projects : undefined,\n issues: state.issues.length > 0 ? state.issues : undefined,\n ceoAdapter: state.ceoAdapter,\n presetName: state.presetName,\n selectedModules: state.selectedModules,\n selectedRoles: state.selectedRoles,\n allRoles,\n fileOverrides: Object.keys(state.fileOverrides).length > 0 ? state.fileOverrides : undefined,\n existingCompanyId: state.existingCompanyId.trim() || undefined,\n })\n .then((result: any) => {\n // Action returns result directly with logs\n if (result?.logs) {\n for (const line of result.logs) {\n dispatch({ type: 'ADD_PROVISION_LOG', line });\n }\n }\n // Graceful error return \u2014 action no longer throws, check result.error\n if (result?.error) {\n dispatch({ type: 'SET_PROVISIONING', value: false });\n dispatch({ type: 'SET_ERROR', error: result.error });\n return;\n }\n dispatch({ type: 'ADD_PROVISION_LOG', line: '' });\n dispatch({ type: 'ADD_PROVISION_LOG', line: 'All done!' });\n dispatch({ type: 'SET_PROVISION_RESULT', result });\n setTimeout(() => dispatch({ type: 'GO_TO', step: 'done' }), 2000);\n })\n .catch((err: unknown) => {\n // Fallback \u2014 should rarely fire now that the worker returns errors gracefully\n const message =\n err instanceof Error\n ? err.message\n : typeof err === 'object' && err !== null && 'message' in err\n ? String((err as { message: unknown }).message)\n : 'Provisioning failed';\n dispatch({ type: 'SET_PROVISIONING', value: false });\n dispatch({ type: 'SET_ERROR', error: message });\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const isDone = !state.provisioning && state.provisionResult;\n const showConfigHint = state.error && isConfigError(state.error);\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight flex items-center gap-2\">\n {state.provisioning && <Loader2 className=\"h-5 w-5 animate-spin\" />}\n {state.provisioning ? 'Provisioning...' : state.error ? 'Error' : 'Provisioned'}\n </h2>\n {isDone && (\n <p className=\"text-sm text-muted-foreground\">\n Company created. CEO will bootstrap the team on first heartbeat.\n </p>\n )}\n </div>\n\n {/* Config error with actionable hint */}\n {showConfigHint && (\n <div className=\"rounded-lg border border-amber-500/30 bg-amber-500/10 dark:bg-amber-500/5 p-4 space-y-3\">\n <div className=\"flex items-start gap-3\">\n <AlertTriangle className=\"h-5 w-5 text-amber-500 dark:text-amber-400 shrink-0 mt-0.5\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">Authentication required</p>\n <p className=\"text-sm text-muted-foreground\">\n This Paperclip instance requires credentials. Configure{' '}\n <span className=\"font-medium\">paperclipEmail</span> and{' '}\n <span className=\"font-medium\">paperclipPassword</span> in the plugin settings.\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-2 pl-8\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n window.location.href = getPluginSettingsUrl();\n }}\n >\n <Settings className=\"h-3.5 w-3.5 mr-1.5\" />\n Plugin Settings\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n dispatch({ type: 'SET_ERROR', error: null });\n started.current = false;\n dispatch({ type: 'SET_PROVISIONING', value: false });\n dispatch({ type: 'GO_TO', step: state.path === 'ai' ? 'ai-wizard' : 'summary' });\n }}\n >\n <RotateCcw className=\"h-3.5 w-3.5 mr-1.5\" />\n Back to Summary\n </Button>\n </div>\n </div>\n )}\n\n {/* Generic error (non-config) */}\n {state.error && !showConfigHint && (\n <div className=\"rounded-lg border border-destructive/30 bg-destructive/5 p-4 space-y-3\">\n <div className=\"flex items-start gap-3\">\n <AlertTriangle className=\"h-5 w-5 text-destructive shrink-0 mt-0.5\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">Provisioning failed</p>\n <p className=\"text-sm text-muted-foreground\">{state.error}</p>\n </div>\n </div>\n <div className=\"pl-8\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n dispatch({ type: 'SET_ERROR', error: null });\n started.current = false;\n dispatch({ type: 'SET_PROVISIONING', value: false });\n dispatch({ type: 'GO_TO', step: state.path === 'ai' ? 'ai-wizard' : 'summary' });\n }}\n >\n <RotateCcw className=\"h-3.5 w-3.5 mr-1.5\" />\n Back to Summary\n </Button>\n </div>\n </div>\n )}\n\n <div className=\"rounded-lg border bg-card p-4 font-mono text-xs max-h-[400px] overflow-y-auto\">\n {state.provisionLog.map((line, i) => (\n <div\n key={i}\n className={\n line.startsWith('\u2713')\n ? 'text-green-600 py-0.5'\n : line.startsWith('!')\n ? 'text-yellow-600 py-0.5'\n : line.startsWith('Error')\n ? 'text-destructive py-0.5'\n : line.startsWith('+') || line.startsWith(' ')\n ? 'text-foreground pl-2 py-0.5 bg-muted/50 rounded my-0.5'\n : 'text-muted-foreground py-0.5'\n }\n >\n {line || '\\u00A0'}\n </div>\n ))}\n <div ref={logEndRef} />\n </div>\n </div>\n );\n}\n", "import { useEffect, useRef, useState } from 'react';\nimport { useWizard, useWizardDispatch, getAllRoles } from '../../context/WizardContext';\nimport { usePluginAction } from '@paperclipai/plugin-sdk/ui';\nimport { Button } from '../ui/button';\nimport { Loader2, UserPlus, RefreshCw, UserMinus, CheckCircle, AlertCircle } from 'lucide-react';\n\ninterface AgentDiff {\n role: string;\n title: string;\n action: string;\n}\n\ninterface RoutineDiff {\n title: string;\n action: string;\n assignTo?: string;\n}\n\ninterface DesiredSkillsPreserved {\n agentId: string;\n agentName: string;\n skills: string[];\n}\n\ninterface PreviewDiff {\n companyId: string;\n companyName: string;\n agents: AgentDiff[];\n routines: RoutineDiff[];\n desiredSkillsPreserved: DesiredSkillsPreserved[];\n plannedFiles: number;\n}\n\nfunction AgentActionIcon({ action }: { action: string }) {\n switch (action) {\n case 'hire':\n return <UserPlus className=\"h-4 w-4 text-green-500 shrink-0\" />;\n case 'update':\n return <RefreshCw className=\"h-4 w-4 text-blue-500 shrink-0\" />;\n case 'retire':\n return <UserMinus className=\"h-4 w-4 text-red-500 shrink-0\" />;\n default:\n return null;\n }\n}\n\nfunction ActionBadge({ action }: { action: string }) {\n const colorMap: Record<string, string> = {\n hire: 'bg-green-500/10 text-green-700 dark:text-green-400 border-green-500/20',\n update: 'bg-blue-500/10 text-blue-700 dark:text-blue-400 border-blue-500/20',\n retire: 'bg-red-500/10 text-red-700 dark:text-red-400 border-red-500/20',\n create: 'bg-green-500/10 text-green-700 dark:text-green-400 border-green-500/20',\n };\n const cls = colorMap[action] || 'bg-muted text-muted-foreground border-border';\n return (\n <span\n className={`inline-flex items-center rounded border px-1.5 py-0.5 text-xs font-medium ${cls}`}\n >\n {action}\n </span>\n );\n}\n\nexport function StepPreview() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const previewAction = usePluginAction('preview-company-update');\n const [diff, setDiff] = useState<PreviewDiff | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const started = useRef(false);\n\n useEffect(() => {\n if (started.current) return;\n started.current = true;\n\n const allRoles = getAllRoles(state);\n\n previewAction({\n existingCompanyId: state.existingCompanyId,\n companyName: state.companyName || undefined,\n presetName: state.presetName,\n selectedModules: state.selectedModules,\n selectedRoles: state.selectedRoles,\n goals: state.goals.length > 0 ? state.goals : undefined,\n projects: state.projects.length > 0 ? state.projects : undefined,\n issues: state.issues.length > 0 ? state.issues : undefined,\n allRoles,\n })\n .then((result: any) => {\n if (result?.error) {\n setError(result.error);\n setLoading(false);\n return;\n }\n setDiff(result?.diff ?? null);\n setLoading(false);\n })\n .catch((err: unknown) => {\n setError(err instanceof Error ? err.message : 'Preview failed');\n setLoading(false);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (loading) {\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight flex items-center gap-2\">\n <Loader2 className=\"h-5 w-5 animate-spin\" />\n Loading preview...\n </h2>\n <p className=\"text-sm text-muted-foreground\">\n Comparing your configuration against the existing company.\n </p>\n </div>\n </div>\n );\n }\n\n if (error || !diff) {\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Preview failed</h2>\n </div>\n <div className=\"rounded-lg border border-destructive/30 bg-destructive/5 p-4 space-y-3\">\n <div className=\"flex items-start gap-3\">\n <AlertCircle className=\"h-5 w-5 text-destructive shrink-0 mt-0.5\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">Could not load preview</p>\n <p className=\"text-sm text-muted-foreground\">{error || 'No diff data returned.'}</p>\n </div>\n </div>\n <div className=\"pl-8\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => dispatch({ type: 'GO_TO', step: 'summary' })}\n >\n Back to Summary\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n const hasRetire = diff.agents.some((a) => a.action === 'retire');\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Preview changes</h2>\n <p className=\"text-sm text-muted-foreground\">\n Review what will change when you update{' '}\n <span className=\"font-medium\">{diff.companyName}</span>.\n </p>\n </div>\n\n {/* Agents section */}\n <div className=\"rounded-lg border p-4 space-y-3\">\n <h3 className=\"text-sm font-semibold\">Agents ({diff.agents.length})</h3>\n <ul className=\"space-y-2\">\n {diff.agents.map((agent) => (\n <li key={`${agent.role}-${agent.action}`} className=\"flex items-center gap-2\">\n <AgentActionIcon action={agent.action} />\n <span className=\"text-sm flex-1\">{agent.title}</span>\n <ActionBadge action={agent.action} />\n </li>\n ))}\n </ul>\n </div>\n\n {/* Routines section */}\n {diff.routines.length > 0 && (\n <div className=\"rounded-lg border p-4 space-y-3\">\n <h3 className=\"text-sm font-semibold\">Routines ({diff.routines.length})</h3>\n <ul className=\"space-y-2\">\n {diff.routines.map((routine) => (\n <li key={routine.title} className=\"flex items-center gap-2\">\n <CheckCircle className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n <span className=\"text-sm flex-1\">{routine.title}</span>\n <ActionBadge action={routine.action} />\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Desired Skills Preserved section */}\n {diff.desiredSkillsPreserved.length > 0 && (\n <div className=\"rounded-lg border p-4 space-y-3\">\n <h3 className=\"text-sm font-semibold\">Preserved skills</h3>\n <p className=\"text-xs text-muted-foreground\">\n The following agents have individually-assigned skills that will be preserved during the\n update.\n </p>\n <ul className=\"space-y-2\">\n {diff.desiredSkillsPreserved.map((entry) => (\n <li key={entry.agentId} className=\"text-sm\">\n <span className=\"font-medium\">{entry.agentName}</span>\n <span className=\"text-muted-foreground\"> \u2014 {entry.skills.join(', ')}</span>\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Retired roles notice */}\n {hasRetire && (\n <div className=\"flex items-start gap-3 rounded-lg border border-amber-500/30 bg-amber-500/10 dark:bg-amber-500/5 p-4\">\n <AlertCircle className=\"h-4 w-4 text-amber-500 dark:text-amber-400 shrink-0 mt-0.5\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium text-amber-800 dark:text-amber-200\">\n Retired agents will not be auto-terminated\n </p>\n <p className=\"text-xs text-amber-700 dark:text-amber-300\">\n Roles removed from the configuration are marked for retirement, but the corresponding\n agents will not be terminated automatically. A review issue will be created so you can\n decide whether to terminate each agent.\n </p>\n </div>\n </div>\n )}\n\n {/* Files summary */}\n <div className=\"rounded-lg border p-4\">\n <p className=\"text-sm text-muted-foreground\">\n <span className=\"font-medium text-foreground\">{diff.plannedFiles}</span> file\n {diff.plannedFiles !== 1 ? 's' : ''} will be generated in the company workspace.\n </p>\n </div>\n\n {/* Navigation */}\n <div className=\"flex justify-end gap-3\">\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'GO_TO', step: 'summary' })}>\n Back\n </Button>\n <Button onClick={() => dispatch({ type: 'GO_TO', step: 'provision' })}>Apply Update</Button>\n </div>\n </div>\n );\n}\n", "import { useState } from 'react';\nimport { useWizard, useWizardDispatch } from '../../context/WizardContext';\nimport { Button } from '../ui/button';\nimport { Input } from '../ui/input';\nimport { ArrowRight } from 'lucide-react';\n\nexport function StepExistingCompany() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const [touched, setTouched] = useState(false);\n\n const isEmpty = !state.existingCompanyId.trim();\n\n const handleNext = () => {\n if (isEmpty) {\n setTouched(true);\n return;\n }\n dispatch({ type: 'GO_TO', step: 'preset' });\n };\n\n return (\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h2 className=\"text-xl font-semibold tracking-tight\">Update existing company</h2>\n <p className=\"text-sm text-muted-foreground\">\n Enter the ID of the company you want to update. This will load the existing configuration\n and allow you to modify modules, roles, and settings.\n </p>\n </div>\n\n <div className=\"space-y-3\">\n <Input\n placeholder=\"e.g. 42a5aea0-1234-5678-90ab-cdef12345678\"\n value={state.existingCompanyId}\n onChange={(e) => dispatch({ type: 'SET_EXISTING_COMPANY_ID', value: e.target.value })}\n onKeyDown={(e) => e.key === 'Enter' && handleNext()}\n autoFocus\n className=\"text-base h-11\"\n />\n {touched && isEmpty && (\n <p className=\"text-sm text-destructive\">Please enter a company ID.</p>\n )}\n </div>\n\n <div className=\"flex justify-end gap-3\">\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'GO_TO', step: 'onboarding' })}>\n Back\n </Button>\n <Button onClick={handleNext} disabled={isEmpty}>\n Next\n <ArrowRight className=\"h-4 w-4 ml-1.5\" />\n </Button>\n </div>\n </div>\n );\n}\n", "import { useWizard, useWizardDispatch, getAllRoles } from '../../context/WizardContext';\nimport { Button } from '../ui/button';\nimport { Card, CardContent } from '../ui/card';\nimport { Badge } from '../ui/badge';\nimport { CheckCircle2, RotateCcw, ExternalLink } from 'lucide-react';\n\nexport function StepDone() {\n const state = useWizard();\n const dispatch = useWizardDispatch();\n const allRoles = getAllRoles(state);\n const result = state.provisionResult;\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-start gap-3\">\n <CheckCircle2 className=\"h-6 w-6 text-green-600 shrink-0 mt-0.5\" />\n <div>\n <h2 className=\"text-xl font-semibold tracking-tight\">{state.companyName}</h2>\n <p className=\"text-sm text-muted-foreground mt-1\">\n {state.existingCompanyId\n ? 'Workspace has been assembled and bootstrap tasks were added to the existing Paperclip company.'\n : 'Company has been assembled and registered with Paperclip.'}\n </p>\n </div>\n </div>\n\n <Card>\n <CardContent className=\"pt-6 space-y-4\">\n {state.goals[0]?.title && (\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1\">\n Goal\n </p>\n <p className=\"text-sm\">{state.goals[0].title}</p>\n </div>\n )}\n\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2\">\n Team ({allRoles.length} agents)\n </p>\n <div className=\"flex flex-wrap gap-1.5\">\n {allRoles.map((r) => {\n const role = state.roles.find((ro) => ro.name === r);\n return (\n <Badge key={r} variant=\"outline\" className=\"text-xs\">\n {role?.title || r}\n </Badge>\n );\n })}\n </div>\n </div>\n\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2\">\n Modules ({state.selectedModules.length})\n </p>\n <div className=\"flex flex-wrap gap-1.5\">\n {state.selectedModules.map((m) => (\n <Badge key={m} variant=\"secondary\" className=\"text-xs\">\n {m}\n </Badge>\n ))}\n </div>\n </div>\n\n {result?.issueIds && result.issueIds.length > 0 && (\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1\">\n Issues\n </p>\n <p className=\"text-sm\">{result.issueIds.length} issues provisioned</p>\n </div>\n )}\n\n {state.presetName && (\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1\">\n Preset\n </p>\n <p className=\"text-sm capitalize\">{state.presetName}</p>\n </div>\n )}\n\n {result?.companyId && (\n <div>\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1\">\n Company ID\n </p>\n <p className=\"font-mono text-xs\">{result.companyId}</p>\n </div>\n )}\n </CardContent>\n </Card>\n\n <div className=\"flex gap-3\">\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'RESET' })}>\n <RotateCcw className=\"h-4 w-4\" />\n Create another\n </Button>\n <Button asChild>\n <a\n href={\n result?.paperclipUrl && result?.issuePrefix\n ? `${result.paperclipUrl}/${result.issuePrefix}/dashboard`\n : result?.paperclipUrl || 'http://localhost:3100'\n }\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <ExternalLink className=\"h-4 w-4\" />\n Open Paperclip\n </a>\n </Button>\n </div>\n </div>\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["forwardRef", "createElement", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "__iconNode", "useEffect", "r", "useState", "concatArrays", "array1", "array2", "combinedArray", "Array", "length", "i", "createClassValidatorObject", "classGroupId", "validator", "createClassPartObject", "nextPart", "Map", "validators", "CLASS_PART_SEPARATOR", "EMPTY_CONFLICTS", "ARBITRARY_PROPERTY_PREFIX", "createClassGroupUtils", "config", "classMap", "createClassMap", "conflictingClassGroups", "conflictingClassGroupModifiers", "getClassGroupId", "className", "startsWith", "endsWith", "getGroupIdForArbitraryProperty", "classParts", "split", "startIndex", "getGroupRecursive", "getConflictingClassGroupIds", "hasPostfixModifier", "modifierConflicts", "baseConflicts", "classPartObject", "classPathsLength", "currentClassPart", "nextClassPartObject", "get", "result", "undefined", "classRest", "join", "slice", "validatorsLength", "validatorObj", "indexOf", "content", "colonIndex", "property", "theme", "classGroups", "processClassGroups", "group", "processClassesRecursively", "classGroup", "len", "classDefinition", "processClassDefinition", "processStringDefinition", "processFunctionDefinition", "processObjectDefinition", "classPartObjectToEdit", "getPart", "isThemeGetter", "push", "entries", "Object", "key", "value", "path", "current", "parts", "part", "next", "set", "func", "createLruCache", "maxCacheSize", "cacheSize", "cache", "create", "previousCache", "update", "IMPORTANT_MODIFIER", "MODIFIER_SEPARATOR", "EMPTY_MODIFIERS", "createResultObject", "modifiers", "hasImportantModifier", "baseClassName", "maybePostfixModifierPosition", "isExternal", "createParseClassName", "prefix", "experimentalParseClassName", "parseClassName", "bracketDepth", "parenDepth", "modifierStart", "postfixModifierPosition", "index", "currentCharacter", "baseClassNameWithImportantModifier", "fullPrefix", "parseClassNameOriginal", "createSortModifiers", "modifierWeights", "orderSensitiveModifiers", "forEach", "mod", "currentSegment", "modifier", "isArbitrary", "isOrderSensitive", "has", "sort", "createConfigUtils", "sortModifiers", "SPLIT_CLASSES_REGEX", "mergeClassList", "classList", "configUtils", "classGroupsInConflict", "classNames", "trim", "originalClassName", "substring", "variantModifier", "modifierId", "classId", "conflictGroups", "twJoin", "classLists", "argument", "resolvedValue", "string", "toValue", "mix", "k", "createTailwindMerge", "createConfigFirst", "createConfigRest", "cacheGet", "cacheSet", "functionToCall", "initTailwindMerge", "reduce", "previousConfig", "createConfigCurrent", "tailwindMerge", "cachedResult", "args", "fallbackThemeArr", "fromTheme", "themeGetter", "arbitraryValueRegex", "arbitraryVariableRegex", "fractionRegex", "tshirtUnitRegex", "lengthUnitRegex", "colorFunctionRegex", "shadowRegex", "imageRegex", "isFraction", "test", "isNumber", "Number", "isNaN", "isInteger", "isPercent", "isTshirtSize", "isAny", "isLengthOnly", "isNever", "isShadow", "isImage", "isAnyNonArbitrary", "isArbitraryValue", "isArbitraryVariable", "isArbitrarySize", "getIsArbitraryValue", "isLabelSize", "isArbitraryLength", "isLabelLength", "isArbitraryNumber", "isLabelNumber", "isArbitraryWeight", "isLabelWeight", "isArbitraryFamilyName", "isLabelFamilyName", "isArbitraryPosition", "isLabelPosition", "isArbitraryImage", "isLabelImage", "isArbitraryShadow", "isLabelShadow", "isArbitraryVariableLength", "getIsArbitraryVariable", "isArbitraryVariableFamilyName", "isArbitraryVariablePosition", "isArbitraryVariableSize", "isArbitraryVariableImage", "isArbitraryVariableShadow", "isArbitraryVariableWeight", "testLabel", "testValue", "exec", "shouldMatchNoLabel", "label", "getDefaultConfig", "themeColor", "fromTheme", "themeFont", "themeText", "themeFontWeight", "themeTracking", "themeLeading", "themeBreakpoint", "themeContainer", "themeSpacing", "themeRadius", "themeShadow", "themeInsetShadow", "themeTextShadow", "themeDropShadow", "themeBlur", "themePerspective", "themeAspect", "themeEase", "themeAnimate", "scaleBreak", "scalePosition", "scalePositionWithArbitrary", "isArbitraryVariable", "isArbitraryValue", "scaleOverflow", "scaleOverscroll", "scaleUnambiguousSpacing", "scaleInset", "isFraction", "scaleGridTemplateColsRows", "isInteger", "scaleGridColRowStartAndEnd", "span", "scaleGridColRowStartOrEnd", "scaleGridAutoColsRows", "scaleAlignPrimaryAxis", "scaleAlignSecondaryAxis", "scaleMargin", "scaleSizing", "scaleSizingInline", "scaleSizingBlock", "scaleColor", "scaleBgPosition", "isArbitraryVariablePosition", "isArbitraryPosition", "position", "scaleBgRepeat", "repeat", "scaleBgSize", "isArbitraryVariableSize", "isArbitrarySize", "size", "scaleGradientStopPosition", "isPercent", "isArbitraryVariableLength", "isArbitraryLength", "scaleRadius", "scaleBorderWidth", "isNumber", "scaleLineStyle", "scaleBlendMode", "scaleMaskImagePosition", "scaleBlur", "scaleRotate", "scaleScale", "scaleSkew", "scaleTranslate", "cacheSize", "theme", "animate", "aspect", "blur", "isTshirtSize", "breakpoint", "color", "isAny", "container", "ease", "font", "isAnyNonArbitrary", "leading", "perspective", "radius", "shadow", "spacing", "text", "tracking", "classGroups", "columns", "box", "display", "sr", "float", "clear", "isolation", "object", "overflow", "overscroll", "inset", "start", "end", "top", "right", "bottom", "left", "visibility", "z", "basis", "flex", "grow", "shrink", "order", "col", "row", "gap", "justify", "content", "items", "baseline", "self", "p", "px", "py", "ps", "pe", "pbs", "pbe", "pt", "pr", "pb", "pl", "m", "mx", "my", "ms", "me", "mbs", "mbe", "mt", "mr", "mb", "ml", "inline", "block", "w", "screen", "h", "isArbitraryVariableWeight", "isArbitraryWeight", "isArbitraryVariableFamilyName", "isArbitraryFamilyName", "isArbitraryNumber", "list", "placeholder", "decoration", "indent", "align", "whitespace", "break", "wrap", "hyphens", "bg", "linear", "to", "radial", "conic", "isArbitraryVariableImage", "isArbitraryImage", "from", "via", "rounded", "border", "divide", "outline", "isArbitraryVariableShadow", "isArbitraryShadow", "ring", "opacity", "mask", "closest", "farthest", "filter", "brightness", "contrast", "grayscale", "invert", "saturate", "sepia", "table", "caption", "transition", "duration", "delay", "backface", "rotate", "scale", "skew", "transform", "origin", "translate", "accent", "appearance", "caret", "scheme", "cursor", "resize", "scroll", "snap", "touch", "select", "fill", "stroke", "conflictingClassGroups", "conflictingClassGroupModifiers", "orderSensitiveModifiers", "twMerge", "createTailwindMerge", "getDefaultConfig", "toPascalCase", "jsx", "jsx", "Icon", "useState", "React", "jsx", "React", "param", "jsx", "useCallback", "useState", "jsx", "jsxs", "useState", "useCallback", "toPascalCase", "useCallback", "jsx", "jsxs", "useCallback", "useState", "jsx", "jsxs", "Icon", "useState", "useCallback", "jsx", "jsx", "jsxs", "Icon", "jsx", "jsxs", "jsx", "jsxs", "r", "useEffect", "useRef", "useState", "usePluginAction", "useEffect", "useState", "useCallback", "useRef", "usePluginAction", "useState", "useEffect", "useCallback", "createContext", "useContext", "Fragment", "jsx", "Fragment", "jsx", "jsxs", "Icon", "useState", "r", "useRef", "usePluginAction", "useCallback", "useEffect", "toPascalCase", "jsx", "jsxs", "usePluginAction", "useState", "useRef", "useEffect", "useState", "useRef", "useEffect", "usePluginAction", "jsx", "jsxs", "Icon", "useState", "useEffect", "usePluginAction", "useRef", "r", "useEffect", "useRef", "usePluginAction", "jsx", "jsxs", "useRef", "usePluginAction", "useEffect", "useEffect", "useRef", "useState", "usePluginAction", "jsx", "jsxs", "usePluginAction", "useState", "useRef", "useEffect", "useState", "jsx", "jsxs", "useState", "jsx", "jsxs", "r", "jsx", "jsxs", "useEffect", "jsx", "jsxs", "jsxs", "jsx"]
|
|
7
7
|
}
|