{"_id":"@dengankarya/dengankarya-ui","_rev":"4-97703383a5ac71377a13a5f8cdae24ed","name":"@dengankarya/dengankarya-ui","dist-tags":{"latest":"0.11.0"},"versions":{"0.8.0":{"name":"@dengankarya/dengankarya-ui","version":"0.8.0","author":{"name":"dengankarya.com"},"license":"MIT","_id":"@dengankarya/dengankarya-ui@0.8.0","maintainers":[{"name":"dengankarya-dev","email":"developer@dengankarya.com"}],"dist":{"shasum":"c860f23a1b2801e0a2ecaf13a4251234aeb457ae","tarball":"https://registry.npmjs.org/@dengankarya/dengankarya-ui/-/dengankarya-ui-0.8.0.tgz","fileCount":8,"integrity":"sha512-e3kxxWCnQasvruei0YvoVPFKbyMRQlhFb9hQlOuum4n84oe0cIZyAbPy+AYUYFFPHnc25vcwfvu6419ZYnlaMA==","signatures":[{"sig":"MEUCIEVbz3k/Lj04AqoWS/qmFbmjK5f0qwsFwr6WK1DcJhKKAiEAuSKfgWSdt4O7/qDyK4FifluGxDUlp46M61ideisScho=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18195},"main":"./dist/index.cjs","type":"module","_from":"file:dengankarya-dengankarya-ui-0.8.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0","pnpm":">=9.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","build":"tsup","release":"semantic-release","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengankarya-dev","email":"developer@dengankarya.com"},"_resolved":"/private/var/folders/3t/n_21m6bj27nd37d13cd6_c_m0000gn/T/d963f5168fb4fc317b7aef0c1eca3f12/dengankarya-dengankarya-ui-0.8.0.tgz","_integrity":"sha512-e3kxxWCnQasvruei0YvoVPFKbyMRQlhFb9hQlOuum4n84oe0cIZyAbPy+AYUYFFPHnc25vcwfvu6419ZYnlaMA==","_npmVersion":"10.8.2","description":"Reusable React component library by dengankarya.com","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","semantic-release":"^24.2.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^10.3.5","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dengankarya-ui_0.8.0_1778568522429_0.6914911393554339","host":"s3://npm-registry-packages-npm-production"}},"0.8.5":{"name":"@dengankarya/dengankarya-ui","version":"0.8.5","author":{"name":"dengankarya.com"},"license":"MIT","_id":"@dengankarya/dengankarya-ui@0.8.5","maintainers":[{"name":"dengankarya-dev","email":"developer@dengankarya.com"}],"homepage":"https://github.com/dengankarya/dengankarya-ui#readme","bugs":{"url":"https://github.com/dengankarya/dengankarya-ui/issues"},"dist":{"shasum":"0e2718f3f08c86e258014680ef879309d892eaf1","tarball":"https://registry.npmjs.org/@dengankarya/dengankarya-ui/-/dengankarya-ui-0.8.5.tgz","fileCount":8,"integrity":"sha512-utU8ptnc4WXOKeoZdZe+i185gtTWAJxqyoUFChBloFdA0R/Qj8HWRTRUB+iuM9kjZ5pcJwMfxFFTJWsNTJ4GDw==","signatures":[{"sig":"MEQCIDJr4VC0R3P7LTwAN7sevTmUt9eUSd01JtpbvgrXa8qUAiArb8NvxxsHA5rk8Yzj80C8xRVGSVV7nNm0mDz9LM8OvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dengankarya%2fdengankarya-ui@0.8.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18301},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0","pnpm":">=9.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"19a5c494ca49ac1b06c87878e41f072d29265125","scripts":{"dev":"tsup --watch","build":"tsup","release":"semantic-release","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7324fd66-5f77-4b4e-9944-1aab7469910d"}},"repository":{"url":"git+https://github.com/dengankarya/dengankarya-ui.git","type":"git"},"_npmVersion":"11.11.0","description":"Reusable React component library by dengankarya.com","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","semantic-release":"^24.2.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^10.3.5","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dengankarya-ui_0.8.5_1778570528987_0.7726718962066881","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@dengankarya/dengankarya-ui","version":"0.10.0","author":{"name":"dengankarya.com"},"license":"MIT","_id":"@dengankarya/dengankarya-ui@0.10.0","maintainers":[{"name":"dengankarya-dev","email":"developer@dengankarya.com"}],"homepage":"https://github.com/dengankarya/dengankarya-ui#readme","bugs":{"url":"https://github.com/dengankarya/dengankarya-ui/issues"},"dist":{"shasum":"6e080acc3cfabc097c69bfc291a6c4c34ead65d9","tarball":"https://registry.npmjs.org/@dengankarya/dengankarya-ui/-/dengankarya-ui-0.10.0.tgz","fileCount":8,"integrity":"sha512-Q4iBQdEPiZbV4NeNK3dTb6G+uPOO8hKf7SXUntpZ5o+izICsGdoy6JVvu5Qh4DYvdCuI98IzFVgVlhYWvEihGw==","signatures":[{"sig":"MEUCIB6b0BIMqHZkq+sUUTE08rQTbfqUFkR8TARD3kvZ6fubAiEA+9g1S1eNQEGbV2gZDfIZeuz9DBXe/NY11ldxYwOWfbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dengankarya%2fdengankarya-ui@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20754},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0","pnpm":">=9.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"adc3228f27fe4bdd31f4e07aa72134be51312970","scripts":{"dev":"tsup --watch","build":"tsup","release":"semantic-release","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7324fd66-5f77-4b4e-9944-1aab7469910d"}},"repository":{"url":"git+https://github.com/dengankarya/dengankarya-ui.git","type":"git"},"_npmVersion":"11.11.0","description":"Reusable React component library by dengankarya.com","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/github":"^10.3.5","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dengankarya-ui_0.10.0_1778571466363_0.3201906715021863","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@dengankarya/dengankarya-ui","version":"0.11.0","description":"Reusable React component library by dengankarya.com","author":{"name":"dengankarya.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/dengankarya/dengankarya-ui.git"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","release":"semantic-release"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"devDependencies":{"@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^10.3.5","@semantic-release/npm":"^12.0.2","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","react":"^19.0.0","react-dom":"^19.0.0","semantic-release":"^24.2.9","tsup":"^8.0.0","typescript":"^5.7.0"},"engines":{"node":">=18.0.0","pnpm":">=9.0.0"},"gitHead":"da03290937d1790f2442169cd64961f48a1be6e6","_id":"@dengankarya/dengankarya-ui@0.11.0","bugs":{"url":"https://github.com/dengankarya/dengankarya-ui/issues"},"homepage":"https://github.com/dengankarya/dengankarya-ui#readme","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-X07lBgh2gamNFxG6jcez15JD1DWL7c38HeWGocY1yLHB313s46UjMeL5wUGVjPCvB9kvORBGZM40uqGYfZVdTQ==","shasum":"1659bc37c1f03a208f7d2cc321bb07348f804c48","tarball":"https://registry.npmjs.org/@dengankarya/dengankarya-ui/-/dengankarya-ui-0.11.0.tgz","fileCount":8,"unpackedSize":20903,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dengankarya%2fdengankarya-ui@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDUzXD/f8NDJSlyrNzR2Zm68oQVTYgB1v/72bXdZbw0CwIgPMBx0ii0H2jrFZwbp6t37Kn2rZQMqVDPcHZAm7LAWUA="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7324fd66-5f77-4b4e-9944-1aab7469910d"}},"directories":{},"maintainers":[{"name":"dengankarya-dev","email":"developer@dengankarya.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dengankarya-ui_0.11.0_1778571870695_0.22697008951182873"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-12T06:48:42.334Z","modified":"2026-05-12T07:44:31.088Z","0.8.0":"2026-05-12T06:48:42.578Z","0.8.5":"2026-05-12T07:22:09.139Z","0.10.0":"2026-05-12T07:37:46.514Z","0.11.0":"2026-05-12T07:44:30.827Z"},"bugs":{"url":"https://github.com/dengankarya/dengankarya-ui/issues"},"author":{"name":"dengankarya.com"},"license":"MIT","homepage":"https://github.com/dengankarya/dengankarya-ui#readme","repository":{"type":"git","url":"git+https://github.com/dengankarya/dengankarya-ui.git"},"description":"Reusable React component library by dengankarya.com","maintainers":[{"name":"dengankarya-dev","email":"developer@dengankarya.com"}],"readme":"# dengankarya-ui\n\n[![CI / Release](https://github.com/dengan-karya/dengankarya-ui/actions/workflows/release.yml/badge.svg)](https://github.com/dengan-karya/dengankarya-ui/actions/workflows/release.yml)\n\nA minimal, reusable React component library by [dengankarya.com](https://dengankarya.com). Built with TypeScript, published to npm, and ready to use in any React project.\n\n## Philosophy\n\nComponents in this library are **style-agnostic**. They don't impose colors, fonts, or spacing. Instead, they inherit all styling from your application, giving you complete control over appearance through your own CSS, Tailwind classes, or inline styles.\n\n## Installation\n\nUsing `pnpm`:\n```bash\npnpm add dengankarya-ui\n```\n\nUsing `npm`:\n```bash\nnpm install dengankarya-ui\n```\n\nUsing `yarn`:\n```bash\nyarn add dengankarya-ui\n```\n\n> Requires `react >= 18.0.0` and `react-dom >= 18.0.0`\n\n## Components\n\n### Tagline\n\nA simple, semantic footer component that displays \"Thoughtfully crafted by dengankarya.com\".\n\n#### Basic Usage\n\n```tsx\nimport { Tagline } from \"dengankarya-ui\";\n\nexport default function App() {\n  return (\n    <>\n      <main>Your page content here</main>\n      <Tagline />\n    </>\n  );\n}\n```\n\n#### With Tailwind CSS\n\n```tsx\n<Tagline className=\"text-xs text-gray-500 py-4 border-t border-gray-200\" />\n```\n\n#### With Custom Link\n\n```tsx\n<Tagline href=\"https://dengankarya.com?utm_source=myapp\" />\n```\n\n#### Open Link in New Tab\n\n```tsx\n<Tagline\n  anchorProps={{\n    target: \"_blank\",\n    rel: \"noopener noreferrer\"\n  }}\n/>\n```\n\n#### Full Control\n\n```tsx\n<Tagline\n  className=\"footer-container\"\n  style={{ marginTop: \"2rem\", paddingBottom: \"1rem\" }}\n  anchorProps={{\n    target: \"_blank\",\n    rel: \"noopener noreferrer\",\n    className: \"footer-link hover:underline\"\n  }}\n/>\n```\n\n## API Reference\n\n### `<Tagline />`\n\n#### Props\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `href` | `string` | `\"https://dengankarya.com\"` | URL for the dengankarya.com link |\n| `anchorProps` | `AnchorHTMLAttributes<HTMLAnchorElement>` | `undefined` | Additional attributes to spread onto the `<a>` element (e.g., `target`, `rel`, `className`, `onClick`) |\n| `...props` | `HTMLAttributes<HTMLElement>` | — | All standard HTML attributes for `<footer>` element (e.g., `className`, `style`, `id`, `data-*`, event handlers) |\n\n#### TypeScript\n\nThe component is fully typed. You can import the `TaglineProps` type:\n\n```tsx\nimport type { Tagline, TaglineProps } from \"dengankarya-ui\";\n\nconst MyFooter = (props: TaglineProps) => {\n  return <Tagline {...props} />;\n};\n```\n\n## Examples\n\n### Next.js App Router\n\n```tsx\n// app/layout.tsx\nimport { Tagline } from \"dengankarya-ui\";\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode;\n}) {\n  return (\n    <html lang=\"en\">\n      <body>\n        {children}\n        <Tagline className=\"mt-12 pt-8 text-center text-sm text-gray-600\" />\n      </body>\n    </html>\n  );\n}\n```\n\n### React + Vite\n\n```tsx\n// src/App.tsx\nimport { Tagline } from \"dengankarya-ui\";\n\nfunction App() {\n  return (\n    <div className=\"min-h-screen flex flex-col\">\n      <main className=\"flex-1\">Content goes here</main>\n      <Tagline className=\"px-4 py-8 text-gray-500\" />\n    </div>\n  );\n}\n\nexport default App;\n```\n\n### Custom Styling with CSS Modules\n\n```tsx\n// App.tsx\nimport { Tagline } from \"dengankarya-ui\";\nimport styles from \"./App.module.css\";\n\nexport default function App() {\n  return (\n    <div>\n      <main>Your content</main>\n      <Tagline className={styles.footer} />\n    </div>\n  );\n}\n```\n\n```css\n/* App.module.css */\n.footer {\n  margin-top: 3rem;\n  padding: 1.5rem;\n  text-align: center;\n  font-size: 0.875rem;\n  color: #9ca3af;\n  border-top: 1px solid #e5e7eb;\n}\n```\n\n## Development\n\n### Setup\n\nClone the repository and install dependencies:\n\n```bash\ngit clone https://github.com/dengankarya/dengankarya-ui.git\ncd dengankarya-ui\npnpm install\n```\n\n### Build\n\nBuild the library:\n\n```bash\npnpm build\n```\n\nWatch mode (rebuilds on file changes):\n\n```bash\npnpm dev\n```\n\n### Type Checking\n\nVerify TypeScript without emitting output:\n\n```bash\npnpm exec tsc --noEmit\n```\n\n### Testing Locally\n\nBefore publishing to npm, test the package locally:\n\n```bash\n# In the dengankarya-ui directory\npnpm link --global\n\n# In your consumer project\npnpm link --global dengankarya-ui\n```\n\nThen import and use as normal. When done testing, unlink:\n\n```bash\npnpm unlink --global dengankarya-ui\npnpm install dengankarya-ui  # Install from npm instead\n```\n\n### Publishing\n\nPublish a new version to npm:\n\n```bash\n# Update version in package.json manually (follow semver)\npnpm build\npnpm publish --access public\n```\n\n## Browser Support\n\nThis library targets ES2020 and supports all modern browsers. It has zero runtime dependencies beyond React.\n\n## License\n\nMIT\n\n## Contributing\n\nThis is a personal project by dengankarya. Suggestions and feedback are welcome. For issues or feature requests, please open an issue on GitHub.\n\n---\n\nMade with ❤️ by [dengankarya.com](https://dengankarya.com)\n","readmeFilename":"README.md"}