1.8 KiB
1.8 KiB
AGENTS.md — @app/ui
职责
Monorepo 共享 shadcn 风格基础 UI 组件(源码直出,无 dist 预构建)。
视觉依赖 @app/design-tokens 的 CSS 变量;组件类内不写死色值。
结构
src/
index.ts # 桶导出(唯一公共入口 ".")
utils.ts # cn()
button.tsx | card.tsx | input.tsx | label.tsx | badge.tsx
separator.tsx | avatar.tsx | dropdown-menu.tsx | table.tsx | sonner.tsx
stories/ # Storybook stories
.storybook/ # main.ts / preview.ts
消费方式
import { Button, Card, cn } from "@app/ui";
package.jsonexports指向src/index.ts(源码直出)。@app/web:astro.config.tsalias +tsconfigpaths 指到本包src;ssr.noExternal含@app/ui。- 相对 import 带
.js后缀(bundler 解析)。
修改指南
- 新组件:
src/<name>.tsx→ 在index.ts导出 →stories/<name>.stories.tsx补 story。 - 颜色/圆角一律 CSS 变量(
var(--color-*)),禁止写死 hex。 cn()只从本包导出;web 的~/lib/utils是 re-export,勿再复制实现。- 改依赖后在仓库根
yarn install。
Storybook
yarn workspace @app/ui storybook # :6006
yarn workspace @app/ui build-storybook # 静态产物 storybook-static/
- 样式:
src/styles/storybook.css加载 Tailwind 4 + 相对路径引入design-tokens/src/tokens.css(@tailwindcss/vite不走包 exports)。 - 主题:toolbar 切换
light/dark(html.light/html.dark,与 web 的app-theme类名一致)。 - Storybook CLI 依赖装在仓库根
devDependencies(保证@storybook/react-vite/preset可被解析)。
命令
yarn workspace @app/ui typecheck
yarn workspace @app/ui lint
yarn workspace @app/ui storybook