{"_id":"@bernankez/theme-generator","_rev":"3-a9d8155fe3d0daab83a587a8fb308f72","name":"@bernankez/theme-generator","dist-tags":{"latest":"0.2.2"},"versions":{"0.1.0":{"name":"@bernankez/theme-generator","version":"0.1.0","keywords":[],"author":{"url":"https://github.com/Bernankez","name":"Cole","email":"bernankeic@gmail.com"},"_id":"@bernankez/theme-generator@0.1.0","maintainers":[{"name":"bernankez","email":"bernankeic@gmail.com"}],"homepage":"https://github.com/Bernankez/theme-generator#readme","bugs":{"url":"https://github.com/Bernankez/theme-generator/issues"},"bin":{"theme-generator":"bin/index.js"},"dist":{"shasum":"0940668c8a914d40334c45bcfa07574ad3268727","tarball":"https://registry.npmjs.org/@bernankez/theme-generator/-/theme-generator-0.1.0.tgz","fileCount":13,"integrity":"sha512-8f9iT4WvM2g/Z4BxxiQci9bwBFaXQ22gD+Ubty5WUBa4d0U7KYHefX69S2lbop+CLgooTq+PRPKzTKMyAR4azQ==","signatures":[{"sig":"MEYCIQCp11GoEiuAK/jTluQdtV1UUSohYjJm/P39X3BAQhSnjAIhAMmWB9xbth+SLx+EJ7ICAky0nh07UT7LHkGnEa0AFfIV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":397655},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"1ad11b14898165447be7c6d2a423a39968b882ca","scripts":{"dev":"unbuild --stub && pnpm -F \"playground\" dev","fix":"eslint . -f mo --fix","lint":"eslint . -f mo","test":"vitest","build":"unbuild && pnpm -F \"playground\" build","start":"tsx src/index.ts","prepack":"nr build","prepare":"simple-git-hooks","preview":"pnpm -F \"playground\" preview","release":"bumpp && npm publish","test:once":"vitest run","typecheck":"tsc --noEmit && pnpm -F \"playground\" typecheck"},"_npmUser":{"name":"bernankez","email":"bernankeic@gmail.com"},"repository":{"url":"git+https://github.com/Bernankez/theme-generator.git","type":"git"},"_npmVersion":"10.7.0","description":"Website theme generator","directories":{},"lint-staged":{"*":"eslint --fix"},"sideEffects":false,"_nodeVersion":"20.15.0","dependencies":{"cac":"^6.7.14"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.4.0","devDependencies":{"tsx":"^4.7.2","vite":"^5.2.10","bumpp":"^9.4.0","eslint":"^9.1.1","rimraf":"^5.0.5","unocss":"^0.59.4","vitest":"^1.5.0","unbuild":"^2.0.0","@antfu/ni":"^0.21.12","chroma-js":"^2.4.2","lodash-es":"^4.17.21","typescript":"^5.5.3","@types/node":"^20.12.7","lint-staged":"^15.2.2","@bernankez/utils":"^0.6.3","@types/chroma-js":"^2.4.4","@types/lodash-es":"^4.17.12","simple-git-hooks":"^2.11.1","eslint-formatter-mo":"^1.2.0","eslint-plugin-format":"^0.1.1","@unocss/eslint-plugin":"^0.59.4","@bernankez/eslint-config":"^1.3.2"},"peerDependencies":{"unocss":"^0.59.4"},"simple-git-hooks":{"pre-commit":"nlx lint-staged"},"peerDependenciesMeta":{"unocss":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/theme-generator_0.1.0_1719999683624_0.8925329646572868","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@bernankez/theme-generator","version":"0.2.0","keywords":[],"author":{"url":"https://github.com/Bernankez","name":"Cole","email":"bernankeic@gmail.com"},"_id":"@bernankez/theme-generator@0.2.0","maintainers":[{"name":"bernankez","email":"bernankeic@gmail.com"}],"homepage":"https://github.com/Bernankez/theme-generator#readme","bugs":{"url":"https://github.com/Bernankez/theme-generator/issues"},"bin":{"theme-generator":"bin/index.js"},"dist":{"shasum":"36720dcc89537af44c654a7f75c77d1a25899551","tarball":"https://registry.npmjs.org/@bernankez/theme-generator/-/theme-generator-0.2.0.tgz","fileCount":13,"integrity":"sha512-hAobLwPj/7xCMBJuoc7uwkacSnYm/iUhUugC61GVj7MkTz3NjMNQNg/p5X7XyBN7Biizvv+So6VCKMYgEfi+fA==","signatures":[{"sig":"MEUCIQCWnHT/Eob0sW3cz6sZK2zsPNU4ELj6I9uOf0oaA2ps+gIgYFfzc+BEjGta7J421Ic946F6guG/FOYuFDg0QoiUS2c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":397446},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"a1f23b8e5ea87b7d15b9d1d228a0c9c2c41decf2","scripts":{"dev":"unbuild --stub && pnpm -F \"playground\" dev","fix":"eslint . -f mo --fix","lint":"eslint . -f mo","test":"vitest","build":"unbuild && pnpm -F \"playground\" build","start":"tsx src/index.ts","prepack":"nr build","prepare":"simple-git-hooks","preview":"pnpm -F \"playground\" preview","release":"bumpp && npm publish","test:once":"vitest run","typecheck":"tsc --noEmit && pnpm -F \"playground\" typecheck"},"_npmUser":{"name":"bernankez","email":"bernankeic@gmail.com"},"repository":{"url":"git+https://github.com/Bernankez/theme-generator.git","type":"git"},"_npmVersion":"10.7.0","description":"Website theme generator","directories":{},"lint-staged":{"*":"eslint --fix"},"sideEffects":false,"_nodeVersion":"20.15.0","dependencies":{"cac":"^6.7.14"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.4.0","devDependencies":{"tsx":"^4.7.2","vite":"^5.2.10","bumpp":"^9.4.0","eslint":"^9.1.1","rimraf":"^5.0.5","unocss":"^0.59.4","vitest":"^1.5.0","unbuild":"^2.0.0","@antfu/ni":"^0.21.12","chroma-js":"^2.4.2","lodash-es":"^4.17.21","typescript":"^5.5.3","@types/node":"^20.12.7","lint-staged":"^15.2.2","@bernankez/utils":"^0.6.3","@types/chroma-js":"^2.4.4","@types/lodash-es":"^4.17.12","simple-git-hooks":"^2.11.1","eslint-formatter-mo":"^1.2.0","eslint-plugin-format":"^0.1.1","@unocss/eslint-plugin":"^0.59.4","@bernankez/eslint-config":"^1.3.2"},"peerDependencies":{"unocss":"^0.59.4"},"simple-git-hooks":{"pre-commit":"nlx lint-staged"},"peerDependenciesMeta":{"unocss":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/theme-generator_0.2.0_1720516051405_0.7360900444553897","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@bernankez/theme-generator","version":"0.2.1","keywords":[],"author":{"url":"https://github.com/Bernankez","name":"Cole","email":"bernankeic@gmail.com"},"_id":"@bernankez/theme-generator@0.2.1","maintainers":[{"name":"bernankez","email":"bernankeic@gmail.com"}],"homepage":"https://github.com/Bernankez/theme-generator#readme","bugs":{"url":"https://github.com/Bernankez/theme-generator/issues"},"bin":{"theme-generator":"bin/index.js"},"dist":{"shasum":"56c4f1a2dde1771877589192e2910aba22386f1b","tarball":"https://registry.npmjs.org/@bernankez/theme-generator/-/theme-generator-0.2.1.tgz","fileCount":13,"integrity":"sha512-Id+25md1BpnVDXr20r+0aJb7X55oKIw+L942JRPWA2SnOKiRH+6gTeSDCAIKm0/9oK0DOJs/vo04duiRyFczsA==","signatures":[{"sig":"MEUCIQD5N3Mqp/9s4LHAK5VobVWy8WQth8oeDpudhl5VRX9m4QIgCk4G1ubkYKigDa7kI/iSHz7JrEoYo1L56ckC6zwymQw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":397634},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"72ff93703de6d94d732608ba0cf77e2557bf484b","scripts":{"dev":"unbuild --stub && pnpm -F \"playground\" dev","fix":"eslint . -f mo --fix","lint":"eslint . -f mo","test":"vitest","build":"unbuild && pnpm -F \"playground\" build","start":"tsx src/index.ts","prepack":"nr build","prepare":"simple-git-hooks","preview":"pnpm -F \"playground\" preview","release":"bumpp && npm publish","test:once":"vitest run","typecheck":"tsc --noEmit && pnpm -F \"playground\" typecheck"},"_npmUser":{"name":"bernankez","email":"bernankeic@gmail.com"},"repository":{"url":"git+https://github.com/Bernankez/theme-generator.git","type":"git"},"_npmVersion":"10.7.0","description":"Website theme generator","directories":{},"lint-staged":{"*":"eslint --fix"},"sideEffects":false,"_nodeVersion":"20.15.0","dependencies":{"cac":"^6.7.14"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsx":"^4.16.2","vite":"^5.3.3","bumpp":"^9.4.1","eslint":"^9.7.0","rimraf":"^6.0.1","unocss":"^0.61.3","vitest":"^2.0.3","unbuild":"^2.0.0","@antfu/ni":"^0.22.0","chroma-js":"^2.4.2","lodash-es":"^4.17.21","typescript":"^5.5.3","@types/node":"^20.14.10","lint-staged":"^15.2.7","@bernankez/utils":"^0.6.4","@types/chroma-js":"^2.4.4","@types/lodash-es":"^4.17.12","simple-git-hooks":"^2.11.1","eslint-formatter-mo":"^1.2.0","eslint-plugin-format":"^0.1.2","@unocss/eslint-plugin":"^0.61.3","@bernankez/eslint-config":"^1.5.0"},"peerDependencies":{"unocss":"^0.59.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"peerDependenciesMeta":{"unocss":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/theme-generator_0.2.1_1721186770178_0.9890978751591963","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@bernankez/theme-generator","type":"module","version":"0.2.2","packageManager":"pnpm@9.5.0","description":"Website theme generator","author":{"name":"Cole","email":"bernankeic@gmail.com","url":"https://github.com/Bernankez"},"homepage":"https://github.com/Bernankez/theme-generator#readme","repository":{"type":"git","url":"git+https://github.com/Bernankez/theme-generator.git"},"bugs":{"url":"https://github.com/Bernankez/theme-generator/issues"},"keywords":[],"sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"main":"./dist/index.mjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"bin":{"theme-generator":"bin/index.js"},"scripts":{"build":"unbuild && pnpm -F \"playground\" build","dev":"unbuild --stub && pnpm -F \"playground\" dev","fix":"eslint . -f mo --fix","lint":"eslint . -f mo","prepack":"nr build","prepare":"simple-git-hooks","preview":"pnpm -F \"playground\" preview","release":"bumpp && npm publish","start":"tsx src/index.ts","test":"vitest","test:once":"vitest run","typecheck":"tsc --noEmit && pnpm -F \"playground\" typecheck"},"peerDependencies":{"unocss":"^0.59.4"},"peerDependenciesMeta":{"unocss":{"optional":true}},"dependencies":{"cac":"^6.7.14"},"devDependencies":{"@antfu/ni":"^0.22.0","@bernankez/eslint-config":"^1.5.0","@bernankez/utils":"^0.6.4","@types/chroma-js":"^2.4.4","@types/lodash-es":"^4.17.12","@types/node":"^20.14.10","@unocss/eslint-plugin":"^0.61.3","bumpp":"^9.4.1","chroma-js":"^2.4.2","eslint":"^9.7.0","eslint-formatter-mo":"^1.2.0","eslint-plugin-format":"^0.1.2","lint-staged":"^15.2.7","lodash-es":"^4.17.21","rimraf":"^6.0.1","simple-git-hooks":"^2.11.1","tsx":"^4.16.2","typescript":"^5.5.3","unbuild":"^2.0.0","unocss":"^0.61.3","vite":"^5.3.3","vitest":"^2.0.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"lint-staged":{"*":"eslint --fix"},"publishConfig":{"access":"public"},"_id":"@bernankez/theme-generator@0.2.2","gitHead":"a38566573523e99f2253bc0ce2e225479dbd854c","_nodeVersion":"20.15.0","_npmVersion":"10.7.0","dist":{"integrity":"sha512-ztT1ezpVT+7DwticN8vINquaN4VxAF5m2SrsXdEobwSxaGymoO76UbT7nQ9+a/GqX0x7WFQ43cQ3USUwRzoUfA==","shasum":"bcfb9b7b36180b170d0bf1af1d9f927f3d5641e1","tarball":"https://registry.npmjs.org/@bernankez/theme-generator/-/theme-generator-0.2.2.tgz","fileCount":13,"unpackedSize":400530,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3lGDCouzHp2YS97lvyjS3/pzZmpcHK8ROLGrzPbyYGQIgX7gKl5fGIgeM7nuU+NP+ZOndmE/3y+MXJwVG6OUTong="}]},"_npmUser":{"name":"bernankez","email":"bernankeic@gmail.com"},"directories":{},"maintainers":[{"name":"bernankez","email":"bernankeic@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/theme-generator_0.2.2_1726112229692_0.017921607388706517"},"_hasShrinkwrap":false}},"time":{"created":"2024-07-03T09:41:23.503Z","modified":"2024-09-12T03:37:09.970Z","0.1.0":"2024-07-03T09:41:23.751Z","0.2.0":"2024-07-09T09:07:31.525Z","0.2.1":"2024-07-17T03:26:10.402Z","0.2.2":"2024-09-12T03:37:09.816Z"},"bugs":{"url":"https://github.com/Bernankez/theme-generator/issues"},"author":{"name":"Cole","email":"bernankeic@gmail.com","url":"https://github.com/Bernankez"},"homepage":"https://github.com/Bernankez/theme-generator#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/Bernankez/theme-generator.git"},"description":"Website theme generator","maintainers":[{"name":"bernankez","email":"bernankeic@gmail.com"}],"readme":"# 🌈 theme-generator\n\nChoose a color scheme for your website.\n\nYou can visit [theme-generator](https://theme-generator.keke.cc) to get a real-time preview.\n\n## Features\n\n- Config different colors for light and dark mode.\n- Real-time preview of theme effects.\n- Auto generate theme via a primary color.\n- Support exporting as CSS variables, UnoCSS or TailwindCSS config.\n- Color tokens for different UI frameworks adaptation. (WIP)\n- Provide API usage.\n\n## API Usage\n\n> [!WARNING]\n> The API is still unstable and may have breaking change in the future.\n\n### Install\n\n```sh\nnpm i @bernankez/theme-generator\n```\n\nIn your project\n\n```ts\nimport { defaultColors, defineTheme } from \"@bernankez/theme-generator\";\n\nconst theme = defineTheme({\n  defaults: defaultColors\n});\n\nconsole.log(theme);\n// {\n//   colors: {\n//     background: {\n//       light: \"#ffffff\",\n//       dark: \"#0a0a0a\",\n//     },\n//     foreground: {\n//       light: \"#0a0a0a\",\n//       dark: \"#fafafa\",\n//     },\n//     primary: {\n//       light: \"#171717\",\n//       dark: \"#fafafa\",\n//     },\n//     primaryForeground: {\n//       light: \"#fafafa\",\n//       dark: \"#171717\",\n//     },\n//     secondary: {\n//       light: \"#f5f5f5\",\n//       dark: \"#262626\",\n//     },\n//     secondaryForeground: {\n//       light: \"#171717\",\n//       dark: \"#fafafa\",\n//     },\n//     accent: {\n//       light: \"#f5f5f5\",\n//       dark: \"#262626\",\n//     },\n//     accentForeground: {\n//       light: \"#171717\",\n//       dark: \"#fafafa\",\n//     },\n//     muted: {\n//       light: \"#f5f5f5\",\n//       dark: \"#262626\",\n//     },\n//     mutedForeground: {\n//       light: \"#737373\",\n//       dark: \"#fafafa\",\n//     },\n//     border: \"#e5e7eb\",\n//     info: \"#00b3f0\",\n//     infoForeground: \"#ffffff\",\n//     success: \"#00a96f\",\n//     successForeground: \"#ffffff\",\n//     warning: \"#ffc22d\",\n//     warningForeground: \"#000000\",\n//     error: \"#ff6f70\",\n//     errorForeground: \"#ffffff\",\n//   },\n//   radius: \"0.5rem\",\n// }\n```\n\n`defaultColors` is the `Neutral` theme of `shadcn`, you can also pass your own color variables, and the remaining variables will be merged with `defaultColors`. The values in `overrides` have a higher priority than those in `defaults`.\n\n### defineTheme\n\nThe function of defining themes. You can pass in your own color variables, or use the built-in `defaultColors` as defaults. You can also use `inferThemeFromColor` below to generate a theme as `defaults`.\n\n```ts\nexport declare function defineTheme(options: DefineThemeOptions): Theme;\n\nexport interface DefineThemeOptions {\n  defaults: AcceptableTheme;\n  overrides?: Partial<AcceptableTheme>;\n}\n\nexport type AcceptableTheme = {\n  colors: Partial<Record<ColorKeywords, Color | string>>;\n} & {\n  [key in ShapeKeywords]?: string\n};\n\nexport type Theme = {\n  colors: Record<ColorKeywords, Color>;\n} & {\n  [key in ShapeKeywords]: string;\n};\n```\n\n### inferThemeFromColor\n\nAuto generate a theme from a primary color.\n\n```ts\nexport declare function inferThemeFromColor(themeColor: string): Theme;\n```\n\n### Preset\n\n`@bernankez/theme-generator` adapts to different UI frameworks through presets. It currently exports `presetNone` and `presetShadcn`. You can adapt your own UI framework through preset.\n\n#### presetNone\n\n```ts\nexport declare function presetNone(theme: Theme, options?: PresetNoneOptions): { theme: Theme; style: { light: Record<string, string>; dark: Record<string, string> }; unocss: Theme; tailwind: TailwindTheme };\n\nexport interface PresetNoneOptions {\n  cssPrefix?: string;\n}\n```\n\n#### presetShadcn\n\n```ts\nexport declare function presetShadcn(theme: Theme, options?: PresetShadcnOptions): { theme: ShadcnTheme; style: { light: Record<string, string>; dark: Record<string, string> }; unocss: Theme; tailwind: TailwindTheme };\n\nexport interface PresetShadcnOptions {\n  cssPrefix?: string;\n}\n```\n\n## Thanks\n\nThis project is inspired by\n\n- [prism-theme-vars](https://github.com/antfu/prism-theme-vars)\n- [Realtime Colors](https://www.realtimecolors.com)\n\n## License\n\n[MIT](LICENSE) License © [科科Cole](https://github.com/Bernankez)\n\n## Roadmap\n\nhttps://github.com/Bernankez/theme-generator/issues/1\n","readmeFilename":"README.md"}