{"_id":"@amigo-ai/ui","_rev":"4-0d85736be73314401e508e6e91e29161","name":"@amigo-ai/ui","dist-tags":{"latest":"1.3.1"},"versions":{"1.0.0":{"name":"@amigo-ai/ui","version":"1.0.0","license":"UNLICENSED","_id":"@amigo-ai/ui@1.0.0","maintainers":[{"name":"johnxing-amigo-ai","email":"john@amigo.ai"},{"name":"cory_amigo","email":"cory@amigo.ai"},{"name":"leothedog","email":"ccrowley96@gmail.com"},{"name":"ezeugo-amigo","email":"ezeugo@amigo.ai"},{"name":"caly_amigo","email":"caly@amigo.ai"}],"homepage":"https://github.com/amigo-ai/design-system#readme","bugs":{"url":"https://github.com/amigo-ai/design-system/issues"},"dist":{"shasum":"4933dcf051740ec911d4434316d80ca2e7aa07bf","tarball":"https://registry.npmjs.org/@amigo-ai/ui/-/ui-1.0.0.tgz","fileCount":20,"integrity":"sha512-p1Tku0UM0qxIW19b6jnMtDDDqQx4p3F3MyiDhu0vLwtex0LKbKbmshxVdb8ZFJJn865qt44qsuxRTdAnKCVXOQ==","signatures":[{"sig":"MEQCIDJ0uT8LrsWVLV6/kVChE2WuV+EzTLvyhbeTbBSZp5DQAiBKUDUW4vGZBVBHs1AkVgl/dyJxP7UaFbOZoDWdhL+7oA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2847987},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./globals.css":"./dist/globals.css","./package.json":"./package.json","./tailwind-preset":{"types":"./dist/tailwind-preset.d.ts","import":"./dist/tailwind-preset.js","default":"./dist/tailwind-preset.js","require":"./dist/tailwind-preset.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup && cp src/globals.css dist/globals.css && mkdir -p dist/fonts && cp src/fonts/* dist/fonts/","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"pnpm build && changeset publish","lint:fix":"eslint . --fix","validate":"pnpm lint && pnpm format:check && pnpm typecheck && pnpm build && pnpm test","changeset":"changeset","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","build-storybook":"storybook build","version-packages":"changeset version"},"_npmUser":{"name":"ezeugo-amigo","email":"ezeugo@amigo.ai"},"repository":{"url":"git+https://github.com/amigo-ai/design-system.git","type":"git"},"_npmVersion":"11.6.2","description":"Amigo Design System — unified UI package","directories":{},"lint-staged":{"**/*.{js,mjs,cjs,ts,tsx}":["eslint --fix","prettier --write"],"**/*.{json,md,yml,yaml,css}":["prettier --write"]},"sideEffects":["dist/globals.css"],"_nodeVersion":"25.2.1","dependencies":{"zod":"^3.22.0","clsx":"^2.1.0","cmdk":"^1.0.0","sonner":"^1.7.0","little-date":"^1.0.0","lucide-react":"^0.483.0","tailwind-merge":"^3.0.0","react-day-picker":"^9.0.0","tailwindcss-animate":"^1.0.7","@radix-ui/react-slot":"^1.1.0","@radix-ui/react-tabs":"^1.1.0","@radix-ui/react-label":"^2.1.0","@radix-ui/react-avatar":"^1.1.0","@radix-ui/react-dialog":"^1.1.0","@radix-ui/react-select":"^2.1.0","@radix-ui/react-slider":"^1.2.0","@radix-ui/react-switch":"^1.1.0","@radix-ui/react-toggle":"^1.1.0","react-resizable-panels":"^2.0.0","@radix-ui/react-popover":"^1.1.0","@radix-ui/react-tooltip":"^1.1.0","@radix-ui/react-checkbox":"^1.1.0","@radix-ui/react-progress":"^1.1.0","class-variance-authority":"^0.7.0","@radix-ui/react-accordion":"^1.2.0","@radix-ui/react-separator":"^1.1.0","@radix-ui/react-hover-card":"^1.1.0","@radix-ui/react-collapsible":"^1.1.0","@radix-ui/react-radio-group":"^1.2.0","@radix-ui/react-scroll-area":"^1.2.0","@radix-ui/react-alert-dialog":"^1.1.0","@radix-ui/react-toggle-group":"^1.1.0","@radix-ui/react-dropdown-menu":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.4","devDependencies":{"tsup":"^8.3.0","vite":"^8.0.3","husky":"^9.1.7","jsdom":"^29.0.1","react":"^19.0.0","eslint":"^10.1.0","vitest":"^4.1.1","postcss":"^8.5.8","prettier":"^3.8.1","react-dom":"^19.0.0","storybook":"^10.3.3","@eslint/js":"^10.0.1","typescript":"^5.8.3","lint-staged":"^16.4.0","tailwindcss":"^3.4.14","@types/react":"^19.0.0","autoprefixer":"^10.4.27","@changesets/cli":"^2.30.0","@storybook/react":"^10.3.3","@types/react-dom":"^19.0.0","typescript-eslint":"^8.57.2","eslint-plugin-react":"^7.37.5","@storybook/addon-mcp":"^0.4.2","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.3","@tanstack/react-table":"^8.16.0","@testing-library/react":"^16.3.2","@storybook/addon-vitest":"^10.3.3","@tanstack/react-virtual":"^3.11.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","@testing-library/user-event":"^14.6.1","@changesets/changelog-github":"^0.6.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","recharts":"^2.0.0","react-dom":"^18.0.0 || ^19.0.0","tailwindcss":"^3.4.0","react-hook-form":"^7.0.0","@tanstack/react-table":"^8.0.0","@tanstack/react-virtual":"^3.0.0"},"peerDependenciesMeta":{"recharts":{"optional":true},"react-hook-form":{"optional":true},"@tanstack/react-table":{"optional":true},"@tanstack/react-virtual":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.0.0_1775682911014_0.28736965048873464","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@amigo-ai/ui","version":"1.3.0","license":"UNLICENSED","_id":"@amigo-ai/ui@1.3.0","maintainers":[{"name":"johnxing-amigo-ai","email":"john@amigo.ai"},{"name":"acchindra","email":"acchindra@amigo.ai"},{"name":"cory_amigo","email":"cory@amigo.ai"},{"name":"leothedog","email":"ccrowley96@gmail.com"},{"name":"ezeugo-amigo","email":"ezeugo@amigo.ai"},{"name":"caly_amigo","email":"caly@amigo.ai"}],"homepage":"https://github.com/amigo-ai/design-system#readme","bugs":{"url":"https://github.com/amigo-ai/design-system/issues"},"bin":{"amigo-design-review":"dist/bin/design-review.cjs"},"dist":{"shasum":"1926bc3ca29837e7db48070a8234557594dc3d92","tarball":"https://registry.npmjs.org/@amigo-ai/ui/-/ui-1.3.0.tgz","fileCount":42,"integrity":"sha512-HwZyl3G3LQtZpj6pI8esCEVINzr6Vjg99lorQgYxmKn1aGTfPAcYo+fjUWcIkzRxoBmYWRINy3TbzEoOvk1iAQ==","signatures":[{"sig":"MEQCIACFtqs05c6ft7CI2S7Sp2KkC5KKDSIO5wrK9tbyhhYhAiB3AQpcR7pmxX75EKVyt6JpqZVipw/dfB2a4NMYSvCx3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3088104},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./design-hq":{"types":"./dist/design-hq.d.ts","import":"./dist/design-hq.js","default":"./dist/design-hq.js","require":"./dist/design-hq.cjs"},"./globals.css":"./dist/globals.css","./package.json":"./package.json","./design-review":{"types":"./dist/design-review.d.ts","import":"./dist/design-review.js","default":"./dist/design-review.js","require":"./dist/design-review.cjs"},"./tailwind-preset":{"types":"./dist/tailwind-preset.d.ts","import":"./dist/tailwind-preset.js","default":"./dist/tailwind-preset.js","require":"./dist/tailwind-preset.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"pnpm build:compat && pnpm packages:build","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"pnpm build && changeset publish","lint:fix":"eslint . --fix","validate":"pnpm lint && pnpm format:check && pnpm typecheck && pnpm build && pnpm test","changeset":"changeset","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit","test:watch":"vitest","build:compat":"tsup && cp src/globals.css dist/globals.css && mkdir -p dist/fonts && cp src/fonts/* dist/fonts/","format:check":"prettier --check .","packages:pack":"pnpm packages:build && pnpm --filter @amigo-ai/tokens --filter @amigo-ai/ui-utils --filter @amigo-ai/primitives --filter @amigo-ai/patterns --filter @amigo-ai/design-review exec npm pack --dry-run","packages:build":"pnpm --filter @amigo-ai/tokens --filter @amigo-ai/ui-utils --filter @amigo-ai/primitives --filter @amigo-ai/patterns --filter @amigo-ai/design-review build","build-storybook":"storybook build","version-packages":"changeset version"},"_npmUser":{"name":"johnxing-amigo-ai","email":"john@amigo.ai"},"repository":{"url":"git+https://github.com/amigo-ai/design-system.git","type":"git"},"_npmVersion":"11.9.0","description":"Amigo Design System — unified UI package","directories":{},"lint-staged":{"**/*.{js,mjs,cjs,ts,tsx}":["eslint --fix","prettier --write"],"**/*.{json,md,yml,yaml,css}":["prettier --write"]},"sideEffects":["src/bin/design-review.ts","dist/globals.css"],"_nodeVersion":"25.6.1","dependencies":{"zod":"^3.22.0","clsx":"^2.1.0","cmdk":"^1.0.0","sonner":"^1.7.0","little-date":"^1.0.0","lucide-react":"^0.483.0","tailwind-merge":"^3.0.0","react-day-picker":"^9.0.0","tailwindcss-animate":"^1.0.7","@radix-ui/react-slot":"^1.1.0","@radix-ui/react-tabs":"^1.1.0","@radix-ui/react-label":"^2.1.0","@radix-ui/react-avatar":"^1.1.0","@radix-ui/react-dialog":"^1.1.0","@radix-ui/react-select":"^2.1.0","@radix-ui/react-slider":"^1.2.0","@radix-ui/react-switch":"^1.1.0","@radix-ui/react-toggle":"^1.1.0","react-resizable-panels":"^2.0.0","@radix-ui/react-popover":"^1.1.0","@radix-ui/react-tooltip":"^1.1.0","@radix-ui/react-checkbox":"^1.1.0","@radix-ui/react-progress":"^1.1.0","class-variance-authority":"^0.7.0","@radix-ui/react-accordion":"^1.2.0","@radix-ui/react-separator":"^1.1.0","@radix-ui/react-hover-card":"^1.1.0","@radix-ui/react-collapsible":"^1.1.0","@radix-ui/react-radio-group":"^1.2.0","@radix-ui/react-scroll-area":"^1.2.0","@radix-ui/react-alert-dialog":"^1.1.0","@radix-ui/react-toggle-group":"^1.1.0","@radix-ui/react-dropdown-menu":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.4","devDependencies":{"tsup":"^8.3.0","vite":"^8.0.3","husky":"^9.1.7","jsdom":"^29.0.1","react":"^19.0.0","eslint":"^10.1.0","vitest":"^4.1.1","postcss":"^8.5.8","prettier":"^3.8.1","react-dom":"^19.0.0","storybook":"^10.3.3","@eslint/js":"^10.0.1","typescript":"^5.8.3","@types/node":"^22.15.3","lint-staged":"^16.4.0","tailwindcss":"^3.4.14","@types/react":"^19.0.0","autoprefixer":"^10.4.27","@changesets/cli":"^2.30.0","@storybook/react":"^10.3.3","@types/react-dom":"^19.0.0","typescript-eslint":"^8.57.2","eslint-plugin-react":"^7.37.5","@storybook/addon-mcp":"^0.4.2","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.3","@tanstack/react-table":"^8.16.0","@testing-library/react":"^16.3.2","@storybook/addon-vitest":"^10.3.3","@tanstack/react-virtual":"^3.11.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","@testing-library/user-event":"^14.6.1","@changesets/changelog-github":"^0.6.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","recharts":"^2.0.0","react-dom":"^18.0.0 || ^19.0.0","tailwindcss":"^3.4.0","react-hook-form":"^7.0.0","@tanstack/react-table":"^8.0.0","@tanstack/react-virtual":"^3.0.0"},"peerDependenciesMeta":{"recharts":{"optional":true},"react-hook-form":{"optional":true},"@tanstack/react-table":{"optional":true},"@tanstack/react-virtual":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.3.0_1777264162885_0.984751373206705","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@amigo-ai/ui","version":"1.3.1","license":"UNLICENSED","description":"Amigo Design System — unified UI package","type":"module","sideEffects":["src/bin/design-review.ts","dist/globals.css"],"engines":{"node":">=20"},"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","default":"./dist/index.js"},"./design-hq":{"types":"./dist/design-hq.d.ts","import":"./dist/design-hq.js","require":"./dist/design-hq.cjs","default":"./dist/design-hq.js"},"./design-review":{"types":"./dist/design-review.d.ts","import":"./dist/design-review.js","require":"./dist/design-review.cjs","default":"./dist/design-review.js"},"./tailwind-preset":{"types":"./dist/tailwind-preset.d.ts","import":"./dist/tailwind-preset.js","require":"./dist/tailwind-preset.cjs","default":"./dist/tailwind-preset.js"},"./globals.css":"./dist/globals.css","./package.json":"./package.json"},"bin":{"amigo-design-review":"dist/bin/design-review.cjs"},"lint-staged":{"**/*.{js,mjs,cjs,ts,tsx}":["eslint --fix","prettier --write"],"**/*.{json,md,yml,yaml,css}":["prettier --write"]},"dependencies":{"@radix-ui/react-accordion":"^1.2.0","@radix-ui/react-alert-dialog":"^1.1.0","@radix-ui/react-avatar":"^1.1.0","@radix-ui/react-checkbox":"^1.1.0","@radix-ui/react-collapsible":"^1.1.0","@radix-ui/react-dialog":"^1.1.0","@radix-ui/react-hover-card":"^1.1.0","@radix-ui/react-dropdown-menu":"^2.1.0","@radix-ui/react-label":"^2.1.0","@radix-ui/react-popover":"^1.1.0","@radix-ui/react-progress":"^1.1.0","@radix-ui/react-radio-group":"^1.2.0","@radix-ui/react-scroll-area":"^1.2.0","@radix-ui/react-select":"^2.1.0","@radix-ui/react-separator":"^1.1.0","@radix-ui/react-slider":"^1.2.0","@radix-ui/react-slot":"^1.1.0","@radix-ui/react-switch":"^1.1.0","@radix-ui/react-tabs":"^1.1.0","@radix-ui/react-toggle":"^1.1.0","@radix-ui/react-toggle-group":"^1.1.0","@radix-ui/react-tooltip":"^1.1.0","class-variance-authority":"^0.7.0","clsx":"^2.1.0","cmdk":"^1.0.0","little-date":"^1.0.0","lucide-react":"^0.483.0","react-day-picker":"^9.0.0","react-resizable-panels":"^2.0.0","sonner":"^1.7.0","tailwind-merge":"^3.0.0","tailwindcss-animate":"^1.0.7","zod":"^3.22.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","tailwindcss":"^3.4.0","react-hook-form":"^7.0.0","recharts":"^2.0.0","@tanstack/react-table":"^8.0.0","@tanstack/react-virtual":"^3.0.0"},"peerDependenciesMeta":{"react-hook-form":{"optional":true},"recharts":{"optional":true},"@tanstack/react-table":{"optional":true},"@tanstack/react-virtual":{"optional":true}},"devDependencies":{"@changesets/changelog-github":"^0.6.0","@changesets/cli":"^2.30.0","@eslint/js":"^10.0.1","@storybook/addon-mcp":"^0.4.2","@storybook/addon-vitest":"^10.3.3","@storybook/react":"^10.3.3","@storybook/react-vite":"^10.3.3","@tanstack/react-table":"^8.16.0","@tanstack/react-virtual":"^3.11.0","@types/node":"^22.15.3","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitejs/plugin-react":"^6.0.1","autoprefixer":"^10.4.27","eslint":"^10.1.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^7.0.1","husky":"^9.1.7","jsdom":"^29.0.1","lint-staged":"^16.4.0","postcss":"^8.5.8","prettier":"^3.8.1","react":"^19.0.0","react-dom":"^19.0.0","storybook":"^10.3.3","tailwindcss":"^3.4.14","tsup":"^8.3.0","typescript":"^5.8.3","typescript-eslint":"^8.57.2","vite":"^8.0.3","vitest":"^4.1.1"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/amigo-ai/design-system.git"},"scripts":{"build":"pnpm build:compat && pnpm packages:build","build:compat":"tsup && cp src/globals.css dist/globals.css && mkdir -p dist/fonts && cp src/fonts/* dist/fonts/","dev":"tsup --watch","lint":"eslint . --max-warnings 0","lint:fix":"eslint . --fix","format":"prettier --write .","format:check":"prettier --check .","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","validate":"pnpm lint && pnpm format:check && pnpm typecheck && pnpm build && pnpm test","storybook":"storybook dev -p 6006","build-storybook":"storybook build","clean":"rm -rf dist","changeset":"changeset","version-packages":"changeset version","packages:build":"pnpm --filter @amigo-ai/tokens --filter @amigo-ai/ui-utils --filter @amigo-ai/primitives --filter @amigo-ai/patterns --filter @amigo-ai/design-review build","packages:pack":"pnpm packages:build && pnpm --filter @amigo-ai/tokens --filter @amigo-ai/ui-utils --filter @amigo-ai/primitives --filter @amigo-ai/patterns --filter @amigo-ai/design-review exec npm pack --dry-run","release":"pnpm build && changeset publish"},"_id":"@amigo-ai/ui@1.3.1","bugs":{"url":"https://github.com/amigo-ai/design-system/issues"},"homepage":"https://github.com/amigo-ai/design-system#readme","_integrity":"sha512-Z58zrBp6hey6rzWCDkUev1DeKOSYTf98vy3DeISp6xMlX1e+XyaMD4MaILdw1s5D/emQ2TdTlQs3CMXgqtH+HQ==","_resolved":"/tmp/1efc6accffd845c4bb43aa9383b9e4f0/amigo-ai-ui-1.3.1.tgz","_from":"file:amigo-ai-ui-1.3.1.tgz","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-Z58zrBp6hey6rzWCDkUev1DeKOSYTf98vy3DeISp6xMlX1e+XyaMD4MaILdw1s5D/emQ2TdTlQs3CMXgqtH+HQ==","shasum":"b56b54500063698ba37476e1ddc563911af56b68","tarball":"https://registry.npmjs.org/@amigo-ai/ui/-/ui-1.3.1.tgz","fileCount":42,"unpackedSize":3088046,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDrf0cIrSg1ziq64wx6qHryd5JVg9cYDUFt85cwrkac4QIgTAQVPapHb726zPPq6wKEibfCr58mw0ZsQ3Hu+WVvXME="}]},"_npmUser":{"name":"johnxing-amigo-ai","email":"john@amigo.ai"},"directories":{},"maintainers":[{"name":"johnxing-amigo-ai","email":"john@amigo.ai"},{"name":"acchindra","email":"acchindra@amigo.ai"},{"name":"cory_amigo","email":"cory@amigo.ai"},{"name":"leothedog","email":"ccrowley96@gmail.com"},{"name":"ezeugo-amigo","email":"ezeugo@amigo.ai"},{"name":"caly_amigo","email":"caly@amigo.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ui_1.3.1_1777265128771_0.40002409136393546"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-08T21:15:10.892Z","modified":"2026-04-27T04:45:29.170Z","1.0.0":"2026-04-08T21:15:11.262Z","1.3.0":"2026-04-27T04:29:23.112Z","1.3.1":"2026-04-27T04:45:28.966Z"},"bugs":{"url":"https://github.com/amigo-ai/design-system/issues"},"license":"UNLICENSED","homepage":"https://github.com/amigo-ai/design-system#readme","repository":{"type":"git","url":"git+https://github.com/amigo-ai/design-system.git"},"description":"Amigo Design System — unified UI package","maintainers":[{"name":"johnxing-amigo-ai","email":"john@amigo.ai"},{"name":"acchindra","email":"acchindra@amigo.ai"},{"name":"cory_amigo","email":"cory@amigo.ai"},{"name":"leothedog","email":"ccrowley96@gmail.com"},{"name":"ezeugo-amigo","email":"ezeugo@amigo.ai"},{"name":"caly_amigo","email":"caly@amigo.ai"}],"readme":"# Amigo Design System\n\nAn accessible UI foundation and application scaffolding layer for Amigo products. Built on [Radix UI](https://radix-ui.com), [Tailwind CSS](https://tailwindcss.com), and [shadcn/ui](https://ui.shadcn.com) patterns.\n\n---\n\n## Packages\n\nThis design system publishes layer-specific npm packages. `amigo-ai/design-hq` is the language\nsource of truth; `amigo-ai/design-system` is the implementation source of truth for consumer apps.\n\n| Package                   | Purpose                                                   | Version  |\n| ------------------------- | --------------------------------------------------------- | -------- |\n| `@amigo-ai/tokens`        | Colors, typography, spacing, globals.css, Tailwind preset | `4.12.0` |\n| `@amigo-ai/ui-utils`      | `cn()` and shared class/variant utilities                 | `4.3.0`  |\n| `@amigo-ai/primitives`    | Radix-wrapped primitives and building blocks              | `8.16.0` |\n| `@amigo-ai/patterns`      | Layout patterns, page shells, AmigoTable                  | `34.4.0` |\n| `@amigo-ai/design-review` | Design HQ reviewer metadata, scan API, CLI                | `0.2.0`  |\n| `@amigo-ai/ui`            | Compatibility umbrella package                            | `1.3.0`  |\n\nProduction apps should import from the owning layer package instead of the compatibility umbrella.\n\n## Install\n\n```bash\npnpm add @amigo-ai/tokens @amigo-ai/ui-utils @amigo-ai/primitives @amigo-ai/patterns\npnpm add -D @amigo-ai/design-review\n```\n\n```ts\n// tailwind.config.ts\nimport { amigoPreset } from \"@amigo-ai/tokens/tailwind-preset\";\n\nexport default {\n  presets: [amigoPreset],\n  content: [\n    \"./src/**/*.tsx\",\n    \"./node_modules/@amigo-ai/primitives/**/*.{js,tsx}\",\n    \"./node_modules/@amigo-ai/patterns/**/*.{js,tsx}\",\n  ],\n};\n```\n\n```tsx\n// app/layout.tsx - loads brand fonts, CSS variables, and type classes\nimport \"@amigo-ai/tokens/globals.css\";\n```\n\nConsumers must also have compatible peer dependencies installed in the app:\n\n- `react`\n- `react-dom`\n- `tailwindcss`\n\nSome components also rely on optional peers that should be installed only if used:\n\n- `react-hook-form`\n- `recharts`\n- `@tanstack/react-table`\n- `@tanstack/react-virtual`\n\n## AI Agent Consumption Guide\n\nUse this section as the implementation contract when an AI agent is asked to build a new app with\nthe Amigo design-system packages.\n\n### Design HQ source of truth\n\nDesign language decisions come from [`amigo-ai/design-hq`](https://github.com/amigo-ai/design-hq).\nThese packages encode that source through tokens, utilities, primitives, patterns, and the\n`amigo-design-review` CLI. Consumer apps should depend on the layer-specific packages:\n`@amigo-ai/tokens`, `@amigo-ai/ui-utils`, `@amigo-ai/primitives`, `@amigo-ai/patterns`, and\n`@amigo-ai/design-review`.\n\nEvery split package also exports `./design-hq` metadata so coding agents and CI can inspect the\nsource commit, package ownership, and consumer rules without scraping prose:\n\n```ts\nimport { designHqAgentWorkflow, designHqPackageContracts } from \"@amigo-ai/primitives/design-hq\";\n```\n\nThe current embedded Design HQ reference is:\n\n- Repository: `https://github.com/amigo-ai/design-hq.git`\n- Commit: `b5efe278188dd888d6c1eedb660d66d22825c59c`\n- Synced: `2026-04-26`\n\nRun design alignment reviewers in a consumer repo:\n\n```bash\npnpm exec amigo-design-review --severity error src tailwind.config.ts components.json\npnpm exec amigo-design-review --max-findings 200 src\npnpm exec amigo-design-review --severity error --format github src tailwind.config.ts\n```\n\nThe first command is CI-friendly and enforces hard source-of-truth errors. The second command runs\nthe broader warning reviewers for colors, borders, shadows, chart literals, focus states, icon-button\nlabels, motion, typography, spacing, and brand-surface drift.\n\nFor repeatable CI and agent runs, add `amigo-design-review.config.json` at the consumer repo root:\n\n```json\n{\n  \"targets\": [\"src\", \"tailwind.config.ts\", \"components.json\"],\n  \"severity\": \"error\",\n  \"maxFindings\": 200\n}\n```\n\nThe CLI automatically reads `amigo-design-review.config.json` or `.amigo-design-review.json`.\nUse `--format github` or `--github-annotations` in GitHub Actions to emit inline code-review\nannotations, and `--summary-file \"$GITHUB_STEP_SUMMARY\"` to write a job summary.\n\n### Required setup\n\n1. Install the packages and required peers:\n\n```bash\npnpm add @amigo-ai/tokens @amigo-ai/ui-utils @amigo-ai/primitives @amigo-ai/patterns react react-dom tailwindcss\npnpm add -D @amigo-ai/design-review\n```\n\n2. Load the design system stylesheet once at the app root:\n\n```tsx\nimport \"@amigo-ai/tokens/globals.css\";\n```\n\n3. Extend Tailwind with the shared preset:\n\n```ts\nimport { amigoPreset } from \"@amigo-ai/tokens/tailwind-preset\";\n\nexport default {\n  presets: [amigoPreset],\n  content: [\n    \"./src/**/*.{js,ts,jsx,tsx}\",\n    \"./app/**/*.{js,ts,jsx,tsx}\",\n    \"./components/**/*.{js,ts,jsx,tsx}\",\n    \"./node_modules/@amigo-ai/primitives/**/*.{js,tsx}\",\n    \"./node_modules/@amigo-ai/patterns/**/*.{js,tsx}\",\n  ],\n};\n```\n\n4. Build pages from exported primitives and patterns instead of reimplementing core UI.\n\n### Agent rules\n\n- Prefer imports from the owning `@amigo-ai/*` design package before creating local replacements.\n- Use `ResourcePage`, `PageContainer`, `PageSection`, `InfoCard`, `StatCard`, and `TablePage` for app layout.\n- Use `Button`, `Badge`, `Input`, `Select`, `Textarea`, `Dialog`, `Sheet`, `Tabs`, and `Form` for interaction patterns.\n- Keep styling in Tailwind utility classes and design system tokens; do not add CSS modules or styled-components.\n- Preserve the flat visual language: borders for structure, no decorative shadows.\n- Use semantic spacing and typography tokens already exposed by the preset and `globals.css`.\n- Only install optional peers when the chosen components need them.\n\n### Default stack assumptions\n\nAn AI agent can safely assume the following app setup unless told otherwise:\n\n- React app using TypeScript\n- Tailwind CSS configured in the host app\n- App root can import a global CSS file\n- Routing can be Next.js App Router, React Router, or another React router\n- Local app code owns data fetching, auth, mutations, and state management\n\n### What the package provides\n\n- Shared UI building blocks: buttons, inputs, dialogs, tables, badges, tabs, cards, and overlays\n- Higher-level product scaffolding: page shells, resource pages, filter bars, settings layouts, and detail layouts\n- Design tokens: colors, typography, spacing, borders, and brand fonts\n- Tailwind preset and global CSS for consistent visual language\n\n### What the package does not provide\n\n- Data fetching or API clients\n- Authentication or authorization logic\n- Analytics, telemetry, or feature flags\n- App-specific business logic\n- Routing, form schemas, or server actions\n\n### Recommended app scaffold\n\n```tsx\nimport {\n  FilterBar,\n  FilterSearch,\n  InfoCard,\n  InfoRow,\n  PageSection,\n  ResourcePage,\n  StatCard,\n} from \"@amigo-ai/patterns\";\nimport { Badge, Button } from \"@amigo-ai/primitives\";\n\nexport function CustomersPage() {\n  return (\n    <ResourcePage\n      title=\"Customers\"\n      description=\"Manage accounts, health, and recent activity.\"\n      actions={<Button>Add customer</Button>}\n      filters={\n        <FilterBar>\n          <FilterSearch placeholder=\"Search customers\" />\n          <Badge variant=\"neutral\">All segments</Badge>\n        </FilterBar>\n      }\n    >\n      <PageSection title=\"Overview\">\n        <div className=\"grid gap-4 md:grid-cols-3\">\n          <StatCard label=\"Active\" value=\"1,284\" />\n          <StatCard label=\"At risk\" value=\"43\" />\n          <StatCard label=\"Expansion\" value=\"$82k\" />\n        </div>\n      </PageSection>\n\n      <PageSection title=\"Details\">\n        <InfoCard title=\"Selected customer\">\n          <InfoRow label=\"Status\" value=\"Healthy\" />\n          <InfoRow label=\"Owner\" value=\"Success team\" />\n        </InfoCard>\n      </PageSection>\n    </ResourcePage>\n  );\n}\n```\n\n### Optional feature add-ons\n\nInstall these only when the app uses the related components:\n\n- `react-hook-form` for form wrappers and controlled form flows\n- `recharts` for chart components\n- `@tanstack/react-table` for advanced data tables\n- `@tanstack/react-virtual` for virtualized table or list rendering\n\n### Agent prompt starter\n\n```text\nBuild a React + TypeScript page using the Amigo design-system packages. Import @amigo-ai/tokens/globals.css once at the app root, extend Tailwind with @amigo-ai/tokens/tailwind-preset, import primitives from @amigo-ai/primitives, import page patterns from @amigo-ai/patterns, keep all styling in Tailwind classes, and follow the flat Amigo visual language with borders instead of shadows.\n```\n\n## Usage\n\n```tsx\nimport { Badge, Button, CopyButton } from \"@amigo-ai/primitives\";\nimport { InfoCard, InfoRow, ResourcePage, StatCard } from \"@amigo-ai/patterns\";\n\n<ResourcePage\n  title=\"Dashboard\"\n  description=\"Track call volume, quality, and deployment health.\"\n  actions={<Button withArrow>Book a Demo</Button>}\n  filters={<Badge variant=\"neutral\">Last 30 days</Badge>}\n>\n  <div className=\"grid grid-cols-3 gap-4\">\n    <StatCard label=\"Total Calls\" value=\"12,847\" />\n    <StatCard label=\"Avg Duration\" value=\"4m 32s\" />\n    <StatCard label=\"CSAT\" value=\"94%\" />\n  </div>\n\n  <InfoCard title=\"Agent Details\">\n    <InfoRow label=\"Status\" value={<Badge variant=\"success\">Active</Badge>} />\n  </InfoCard>\n</ResourcePage>;\n```\n\n## Design Language\n\nCore design tokens and shared primitives are synced from the [Amigo marketing site](https://github.com/amigo-ai/site), then extended with application-grade patterns for internal products.\n\n### Fonts\n\n| Font                 | Role                     | Source                                    |\n| -------------------- | ------------------------ | ----------------------------------------- |\n| **Flecha S**         | Display headlines, stats | Shipped as `.woff2` in `@amigo-ai/tokens` |\n| **Inter**            | Body text, buttons, UI   | Google Fonts (auto-loaded in globals.css) |\n| **ABC Diatype Mono** | Uppercase labels, code   | Shipped as `.woff2` in `@amigo-ai/tokens` |\n\nIn Next.js apps, `next/font` overrides the CSS variables (`--font-flecha`, `--font-inter`, `--font-diatype`) for optimal loading.\n\n### Colors\n\n| Token               | Value                 | Use                             |\n| ------------------- | --------------------- | ------------------------------- |\n| `amigo-blue`        | `#083241`             | Primary actions, links          |\n| `amigo-orange`      | `#AA412A`             | CTA buttons                     |\n| `amigo-green`       | `#2c3827`             | Secondary actions               |\n| `amigo-lavender`    | `#C5BACE`             | Accent                          |\n| `warm-1` → `warm-6` | `#F1EAE7` → `#575452` | Neutral surfaces, text, borders |\n\nFull semantic theme via CSS variables (`--background`, `--foreground`, `--primary`, `--muted`, etc.) with light defaults plus `.dark` / `[data-theme=\"dark\"]` overrides.\n\n### Typography Scale\n\nResponsive Tailwind tokens from `text-hero` (120px) down to `text-caption-sm` (11px), with semantic `type-*` classes:\n\n`type-display` · `type-h1` · `type-h2` · `type-h3` · `type-h4` · `type-subtitle` · `type-body` · `type-eyebrow` · `type-caption` · `type-mono` · `type-btn` · `type-blog-*` · `type-stat` · `type-quote-fluid`\n\n### Effects\n\n- **Fluid spacing** — `clamp()`-based tokens scaling from 375px to 1440px\n- **Border radius** — `6px` buttons, `20px` cards\n- **Flat design** — no shadows; use borders for elevation\n\n### Application Patterns\n\n- **Page scaffolding** — `PageContainer`, `PageSection`, and `ResourcePage` extract the layout structure used by admin and dashboard flows\n- **Settings surfaces** — `ConfigPageContainer` and `ConfigurationSplitView` provide a reusable split-view form layout\n- **Detail layouts** — `DetailPageWrapper`, `InfoCard`, and `StatCard` cover common entity detail screens\n\n### Button Variants\n\n| Variant       | Purpose               |\n| ------------- | --------------------- |\n| `default`     | Standard (primary)    |\n| `secondary`   | Secondary actions     |\n| `outline`     | Bordered, transparent |\n| `destructive` | Dangerous actions     |\n| `ghost`       | Minimal / inline      |\n| `link`        | Text link style       |\n\n## Components\n\n### Primitives (47)\n\nAccordion · Alert · AlertDialog · AmigoWordmark · Avatar · Badge · Breadcrumb · Button · Calendar · Card · Chart · Checkbox · Collapsible · Command · CopyButton · Dialog · DropdownMenu · EnhancedTooltip · Form · FormActions · HoverCard · IconBox · InlineEditField · Input · Label · LiveIndicator · Logo · MonoLabel · Pagination · Popover · Progress · RadioGroup · Resizable · ScrollArea · Select · Separator · Sheet · Sidebar · Skeleton · Slider · Switch · Table · Tabs · Textarea · Toggle · ToggleGroup · Tooltip · Typography\n\n### Patterns (31)\n\nAppShell · ConfigPageContainer · ConfigurationHeader · ConfigurationSplitView · ConfirmAlertDialog · DashboardGrid · DetailLayout · DetailPageWrapper · EmptyState · ErrorBoundary · ErrorState · FilterBar · FilterChip · FilterClear · FilterSearch · FormSection · InfoCard · KpiCard · LinedSection · LoadingState · LogoGrid · MetricCard · PageContainer · PageHeader · PageSection · PageShell · PageSkeleton · PropertiesPanel · ResourcePage · SectionHeader · SectionIntro · StatCard · StatusStrip · TablePage · Timeline · WizardShell\n\n## Accessibility\n\n- **WCAG 2.1 AA** — all color pairings verified at 4.5:1+ contrast\n- **`prefers-reduced-motion`** — all animations and transitions disabled\n- **Focus rings** — `focus-visible` on every interactive component\n- **Screen readers** — Radix UI provides full ARIA semantics out of the box\n- **`aria-hidden`** on decorative icons\n\n## Development\n\n```bash\npnpm install          # install deps\npnpm build            # build compatibility package\npnpm packages:build   # build split packages\npnpm typecheck        # type check\npnpm lint             # ESLint, zero warnings\npnpm format:check     # Prettier\npnpm test             # Vitest\npnpm changeset        # create a changeset\n```\n\n## CI / CD\n\n### CI — 3 parallel jobs on every push and PR\n\n| Job                   | What                              |\n| --------------------- | --------------------------------- |\n| **Lint & Format**     | ESLint (zero warnings) + Prettier |\n| **Build & Typecheck** | Turborepo build + tsc             |\n| **Test**              | Vitest                            |\n\n### Release Process\n\nThis repo follows a standard **Changesets release train** for publishing public scoped packages to npm:\n\n1. Every package change lands with a changeset file from `pnpm changeset`\n2. Merging to `main` runs the `Release` workflow\n3. Changesets opens or updates a single bot-managed PR: `release: version packages`\n4. The workflow enables auto-merge on that PR after required checks pass\n5. When the release PR merges, the workflow publishes packages to npm and creates GitHub Releases\n\n### Release Rules\n\n- All publishable package changes require a changeset in the same PR\n- Published package versions must stay coordinated across the split package surface\n- `main` is the only publishing branch\n- CI must stay green on both the feature PR and the generated release PR\n\n### Day-To-Day Release Flow\n\n- Feature PR: add a changeset whenever package consumers should receive a new version\n- Merge to `main`: the release workflow opens or refreshes the release PR\n- Release PR: review the generated version/changelog diff if needed, then let auto-merge complete once checks pass\n- Publish: the merge of that release PR publishes `@amigo-ai/*` packages and creates GitHub Releases\n- Consume: downstream apps update to the new version from npm\n\n## Publishing\n\n```bash\nnpm login\npnpm build\npnpm packages:build\npnpm typecheck\npnpm test\n```\n\nTo release a new version with Changesets:\n\n```bash\npnpm changeset\npnpm version-packages\npnpm release\n```\n\nFor a first public publish of a scoped package, npm requires public access. This repo is configured for that via `publishConfig.access` and Changesets `access: public`.\n\n## Tooling\n\n| Tool                                                                                                  | Purpose                                       |\n| ----------------------------------------------------------------------------------------------------- | --------------------------------------------- |\n| [pnpm](https://pnpm.io) + [Turborepo](https://turbo.build)                                            | Monorepo builds with cross-package caching    |\n| [tsup](https://tsup.egoist.dev)                                                                       | ESM + CJS dual output with `.d.ts` generation |\n| [Radix UI](https://radix-ui.com)                                                                      | Accessible, unstyled component primitives     |\n| [CVA](https://cva.style)                                                                              | Type-safe component variants                  |\n| [tailwindcss-animate](https://github.com/jamiebuilds/tailwindcss-animate)                             | Data-attribute animations for Radix overlays  |\n| [Vitest](https://vitest.dev) + [Testing Library](https://testing-library.com)                         | Component + utility tests                     |\n| [Changesets](https://github.com/changesets/changesets)                                                | Automated versioning + changelogs             |\n| [Husky](https://typicode.github.io/husky) + [lint-staged](https://github.com/lint-staged/lint-staged) | Pre-commit lint + format                      |\n| [Dependabot](https://docs.github.com/en/code-security/dependabot)                                     | Weekly dependency updates (grouped)           |\n\n## Architecture\n\n```\nsrc/\n  tokens/            colors, typography, spacing, animations, Tailwind preset\n  utils/             cn() and badge variant mappers\n  primitives/        Radix-based components and building blocks\n  patterns/          application layout and page patterns\n  globals.css        CSS variables and brand fonts\n  fonts/             bundled Flecha S and Diatype Mono assets\n  index.ts           compatibility package barrel for @amigo-ai/ui\n\npackages/\n  tokens/            @amigo-ai/tokens package wrapper\n  utils/             @amigo-ai/ui-utils package wrapper\n  primitives/        @amigo-ai/primitives package wrapper\n  patterns/          @amigo-ai/patterns package wrapper\n  design-review/     @amigo-ai/design-review package wrapper\n```\n\n## License\n\nPublished to npm as a public scoped package.\n","readmeFilename":"README.md"}