{"_id":"@damarkuncoro/agnostic-ui-skin","name":"@damarkuncoro/agnostic-ui-skin","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@damarkuncoro/agnostic-ui-skin","description":"Agnostic UI Skin","version":"0.1.0","type":"module","main":"dist/agnostic-ui-skin/src/index.js","types":"dist/agnostic-ui-skin/src/index.d.ts","exports":{".":{"types":"./dist/agnostic-ui-skin/src/index.d.ts","import":"./dist/agnostic-ui-skin/src/index.js","require":"./dist/agnostic-ui-skin/src/index.js"},"./tailwind.css":"./dist/tailwind.css","./tailwind-modern.css":"./dist/tailwind-modern.css","./retro.css":"./dist/retro.css"},"sideEffects":false,"publishConfig":{"access":"public"},"dependencies":{"clsx":"^2.1.0","tailwind-merge":"^2.2.0","class-variance-authority":"^0.7.0","@damarkuncoro/agnostic-ui-contracts":"0.1.0","@damarkuncoro/agnostic-ui-base":"0.1.0","@damarkuncoro/agnostic-ui-theme":"0.1.0","@damarkuncoro/agnostic-ui-skin-core":"0.1.0","@damarkuncoro/agnostic-ui-skin-tailwind":"0.1.0","@damarkuncoro/agnostic-ui-skin-shadcn":"0.1.0","@damarkuncoro/agnostic-ui-skin-glass":"0.1.0","@damarkuncoro/agnostic-ui-skin-tailwind-modern":"0.1.0","@damarkuncoro/agnostic-ui-skin-neumorphic":"0.1.0","@damarkuncoro/agnostic-ui-skin-retro":"0.1.0","@damarkuncoro/agnostic-ui-skin-material":"0.1.0"},"devDependencies":{"tailwindcss":"^3.4.1","typescript":"^5.0.0","vitest":"^3.0.0"},"peerDependencies":{"tailwindcss":">=3.4.0"},"license":"MIT","author":{"name":"Damar Kuncoro"},"keywords":["agnostic-ui","skin","tailwind","design-system","typescript","cva"],"repository":{"type":"git","url":"git+https://github.com/damarkuncoro/agnostic-ui.git"},"bugs":{"url":"https://github.com/damarkuncoro/agnostic-ui/issues"},"homepage":"https://github.com/damarkuncoro/agnostic-ui#readme","engines":{"node":">=18","pnpm":">=8"},"scripts":{"build":"npm run build:css && tsc -p tsconfig.json","build:css":"cp src/*.css dist/","test":"vitest run"},"_id":"@damarkuncoro/agnostic-ui-skin@0.1.0","_integrity":"sha512-AiRWj/cg7Ly4qzW18pP0LzX2ANq+hjBa4JUBRa0bCVldfKnDvPUoo46kFxKu8SewW+DTev0XwWoUMjc7Pkv/dA==","_resolved":"/private/var/folders/5q/j90n97w16zd2vsdm445cmp680000gp/T/a32772c5b54ef45c48b30378839d4d19/damarkuncoro-agnostic-ui-skin-0.1.0.tgz","_from":"file:damarkuncoro-agnostic-ui-skin-0.1.0.tgz","_nodeVersion":"20.19.4","_npmVersion":"10.8.2","dist":{"integrity":"sha512-AiRWj/cg7Ly4qzW18pP0LzX2ANq+hjBa4JUBRa0bCVldfKnDvPUoo46kFxKu8SewW+DTev0XwWoUMjc7Pkv/dA==","shasum":"2e195acb6cee151e33e2f5757582ca96590fbe31","tarball":"https://registry.npmjs.org/@damarkuncoro/agnostic-ui-skin/-/agnostic-ui-skin-0.1.0.tgz","fileCount":182,"unpackedSize":84311,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCkq/2TJP25e7f5j+78Zb8GO+udFuLQu/eJ5PwjdXjZagIgG2KgFuOhAr+Qmxo16LjvAorXQDqhkjpJ8HptpvJ3N0A="}]},"_npmUser":{"name":"damarkuncoro","email":"damarkuncoro@gmail.com"},"directories":{},"maintainers":[{"name":"damarkuncoro","email":"damarkuncoro@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agnostic-ui-skin_0.1.0_1767004698578_0.9757441054765335"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-29T10:38:18.502Z","0.1.0":"2025-12-29T10:38:18.852Z","modified":"2025-12-29T10:38:19.564Z"},"maintainers":[{"name":"damarkuncoro","email":"damarkuncoro@gmail.com"}],"description":"Agnostic UI Skin","homepage":"https://github.com/damarkuncoro/agnostic-ui#readme","keywords":["agnostic-ui","skin","tailwind","design-system","typescript","cva"],"repository":{"type":"git","url":"git+https://github.com/damarkuncoro/agnostic-ui.git"},"author":{"name":"Damar Kuncoro"},"bugs":{"url":"https://github.com/damarkuncoro/agnostic-ui/issues"},"license":"MIT","readme":"# @damarkuncoro/agnostic-ui-skin\n\nPaket aggregator untuk semua “skin” visual Agnostic UI. Skin menerjemahkan kontrak UI menjadi kelas CSS/Tailwind konkret. Aplikasi idealnya “hanya tahu” aggregator ini, bukan paket skin individual.\n\n**Skin yang tersedia**\n- shadcn, tailwind, tailwind-modern, glass, material, neumorphic, retro\n\n**Prinsip**\n- SRP, DRY, KISS, YAGNI\n- SOLID, Composition over Inheritance\n- UI Contract → Base UI → Tailwind → Skins → Pages\n\n## Ekspor\n- JS aggregator:\n  - `import { tailwind, tailwind_modern, shadcn, retro } from '@damarkuncoro/agnostic-ui/skin'`\n- CSS wrapper (untuk import CSS siap pakai):\n  - `@damarkuncoro/agnostic-ui/skin/tailwind.css`\n  - `@damarkuncoro/agnostic-ui/skin/tailwind-modern.css`\n  - `@damarkuncoro/agnostic-ui/skin/retro.css`\n\n## Cara Pakai (React)\n```tsx\nimport { UIProvider } from '@damarkuncoro/agnostic-ui/react'\nimport { tailwind_modern as skin } from '@damarkuncoro/agnostic-ui/skin'\n\nfunction App() {\n  return (\n    <UIProvider skin={skin}>\n      {/* ... */}\n    </UIProvider>\n  )\n}\n```\n\n## Cara Pakai CSS\n- Import di pipeline build CSS aplikasi (disarankan digabung oleh proses build per halaman):\n  - `@damarkuncoro/agnostic-ui/skin/tailwind.css`\n  - `@damarkuncoro/agnostic-ui/skin/tailwind-modern.css`\n  - `@damarkuncoro/agnostic-ui/skin/retro.css`\n- Alternatif: gabungkan `dist/skin.css` setiap paket skin di script build (lihat apps/react-demo).\n\n## Arsitektur & Utilitas\n- Variants dan sizes didefinisikan dengan `class-variance-authority (CVA)`.\n- Penggabungan kelas: `tailwind-merge`, `clsx`.\n- Skin tidak merender DOM; hanya menyusun string kelas. Rendering oleh paket framework.\n\n## Tambah Skin Baru\n- Buat direktori di paket skin tersendiri (mis. `packages/agnostic-ui-skin-<nama>/src/components/...`).\n- Implementasikan CVA dan helper `getButtonClass`.\n- Tambahkan ekspor di [index.ts aggregator](./src/index.ts) untuk namespace skin baru.\n- Jika memakai Tailwind, sediakan `src/index.css` dan konfigurasi `tailwind.config.js`, lalu hasilkan `dist/skin.css`.\n\n## Catatan\n- Pastikan Tailwind CLI tersedia jika skin memakai Tailwind.\n- Jalankan build di masing-masing skin agar `dist/skin.css` selalu terbarui.\n","readmeFilename":"README.md","_rev":"1-a20a11641ab01c596a297812df03421e"}