{"_id":"@bossjob-ds/patterns","name":"@bossjob-ds/patterns","dist-tags":{"alpha":"0.1.0-alpha.2","latest":"0.1.0-alpha.2"},"versions":{"0.1.0-alpha.2":{"name":"@bossjob-ds/patterns","version":"0.1.0-alpha.2","description":"Bossjob Design System — reusable business patterns (tier 2 of ADR-0015). Compositions of @bossjob-ds/react + tokens; never raw elements or raw values.","repository":{"type":"git","url":"git+https://github.com/yuchuanux-a11y/bossjob-design-system.git","directory":"packages/patterns"},"type":"module","main":"./src/index.ts","types":"./src/index.ts","exports":{".":"./src/index.ts","./JobSummaryCell":"./src/patterns/JobSummaryCell/index.ts","./JobSummaryCell/css":"./src/patterns/JobSummaryCell/JobSummaryCell.css","./SiteHeader":"./src/patterns/SiteHeader/index.ts","./SiteHeader/css":"./src/patterns/SiteHeader/SiteHeader.css","./ConsoleSidebar":"./src/patterns/ConsoleSidebar/index.ts","./ConsoleSidebar/css":"./src/patterns/ConsoleSidebar/ConsoleSidebar.css","./MobileNav":"./src/patterns/MobileNav/index.ts","./MobileNav/css":"./src/patterns/MobileNav/MobileNav.css","./SiteFooter":"./src/patterns/SiteFooter/index.ts","./SiteFooter/css":"./src/patterns/SiteFooter/SiteFooter.css","./FilterBar":"./src/patterns/FilterBar/index.ts","./FilterBar/css":"./src/patterns/FilterBar/FilterBar.css"},"publishConfig":{"access":"public"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"dependencies":{"@bossjob-ds/core":"0.1.0-alpha.0","@bossjob-ds/react":"0.1.0-alpha.5","@bossjob-ds/tokens":"0.1.0-alpha.3"},"devDependencies":{"@testing-library/jest-dom":"^6.6.3","@testing-library/react":"^16.1.0","@testing-library/user-event":"^14.5.2","@storybook/react":"^8.6.14","@types/jest-axe":"^3.5.9","@types/react":"^19.0.1","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","jest-axe":"^9.0.0","react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.2","vitest":"^2.1.8","@bossjob-ds/test-preset":"0.0.0","@bossjob-ds/tsconfig":"0.0.0"},"scripts":{"build":"echo 'patterns: source-mode — consumers compile via Vite/Webpack (same as @bossjob-ds/react)'","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","clean":"rm -rf node_modules/.cache"},"_id":"@bossjob-ds/patterns@0.1.0-alpha.2","bugs":{"url":"https://github.com/yuchuanux-a11y/bossjob-design-system/issues"},"homepage":"https://github.com/yuchuanux-a11y/bossjob-design-system#readme","_integrity":"sha512-PnwjlOpJ29BVvYNcP6Z7piejHPMlvBwaSatnKsT/s2U3K0OM1qizs0ZiVeCU8EuURwuN1PsTgFL+BifeUPrpMA==","_resolved":"/tmp/382edfd43ed1f58d3e94ff195e16baaf/bossjob-ds-patterns-0.1.0-alpha.2.tgz","_from":"file:bossjob-ds-patterns-0.1.0-alpha.2.tgz","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-PnwjlOpJ29BVvYNcP6Z7piejHPMlvBwaSatnKsT/s2U3K0OM1qizs0ZiVeCU8EuURwuN1PsTgFL+BifeUPrpMA==","shasum":"1dfa21897a98cdbaccc41f43ddb6fd7f6955e598","tarball":"https://registry.npmjs.org/@bossjob-ds/patterns/-/patterns-0.1.0-alpha.2.tgz","fileCount":57,"unpackedSize":153473,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCTdzUCd71EfgUZV+F1mJWo7zGXB1Zn1Oz7FGSI9xEM+AIhAJHafiL+3GEOcsXjlM/38DCQzkc6Qo3Oo4RzhgkQm6ut"}]},"_npmUser":{"name":"ryanyan330","email":"yuchuanux@gmail.com"},"directories":{},"maintainers":[{"name":"ryanyan330","email":"yuchuanux@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/patterns_0.1.0-alpha.2_1785483483109_0.9476771145536553"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-31T07:38:03.000Z","0.1.0-alpha.2":"2026-07-31T07:38:03.239Z","modified":"2026-07-31T07:38:03.458Z"},"maintainers":[{"name":"ryanyan330","email":"yuchuanux@gmail.com"}],"description":"Bossjob Design System — reusable business patterns (tier 2 of ADR-0015). Compositions of @bossjob-ds/react + tokens; never raw elements or raw values.","homepage":"https://github.com/yuchuanux-a11y/bossjob-design-system#readme","repository":{"type":"git","url":"git+https://github.com/yuchuanux-a11y/bossjob-design-system.git","directory":"packages/patterns"},"bugs":{"url":"https://github.com/yuchuanux-a11y/bossjob-design-system/issues"},"readme":"# @bossjob-ds/patterns\n\n业务组件层 —— 组件三层分类(ADR-0015)的第 2 层。基础组件回答\"一个按钮长什么样\",**patterns 回答\"Bossjob 的职位卡长什么样\"**:页面之间的业务一致性住在这一层。\n\n| 层 | 包 | 例子 |\n|---|---|---|\n| 1 · 基础 | `@bossjob-ds/react` | Button / Input / Modal |\n| **2 · 业务复用(本包)** | `@bossjob-ds/patterns` | JobSummaryCell(→ JobCard / 薪资条 / 候选人行) |\n| 3 · 特殊一次性 | 不入库 | 约束下生成,靠 Conformance Gate 兜底 |\n\n## 规则(lint 强制)\n\n1. **只组合,不再造**:pattern = `@bossjob-ds/react` 组件 + token 的组合。`no-native-element` 对本包生效 —— 在这里手搓 `<button>` 是 lint error(基础层可以,业务层不行)。\n2. **零裸值**:no-hardcoded-color / no-hardcoded-dimension + CI hex grep 同样覆盖本包。\n3. **字符串即 prop**(ADR-0020):任何用户可见文案都要有 prop 逃生口,不得把中文/英文写死。\n4. **与基础组件同 DoD**:unit + a11y 测试、tokens-only CSS、ADR-0010 API 惯例(forwardRef / cx / displayName)。\n\n## 毕业路径(怎么进入本包)\n\n```\n真实页面手搓了一个业务结构(≥2 处复用,或明确会复用)\n  → 1:1 提取进 patterns(保留 token、保留视觉)\n  → 页面改为消费 pattern,删除手搓 CSS\n  → 设计侧在 Figma canonize 后,补 docs/figma/component-map.md 映射 + 过 Gate\n```\n\n首个毕业生:`JobSummaryCell`,提取自 playground「我的投递」页的 `cell-job` 结构。\n\n## 已知待办\n\n- **manifest 集成**:`scripts/gen-manifest.mjs` 目前只枚举 `@bossjob-ds/react` 的导出;patterns 进 manifest(AI 可发现)需要扩展生成器读取本包 —— 追踪于 Track C4。\n- **Figma canonical 节点**:JobSummaryCell 暂无对应 Figma 组件(它先于设计 canonize 从真实页面毕业);设计出 JobCard 后走 component-map + Gate 对账。\n","readmeFilename":"README.md","_rev":"1-e13811065ddc4a94f2e66dff28d60c8b"}