{"_id":"@design-geniefy/ui","_rev":"11-0bdad9252deddc752831dfaafc5f0b41","name":"@design-geniefy/ui","dist-tags":{"latest":"0.0.14"},"versions":{"0.0.1":{"name":"@design-geniefy/ui","version":"0.0.1","_id":"@design-geniefy/ui@0.0.1","maintainers":[{"name":"1siot","email":"hskim@gpters.org"}],"dist":{"shasum":"48c9142c38cf0a0f89a357cfd90e3395a24c30f6","tarball":"https://registry.npmjs.org/@design-geniefy/ui/-/ui-0.0.1.tgz","fileCount":70,"integrity":"sha512-aVQhw1/cRT45ccafzVLuPQ1E/60cmSiQWz+4RCCL6IVsJwmONLHnZFWdnq/z2ArVbksho9gw1z1eYKrF2shcig==","signatures":[{"sig":"MEUCIQCHX2mAnTulbbMegBeS+ZhzxR8cL0DkOIBqDBU19lXBHwIgZWJs/X06zPAIC4PKWW1lfQ0zycMXdzPHFT5R82k8kOA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123795},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e34dbc0d3d7820debfcb314dcb66a5aaa66d71df","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"1siot","email":"hskim@gpters.org"},"_npmVersion":"11.5.1","description":"Design system components","directories":{},"_nodeVersion":"24.6.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.0.1_1769419802680_0.19876469112986728","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@design-geniefy/ui","version":"0.0.4","_id":"@design-geniefy/ui@0.0.4","maintainers":[{"name":"1siot","email":"hskim@gpters.org"}],"dist":{"shasum":"61e1d6d5a554c8db5ea47409207be65568286b4b","tarball":"https://registry.npmjs.org/@design-geniefy/ui/-/ui-0.0.4.tgz","fileCount":70,"integrity":"sha512-469uCKavp7b/3/BjBDffXfQWSc82IFAHd/QaxMNZhuU1JRwCV6OZ7UqaNkTlbn9lihxp5K8AfYpijL0v/tvg4g==","signatures":[{"sig":"MEUCIGJGJ3xscpZYVz1p6jqmQm6YLpZMMB/q42s3B56TijH8AiEA8dJfMl5rV4KMpENLOMmwH6ieod6H2FfUlDn/sdQtSpw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123835},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"22180f7784eb3aa80fd398eefa2e188193c09d96","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"1siot","email":"hskim@gpters.org"},"_npmVersion":"10.8.2","description":"Design system components","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.0.4_1769475157518_0.1611497658337937","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@design-geniefy/ui","version":"0.0.5","_id":"@design-geniefy/ui@0.0.5","maintainers":[{"name":"1siot","email":"hskim@gpters.org"}],"dist":{"shasum":"730c1d5a21d3482610ee1a94002bb222571b1d1d","tarball":"https://registry.npmjs.org/@design-geniefy/ui/-/ui-0.0.5.tgz","fileCount":70,"integrity":"sha512-d2OuiYt7BS93SQGBYr4Vbz9GLfCWkXoPlZ7sT5VebCSzKlFQkNURqa1NsldEJk78qFVM6lHtmEi/QwjUCW/nvA==","signatures":[{"sig":"MEQCIGTfAclnZnJ8GqDGUzNBcwoaTDRxr4ZkkksrLupRUSgDAiBIdR6z+apViNfK3A19Forp6BbJ/5N3Fj8mIdIG9RCIZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123835},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"b25bbee85217c48c2adea3ed95e3ff6f84a3d7c5","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"1siot","email":"hskim@gpters.org"},"_npmVersion":"10.8.2","description":"Design system components","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.0.5_1769475248669_0.055697488683594365","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@design-geniefy/ui","version":"0.0.6","_id":"@design-geniefy/ui@0.0.6","maintainers":[{"name":"1siot","email":"hskim@gpters.org"}],"dist":{"shasum":"750154d15d58b09698fddc0139498bbd0c75171d","tarball":"https://registry.npmjs.org/@design-geniefy/ui/-/ui-0.0.6.tgz","fileCount":70,"integrity":"sha512-JAhKKRGa9cHccumdUcBuCQ/D2H+G0LipoBRbFFla5iZe24XPJb8DNldZ1Cq+JOKMgecMLcdJD0/59A1DM6D1Kw==","signatures":[{"sig":"MEQCIDlRlFRddETQXAI+Ry/LuYyqbrb5YKX35HGCYsXm8WBgAiA2dlDEtBlgRuD+QLfSfjf4vUkGI2KvM58JglIAAqRT4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124519},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"55ed1502e398ec620a75c1649ccd5df16dad1826","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"1siot","email":"hskim@gpters.org"},"_npmVersion":"10.8.2","description":"Design system components","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.0.6_1769476170835_0.8375964204296364","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@design-geniefy/ui","version":"0.0.7","_id":"@design-geniefy/ui@0.0.7","maintainers":[{"name":"1siot","email":"hskim@gpters.org"}],"dist":{"shasum":"53c2ae711736e2974f81f3459e41b927f6a40289","tarball":"https://registry.npmjs.org/@design-geniefy/ui/-/ui-0.0.7.tgz","fileCount":70,"integrity":"sha512-+vZbl+43iMhsfe3BsQCMMBRNsJteBFlAnEJhk16gGJGnwJbyZbq0GQqVNq8gSFKjQktWqlo3tbR9nWd5BvDaAA==","signatures":[{"sig":"MEQCIBEt2IX9cuKrKcCDa0sZUw4HgM1JUYKx6MbTpmecmgjSAiBH2ShZXhrmzWhZA2Nt7c+8wYSIhqD/yK2Hvf/XWNl+sA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149628},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"944578956fec910b353ddfe60ccd125bfc2d87be","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"1siot","email":"hskim@gpters.org"},"_npmVersion":"10.8.2","description":"Design system components","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.0.7_1769484476587_0.298975749730934","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@design-geniefy/ui","version":"0.0.8","_id":"@design-geniefy/ui@0.0.8","maintainers":[{"name":"1siot","email":"hskim@gpters.org"}],"dist":{"shasum":"774c331639e7d42622da4ca935971b4fdb859af5","tarball":"https://registry.npmjs.org/@design-geniefy/ui/-/ui-0.0.8.tgz","fileCount":74,"integrity":"sha512-Od7is3F+hM8hxa9ZLISQUdE7iAHIzv2p0WoUouw6iSbkwpB/8hk8KIlzFYqI74u58IFScY7jm+FureP32O9MjA==","signatures":[{"sig":"MEUCIG0AqxNB6Onzg3iP1v0WhU48OdMlhUIT1d9UCBdySQqqAiEA3uh1CuCi29ECTJkGDpDoECIkKBBKEJv2lHPEhrRAvII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185642},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"a694b36ee15fa35e821d3d1a6932f1e72f7a2c75","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"1siot","email":"hskim@gpters.org"},"_npmVersion":"11.5.1","description":"Design system components","directories":{},"_nodeVersion":"24.6.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.0.8_1769496698028_0.18511884886067143","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@design-geniefy/ui","version":"0.0.9","_id":"@design-geniefy/ui@0.0.9","maintainers":[{"name":"1siot","email":"hskim@gpters.org"}],"dist":{"shasum":"fa3c72e6d5c7a5690895f22055b77c83922cfe34","tarball":"https://registry.npmjs.org/@design-geniefy/ui/-/ui-0.0.9.tgz","fileCount":73,"integrity":"sha512-qEAfEdQmmmUvgXXBahX1OXhoU83m8r0XfYdocaI1va6nPfAaDmNYaPgzXJDJbUoE35Ov0nYMr4lfQhSjEG+3gQ==","signatures":[{"sig":"MEUCIFuVEydQfWOyl/ntnR05QokY59PsQ+WFpsIDGgSKt55JAiEAwMzdMgPsPq8Cn6P10BxTTw3I8lWO+l7cFVLoXIX6Kfs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182933},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"69204dfc2bf258caad22931434f4149799e02287","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"1siot","email":"hskim@gpters.org"},"_npmVersion":"11.5.1","description":"Design system components","directories":{},"_nodeVersion":"24.6.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.0.9_1769497924987_0.7069908874529711","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@design-geniefy/ui","version":"0.0.10","_id":"@design-geniefy/ui@0.0.10","maintainers":[{"name":"1siot","email":"hskim@gpters.org"}],"dist":{"shasum":"a436866f6fec8cffdb4b939a8fe9397eaa0ff8fa","tarball":"https://registry.npmjs.org/@design-geniefy/ui/-/ui-0.0.10.tgz","fileCount":76,"integrity":"sha512-5xpWGHWTbtU8FqMZ+zDOg6CeGDQ7nlQ28QM1ydT5bNhalFjp4bPF4VyGW5d57/g3gqDK33/9vi7eJ8exc8E8mA==","signatures":[{"sig":"MEUCICDVCUfM3HpnTiV75P1HHiEWkexmAPn1V/kq40XPnuCrAiEA2t+eF8zpzMtu3dY21fv4GdV/fvyjSphnY1G2M8T7G6g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182160},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d81ca55b3bc64deef4f13fef9a6c0828e4bb2337","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"1siot","email":"hskim@gpters.org"},"_npmVersion":"11.5.1","description":"Design system components","directories":{},"_nodeVersion":"24.6.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.0.10_1769499339140_0.3669118316867319","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@design-geniefy/ui","version":"0.0.11","_id":"@design-geniefy/ui@0.0.11","maintainers":[{"name":"1siot","email":"hskim@gpters.org"}],"dist":{"shasum":"ccd39af99252e4ac3ace3f9e1399ca53a612e890","tarball":"https://registry.npmjs.org/@design-geniefy/ui/-/ui-0.0.11.tgz","fileCount":76,"integrity":"sha512-GPCEMxRRzjoxcjdkwzypFT6YLFwvdHHMiB5WzByfT6EDdYsVL3Tat5GmAaJu1Rv/anJo2vasn7rELVB5Kl5YLw==","signatures":[{"sig":"MEYCIQCjq4aQ9QElJIlSH7cWqyvMwo7Zy1yO7XVq5tRv9lgDFAIhAIU/kBdCT7Ua+HoXeewKIl8xIgTvx+/3/XZZqqg/beUh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184590},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"100ed1d4ec1ecc7a659f5fbaad15ff928b262ee5","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"1siot","email":"hskim@gpters.org"},"_npmVersion":"11.5.1","description":"Design system components","directories":{},"_nodeVersion":"24.6.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.0.11_1769499517805_0.7252364648389309","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@design-geniefy/ui","version":"0.0.12","_id":"@design-geniefy/ui@0.0.12","maintainers":[{"name":"1siot","email":"hskim@gpters.org"}],"dist":{"shasum":"cc25c3f68431a76a515983dcd66dd85c8fcd0d80","tarball":"https://registry.npmjs.org/@design-geniefy/ui/-/ui-0.0.12.tgz","fileCount":77,"integrity":"sha512-t4IJEMISQdlk9hda4Pc6kemBXxoAn2qqyDxebIja5qOCTU2NTZ3lL9U4qhwzgAKX19+IZOsr7KKNupVKJVG+fw==","signatures":[{"sig":"MEQCIB0Y8BYGbR+05FJSfIPcY8IRUvEW3g2bu8cEvxwrsOkqAiBhreUq+CfgSVScNUyDuaw78cNNGtoaPfP+qeUsCyzjnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197577},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"0c9f56e51ebdaad9074b31a1914c673b72c73dbe","scripts":{"build":"tsc","postinstall":"node scripts/report-adoption.js || true","prepublishOnly":"npm run build"},"_npmUser":{"name":"1siot","email":"hskim@gpters.org"},"_npmVersion":"10.8.2","description":"Design system components","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.0.12_1769568140264_0.808197387469269","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@design-geniefy/ui","version":"0.0.14","description":"Design system components with shadcn/ui","main":"dist/index.js","types":"dist/index.d.ts","workspaces":["docs"],"scripts":{"build":"tsc","prepublishOnly":"npm run build","postinstall":"node scripts/report-adoption.js || true"},"peerDependencies":{"react":">=18","react-dom":">=18","tailwindcss":">=4.0.0"},"dependencies":{"@base-ui/react":"^1.1.0","@hookform/resolvers":"^5.2.2","@radix-ui/react-accordion":"^1.2.12","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-aspect-ratio":"^1.1.8","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-context-menu":"^2.2.16","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-label":"^2.1.8","@radix-ui/react-menubar":"^1.1.16","@radix-ui/react-navigation-menu":"^1.2.14","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-progress":"^1.1.8","@radix-ui/react-radio-group":"^1.3.8","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-slider":"^1.3.6","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-switch":"^1.2.6","@radix-ui/react-tabs":"^1.1.13","@radix-ui/react-toggle":"^1.1.10","@radix-ui/react-toggle-group":"^1.1.11","@radix-ui/react-tooltip":"^1.2.8","class-variance-authority":"^0.7.1","clsx":"^2.1.1","cmdk":"^1.1.1","date-fns":"^4.1.0","embla-carousel-react":"^8.6.0","input-otp":"^1.4.2","next-themes":"^0.4.6","react-day-picker":"^9.13.0","react-hook-form":"^7.71.1","react-resizable-panels":"^4.5.5","recharts":"^2.15.4","sonner":"^2.0.7","tailwind-merge":"^3.4.0","vaul":"^1.1.2","zod":"^4.3.6"},"devDependencies":{"@types/react":"^18.0.0","lucide-react":"^0.563.0","react":"^18.0.0","react-dom":"^18.0.0","typescript":"^5.0.0"},"publishConfig":{"access":"public"},"_id":"@design-geniefy/ui@0.0.14","gitHead":"c3a9d330f0d47d679243bd39834f848f17e6e450","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-2A+uFJACrl2nfXzIxfexnMdOxX6tpo+diI9Px0kJlC0Tp21MJigEUyYsyhZJF+Lc/k4R9UuAefrju0Tpl8Uyag==","shasum":"303ec65b7abc16684a9595cdc627676af455baf1","tarball":"https://registry.npmjs.org/@design-geniefy/ui/-/ui-0.0.14.tgz","fileCount":227,"unpackedSize":594851,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGjxIf5b6JmSmC0FnEShc5FLp/Mr776JkUK5/pDWruIFAiAJaof4cr+9m8dzRBFeLjT3/A+GreuMkWp3eOrY4XqY8Q=="}]},"_npmUser":{"name":"1siot","email":"hskim@gpters.org"},"directories":{},"maintainers":[{"name":"1siot","email":"hskim@gpters.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ui_0.0.14_1770109359726_0.5047828905241145"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-26T09:30:01.005Z","modified":"2026-02-03T09:02:40.047Z","0.0.1":"2026-01-26T09:30:02.821Z","0.0.4":"2026-01-27T00:52:37.661Z","0.0.5":"2026-01-27T00:54:08.813Z","0.0.6":"2026-01-27T01:09:30.978Z","0.0.7":"2026-01-27T03:27:56.737Z","0.0.8":"2026-01-27T06:51:38.254Z","0.0.9":"2026-01-27T07:12:05.151Z","0.0.10":"2026-01-27T07:35:39.285Z","0.0.11":"2026-01-27T07:38:37.958Z","0.0.12":"2026-01-28T02:42:20.414Z","0.0.14":"2026-02-03T09:02:39.880Z"},"description":"Design system components with shadcn/ui","maintainers":[{"name":"1siot","email":"hskim@gpters.org"}],"readme":"# @design-geniefy/ui\n\nAX 조직을 위한 디자인 시스템 저장소.\n\n## 운영 원칙\n\n| 파일 | 배포 방식 | 업데이트 반영 |\n|------|-----------|---------------|\n| `tokens.css` | CDN (jsDelivr) | 즉시 반영 (캐시 퍼지 후) |\n| `components/` | npm 패키지 | 버전 업데이트 후 설치 |\n| `design-rules.md` | CDN + 로컬 복사 | CDN 최신 + 로컬 커스텀 병행 |\n\n### 왜 이렇게 나눴나?\n\n- **토큰 = CDN**: 색상/간격 변경을 모든 프로젝트에 즉시 반영하고 싶음\n- **컴포넌트 = npm**: 버전 관리로 breaking change 방지, 안정성 우선\n- **규칙 = CDN+로컬**: 팀 공통 규칙은 CDN에서, 프로젝트별 커스텀은 로컬에서 확장\n\n---\n\n## 파일 역할\n\n### `tokens.css`\n> **단일 소스 역할**: 디자인 토큰(색상, 간격, 라디우스 등)의 유일한 정의 파일.\n\n모든 프로젝트는 이 파일을 CDN으로 import하여 동일한 토큰 값을 사용한다.\n\n```css\n@import url('https://cdn.jsdelivr.net/gh/conewarrior/design-system/tokens.css');\n```\n\n### `components/`\n> **단일 소스 역할**: 팀 공용 React 컴포넌트의 유일한 소스.\n\nnpm 패키지로 배포되며, 프로젝트에서 import하여 사용한다.\n\n```bash\nnpm install @design-geniefy/ui\n```\n\n```tsx\nimport { Button } from '@design-geniefy/ui'\n```\n\n### `design-rules.md`\n> **단일 소스 역할**: LLM이 UI 생성 시 준수해야 하는 제약 규칙과 프로토콜 정의.\n\n`/setup-design` 커맨드가 이 파일을 프로젝트 로컬에 복사한다.\nClaude Code는 `src/components/` 작업 시 이 규칙을 참조한다.\n\n---\n\n## 설치 및 사용\n\n### 1. 자동 설정 (권장)\n\n```bash\n# Claude Code에서 실행\n/setup-design\n```\n\n위 커맨드가 다음을 자동으로 처리:\n- `globals.css`에 토큰 CDN import 추가\n- `design-rules.md` 로컬 복사\n- `@design-geniefy/ui` 패키지 설치\n- `CLAUDE.md`에 규칙 참조 추가\n\n### 2. 수동 설정\n\n```css\n/* globals.css */\n@import url('https://cdn.jsdelivr.net/gh/conewarrior/design-system/tokens.css');\n```\n\n```bash\nnpm install @design-geniefy/ui\n```\n\n---\n\n## 컴포넌트 사용 예제\n\n### Button\n\n```tsx\nimport { Button } from '@design-geniefy/ui';\n\n// Variants: primary, secondary, outline, ghost, destructive\n<Button variant=\"primary\">저장</Button>\n<Button variant=\"secondary\">취소</Button>\n<Button variant=\"outline\">더보기</Button>\n<Button variant=\"destructive\">삭제</Button>\n\n// Sizes: sm, md, lg\n<Button size=\"sm\">작은 버튼</Button>\n<Button size=\"md\">기본 버튼</Button>\n<Button size=\"lg\">큰 버튼</Button>\n\n// Disabled\n<Button disabled>비활성화</Button>\n```\n\n### Input\n\n```tsx\nimport { Input } from '@design-geniefy/ui';\n\n// Basic usage\n<Input placeholder=\"이름을 입력하세요\" />\n\n// Sizes: sm, md, lg\n<Input inputSize=\"sm\" placeholder=\"작은 입력\" />\n<Input inputSize=\"md\" placeholder=\"기본 입력\" />\n<Input inputSize=\"lg\" placeholder=\"큰 입력\" />\n\n// Error state\n<Input error placeholder=\"오류 상태\" />\n\n// Disabled\n<Input disabled placeholder=\"비활성화\" />\n```\n\n### 토큰 필수\n\n컴포넌트가 올바르게 렌더링되려면 `tokens.css`가 로드되어야 합니다:\n\n```css\n/* globals.css 상단에 추가 */\n@import url('https://cdn.jsdelivr.net/gh/conewarrior/design-system/tokens.css');\n```\n\n---\n\n## 개발\n\n```bash\nnpm run build    # TypeScript 컴파일 (dist/ 생성)\n```\n\n### 컴포넌트 추가\n\n1. `components/{ComponentName}/` 폴더 생성\n2. `index.ts`에서 export 추가\n3. main 브랜치 push → GitHub Actions가 npm 자동 배포\n\n### 토큰 수정\n\n1. `tokens.css` 수정\n2. main 브랜치 push → jsDelivr CDN에 즉시 반영\n\n---\n\n## 관련 링크\n\n- [Linear 프로젝트](https://linear.app/geniefy/project/ax-조직을-위한-디자인-워크플로우-구축-7911e033ac99)\n- [참고: designsystems.surf](https://designsystems.surf/design-systems)\n","readmeFilename":"README.md"}