{"_id":"@cimang/seneu-ui","_rev":"7-b427671415f279fe1a0d923581c71ec4","name":"@cimang/seneu-ui","dist-tags":{"latest":"2.0.1"},"versions":{"1.21.4":{"name":"@cimang/seneu-ui","version":"1.21.4","keywords":["vue","vue3","component-library","ui","cms","admin-panel","tailwindcss"],"author":{"name":"Cimang Club"},"license":"MIT","_id":"@cimang/seneu-ui@1.21.4","maintainers":[{"name":"satriaperd","email":"perdanasatria48@gmail.com"}],"homepage":"https://github.com/satriaperd/seneu-ui#readme","bugs":{"url":"https://github.com/satriaperd/seneu-ui/issues"},"dist":{"shasum":"be3fc27ae734f7ee3fc2e58760e3647af8eca4b4","tarball":"https://registry.npmjs.org/@cimang/seneu-ui/-/seneu-ui-1.21.4.tgz","fileCount":52,"integrity":"sha512-aIwvrEFVEe9agWNz1crcZBCm16sWU80nRXQ1catbO0vEyttfzK1Y3CQpCKkxPeg839YwyCYuydfpPkGIoA458Q==","signatures":[{"sig":"MEQCIC+jNatjMxFF6sb8T2jZ6X92QoXGx8xZ0vEBA15WilYAAiBJQuHCBqcKrJnuvWIIQWyWQ+xyehBfV1NZi5DytjIi/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":612660},"main":"./dist/seneu-ui.umd.cjs","type":"module","module":"./dist/seneu-ui.js","exports":{".":{"import":"./dist/seneu-ui.js","require":"./dist/seneu-ui.umd.cjs"},"./dist/style.css":"./dist/style.css","./src/tokens/base.css":"./src/tokens/base.css","./src/tokens/semantic.css":"./src/tokens/semantic.css","./src/tokens/primitive.css":"./src/tokens/primitive.css"},"gitHead":"592e8b3fdd09e2891a491f91433ab110c7028213","scripts":{"dev":"vite","lint":"eslint src/","test":"vitest","build":"vite build","preview":"vite preview","test:run":"vitest run","type-check":"vue-tsc --noEmit"},"_npmUser":{"name":"satriaperd","email":"perdanasatria48@gmail.com"},"repository":{"url":"git+https://github.com/satriaperd/seneu-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Vue 3 component library for CMS and admin panel — by Cimang Club","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","vite":"^6.3.2","jsdom":"^29.1.1","eslint":"^10.4.0","vitest":"^4.1.6","echarts":"^5.6.0","vue-tsc":"^2.2.8","@eslint/js":"^10.0.1","typescript":"^5.7.2","tailwindcss":"^4.1.5","@vue/test-utils":"^2.4.10","vite-plugin-dts":"^5.0.0","@tailwindcss/vite":"^4.1.5","eslint-plugin-vue":"^10.9.1","@vitejs/plugin-vue":"^5.2.1"},"peerDependencies":{"vue":"^3.5.0","echarts":"^5.0.0"},"peerDependenciesMeta":{"echarts":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/seneu-ui_1.21.4_1786263479045_0.7290517250596094","host":"s3://npm-registry-packages-npm-production"}},"1.21.5":{"name":"@cimang/seneu-ui","version":"1.21.5","keywords":["vue","vue3","component-library","ui","cms","admin-panel","tailwindcss"],"author":{"name":"Cimang Club"},"license":"MIT","_id":"@cimang/seneu-ui@1.21.5","maintainers":[{"name":"satriaperd","email":"perdanasatria48@gmail.com"}],"homepage":"https://github.com/satriaperd/seneu-ui#readme","bugs":{"url":"https://github.com/satriaperd/seneu-ui/issues"},"dist":{"shasum":"a49c806473eed5097f40bc2957ed3699691e714a","tarball":"https://registry.npmjs.org/@cimang/seneu-ui/-/seneu-ui-1.21.5.tgz","fileCount":51,"integrity":"sha512-OkpDSeghZAbBokq5Q8h4qF6lpIa7GYx4huEbPbvcLw06JS2RlkRWH8vLBMP4v3L06bWdaQG7qdizm5/oldjsHg==","signatures":[{"sig":"MEUCIQCQV3AT0YrCc1jehhEBLVGHixgF7wZ8IOI9yg1Tmn0KhAIgLmC0p75DX7jJ3Wj3JpZfEOref7aMYPhJYd9N5M8ddt8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":605021},"main":"./dist/seneu-ui.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/seneu-ui.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/seneu-ui.js","require":"./dist/seneu-ui.umd.cjs"},"./dist/style.css":"./dist/style.css","./src/tokens/base.css":"./src/tokens/base.css","./src/tokens/semantic.css":"./src/tokens/semantic.css","./src/tokens/primitive.css":"./src/tokens/primitive.css"},"gitHead":"3f9049a856ecfe904d4a6f21aec125a1664b9323","scripts":{"dev":"vite","lint":"eslint src/","test":"vitest","build":"vite build","preview":"vite preview","test:run":"vitest run","type-check":"vue-tsc --noEmit"},"_npmUser":{"name":"satriaperd","email":"perdanasatria48@gmail.com"},"repository":{"url":"git+https://github.com/satriaperd/seneu-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Vue 3 component library for CMS and admin panel — by Cimang Club","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","vite":"^6.3.2","jsdom":"^29.1.1","eslint":"^10.4.0","vitest":"^4.1.6","echarts":"^5.6.0","vue-tsc":"^2.2.8","@eslint/js":"^10.0.1","typescript":"^5.7.2","tailwindcss":"^4.1.5","@vue/test-utils":"^2.4.10","vite-plugin-dts":"^5.0.0","@tailwindcss/vite":"^4.1.5","eslint-plugin-vue":"^10.9.1","@vitejs/plugin-vue":"^5.2.1"},"peerDependencies":{"vue":"^3.5.0","echarts":"^5.0.0"},"peerDependenciesMeta":{"echarts":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/seneu-ui_1.21.5_1786331963954_0.5216928896437956","host":"s3://npm-registry-packages-npm-production"}},"1.21.6":{"name":"@cimang/seneu-ui","version":"1.21.6","keywords":["vue","vue3","component-library","ui","cms","admin-panel","tailwindcss"],"author":{"name":"Cimang Club"},"license":"MIT","_id":"@cimang/seneu-ui@1.21.6","maintainers":[{"name":"satriaperd","email":"perdanasatria48@gmail.com"}],"homepage":"https://github.com/satriaperd/seneu-ui#readme","bugs":{"url":"https://github.com/satriaperd/seneu-ui/issues"},"dist":{"shasum":"4befc4cc9a1182ed0e0879f8a70dee476b389eb9","tarball":"https://registry.npmjs.org/@cimang/seneu-ui/-/seneu-ui-1.21.6.tgz","fileCount":51,"integrity":"sha512-5XdHa2NCHVQ4vshjU2CS2Erjk1ZOCkMDwG9b8Dq2W5sg7jpEAFXgJ3+1A48tHPOq049Wl5kW4NmGy3ZW91Iu2A==","signatures":[{"sig":"MEUCIQDyWS10msiSHoilSnto2SOUvyreIbFCwWkia+RtlczTOgIgf/65Jw0f06Z0I4+czoFs+55RRmuJRns7ZaGhNcM2qe4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":606473},"main":"./dist/seneu-ui.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/seneu-ui.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/seneu-ui.js","require":"./dist/seneu-ui.umd.cjs"},"./dist/style.css":"./dist/style.css","./src/tokens/base.css":"./src/tokens/base.css","./src/tokens/semantic.css":"./src/tokens/semantic.css","./src/tokens/primitive.css":"./src/tokens/primitive.css"},"gitHead":"3b4688860197e677cb0f550e3f02cea0af65cc90","scripts":{"dev":"vite","lint":"eslint src/","test":"vitest","build":"vite build","preview":"vite preview","test:run":"vitest run","type-check":"vue-tsc --noEmit"},"_npmUser":{"name":"satriaperd","email":"perdanasatria48@gmail.com"},"repository":{"url":"git+https://github.com/satriaperd/seneu-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Vue 3 component library for CMS and admin panel — by Cimang Club","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","vite":"^6.3.2","jsdom":"^29.1.1","eslint":"^10.4.0","vitest":"^4.1.6","echarts":"^5.6.0","vue-tsc":"^2.2.8","@eslint/js":"^10.0.1","typescript":"^5.7.2","tailwindcss":"^4.1.5","@vue/test-utils":"^2.4.10","vite-plugin-dts":"^5.0.0","@tailwindcss/vite":"^4.1.5","eslint-plugin-vue":"^10.9.1","@vitejs/plugin-vue":"^5.2.1"},"peerDependencies":{"vue":"^3.5.0","echarts":"^5.0.0"},"peerDependenciesMeta":{"echarts":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/seneu-ui_1.21.6_1786332654331_0.23250412113258268","host":"s3://npm-registry-packages-npm-production"}},"1.22.0":{"name":"@cimang/seneu-ui","version":"1.22.0","keywords":["vue","vue3","component-library","ui","cms","admin-panel","tailwindcss"],"author":{"name":"Cimang Club"},"license":"MIT","_id":"@cimang/seneu-ui@1.22.0","maintainers":[{"name":"satriaperd","email":"perdanasatria48@gmail.com"}],"homepage":"https://github.com/satriaperd/seneu-ui#readme","bugs":{"url":"https://github.com/satriaperd/seneu-ui/issues"},"dist":{"shasum":"0c984d1fe0ee6d382daecc1286c3dfb6f6ff3c1e","tarball":"https://registry.npmjs.org/@cimang/seneu-ui/-/seneu-ui-1.22.0.tgz","fileCount":51,"integrity":"sha512-KkSGNrxEv0aMlBjMLPn/g9xcL3vhZEizr13/uA/g+K/k8XBC0fs3AuTbW/o46VGcb40dt4I6suMpzEdGT9+Mlg==","signatures":[{"sig":"MEUCIQC1eL3WbmHMgr0y57+/NKmpx44WxMSLGbOdBYNtW0E3GwIgRC4Yh3wk5xQn0ITvYNtKqTpx8eXOMJFR8gsWYFQMsdc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":608115},"main":"./dist/seneu-ui.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/seneu-ui.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/seneu-ui.js","require":"./dist/seneu-ui.umd.cjs"},"./dist/style.css":"./dist/style.css","./src/tokens/base.css":"./src/tokens/base.css","./src/tokens/semantic.css":"./src/tokens/semantic.css","./src/tokens/primitive.css":"./src/tokens/primitive.css"},"gitHead":"ae1a94ed34b0aef20b79adbaa1f231e7e102448b","scripts":{"dev":"vite","lint":"eslint src/","test":"vitest","build":"vite build","preview":"vite preview","test:run":"vitest run","type-check":"vue-tsc --noEmit"},"_npmUser":{"name":"satriaperd","email":"perdanasatria48@gmail.com"},"repository":{"url":"git+https://github.com/satriaperd/seneu-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Vue 3 component library for CMS and admin panel — by Cimang Club","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","vite":"^6.3.2","jsdom":"^29.1.1","eslint":"^10.4.0","vitest":"^4.1.6","echarts":"^5.6.0","vue-tsc":"^2.2.8","@eslint/js":"^10.0.1","typescript":"^5.7.2","tailwindcss":"^4.1.5","@vue/test-utils":"^2.4.10","vite-plugin-dts":"^5.0.0","@tailwindcss/vite":"^4.1.5","eslint-plugin-vue":"^10.9.1","@vitejs/plugin-vue":"^5.2.1"},"peerDependencies":{"vue":"^3.5.0","echarts":"^5.0.0"},"peerDependenciesMeta":{"echarts":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/seneu-ui_1.22.0_1786354969190_0.744661178688921","host":"s3://npm-registry-packages-npm-production"}},"1.23.0":{"name":"@cimang/seneu-ui","version":"1.23.0","keywords":["vue","vue3","component-library","ui","cms","admin-panel","tailwindcss"],"author":{"name":"Cimang Club"},"license":"MIT","_id":"@cimang/seneu-ui@1.23.0","maintainers":[{"name":"satriaperd","email":"perdanasatria48@gmail.com"}],"homepage":"https://github.com/satriaperd/seneu-ui#readme","bugs":{"url":"https://github.com/satriaperd/seneu-ui/issues"},"dist":{"shasum":"e0ea2d5f33f30a1beeac3d7ac68ce2b200a83ce9","tarball":"https://registry.npmjs.org/@cimang/seneu-ui/-/seneu-ui-1.23.0.tgz","fileCount":52,"integrity":"sha512-8LIUoTqrD1h2k3nBJzklX1DNMnmV98Lftd0i1FpcQYsdSAdzVStDR2LQaxpWBk2yBJwe4siL1aS2yjbQHfHmLw==","signatures":[{"sig":"MEUCIDsSJL8z1xsPI9fsGeWGPe+MS24A5bKdSFcsO82yEqV8AiEAmXdd3bBLSF4rp+G2MR7jb9jwlf/wKl73sMU35SiF5mM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":656666},"main":"./dist/seneu-ui.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/seneu-ui.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/seneu-ui.js","require":"./dist/seneu-ui.umd.cjs"},"./dist/style.css":"./dist/style.css","./src/tokens/base.css":"./src/tokens/base.css","./src/tokens/semantic.css":"./src/tokens/semantic.css","./src/tokens/primitive.css":"./src/tokens/primitive.css"},"gitHead":"f3120e292756614700136507abcdd27f18c50886","scripts":{"dev":"vite","lint":"eslint src/","test":"vitest","build":"vite build","preview":"vite preview","test:run":"vitest run","type-check":"vue-tsc --noEmit"},"_npmUser":{"name":"satriaperd","email":"perdanasatria48@gmail.com"},"repository":{"url":"git+https://github.com/satriaperd/seneu-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Vue 3 component library for CMS and admin panel — by Cimang Club","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","vite":"^6.3.2","jsdom":"^29.1.1","eslint":"^10.4.0","vitest":"^4.1.6","echarts":"^5.6.0","vue-tsc":"^2.2.8","@eslint/js":"^10.0.1","typescript":"^5.7.2","tailwindcss":"^4.1.5","@vue/test-utils":"^2.4.10","vite-plugin-dts":"^5.0.0","@tailwindcss/vite":"^4.1.5","eslint-plugin-vue":"^10.9.1","@vitejs/plugin-vue":"^5.2.1"},"peerDependencies":{"vue":"^3.5.0","echarts":"^5.0.0"},"peerDependenciesMeta":{"echarts":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/seneu-ui_1.23.0_1786537657674_0.06793068331185004","host":"s3://npm-registry-packages-npm-production"}},"1.23.1":{"name":"@cimang/seneu-ui","version":"1.23.1","keywords":["vue","vue3","component-library","ui","cms","admin-panel","tailwindcss"],"author":{"name":"Cimang Club"},"license":"MIT","_id":"@cimang/seneu-ui@1.23.1","maintainers":[{"name":"satriaperd","email":"perdanasatria48@gmail.com"}],"homepage":"https://github.com/satriaperd/seneu-ui#readme","bugs":{"url":"https://github.com/satriaperd/seneu-ui/issues"},"dist":{"shasum":"4874da72b1b52d81a3c1a019e551bcf6016e530b","tarball":"https://registry.npmjs.org/@cimang/seneu-ui/-/seneu-ui-1.23.1.tgz","fileCount":52,"integrity":"sha512-fbSLjKYKSHadMHtjm87GkS0G37p73UYcfPXT9LQvcCxUnHKtrHFJCpd8kN+n4r8Vhs4LC1WQ7feL8DmviFM6cA==","signatures":[{"sig":"MEUCIQD5RG7ZjWDV3O7odFe8mXloLtLZKqozoEspiPtfDJ+l4QIgKauCCIxQ9vFeEr2jQNKqM1dwYcV2x718HcZt97NJors=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":657153},"main":"./dist/seneu-ui.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/seneu-ui.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/seneu-ui.js","require":"./dist/seneu-ui.umd.cjs"},"./dist/style.css":"./dist/style.css","./src/tokens/base.css":"./src/tokens/base.css","./src/tokens/semantic.css":"./src/tokens/semantic.css","./src/tokens/primitive.css":"./src/tokens/primitive.css"},"gitHead":"c7c45b6f3ee4e7b2b57e023e33cb2021a561011d","scripts":{"dev":"vite","lint":"eslint src/","test":"vitest","build":"vite build","preview":"vite preview","test:run":"vitest run","type-check":"vue-tsc --noEmit"},"_npmUser":{"name":"satriaperd","email":"perdanasatria48@gmail.com"},"repository":{"url":"git+https://github.com/satriaperd/seneu-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Vue 3 component library for CMS and admin panel — by Cimang Club","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","vite":"^6.3.2","jsdom":"^29.1.1","eslint":"^10.4.0","vitest":"^4.1.6","echarts":"^5.6.0","vue-tsc":"^2.2.8","@eslint/js":"^10.0.1","typescript":"^5.7.2","tailwindcss":"^4.1.5","@vue/test-utils":"^2.4.10","vite-plugin-dts":"^5.0.0","@tailwindcss/vite":"^4.1.5","eslint-plugin-vue":"^10.9.1","@vitejs/plugin-vue":"^5.2.1"},"peerDependencies":{"vue":"^3.5.0","echarts":"^5.0.0"},"peerDependenciesMeta":{"echarts":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/seneu-ui_1.23.1_1786538275773_0.002935299448679096","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@cimang/seneu-ui","version":"2.0.1","description":"Vue 3 component library for CMS and admin panel — by Cimang Club","type":"module","publishConfig":{"access":"public"},"main":"./dist/seneu-ui.umd.cjs","module":"./dist/seneu-ui.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/seneu-ui.js","require":"./dist/seneu-ui.umd.cjs"},"./dist/style.css":"./dist/style.css","./src/tokens/primitive.css":"./src/tokens/primitive.css","./src/tokens/semantic.css":"./src/tokens/semantic.css","./src/tokens/base.css":"./src/tokens/base.css"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview","type-check":"vue-tsc --noEmit","test":"vitest","test:run":"vitest run","lint":"eslint src/"},"peerDependencies":{"echarts":"^5.0.0","vue":"^3.5.0"},"peerDependenciesMeta":{"echarts":{"optional":true}},"devDependencies":{"@eslint/js":"^10.0.1","@tailwindcss/vite":"^4.1.5","@vitejs/plugin-vue":"^5.2.1","@vue/test-utils":"^2.4.10","echarts":"^5.6.0","eslint":"^10.4.0","eslint-plugin-vue":"^10.9.1","jsdom":"^29.1.1","tailwindcss":"^4.1.5","typescript":"^5.7.2","vite":"^6.3.2","vite-plugin-dts":"^5.0.0","vitest":"^4.1.6","vue":"^3.5.13","vue-tsc":"^2.2.8"},"keywords":["vue","vue3","component-library","ui","cms","admin-panel","tailwindcss"],"author":{"name":"Cimang Club"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/satriaperd/seneu-ui.git"},"gitHead":"d0b695ece3fd60bd73a05185538f60d1c80ee6e2","_id":"@cimang/seneu-ui@2.0.1","bugs":{"url":"https://github.com/satriaperd/seneu-ui/issues"},"homepage":"https://github.com/satriaperd/seneu-ui#readme","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-9mLG7FEeP9ituOutueIbUYqNLiFFIO9LkhgzcL6NDtN6qdnscSNQPBNX365iL+NpMLOdkIO+462cgacHaE3S3Q==","shasum":"5dac708db9b1051a3598ba75741adb2f5df0c178","tarball":"https://registry.npmjs.org/@cimang/seneu-ui/-/seneu-ui-2.0.1.tgz","fileCount":52,"unpackedSize":662104,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDqfKmXem4t36EnVxlY1qCUUnmfhqOTyorNkxDVpBq07QIhAO0c9/ggwqKvyhdxpWq3zyjlMY852pTQquL62yWIRbl/"}]},"_npmUser":{"name":"satriaperd","email":"perdanasatria48@gmail.com"},"directories":{},"maintainers":[{"name":"satriaperd","email":"perdanasatria48@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/seneu-ui_2.0.1_1787157673491_0.19199695381938287"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-09T08:17:58.885Z","modified":"2026-08-19T16:41:13.865Z","1.21.4":"2026-08-09T08:17:59.235Z","1.21.5":"2026-08-10T03:19:24.109Z","1.21.6":"2026-08-10T03:30:54.486Z","1.22.0":"2026-08-10T09:42:49.358Z","1.23.0":"2026-08-12T12:27:37.816Z","1.23.1":"2026-08-12T12:37:55.925Z","2.0.1":"2026-08-19T16:41:13.621Z"},"bugs":{"url":"https://github.com/satriaperd/seneu-ui/issues"},"author":{"name":"Cimang Club"},"license":"MIT","homepage":"https://github.com/satriaperd/seneu-ui#readme","keywords":["vue","vue3","component-library","ui","cms","admin-panel","tailwindcss"],"repository":{"type":"git","url":"git+https://github.com/satriaperd/seneu-ui.git"},"description":"Vue 3 component library for CMS and admin panel — by Cimang Club","maintainers":[{"name":"satriaperd","email":"perdanasatria48@gmail.com"}],"readme":"# Seneu UI\n\n[![npm version](https://img.shields.io/npm/v/@cimang/seneu-ui.svg)](https://www.npmjs.com/package/@cimang/seneu-ui)\n[![license](https://img.shields.io/npm/l/@cimang/seneu-ui.svg)](LICENSE)\n\nA Vue 3 component library for building CMS and admin panels — pairs with Tailwind CSS, a two-layer design token system, and components that are accessible by default (WCAG 2.2 AA).\n\n> By Cimang Club. Brand color `#FC7A1E`. See [CHANGELOG.md](CHANGELOG.md) for release history.\n\n## Install\n\n```bash\nnpm install @cimang/seneu-ui\n```\n\nVue 3.5+ is required as a peer dependency. ECharts is optional and only needed if you use `SeneuChartWrapper`.\n\n```bash\nnpm install echarts   # optional, only needed for chart components\n```\n\nTypeScript declarations (`.d.ts`) are generated for every component and composable and ship in the package — no `@types/` package or extra setup needed, editor autocomplete and prop types work out of the box in both `.ts` and `.vue` files.\n\n## Quick Start\n\n```js\n// main.js\nimport { createApp } from 'vue'\nimport App from './App.vue'\nimport '@cimang/seneu-ui/dist/style.css'\n\ncreateApp(App).mount('#app')\n```\n\n```vue\n<script setup>\nimport { SeneuButton, SeneuInput } from '@cimang/seneu-ui'\n</script>\n\n<template>\n  <SeneuInput v-model=\"email\" label=\"Email\" placeholder=\"name@email.com\" />\n  <SeneuButton variant=\"brand\">Save</SeneuButton>\n</template>\n```\n\n`@cimang/seneu-ui/dist/style.css` already includes everything components need to render correctly: design tokens (primitive + semantic), a base reset, and fonts. No extra setup required.\n\n## Typography & Font\n\nSeneu UI uses **Inter** for general text and **JetBrains Mono** for code (`<code>`, `<pre>`, `<kbd>`, `<samp>`), plus **Material Symbols Rounded** for `SeneuIcon`.\n\nThese fonts are **loaded automatically** as soon as you import `@cimang/seneu-ui/dist/style.css` — it contains an `@import` pointing to the Google Fonts CDN, so there's no need to add a `<link>` tag or install fonts yourself. Zero-config.\n\n```css\n/* already included inside dist/style.css — no need to add this manually */\n@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');\n@import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200');\n```\n\nEvery component references the semantic tokens `--font-sans` and `--font-mono` (see [Design Tokens](#design-tokens)), so if your project already has its own font strategy (e.g. a self-hosted font or a different brand font), you can override the tokens without touching any component:\n\n```css\n/* in your project's CSS, after importing @cimang/seneu-ui/dist/style.css */\n:root {\n  --font-sans: 'Your Custom Font', sans-serif;\n}\n```\n\n**Performance note:** because fonts are loaded via the Google Fonts CDN, there's one extra network request on first page load. If your project needs full control over font loading (self-hosting, preloading, subsetting), override `--font-sans`/`--font-mono` as shown above — Seneu UI's CDN import will still run in the background but components will no longer use it.\n\n## Using a Custom Icon Set\n\nMaterial Symbols is the *default* icon set, not a hard requirement. Every component that renders an icon — `SeneuButton`, `SeneuInput`, `SeneuAlert`, `SeneuToast`, all of them — does so through a single internal component, `SeneuIcon`. That means you can swap the entire library's icon set in one place, without touching any component.\n\nProvide a component at the `SENEU_ICON_KEY` injection key from your app root:\n\n```js\n// main.js\nimport { createApp } from 'vue'\nimport App from './App.vue'\nimport { SENEU_ICON_KEY } from '@cimang/seneu-ui'\nimport MyIconAdapter from './MyIconAdapter.vue'\n\nconst app = createApp(App)\napp.provide(SENEU_ICON_KEY, MyIconAdapter)\napp.mount('#app')\n```\n\nYour adapter component receives the same props `SeneuIcon` does — `name`, `size`, `fill`, `weight`, `grade`, `label` — and renders whatever you want. `name` is Seneu UI's internal Material-Symbols-based icon name (e.g. `\"close\"`, `\"search\"`, `\"chevron_left\"`), so map it to your icon set's equivalent:\n\n```vue\n<!-- MyIconAdapter.vue — example using lucide-vue-next -->\n<script setup>\nimport * as icons from 'lucide-vue-next'\n\nconst props = defineProps(['name', 'size', 'label'])\n\n// Map Seneu UI's Material-Symbols-style names to your icon set\nconst ICON_MAP = {\n  close: icons.X,\n  search: icons.Search,\n  chevron_left: icons.ChevronLeft,\n  chevron_right: icons.ChevronRight,\n  check: icons.Check,\n  error: icons.AlertCircle,\n  // ...add mappings for every icon name your app actually uses\n}\n</script>\n\n<template>\n  <component\n    :is=\"ICON_MAP[name] || icons.HelpCircle\"\n    :size=\"size\"\n    :aria-label=\"label || undefined\"\n    :aria-hidden=\"label ? undefined : 'true'\"\n  />\n</template>\n```\n\nIf you don't provide `SENEU_ICON_KEY`, nothing changes — components fall back to rendering Material Symbols Rounded, as documented above.\n\n## Design Tokens\n\nSeneu UI uses a two-layer token system:\n\n- **Primitive** (`--primitive-*`) — raw values, not meant to be used directly in your code.\n- **Semantic** (`--color-*`, `--space-*`, `--font-*`, etc.) — contextual tokens used by components and safe for you to override.\n\n```js\nimport '@cimang/seneu-ui/dist/style.css' // tokens + base + fonts, all-in-one\n```\n\nNeed just the token CSS without the base reset? Import the token files separately:\n\n```js\nimport '@cimang/seneu-ui/src/tokens/primitive.css'\nimport '@cimang/seneu-ui/src/tokens/semantic.css'\n```\n\n## Works Alongside Any CSS Framework\n\nSeneu UI ships zero framework CSS — no bundled Tailwind, no bundled Bootstrap. Components are styled with plain CSS custom properties and a minimal reset, so you can drop this into a project using Tailwind, Bootstrap, UnoCSS, or nothing at all, without either side fighting the other for spacing/margins.\n\nThe minimal reset (`* { margin: 0; padding: 0 }`, heading weights, focus rings, etc.) lives inside `@layer base`. Per the [CSS Cascade Layers spec](https://developer.mozilla.org/en-US/docs/Web/CSS/@layer), any CSS your app writes outside of a layer — plain custom CSS, Bootstrap, most non-utility frameworks — automatically wins over anything in a layer, regardless of selector specificity.\n\nIf your framework uses layers itself (Tailwind, UnoCSS), `base` is reused deliberately rather than a private name like `seneu-ui-base`: Tailwind already declares `@layer theme, base, components, utilities;` and puts its own element defaults in `base` specifically so `utilities` always outranks it. Reusing that exact name means Seneu UI's reset merges into the same layer position — below `utilities` — regardless of whether your app's CSS loads before or after this library's stylesheet. A private layer name doesn't have that guarantee: its position is decided by whichever file mentions it first, which makes the outcome depend on load order instead of being predictable.\n\nIn practice: you never need `!important` or extra specificity tricks to override Seneu UI's base styles — your app's own spacing/margin utilities just work, regardless of import order.\n\n## Dark & Light Theme\n\nThe default theme follows the device's `prefers-color-scheme`. For manual toggling, use the `useTheme` composable:\n\n```vue\n<script setup>\nimport { useTheme } from '@cimang/seneu-ui'\n\nconst { theme, toggleTheme } = useTheme()\n</script>\n\n<template>\n  <SeneuButton @click=\"toggleTheme\">\n    Switch to {{ theme === 'dark' ? 'light' : 'dark' }}\n  </SeneuButton>\n</template>\n```\n\n## Components\n\nAll components below are built, tested, and WCAG 2.2 AA verified in both light and dark theme.\n\n**Foundation**\n`SeneuIcon` · `useTheme` · `useToast` · `useConfirmDialog`\n\n**Form & Input**\n`SeneuButton` · `SeneuInput` · `SeneuTextarea` · `SeneuSelect` · `SeneuCheckbox` · `SeneuRadio` · `SeneuToggle` · `SeneuDatePicker` · `SeneuFileUpload` · `SeneuSearchBar` · `SeneuColorPicker`\n\n**Layout & Navigation**\n`SeneuSidebar` · `SeneuTopbar` · `SeneuBreadcrumb` · `SeneuTabs` · `SeneuPagination` · `SeneuStepper` · `SeneuFooter` · `SeneuCarousel` · `SeneuRichTextEditor`\n\n**Data Display**\n`SeneuCard` · `SeneuTable` · `SeneuBadge` · `SeneuTag` · `SeneuTooltip` · `SeneuAvatar` · `SeneuStatCard` · `SeneuChartWrapper` · `SeneuEmptyState` · `SeneuSkeleton`\n\n**Feedback & Overlay**\n`SeneuAlert` · `SeneuToast` · `SeneuModal` · `SeneuDrawer` · `SeneuProgressBar` · `SeneuSpinner` · `SeneuConfirmDialog`\n\n`SeneuRichTextEditor` is built on native `contenteditable` + `execCommand` — no Tiptap or other editor dependency needed.\n\n`SeneuChartWrapper` uses ECharts as an optional peer dependency (see [Install](#install)).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}