├── .github ├── CONTRIBUTING.md ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug-report.yml │ ├── config.yml │ └── documentation-issue.yml └── workflows │ ├── deploy-docs.yml │ ├── issue-reply.hbs │ ├── issue-reply.yml │ ├── release-new-version.yml │ ├── run-tests.yml │ └── write-release-notes.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── package.json └── packages ├── bundle ├── .gitignore ├── daisyui-theme.js ├── daisyui-theme.mjs ├── daisyui.js └── daisyui.mjs ├── daisyui ├── .gitignore ├── LICENSE ├── README.md ├── build.js ├── functions │ ├── addPrefix.js │ ├── addPrefix.test.js │ ├── breakpoints.js │ ├── bundle.js │ ├── cleanCss.js │ ├── cleanCss.test.js │ ├── compileAndExtractStyles.js │ ├── contrast.test.js │ ├── copyFile.js │ ├── copyFile.test.js │ ├── createDirectoryBasedOnFileNames.js │ ├── createDirectoryBasedOnFileNames.test.js │ ├── createPluginFiles.js │ ├── createPluginFiles.test.js │ ├── cssToJs.js │ ├── extractClasses.js │ ├── extractClasses.test.js │ ├── filesExist.test.js │ ├── generateChunks.js │ ├── generateChunks.test.js │ ├── generateColorRules.js │ ├── generateImports.js │ ├── generatePlugins.js │ ├── generateRawStyles.js │ ├── generateThemeFiles.js │ ├── generateThemes.js │ ├── generateThemesObject.js │ ├── getDirectoriesWithTargetFile.js │ ├── getFileNames.js │ ├── minify.js │ ├── packCss.js │ ├── plugin.js │ ├── plugin.test.js │ ├── pluginOptionsHandler.js │ ├── pluginOptionsHandler.test.js │ ├── removeFiles.js │ ├── replaceApplyTrueWithEmptyObject.js │ ├── report.js │ ├── themeOrder.d.ts │ ├── themeOrder.js │ ├── themePlugin.js │ ├── themes.test.js │ ├── updateVersion.js │ ├── validatecss.test.js │ ├── variables.css │ ├── variables.d.ts │ └── variables.js ├── index.js ├── package.json └── src │ ├── base │ ├── properties.css │ ├── reset.css │ ├── rootcolor.css │ ├── rootscrollgutter.css │ ├── rootscrolllock.css │ ├── scrollbar.css │ └── svg.css │ ├── components │ ├── alert.css │ ├── avatar.css │ ├── badge.css │ ├── breadcrumbs.css │ ├── button.css │ ├── calendar.css │ ├── card.css │ ├── carousel.css │ ├── chat.css │ ├── checkbox.css │ ├── collapse.css │ ├── countdown.css │ ├── diff.css │ ├── divider.css │ ├── dock.css │ ├── drawer.css │ ├── dropdown.css │ ├── fieldset.css │ ├── fileinput.css │ ├── filter.css │ ├── footer.css │ ├── hero.css │ ├── indicator.css │ ├── input.css │ ├── kbd.css │ ├── label.css │ ├── link.css │ ├── list.css │ ├── loading.css │ ├── mask.css │ ├── menu.css │ ├── mockup.css │ ├── modal.css │ ├── navbar.css │ ├── progress.css │ ├── radialprogress.css │ ├── radio.css │ ├── range.css │ ├── rating.css │ ├── select.css │ ├── skeleton.css │ ├── stack.css │ ├── stat.css │ ├── status.css │ ├── steps.css │ ├── swap.css │ ├── tab.css │ ├── table.css │ ├── textarea.css │ ├── timeline.css │ ├── toast.css │ ├── toggle.css │ ├── tooltip.css │ └── validator.css │ ├── themes │ ├── abyss.css │ ├── acid.css │ ├── aqua.css │ ├── autumn.css │ ├── black.css │ ├── bumblebee.css │ ├── business.css │ ├── caramellatte.css │ ├── cmyk.css │ ├── coffee.css │ ├── corporate.css │ ├── cupcake.css │ ├── cyberpunk.css │ ├── dark.css │ ├── dim.css │ ├── dracula.css │ ├── emerald.css │ ├── fantasy.css │ ├── forest.css │ ├── garden.css │ ├── halloween.css │ ├── lemonade.css │ ├── light.css │ ├── lofi.css │ ├── luxury.css │ ├── night.css │ ├── nord.css │ ├── pastel.css │ ├── retro.css │ ├── silk.css │ ├── sunset.css │ ├── synthwave.css │ ├── valentine.css │ ├── winter.css │ └── wireframe.css │ └── utilities │ ├── glass.css │ ├── join.css │ ├── radius.css │ └── typography.css ├── docs ├── .env.production ├── .gitignore ├── package.json ├── project.inlang │ ├── project_id │ └── settings.json ├── src │ ├── app.html │ ├── components │ │ ├── AlternativeSidebar.svelte │ │ ├── BrowserSupport.svelte │ │ ├── Carbon.svelte │ │ ├── ChangelogMenu.svelte │ │ ├── ClassTable.svelte │ │ ├── Clipboard.svelte │ │ ├── ColorPalette.svelte │ │ ├── ColorPicker.svelte │ │ ├── CompanyLogos.svelte │ │ ├── Component.svelte │ │ ├── ComponentFooter.svelte │ │ ├── ComponentPageTabs.svelte │ │ ├── Footer.svelte │ │ ├── LangChange.svelte │ │ ├── LogoHorizontal.svelte │ │ ├── MediaLogos.svelte │ │ ├── Navbar.svelte │ │ ├── PrefixEdit.svelte │ │ ├── SEO.svelte │ │ ├── Search.svelte │ │ ├── Sidebar.svelte │ │ ├── SidebarMenuItem.svelte │ │ ├── StoreProduct.svelte │ │ ├── Testimonials.svelte │ │ ├── ThemeChange.svelte │ │ ├── ThemePreviews.svelte │ │ ├── TopBanner.svelte │ │ ├── Translate.svelte │ │ ├── homepage │ │ │ ├── ComponentsPreview.svelte │ │ │ ├── Install.svelte │ │ │ └── Opensource.svelte │ │ └── themegenerator │ │ │ ├── ContrastMeter.svelte │ │ │ ├── Dock.svelte │ │ │ ├── Preview.svelte │ │ │ ├── ThemeCSSModal.svelte │ │ │ └── ThemeListItem.svelte │ ├── global.css │ ├── lib │ │ ├── actions.svelte.js │ │ ├── data │ │ │ ├── articles.js │ │ │ ├── courses.js │ │ │ ├── pages.js │ │ │ └── stats.js │ │ ├── i18n.svelte.js │ │ ├── mdsvex │ │ │ ├── layout-blog.svelte │ │ │ ├── layout-components.svelte │ │ │ ├── layout-contentLanding.svelte │ │ │ ├── layout-docs.svelte │ │ │ ├── mdsvex.config.js │ │ │ ├── remark-link-headings.js │ │ │ ├── remark-render-component.js │ │ │ ├── remark-translate.js │ │ │ └── shiki.theme.json │ │ ├── mediaQuery.js │ │ ├── nameGenerator.js │ │ ├── scripts │ │ │ ├── addTranslations.js │ │ │ ├── cleanTranslations.js │ │ │ ├── compare-translate-files.js │ │ │ ├── fillTranslations.js │ │ │ ├── missingClassnamePrefix.test.js │ │ │ └── sortTranslations.js │ │ ├── stores.js │ │ ├── themeGeneratorCssParser.js │ │ ├── themeGeneratorRandomizer.js │ │ ├── themeGeneratorValidation.js │ │ └── util.js │ ├── routes │ │ ├── (redirects) │ │ │ ├── codepen │ │ │ │ └── +page.server.js │ │ │ ├── components │ │ │ │ ├── artboard │ │ │ │ │ └── +page.server.js │ │ │ │ ├── bottom-navigation │ │ │ │ │ └── +page.server.js │ │ │ │ ├── button-group │ │ │ │ │ └── +page.server.js │ │ │ │ └── input-group │ │ │ │ │ └── +page.server.js │ │ │ ├── discord │ │ │ │ └── +page.server.js │ │ │ ├── docs │ │ │ │ ├── +page.server.js │ │ │ │ ├── default-themes │ │ │ │ │ └── +page.server.js │ │ │ │ ├── migrate │ │ │ │ │ └── +page.server.js │ │ │ │ └── v5-beta │ │ │ │ │ └── +page.server.js │ │ │ ├── installation │ │ │ │ └── +page.server.js │ │ │ ├── resources │ │ │ │ └── +page.server.js │ │ │ ├── stackblitz │ │ │ │ └── +page.server.js │ │ │ └── tailwindplay │ │ │ │ └── +page.server.js │ │ ├── (routes) │ │ │ ├── (frameworks) │ │ │ │ ├── +layout.server.js │ │ │ │ ├── angular-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── astro-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── django-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── electron-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── htmx-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── laravel-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── lit-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── nextjs-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── nuxt-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── qwik-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── rails-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── react-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── solid-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── svelte-component-library │ │ │ │ │ └── +page.md │ │ │ │ ├── unocss-component-library │ │ │ │ │ └── +page.md │ │ │ │ └── vue-component-library │ │ │ │ │ └── +page.md │ │ │ ├── +layout.server.js │ │ │ ├── +layout.svelte │ │ │ ├── +page.server.js │ │ │ ├── +page.svelte │ │ │ ├── alternative │ │ │ │ └── [library] │ │ │ │ │ ├── +page.server.js │ │ │ │ │ └── +page.svelte │ │ │ ├── blog │ │ │ │ ├── (posts) │ │ │ │ │ ├── 9-best-tailwind-css-plugins-for-developers │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── bidirectional │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── daisyui-2023-wrapped │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── daisyui-2024-wrapped │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── daisyui-5-alpha │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── daisyui-5-upcoming-changes │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── daisyui-astro-tailwind-documentation-template │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── daisyui-colors-and-themes │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── daisyui-logo │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── daisyui-nextjs-online-store-template │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── daisyui-vs-tailwindui │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── discord │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── figma │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── how-to-add-new-colors-to-daisyui │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── how-to-install-sveltekit-and-daisyui │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── how-to-make-a-blog-quickly-using-astro-and-daisyUI │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── how-to-update-daisyui-4 │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── how-to-use-headless-ui-and-daisyui │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── install-daisyui-and-tailwindcss-in-nextjs │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── mary-ui │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── most-common-mistake-when-using-tailwind-css │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── my-journey-to-build-daisyui │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── nexus-dashboard-template │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── npm-init-daisyui │ │ │ │ │ │ └── +page.md │ │ │ │ │ └── what-is-daisyui │ │ │ │ │ │ └── +page.md │ │ │ │ ├── +layout.server.js │ │ │ │ ├── +layout.svelte │ │ │ │ ├── +page.server.js │ │ │ │ ├── +page.svelte │ │ │ │ ├── rss.xml │ │ │ │ │ └── +server.js │ │ │ │ └── tag │ │ │ │ │ └── [tag] │ │ │ │ │ ├── +page.server.js │ │ │ │ │ └── +page.svelte │ │ │ ├── brand │ │ │ │ └── +page.md │ │ │ ├── compare │ │ │ │ └── [item] │ │ │ │ │ ├── +page.server.js │ │ │ │ │ └── +page.svelte │ │ │ ├── components │ │ │ │ ├── +layout.svelte │ │ │ │ ├── +page.server.js │ │ │ │ ├── +page.svelte │ │ │ │ ├── accordion │ │ │ │ │ └── +page.md │ │ │ │ ├── alert │ │ │ │ │ └── +page.md │ │ │ │ ├── avatar │ │ │ │ │ └── +page.md │ │ │ │ ├── badge │ │ │ │ │ └── +page.md │ │ │ │ ├── breadcrumbs │ │ │ │ │ └── +page.md │ │ │ │ ├── button │ │ │ │ │ ├── +page.md │ │ │ │ │ ├── accessibility │ │ │ │ │ │ └── +page.md │ │ │ │ │ └── design │ │ │ │ │ │ └── +page.md │ │ │ │ ├── calendar │ │ │ │ │ └── +page.md │ │ │ │ ├── card │ │ │ │ │ └── +page.md │ │ │ │ ├── carousel │ │ │ │ │ └── +page.md │ │ │ │ ├── chat │ │ │ │ │ └── +page.md │ │ │ │ ├── checkbox │ │ │ │ │ └── +page.md │ │ │ │ ├── collapse │ │ │ │ │ └── +page.md │ │ │ │ ├── countdown │ │ │ │ │ └── +page.md │ │ │ │ ├── diff │ │ │ │ │ └── +page.md │ │ │ │ ├── divider │ │ │ │ │ └── +page.md │ │ │ │ ├── dock │ │ │ │ │ └── +page.md │ │ │ │ ├── drawer │ │ │ │ │ └── +page.md │ │ │ │ ├── dropdown │ │ │ │ │ └── +page.md │ │ │ │ ├── fieldset │ │ │ │ │ └── +page.md │ │ │ │ ├── file-input │ │ │ │ │ └── +page.md │ │ │ │ ├── filter │ │ │ │ │ └── +page.md │ │ │ │ ├── footer │ │ │ │ │ └── +page.md │ │ │ │ ├── hero │ │ │ │ │ └── +page.md │ │ │ │ ├── indicator │ │ │ │ │ └── +page.md │ │ │ │ ├── input │ │ │ │ │ └── +page.md │ │ │ │ ├── join │ │ │ │ │ └── +page.md │ │ │ │ ├── kbd │ │ │ │ │ └── +page.md │ │ │ │ ├── label │ │ │ │ │ └── +page.md │ │ │ │ ├── link │ │ │ │ │ └── +page.md │ │ │ │ ├── list │ │ │ │ │ └── +page.md │ │ │ │ ├── loading │ │ │ │ │ └── +page.md │ │ │ │ ├── mask │ │ │ │ │ └── +page.md │ │ │ │ ├── menu │ │ │ │ │ └── +page.md │ │ │ │ ├── mockup-browser │ │ │ │ │ └── +page.md │ │ │ │ ├── mockup-code │ │ │ │ │ └── +page.md │ │ │ │ ├── mockup-phone │ │ │ │ │ └── +page.md │ │ │ │ ├── mockup-window │ │ │ │ │ └── +page.md │ │ │ │ ├── modal │ │ │ │ │ └── +page.md │ │ │ │ ├── navbar │ │ │ │ │ └── +page.md │ │ │ │ ├── pagination │ │ │ │ │ └── +page.md │ │ │ │ ├── progress │ │ │ │ │ └── +page.md │ │ │ │ ├── radial-progress │ │ │ │ │ └── +page.md │ │ │ │ ├── radio │ │ │ │ │ └── +page.md │ │ │ │ ├── range │ │ │ │ │ └── +page.md │ │ │ │ ├── rating │ │ │ │ │ └── +page.md │ │ │ │ ├── select │ │ │ │ │ └── +page.md │ │ │ │ ├── skeleton │ │ │ │ │ └── +page.md │ │ │ │ ├── stack │ │ │ │ │ └── +page.md │ │ │ │ ├── stat │ │ │ │ │ └── +page.md │ │ │ │ ├── status │ │ │ │ │ └── +page.md │ │ │ │ ├── steps │ │ │ │ │ └── +page.md │ │ │ │ ├── swap │ │ │ │ │ └── +page.md │ │ │ │ ├── tab │ │ │ │ │ └── +page.md │ │ │ │ ├── table │ │ │ │ │ └── +page.md │ │ │ │ ├── textarea │ │ │ │ │ └── +page.md │ │ │ │ ├── theme-controller │ │ │ │ │ └── +page.md │ │ │ │ ├── timeline │ │ │ │ │ └── +page.md │ │ │ │ ├── toast │ │ │ │ │ └── +page.md │ │ │ │ ├── toggle │ │ │ │ │ └── +page.md │ │ │ │ ├── tooltip │ │ │ │ │ └── +page.md │ │ │ │ └── validator │ │ │ │ │ └── +page.md │ │ │ ├── docs │ │ │ │ ├── +layout.svelte │ │ │ │ ├── base │ │ │ │ │ └── +page.md │ │ │ │ ├── cdn │ │ │ │ │ ├── +page.md │ │ │ │ │ └── +page.server.js │ │ │ │ ├── changelog │ │ │ │ │ └── +page.svelte │ │ │ │ ├── colors │ │ │ │ │ └── +page.md │ │ │ │ ├── config │ │ │ │ │ └── +page.md │ │ │ │ ├── customize │ │ │ │ │ └── +page.md │ │ │ │ ├── editor │ │ │ │ │ ├── +page.md │ │ │ │ │ ├── chatgpt │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── claude │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── cline │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── cursor │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── gemini │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── grok │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── vscode │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── windsurf │ │ │ │ │ │ └── +page.md │ │ │ │ │ └── zed │ │ │ │ │ │ └── +page.md │ │ │ │ ├── faq │ │ │ │ │ └── +page.md │ │ │ │ ├── install │ │ │ │ │ ├── +layout.server.js │ │ │ │ │ ├── +layout.svelte │ │ │ │ │ ├── +page.md │ │ │ │ │ ├── 11ty │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── angular │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── astro │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── bun │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── cli │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── django │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── electron │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── elysia │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── fresh │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── htmx │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── laravel │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── lit │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── nextjs │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── nuxt │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── phoenix │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── postcss │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── qwik │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── rails │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── react │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── reactrouter │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── rsbuild │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── solid-start │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── solid │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── standalone │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── sveltekit │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── unocss │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── vike │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── vite │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── vue │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── waku │ │ │ │ │ │ └── +page.md │ │ │ │ │ ├── wordpress │ │ │ │ │ │ └── +page.md │ │ │ │ │ └── zola │ │ │ │ │ │ └── +page.md │ │ │ │ ├── intro │ │ │ │ │ └── +page.md │ │ │ │ ├── layout-and-typography │ │ │ │ │ └── +page.md │ │ │ │ ├── roadmap │ │ │ │ │ ├── +page.md │ │ │ │ │ └── +page.server.js │ │ │ │ ├── themes │ │ │ │ │ └── +page.md │ │ │ │ ├── upgrade │ │ │ │ │ └── +page.md │ │ │ │ ├── use │ │ │ │ │ └── +page.md │ │ │ │ ├── utilities │ │ │ │ │ └── +page.md │ │ │ │ └── v5 │ │ │ │ │ └── +page.md │ │ │ ├── resources │ │ │ │ ├── +layout.svelte │ │ │ │ ├── articles │ │ │ │ │ ├── +page.server.js │ │ │ │ │ └── +page.svelte │ │ │ │ ├── courses │ │ │ │ │ ├── +page.server.js │ │ │ │ │ └── +page.svelte │ │ │ │ └── videos │ │ │ │ │ ├── +page.server.js │ │ │ │ │ ├── +page.svelte │ │ │ │ │ └── [id] │ │ │ │ │ ├── +page.server.js │ │ │ │ │ └── +page.svelte │ │ │ ├── store │ │ │ │ ├── +layout.server.js │ │ │ │ ├── +layout.svelte │ │ │ │ ├── +page.svelte │ │ │ │ ├── [productId] │ │ │ │ │ ├── +page.server.js │ │ │ │ │ └── +page.svelte │ │ │ │ ├── checkout │ │ │ │ │ ├── +page.server.js │ │ │ │ │ └── +page@.svelte │ │ │ │ ├── discounts.xml │ │ │ │ │ └── +server.js │ │ │ │ └── rss.xml │ │ │ │ │ └── +server.js │ │ │ └── theme-generator │ │ │ │ ├── +page.server.js │ │ │ │ └── +page.svelte │ │ ├── +error.svelte │ │ ├── +layout.js │ │ └── sitemap.xml │ │ │ └── +server.js │ └── translation │ │ ├── ar.json │ │ ├── bn.json │ │ ├── ca.json │ │ ├── cs.json │ │ ├── de.json │ │ ├── en.json │ │ ├── es.json │ │ ├── fa.json │ │ ├── fr.json │ │ ├── hu.json │ │ ├── id.json │ │ ├── it.json │ │ ├── ja.json │ │ ├── ko.json │ │ ├── ms.json │ │ ├── pl.json │ │ ├── pt.json │ │ ├── ro.json │ │ ├── ru.json │ │ ├── uk.json │ │ ├── vi.json │ │ ├── zh_hans.json │ │ └── zh_hant.json ├── static │ ├── 404.html │ ├── ads.txt │ ├── favicon.ico │ ├── llms.txt │ ├── manifest.webmanifest │ └── robots.txt ├── svelte.config.js └── vite.config.js ├── logs ├── .gitignore └── index.html └── playground ├── .gitignore ├── astro.config.js ├── package.json ├── src ├── components │ ├── Demo.astro │ ├── Pikaday.jsx │ ├── Pikaday.vue │ └── ReactDayPicker.jsx ├── env.d.ts ├── layouts │ └── Main.astro └── pages │ ├── LTR.astro │ ├── RTL.astro │ ├── all.astro │ ├── calendar.astro │ ├── dark.astro │ ├── demo.astro │ ├── index.astro │ ├── light.astro │ └── prefix.astro └── tailwind.css /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: saadeghi 2 | open_collective: daisyui 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: 📗 FAQ 4 | url: https://daisyui.com/docs/faq/ 5 | about: Read about common problems and how to fix 6 | - name: 🔎 Search in Discussions 7 | url: https://github.com/saadeghi/daisyui/discussions?discussions_q= 8 | about: First see if there's an existing topic in Discussions. 9 | - name: 🔎 Search in Issues 10 | url: https://github.com/saadeghi/daisyui/issues?q=is%3Aissue 11 | about: If you found a bug, first see if there's an existing issue about it. 12 | - name: ❓ Ask a new question in Discussions 13 | url: https://github.com/saadeghi/daisyui/discussions/new?category=q-a 14 | about: If you have a new question and you couldn't find answers. 15 | - name: 💡 Ideas / Feature request 16 | url: https://github.com/saadeghi/daisyui/discussions/new?category=ideas-feature-requests 17 | about: If you want to suggest a new idea or if you want a new feature to be added to daisyUI, let's talk about it in Discussions forum 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/documentation-issue.yml: -------------------------------------------------------------------------------- 1 | name: 📕 Documentation Issue 2 | description: If you found an issue on daisyui.com website 3 | title: "docs: " 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | Please first search in [existing issues](https://github.com/saadeghi/daisyui/issues?q=is%3Aissue) and [discussion forum](https://github.com/saadeghi/daisyui/discussions) and make sure this issue is not addressed before. 9 | - type: input 10 | id: page 11 | attributes: 12 | label: On which page do you see this issue? 13 | placeholder: "example: https://daisyui.com/" 14 | validations: 15 | required: false 16 | - type: textarea 17 | id: description 18 | attributes: 19 | label: Describe the issue 20 | description: Describe the problem and say how and when it happens 21 | validations: 22 | required: true 23 | - type: dropdown 24 | id: browsers 25 | attributes: 26 | label: What browsers are you seeing the problem on? 27 | multiple: true 28 | options: 29 | - All browsers 30 | - Chrome 31 | - Chrome Android 32 | - Safari 33 | - Safari iOS 34 | - Firefox 35 | - Edge 36 | - Other 37 | -------------------------------------------------------------------------------- /.github/workflows/deploy-docs.yml: -------------------------------------------------------------------------------- 1 | name: "📘 Deploy docs" 2 | 3 | on: 4 | workflow_dispatch: 5 | workflow_call: 6 | push: 7 | branches: 8 | - master 9 | paths: 10 | - "packages/docs/**" 11 | - "CHANGELOG.md" 12 | 13 | jobs: 14 | deploy-docs: 15 | timeout-minutes: 10 16 | runs-on: ubuntu-latest 17 | env: 18 | LEMONSQUEEZY_API_KEY: ${{ secrets.LEMONSQUEEZY_API_KEY }} 19 | if: | 20 | github.event_name == 'workflow_dispatch' || 21 | github.event_name == 'workflow_call' || 22 | (github.event_name == 'push' && github.ref == 'refs/heads/master') || 23 | (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success') 24 | steps: 25 | - name: Checkout 26 | uses: actions/checkout@v4 27 | with: 28 | fetch-depth: 1 29 | clean: false 30 | ref: master 31 | 32 | - name: Setup Bun 33 | uses: oven-sh/setup-bun@v2 34 | 35 | - name: Install dependencies 36 | run: bun i 37 | 38 | - name: Add robots.txt if not main repo 39 | if: github.repository != 'saadeghi/daisyui' 40 | run: | 41 | echo 'User-agent: * 42 | Disallow: /' > packages/docs/static/robots.txt 43 | 44 | - name: Build docs 45 | run: bun run --bun build:docs 46 | 47 | - name: Deploy docs to github pages 48 | uses: peaceiris/actions-gh-pages@v4 49 | with: 50 | github_token: ${{ secrets.GITHUB_TOKEN }} 51 | publish_dir: ./packages/docs/build 52 | cname: ${{ secrets.CNAME }} 53 | -------------------------------------------------------------------------------- /.github/workflows/issue-reply.hbs: -------------------------------------------------------------------------------- 1 |

2 | Thank you @{{inputs.user}} 3 | for reporting issues. It helps daisyUI a lot 💚 4 |
5 | I'll be working on issues one by one. I will help with this one as soon as a I 6 | find a solution. 7 |
8 | In the meantime providing more details and reproduction links would be 9 | helpful. 10 |

11 | -------------------------------------------------------------------------------- /.github/workflows/issue-reply.yml: -------------------------------------------------------------------------------- 1 | name: "Reply to fresh issue" 2 | 3 | on: 4 | issues: 5 | types: [opened] 6 | 7 | jobs: 8 | reply: 9 | timeout-minutes: 2 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | 14 | - name: Comment on fresh issue 15 | uses: badsyntax/github-action-issue-comment@master 16 | if: github.event_name == 'issues' 17 | with: 18 | id: "auto-reply" 19 | action: "create-clean" 20 | template: ".github/workflows/issue-reply.hbs" 21 | issue-number: ${{ github.event.issue.number }} 22 | token: ${{ secrets.GITHUB_TOKEN }} 23 | template-inputs: | 24 | { 25 | "user": "${{github.event.issue.user.login}}" 26 | } 27 | -------------------------------------------------------------------------------- /.github/workflows/run-tests.yml: -------------------------------------------------------------------------------- 1 | name: "🧪 Tests" 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | filter: 7 | type: string 8 | description: Filter tests 9 | default: "" 10 | workflow_call: 11 | inputs: 12 | filter: 13 | type: string 14 | # push: 15 | # branches: 16 | # - master 17 | # paths: 18 | # - "packages/daisyui/functions/**" 19 | # - "packages/daisyui/src/**" 20 | # - "packages/docs/src/**" 21 | jobs: 22 | tests: 23 | timeout-minutes: 10 24 | env: 25 | filter: ${{ inputs.filter }} 26 | name: "Tests" 27 | runs-on: ubuntu-latest 28 | steps: 29 | - name: Checkout 30 | uses: actions/checkout@v4 31 | with: 32 | fetch-depth: 1 33 | clean: false 34 | ref: master 35 | 36 | - name: Setup bun 37 | uses: oven-sh/setup-bun@v2 38 | 39 | - name: Install dependencies 40 | run: bun i 41 | 42 | - name: build package 43 | run: bun run --bun build 44 | 45 | - name: Run tests 46 | run: | 47 | if [ -z "${{ env.filter }}" ]; then 48 | bun test 49 | else 50 | bun test -t ${{ env.filter }} 51 | fi 52 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | yarn.lock 3 | package-lock.json 4 | bun.lockb 5 | bun.lock 6 | dist 7 | 8 | .DS_Store 9 | *.tgz 10 | .logs 11 | .env.local 12 | .svelte-kit 13 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Package Managers 2 | package-lock.json 3 | pnpm-lock.yaml 4 | yarn.lock 5 | bun.lockb 6 | bun.lock 7 | 8 | # files 9 | packages/daisyui/functions/variables.css 10 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": false, 3 | "tabWidth": 2, 4 | "printWidth": 100, 5 | "semi": false, 6 | "trailingComma": "all", 7 | "plugins": [ 8 | "prettier-plugin-svelte", 9 | "prettier-plugin-tailwindcss" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Pouya Saadeghi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /packages/bundle/.gitignore: -------------------------------------------------------------------------------- 1 | # *.js 2 | # *.mjs 3 | -------------------------------------------------------------------------------- /packages/daisyui/.gitignore: -------------------------------------------------------------------------------- 1 | /package 2 | /base 3 | /colors 4 | /components 5 | /utilities 6 | /theme 7 | 8 | /imports.js 9 | 10 | /daisyui.css 11 | /chunks.css 12 | /themes.css 13 | -------------------------------------------------------------------------------- /packages/daisyui/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Pouya Saadeghi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /packages/daisyui/README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | [![][logo-url]][docs-url] 4 | 5 | **The most popular, free and open-source component library for Tailwind CSS** 6 | 7 | [![][version]](https://www.npmjs.com/package/daisyui) 8 | [![][commit]](https://github.com/saadeghi/daisyui) 9 | [![][license]](https://github.com/saadeghi/daisyui/blob/master/LICENSE) 10 | [![][stars]](https://github.com/saadeghi/daisyui) 11 | [![][installs]](https://www.npmjs.com/package/daisyui) 12 | [![][jsdelivr]](https://cdn.jsdelivr.net/npm/daisyui@5) 13 | [![][discord]](https://daisyui.com/discord/) 14 | [![][opencollectivebadge]](https://opencollective.com/daisyui) 15 | 16 |
17 | 18 | # daisyUI 5 19 | 20 | ### 🌼 [Official website →](https://daisyui.com/) 21 | 22 | ### 🌼 [See all components →](https://daisyui.com/components/) 23 | 24 | ### 🌼 [How to use →](https://daisyui.com/docs/install/) 25 | 26 | --- 27 | 28 | [version]: https://badgen.net/github/tag/saadeghi/daisyui?label=Version&color=1AD1A5 29 | [commit]: https://badgen.net/github/last-commit/saadeghi/daisyui?label=Last%20commit&color=1AD1A5 30 | [license]: https://badgen.net/github/license/saadeghi/daisyui?label=License&color=1AD1A5 31 | [stars]: https://badgen.net/github/stars/saadeghi/daisyui?label=GitHub%20stars&color=1AD1A5 32 | [installs]: https://badgen.net/npm/dt/daisyui?label=NPM%20installs&color=1AD1A5 33 | [jsdelivr]: https://badgen.net/jsdelivr/hits/npm/daisyui?color=1AD1A5 34 | [discord]: https://badgen.net/discord/members/S6TZxycVHs?label=Discord&color=1AD1A5 35 | [opencollectivebadge]: https://badgen.net/opencollective/backers/daisyui?label=Open%20Collective&color=1AD1A5 36 | [docs-url]: https://daisyui.com/ 37 | [logo-url]: https://img.daisyui.com/images/daisyui/daisyui-logo-192.png 38 | -------------------------------------------------------------------------------- /packages/daisyui/functions/breakpoints.js: -------------------------------------------------------------------------------- 1 | export default { 2 | sm: "640px", 3 | md: "768px", 4 | lg: "1024px", 5 | xl: "1280px", 6 | "2xl": "1536px", 7 | } 8 | -------------------------------------------------------------------------------- /packages/daisyui/functions/cleanCss.js: -------------------------------------------------------------------------------- 1 | export const cleanCss = (cssContent) => { 2 | // Precompile regular expressions for better performance 3 | const emptyFallbackRegex = /var\((--[^,)]+),\s*\)/g 4 | const spacingWidthFallbackRegex = 5 | /var\((--(spacing|width)[\w-]*),\s*((?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*)\)/g 6 | const spacingVarRegex = /var\(--spacing\)/g 7 | 8 | // Remove empty fallbacks 9 | cssContent = cssContent.replace(emptyFallbackRegex, "var($1)") 10 | 11 | // Remove spacing, width css variable if there's a fallback value 12 | cssContent = cssContent.replace( 13 | spacingWidthFallbackRegex, 14 | (match, variable, prefix, fallback) => { 15 | // If there's no actual fallback value, return the original match 16 | return fallback.trim() ? fallback.trim() : match 17 | }, 18 | ) 19 | 20 | // Replace all `var(--spacing)` with `0.25rem` 21 | cssContent = cssContent.replace(spacingVarRegex, "0.25rem") 22 | 23 | return cssContent 24 | } 25 | -------------------------------------------------------------------------------- /packages/daisyui/functions/compileAndExtractStyles.js: -------------------------------------------------------------------------------- 1 | import path from "node:path" 2 | import { promises as fs } from "node:fs" 3 | import { compile } from "tailwindcss" 4 | 5 | export async function loadThemes() { 6 | const [defaultTheme, theme] = await Promise.all([ 7 | fs.readFile( 8 | path.join(import.meta.dirname, "../../../node_modules/tailwindcss/theme.css"), 9 | "utf-8", 10 | ), 11 | fs.readFile(path.join(import.meta.dirname, "./variables.css"), "utf-8"), 12 | ]) 13 | return { defaultTheme, theme } 14 | } 15 | 16 | export async function compileAndExtractStyles(styleContent, defaultTheme, theme) { 17 | const compiledContent = ( 18 | await compile(` 19 | @layer theme{${defaultTheme}${theme}} 20 | @layer wrapperStart{${styleContent}} 21 | @layer wrapperEnd 22 | `) 23 | ).build([]) 24 | 25 | const startIndex = compiledContent.indexOf("@layer wrapperStart") 26 | const endIndex = compiledContent.indexOf("@layer wrapperEnd") 27 | 28 | if (startIndex === -1 || endIndex === -1) { 29 | throw new Error("Failed to find wrapper layers in compiled content") 30 | } 31 | 32 | const openingBraceIndex = compiledContent.indexOf("{", startIndex) 33 | const closingBraceIndex = compiledContent.lastIndexOf("}", endIndex) 34 | 35 | if ( 36 | openingBraceIndex === -1 || 37 | closingBraceIndex === -1 || 38 | openingBraceIndex >= closingBraceIndex 39 | ) { 40 | throw new Error("Invalid wrapper structure in compiled content") 41 | } 42 | 43 | return compiledContent.substring(openingBraceIndex + 1, closingBraceIndex).trim() 44 | } 45 | -------------------------------------------------------------------------------- /packages/daisyui/functions/copyFile.js: -------------------------------------------------------------------------------- 1 | import fs from "fs/promises" 2 | import path from "path" 3 | 4 | export const copyFile = async (from, to, newName = null) => { 5 | try { 6 | const destDir = path.dirname(to) 7 | await fs.mkdir(destDir, { recursive: true }) 8 | 9 | let destPath = to 10 | if (newName) { 11 | destPath = path.join(destDir, newName) 12 | } 13 | 14 | await fs.copyFile(from, destPath) 15 | } catch (error) { 16 | throw new Error(`Error copying file from ${from} to ${to}: ${error.message}`) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/daisyui/functions/copyFile.test.js: -------------------------------------------------------------------------------- 1 | import { expect, test, mock } from "bun:test" 2 | import path from "node:path" 3 | import { copyFile } from "./copyFile" 4 | import fs from "fs/promises" 5 | 6 | // Mock the fs functions 7 | const mockMkdir = mock(async () => {}) 8 | const mockCopyFile = mock(async () => {}) 9 | 10 | fs.mkdir = mockMkdir 11 | fs.copyFile = mockCopyFile 12 | 13 | test("copyFile copies file to destination", async () => { 14 | const from = "/path/to/source/file.txt" 15 | const to = "/path/to/destination/file.txt" 16 | 17 | await copyFile(from, to) 18 | 19 | expect(mockMkdir).toHaveBeenCalledWith(path.dirname(to), { recursive: true }) 20 | expect(mockCopyFile).toHaveBeenCalledWith(from, to) 21 | }) 22 | 23 | test("copyFile copies file to destination with new name", async () => { 24 | const from = "/path/to/source/file.txt" 25 | const to = "/path/to/destination/file.txt" 26 | const newName = "newFileName.txt" 27 | 28 | await copyFile(from, to, newName) 29 | 30 | const expectedDestPath = path.join(path.dirname(to), newName) 31 | expect(mockMkdir).toHaveBeenCalledWith(path.dirname(to), { recursive: true }) 32 | expect(mockCopyFile).toHaveBeenCalledWith(from, expectedDestPath) 33 | }) 34 | 35 | test("copyFile throws error if copying fails", async () => { 36 | const from = "/path/to/source/file.txt" 37 | const to = "/path/to/destination/file.txt" 38 | 39 | const mockError = new Error("Mock copy error") 40 | mockCopyFile.mockRejectedValueOnce(mockError) 41 | 42 | await expect(copyFile(from, to)).rejects.toThrow(`Error copying file from ${from} to ${to}:`) 43 | }) 44 | -------------------------------------------------------------------------------- /packages/daisyui/functions/createDirectoryBasedOnFileNames.js: -------------------------------------------------------------------------------- 1 | import { promises as fs } from "node:fs" 2 | import path from "node:path" 3 | 4 | export const createDirectoryBasedOnFileNames = async (fileName, fileExtension, distDir) => { 5 | const componentName = path.basename(fileName, fileExtension) 6 | const componentDir = path.join(distDir, componentName) 7 | await fs.mkdir(componentDir, { recursive: true }) 8 | return componentDir 9 | } 10 | -------------------------------------------------------------------------------- /packages/daisyui/functions/createPluginFiles.js: -------------------------------------------------------------------------------- 1 | import { promises as fs } from "fs" 2 | import path from "path" 3 | 4 | export const createPluginFiles = async (type, componentDir, jsContent, fileName) => { 5 | const types = { 6 | base: "addBase", 7 | component: "addComponents", 8 | utility: "addUtilities", 9 | } 10 | 11 | // create object.js 12 | const objectJsPath = path.join(componentDir, "object.js") 13 | await fs.writeFile(objectJsPath, `export default ${jsContent};`) 14 | 15 | // create index.js 16 | const indexJsPath = path.join(componentDir, "index.js") 17 | const indexJsContent = `import ${fileName} from './object.js'; 18 | import { addPrefix } from '../../functions/addPrefix.js'; 19 | 20 | export default ({ ${types[type]}, prefix = '' }) => { 21 | const prefixed${fileName} = addPrefix(${fileName}, prefix); 22 | ${types[type]}({ ...prefixed${fileName} }); 23 | }; 24 | ` 25 | await fs.writeFile(indexJsPath, indexJsContent) 26 | } 27 | -------------------------------------------------------------------------------- /packages/daisyui/functions/generateChunks.js: -------------------------------------------------------------------------------- 1 | import fs from "fs/promises" 2 | import { getFileNames } from "./getFileNames.js" 3 | import themeOrder from "./themeOrder.js" 4 | 5 | export const generateChunks = async (filename) => { 6 | try { 7 | let content = "" 8 | // let content = '@layer base, themes, components, utilities;\n'; 9 | // content += `@import url(https://cdn.jsdelivr.net/npm/tailwindcss@next/preflight.min.css) layer(base);\n`; 10 | 11 | const themes = await getFileNames("./theme", ".css", false) 12 | const allowedThemes = ["light", "dark"] 13 | themeOrder.forEach((theme) => { 14 | if (themes.includes(theme) && allowedThemes.includes(theme)) { 15 | content += `@import url(theme/${theme}.css);\n` 16 | } 17 | }) 18 | 19 | const baseFiles = await getFileNames("./base", ".css", false) 20 | baseFiles.forEach((filePath) => { 21 | content += `@import url(base/${filePath}.css);\n` 22 | }) 23 | 24 | const componentFiles = await getFileNames("./components", ".css", false) 25 | componentFiles.forEach((filePath) => { 26 | content += `@import url(components/${filePath}.css);\n` 27 | }) 28 | 29 | const utilityFiles = await getFileNames("./utilities", ".css", false) 30 | utilityFiles.forEach((filePath) => { 31 | content += `@import url(utilities/${filePath}.css);\n` 32 | }) 33 | 34 | // Load color files with specific ordering 35 | const colorFiles = await getFileNames("./colors", ".css", false) 36 | colorFiles.forEach((filePath) => { 37 | content += `@import url(colors/${filePath}.css);\n` 38 | }) 39 | 40 | // Write to file 41 | await fs.writeFile(`./${filename}`, content, "utf8") 42 | } catch (error) { 43 | throw new Error(`Failed to generate full CSS: ${error.message}`) 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /packages/daisyui/functions/generatePlugins.js: -------------------------------------------------------------------------------- 1 | import fs from "fs/promises" 2 | import { getFileNames } from "./getFileNames.js" 3 | import { cssToJs } from "./cssToJs.js" 4 | import { createDirectoryBasedOnFileNames } from "./createDirectoryBasedOnFileNames.js" 5 | import { createPluginFiles } from "./createPluginFiles.js" 6 | 7 | export const generatePlugins = async ({ type, srcDir, distDir, exclude = [] }) => { 8 | await fs.mkdir(distDir, { recursive: true }) 9 | const cssFiles = await getFileNames(srcDir, ".css") 10 | const filteredCssFiles = cssFiles.filter((file) => !exclude.includes(file)) 11 | 12 | await Promise.all( 13 | filteredCssFiles.map(async (cssFile) => { 14 | const [jsContent, componentDir] = await Promise.all([ 15 | cssToJs(`${srcDir}/${cssFile}.css`), 16 | createDirectoryBasedOnFileNames(cssFile, ".css", distDir), 17 | ]) 18 | 19 | await createPluginFiles(type, componentDir, jsContent, cssFile) 20 | }), 21 | ) 22 | } 23 | -------------------------------------------------------------------------------- /packages/daisyui/functions/generateThemeFiles.js: -------------------------------------------------------------------------------- 1 | import fs from "fs/promises" 2 | import path from "path" 3 | import { getFileNames } from "./getFileNames.js" 4 | 5 | export const wrapContent = (themeName, content) => { 6 | if (themeName === "light") { 7 | return `:root,:root:has(input.theme-controller[value=${themeName}]:checked),[data-theme="${themeName}"] { 8 | ${content}} 9 | ` 10 | } 11 | 12 | return `:root:has(input.theme-controller[value=${themeName}]:checked),[data-theme="${themeName}"] { 13 | ${content}} 14 | ` 15 | } 16 | 17 | export const generateThemeFiles = async ({ srcDir, distDir }) => { 18 | const themeNames = await getFileNames(srcDir, ".css") 19 | 20 | const tasks = themeNames.map(async (themeName) => { 21 | const srcPath = path.join(srcDir, `${themeName}.css`) 22 | const distPath = path.join(distDir, `${themeName}.css`) 23 | 24 | const content = await fs.readFile(srcPath, "utf-8") 25 | const wrappedContent = wrapContent(themeName, content) 26 | 27 | await fs.mkdir(path.dirname(distPath), { recursive: true }) 28 | await fs.writeFile(distPath, wrappedContent) 29 | }) 30 | 31 | await Promise.all(tasks) 32 | } 33 | -------------------------------------------------------------------------------- /packages/daisyui/functions/generateThemes.js: -------------------------------------------------------------------------------- 1 | import fs from "fs/promises" 2 | import path from "path" 3 | import { getFileNames } from "./getFileNames.js" 4 | import themeOrder from "./themeOrder.js" 5 | 6 | const readFileContent = async (filePath) => { 7 | return await fs.readFile(filePath, "utf8") 8 | } 9 | 10 | const readAllThemeCSS = async () => { 11 | // Get all file names in the ./theme folder with the .css extension 12 | const themeDirs = await getFileNames("./theme", ".css", false) 13 | 14 | // Read the content of each theme CSS file and store in an object 15 | const themeContents = {} 16 | await Promise.all( 17 | themeDirs.map(async (themeDir) => { 18 | const content = await readFileContent(path.join("./theme", `${themeDir}.css`)) 19 | themeContents[themeDir] = content 20 | }), 21 | ) 22 | 23 | // Sort themes according to the specified order 24 | const sortedThemeContents = themeOrder 25 | .filter((theme) => themeDirs.includes(theme)) 26 | .map((theme) => themeContents[theme]) 27 | 28 | return sortedThemeContents.join("\n") 29 | } 30 | 31 | export const generateThemes = async (outputFile) => { 32 | try { 33 | // Read all theme CSS files 34 | const themeContent = await readAllThemeCSS() 35 | 36 | // Write the combined theme content to the output file 37 | await fs.writeFile(outputFile, themeContent) 38 | } catch (error) { 39 | throw new Error("Error generating themes:", error) 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /packages/daisyui/functions/getDirectoriesWithTargetFile.js: -------------------------------------------------------------------------------- 1 | import fs from "fs/promises" 2 | import path from "path" 3 | 4 | export const getDirectoriesWithTargetFile = async (directory, targetFile) => { 5 | const files = await fs.readdir(directory) 6 | const filteredDirs = [] 7 | 8 | for (const file of files) { 9 | const filePath = path.join(directory, file) 10 | const stats = await fs.stat(filePath) 11 | 12 | if (stats.isDirectory()) { 13 | try { 14 | await fs.access(path.join(filePath, targetFile)) 15 | filteredDirs.push(file) 16 | } finally { 17 | // File doesn't exist, skip this directory 18 | } 19 | } 20 | } 21 | 22 | return filteredDirs 23 | } 24 | -------------------------------------------------------------------------------- /packages/daisyui/functions/getFileNames.js: -------------------------------------------------------------------------------- 1 | import { promises as fs } from "fs" 2 | import path from "path" 3 | 4 | export const getFileNames = async (dir, extension, recursive = true) => { 5 | let fileNames = [] 6 | const files = await fs.readdir(dir, { withFileTypes: true }) 7 | 8 | for (const file of files) { 9 | const filePath = path.join(dir, file.name) 10 | 11 | if (file.isDirectory() && recursive) { 12 | const subDirFiles = await getFileNames(filePath, extension, recursive) 13 | fileNames = fileNames.concat(subDirFiles) 14 | } else if (file.isFile() && file.name.endsWith(extension)) { 15 | // Extract the file name without extension 16 | const fileName = path.basename(file.name, extension) 17 | fileNames.push(fileName) 18 | } 19 | } 20 | 21 | return fileNames 22 | } 23 | -------------------------------------------------------------------------------- /packages/daisyui/functions/minify.js: -------------------------------------------------------------------------------- 1 | import fs from "fs" 2 | import path from "path" 3 | import { transform } from "lightningcss" 4 | 5 | export const minify = async (filePath) => { 6 | if (!fs.existsSync(filePath)) { 7 | return 8 | } 9 | const css = await fs.promises.readFile(filePath, "utf8") 10 | try { 11 | const { code } = transform({ 12 | filename: filePath, 13 | code: Buffer.from(css), 14 | minify: true, 15 | }) 16 | const packageJson = JSON.parse(fs.readFileSync("package.json", "utf8")) 17 | const modifiedCode = 18 | `${atob("Lyoh")} ${decodeURIComponent("%F0%9F%8C%BC")} ${atob("ZGFpc3lVSQ==")} ${packageJson.version} ${atob("LSBNSVQgTGljZW5zZSAqLw==")} ` + 19 | code 20 | await fs.promises.writeFile(filePath, modifiedCode) 21 | } catch (error) { 22 | throw new Error(`${filePath}:${error?.loc?.line}: ${error.message}`) 23 | } 24 | } 25 | 26 | export const minifyCssInDirectory = async (directories) => { 27 | await Promise.all( 28 | directories.map(async (dir) => { 29 | const directory = path.join(dir) 30 | const files = fs 31 | .readdirSync(directory) 32 | .filter((file) => path.extname(file).toLowerCase() === ".css") 33 | .map((file) => path.join(directory, file)) 34 | 35 | await Promise.all(files.map(minify)) 36 | }), 37 | ) 38 | } 39 | -------------------------------------------------------------------------------- /packages/daisyui/functions/plugin.js: -------------------------------------------------------------------------------- 1 | export const plugin = { 2 | withOptions: (pluginFunction, configFunction = () => ({})) => { 3 | const optionsFunction = (options) => { 4 | const handler = pluginFunction(options) 5 | const config = configFunction(options) 6 | return { handler, config } 7 | } 8 | optionsFunction.__isOptionsFunction = true 9 | return optionsFunction 10 | }, 11 | } 12 | -------------------------------------------------------------------------------- /packages/daisyui/functions/removeFiles.js: -------------------------------------------------------------------------------- 1 | import { promises as fs } from "fs" 2 | import { resolve } from "path" 3 | export const removeFiles = async (items = []) => { 4 | const removePromises = items.map(async (item) => { 5 | const itemPath = resolve(item) 6 | 7 | try { 8 | const stats = await fs.lstat(itemPath) 9 | if (stats.isDirectory()) { 10 | await fs.rmdir(itemPath, { recursive: true }) 11 | } else { 12 | await fs.unlink(itemPath) 13 | } 14 | } catch (error) { 15 | if (error.code !== "ENOENT") { 16 | throw error 17 | } 18 | } 19 | }) 20 | 21 | await Promise.all(removePromises) 22 | } 23 | -------------------------------------------------------------------------------- /packages/daisyui/functions/replaceApplyTrueWithEmptyObject.js: -------------------------------------------------------------------------------- 1 | export const replaceApplyTrueWithEmptyObject = (obj) => { 2 | const stack = [obj] 3 | 4 | while (stack.length > 0) { 5 | const currentObj = stack.pop() 6 | 7 | for (const [key, value] of Object.entries(currentObj)) { 8 | if (typeof value === "object" && value !== null) { 9 | stack.push(value) 10 | } 11 | 12 | if (key.startsWith("@apply") && value === true) { 13 | currentObj[key] = {} 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/daisyui/functions/themeOrder.d.ts: -------------------------------------------------------------------------------- 1 | declare const themeOrder: readonly string[] 2 | export default themeOrder 3 | -------------------------------------------------------------------------------- /packages/daisyui/functions/themeOrder.js: -------------------------------------------------------------------------------- 1 | export default [ 2 | "light", 3 | "dark", 4 | "cupcake", 5 | "bumblebee", 6 | "emerald", 7 | "corporate", 8 | "synthwave", 9 | "retro", 10 | "cyberpunk", 11 | "valentine", 12 | "halloween", 13 | "garden", 14 | "forest", 15 | "aqua", 16 | "lofi", 17 | "pastel", 18 | "fantasy", 19 | "wireframe", 20 | "black", 21 | "luxury", 22 | "dracula", 23 | "cmyk", 24 | "autumn", 25 | "business", 26 | "acid", 27 | "lemonade", 28 | "night", 29 | "coffee", 30 | "winter", 31 | "dim", 32 | "nord", 33 | "sunset", 34 | "caramellatte", 35 | "abyss", 36 | "silk", 37 | ] 38 | -------------------------------------------------------------------------------- /packages/daisyui/functions/themePlugin.js: -------------------------------------------------------------------------------- 1 | import { plugin } from "../functions/plugin.js" 2 | import allThemes from "./object.js" 3 | 4 | export default plugin.withOptions((options = {}) => { 5 | return ({ addBase }) => { 6 | const { 7 | name = "custom-theme", 8 | default: isDefault = false, 9 | prefersdark = false, 10 | "color-scheme": colorScheme = "normal", 11 | root = ":root", 12 | ...customThemeTokens 13 | } = options 14 | 15 | let selector = `${root}:has(input.theme-controller[value=${name}]:checked),[data-theme="${name}"]` 16 | if (isDefault) { 17 | selector = `:where(${root}),${selector}` 18 | } 19 | 20 | // Merge custom theme with built-in theme if it exists 21 | let themeTokens = { ...customThemeTokens } 22 | if (allThemes[name]) { 23 | const builtinTheme = allThemes[name] 24 | themeTokens = { 25 | ...builtinTheme, 26 | ...customThemeTokens, 27 | "color-scheme": colorScheme || builtinTheme.colorScheme, 28 | } 29 | } 30 | 31 | const baseStyles = { 32 | [selector]: { 33 | "color-scheme": themeTokens["color-scheme"] || colorScheme, 34 | ...themeTokens, 35 | }, 36 | } 37 | 38 | if (prefersdark) { 39 | addBase({ 40 | "@media (prefers-color-scheme: dark)": { 41 | [root]: baseStyles[selector], // Use the configurable root option here 42 | }, 43 | }) 44 | } 45 | 46 | addBase(baseStyles) 47 | } 48 | }) 49 | -------------------------------------------------------------------------------- /packages/daisyui/functions/updateVersion.js: -------------------------------------------------------------------------------- 1 | import { readFileSync, writeFileSync } from "fs" 2 | 3 | const readPackageVersion = (packageJsonPath) => { 4 | const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8")) 5 | return packageJson.version 6 | } 7 | 8 | const updateIndexJsVersion = (indexJsPath, version) => { 9 | let indexJsContent = readFileSync(indexJsPath, "utf-8") 10 | indexJsContent = indexJsContent.replace(/const version = ".*"/, `const version = "${version}"`) 11 | writeFileSync(indexJsPath, indexJsContent, "utf-8") 12 | } 13 | 14 | export const updateVersion = () => { 15 | const packageJsonPath = "packages/daisyui/package.json" 16 | const indexJsPath = "packages/daisyui/index.js" 17 | 18 | try { 19 | const version = readPackageVersion(packageJsonPath) 20 | updateIndexJsVersion(indexJsPath, version) 21 | return Promise.resolve() 22 | } catch (error) { 23 | return Promise.reject(error) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /packages/daisyui/functions/variables.css: -------------------------------------------------------------------------------- 1 | @theme { 2 | --color-base-100: ; 3 | --color-base-200: ; 4 | --color-base-300: ; 5 | --color-base-content: ; 6 | --color-primary: ; 7 | --color-primary-content: ; 8 | --color-secondary: ; 9 | --color-secondary-content: ; 10 | --color-accent: ; 11 | --color-accent-content: ; 12 | --color-neutral: ; 13 | --color-neutral-content: ; 14 | --color-info: ; 15 | --color-info-content: ; 16 | --color-success: ; 17 | --color-success-content: ; 18 | --color-warning: ; 19 | --color-warning-content: ; 20 | --color-error: ; 21 | --color-error-content: ; 22 | --radius-selector: ; 23 | --radius-field: ; 24 | --radius-box: ; 25 | --size-selector: ; 26 | --size-field: ; 27 | --border: ; 28 | --depth: ; 29 | --noise: ; 30 | } 31 | -------------------------------------------------------------------------------- /packages/daisyui/functions/variables.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'daisyui/functions/variables' { 2 | const variables: { 3 | colors: { 4 | "base-100": string; 5 | "base-200": string; 6 | "base-300": string; 7 | "base-content": string; 8 | primary: string; 9 | "primary-content": string; 10 | secondary: string; 11 | "secondary-content": string; 12 | accent: string; 13 | "accent-content": string; 14 | neutral: string; 15 | "neutral-content": string; 16 | info: string; 17 | "info-content": string; 18 | success: string; 19 | "success-content": string; 20 | warning: string; 21 | "warning-content": string; 22 | error: string; 23 | "error-content": string; 24 | }; 25 | borderRadius: { 26 | selector: string; 27 | field: string; 28 | box: string; 29 | }; 30 | }; 31 | export default variables; 32 | } 33 | -------------------------------------------------------------------------------- /packages/daisyui/functions/variables.js: -------------------------------------------------------------------------------- 1 | export default { 2 | colors: { 3 | "base-100": "var(--color-base-100)", 4 | "base-200": "var(--color-base-200)", 5 | "base-300": "var(--color-base-300)", 6 | "base-content": "var(--color-base-content)", 7 | primary: "var(--color-primary)", 8 | "primary-content": "var(--color-primary-content)", 9 | secondary: "var(--color-secondary)", 10 | "secondary-content": "var(--color-secondary-content)", 11 | accent: "var(--color-accent)", 12 | "accent-content": "var(--color-accent-content)", 13 | neutral: "var(--color-neutral)", 14 | "neutral-content": "var(--color-neutral-content)", 15 | info: "var(--color-info)", 16 | "info-content": "var(--color-info-content)", 17 | success: "var(--color-success)", 18 | "success-content": "var(--color-success-content)", 19 | warning: "var(--color-warning)", 20 | "warning-content": "var(--color-warning-content)", 21 | error: "var(--color-error)", 22 | "error-content": "var(--color-error-content)", 23 | }, 24 | borderRadius: { 25 | selector: "var(--radius-selector)", 26 | field: "var(--radius-field)", 27 | box: "var(--radius-box)", 28 | }, 29 | } 30 | -------------------------------------------------------------------------------- /packages/daisyui/index.js: -------------------------------------------------------------------------------- 1 | const version = "" 2 | import { pluginOptionsHandler } from "./functions/pluginOptionsHandler.js" 3 | import { plugin } from "./functions/plugin.js" 4 | import variables from "./functions/variables.js" 5 | import themesObject from "./theme/object.js" 6 | import { base, components, utilities } from "./imports.js" 7 | 8 | export default plugin.withOptions( 9 | (options) => { 10 | return ({ addBase, addComponents, addUtilities }) => { 11 | const { 12 | include, 13 | exclude, 14 | prefix = "", 15 | } = pluginOptionsHandler(options, addBase, themesObject, version) 16 | 17 | const shouldIncludeItem = (name) => { 18 | if (include && exclude) { 19 | return include.includes(name) && !exclude.includes(name) 20 | } 21 | if (include) { 22 | return include.includes(name) 23 | } 24 | if (exclude) { 25 | return !exclude.includes(name) 26 | } 27 | return true 28 | } 29 | 30 | Object.entries(base).forEach(([name, item]) => { 31 | if (!shouldIncludeItem(name)) return 32 | item({ addBase, prefix }) 33 | }) 34 | 35 | Object.entries(components).forEach(([name, item]) => { 36 | if (!shouldIncludeItem(name)) return 37 | item({ addComponents, prefix }) 38 | }) 39 | 40 | Object.entries(utilities).forEach(([name, item]) => { 41 | if (!shouldIncludeItem(name)) return 42 | item({ addUtilities, prefix }) 43 | }) 44 | } 45 | }, 46 | () => ({ 47 | theme: { 48 | extend: variables, 49 | }, 50 | }), 51 | ) 52 | -------------------------------------------------------------------------------- /packages/daisyui/src/base/properties.css: -------------------------------------------------------------------------------- 1 | @property --radialprogress { 2 | syntax: ""; 3 | inherits: true; 4 | initial-value: 0%; 5 | } 6 | -------------------------------------------------------------------------------- /packages/daisyui/src/base/rootcolor.css: -------------------------------------------------------------------------------- 1 | :root, 2 | [data-theme] { 3 | background-color: var(--root-bg, var(--color-base-100)); 4 | color: var(--color-base-content); 5 | } 6 | -------------------------------------------------------------------------------- /packages/daisyui/src/base/rootscrollgutter.css: -------------------------------------------------------------------------------- 1 | :where( 2 | :root:has( 3 | .modal-open, 4 | .modal[open], 5 | .modal:target, 6 | .modal-toggle:checked, 7 | .drawer:not(.drawer-open) > .drawer-toggle:checked 8 | ) 9 | ) { 10 | scrollbar-gutter: stable; 11 | background-image: linear-gradient(var(--color-base-100), var(--color-base-100)); 12 | --root-bg: color-mix(in srgb, var(--color-base-100), oklch(0% 0 0) 40%); 13 | } 14 | :where(.modal[open], .modal-open, .modal-toggle:checked + .modal):not(.modal-start, .modal-end) { 15 | scrollbar-gutter: stable; 16 | } 17 | -------------------------------------------------------------------------------- /packages/daisyui/src/base/rootscrolllock.css: -------------------------------------------------------------------------------- 1 | :root:has( 2 | .modal-open, 3 | .modal[open], 4 | .modal:target, 5 | .modal-toggle:checked, 6 | .drawer:not([class*="drawer-open"]) > .drawer-toggle:checked 7 | ) { 8 | @apply overflow-hidden; 9 | } 10 | -------------------------------------------------------------------------------- /packages/daisyui/src/base/scrollbar.css: -------------------------------------------------------------------------------- 1 | :root { 2 | scrollbar-color: color-mix(in oklch, currentColor 35%, #0000) #0000; 3 | } 4 | -------------------------------------------------------------------------------- /packages/daisyui/src/base/svg.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --fx-noise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E"); 3 | } 4 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/avatar.css: -------------------------------------------------------------------------------- 1 | .avatar-group { 2 | @apply flex overflow-hidden; 3 | 4 | :where(.avatar) { 5 | @apply overflow-hidden rounded-full; 6 | border: 4px solid var(--color-base-100); 7 | } 8 | } 9 | 10 | .avatar { 11 | @apply relative inline-flex align-middle; 12 | 13 | & > div { 14 | @apply block aspect-square overflow-hidden; 15 | } 16 | 17 | img { 18 | @apply h-full w-full object-cover; 19 | } 20 | } 21 | 22 | .avatar-placeholder { 23 | & > div { 24 | @apply flex items-center justify-center; 25 | } 26 | } 27 | 28 | .avatar-online { 29 | &:before { 30 | content: ""; 31 | @apply bg-success absolute z-1 block rounded-full; 32 | outline: 2px solid var(--color-base-100); 33 | width: 15%; 34 | height: 15%; 35 | top: 7%; 36 | right: 7%; 37 | } 38 | } 39 | 40 | .avatar-offline { 41 | &:before { 42 | content: ""; 43 | @apply bg-base-300 absolute z-1 block rounded-full; 44 | outline: 2px solid var(--color-base-100); 45 | width: 15%; 46 | height: 15%; 47 | top: 7%; 48 | right: 7%; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/breadcrumbs.css: -------------------------------------------------------------------------------- 1 | .breadcrumbs { 2 | @apply max-w-full overflow-x-auto py-2; 3 | 4 | > menu, 5 | > ul, 6 | > ol { 7 | @apply flex min-h-min items-center whitespace-nowrap; 8 | 9 | > li { 10 | @apply flex items-center; 11 | 12 | > * { 13 | @apply flex cursor-pointer items-center gap-2 hover:underline; 14 | 15 | &:focus { 16 | @apply outline-hidden; 17 | } 18 | 19 | &:focus-visible { 20 | outline: 2px solid currentColor; 21 | outline-offset: 2px; 22 | } 23 | } 24 | 25 | & + *:before { 26 | content: ""; 27 | @apply mr-3 ml-2 block h-1.5 w-1.5 opacity-40; 28 | rotate: 45deg; 29 | border-top: 1px solid; 30 | border-right: 1px solid; 31 | background-color: #0000; 32 | } 33 | [dir="rtl"] & + *:before { 34 | rotate: -135deg; 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/carousel.css: -------------------------------------------------------------------------------- 1 | .carousel { 2 | @apply inline-flex overflow-x-scroll; 3 | scroll-snap-type: x mandatory; 4 | scroll-behavior: smooth; 5 | scrollbar-width: none; 6 | 7 | &::-webkit-scrollbar { 8 | @apply hidden; 9 | } 10 | } 11 | 12 | .carousel-vertical { 13 | @apply flex-col overflow-y-scroll; 14 | scroll-snap-type: y mandatory; 15 | } 16 | 17 | .carousel-horizontal { 18 | @apply flex-row overflow-x-scroll; 19 | scroll-snap-type: x mandatory; 20 | } 21 | 22 | .carousel-item { 23 | @apply box-content flex flex-none; 24 | scroll-snap-align: start; 25 | } 26 | 27 | .carousel-start { 28 | .carousel-item { 29 | scroll-snap-align: start; 30 | } 31 | } 32 | 33 | .carousel-center { 34 | .carousel-item { 35 | scroll-snap-align: center; 36 | } 37 | } 38 | 39 | .carousel-end { 40 | .carousel-item { 41 | scroll-snap-align: end; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/countdown.css: -------------------------------------------------------------------------------- 1 | .countdown { 2 | @apply inline-flex; 3 | &.countdown { 4 | line-height: 1em; 5 | } 6 | 7 | & > * { 8 | @apply inline-block overflow-y-hidden; 9 | height: 1em; 10 | 11 | &:before { 12 | position: relative; 13 | content: "00\A 01\A 02\A 03\A 04\A 05\A 06\A 07\A 08\A 09\A 10\A 11\A 12\A 13\A 14\A 15\A 16\A 17\A 18\A 19\A 20\A 21\A 22\A 23\A 24\A 25\A 26\A 27\A 28\A 29\A 30\A 31\A 32\A 33\A 34\A 35\A 36\A 37\A 38\A 39\A 40\A 41\A 42\A 43\A 44\A 45\A 46\A 47\A 48\A 49\A 50\A 51\A 52\A 53\A 54\A 55\A 56\A 57\A 58\A 59\A 60\A 61\A 62\A 63\A 64\A 65\A 66\A 67\A 68\A 69\A 70\A 71\A 72\A 73\A 74\A 75\A 76\A 77\A 78\A 79\A 80\A 81\A 82\A 83\A 84\A 85\A 86\A 87\A 88\A 89\A 90\A 91\A 92\A 93\A 94\A 95\A 96\A 97\A 98\A 99\A"; 14 | white-space: pre; 15 | top: calc(var(--value) * -1em); 16 | text-align: center; 17 | transition: all 1s cubic-bezier(1, 0, 0, 1); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/fieldset.css: -------------------------------------------------------------------------------- 1 | .fieldset { 2 | @apply grid gap-1.5 py-1; 3 | font-size: 0.75rem; 4 | grid-template-columns: 1fr; 5 | grid-auto-rows: max-content; 6 | } 7 | .fieldset-legend { 8 | @apply text-base-content -mb-1 flex items-center justify-between gap-2 py-2; 9 | font-weight: 600; 10 | } 11 | /* deprecated in favor of label - but stays in source code to avoid breaking change */ 12 | .fieldset-label { 13 | @apply text-base-content/60 flex items-center gap-1.5; 14 | &:has(input) { 15 | @apply cursor-pointer; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/filter.css: -------------------------------------------------------------------------------- 1 | .filter { 2 | @apply flex flex-wrap; 3 | input[type="radio"] { 4 | @apply w-auto; 5 | } 6 | input { 7 | @apply overflow-hidden opacity-100; 8 | scale: 1; 9 | transition: 10 | margin 0.1s, 11 | opacity 0.3s, 12 | padding 0.3s, 13 | border-width 0.1s; 14 | &:not(:last-child) { 15 | @apply me-1; 16 | } 17 | &.filter-reset { 18 | @apply aspect-square; 19 | &::after { 20 | content: "×"; 21 | } 22 | } 23 | } 24 | &:not(:has(input:checked:not(.filter-reset))) { 25 | .filter-reset, 26 | input[type="reset"] { 27 | scale: 0; 28 | border-width: 0; 29 | @apply mx-0 w-0 px-0 opacity-0; 30 | } 31 | } 32 | &:has(input:checked:not(.filter-reset)) { 33 | input:not(:checked, .filter-reset, input[type="reset"]) { 34 | scale: 0; 35 | border-width: 0; 36 | @apply mx-0 w-0 px-0 opacity-0; 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/footer.css: -------------------------------------------------------------------------------- 1 | .footer { 2 | @apply grid w-full grid-flow-row place-items-start gap-x-4 gap-y-10; 3 | font-size: 0.875rem; 4 | line-height: 1.25rem; 5 | 6 | & > * { 7 | @apply grid place-items-start gap-2; 8 | } 9 | 10 | &.footer-center { 11 | @apply grid-flow-col-dense place-items-center text-center; 12 | 13 | & > * { 14 | @apply place-items-center; 15 | } 16 | } 17 | } 18 | 19 | .footer-title { 20 | @apply mb-2 uppercase opacity-60; 21 | font-weight: 600; 22 | } 23 | 24 | .footer-horizontal { 25 | @apply grid-flow-col; 26 | 27 | &.footer-center { 28 | @apply grid-flow-row-dense; 29 | } 30 | } 31 | 32 | .footer-vertical { 33 | @apply grid-flow-row; 34 | 35 | &.footer-center { 36 | @apply grid-flow-col-dense; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/hero.css: -------------------------------------------------------------------------------- 1 | .hero { 2 | @apply grid w-full place-items-center bg-cover bg-center; 3 | 4 | & > * { 5 | @apply col-start-1 row-start-1; 6 | } 7 | } 8 | 9 | .hero-overlay { 10 | @apply bg-neutral/50 col-start-1 row-start-1 h-full w-full; 11 | } 12 | 13 | .hero-content { 14 | @apply isolate flex max-w-[80rem] items-center justify-center gap-4 p-4; 15 | } 16 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/indicator.css: -------------------------------------------------------------------------------- 1 | .indicator { 2 | @apply relative inline-flex; 3 | width: max-content; 4 | 5 | :where(.indicator-item) { 6 | z-index: 1; 7 | @apply absolute whitespace-nowrap; 8 | top: var(--indicator-t, 0); 9 | bottom: var(--indicator-b, auto); 10 | left: var(--indicator-s, auto); 11 | right: var(--indicator-e, 0); 12 | translate: var(--indicator-x, 50%) var(--indicator-y, -50%); 13 | } 14 | } 15 | .indicator-start { 16 | --indicator-s: 0; 17 | --indicator-e: auto; 18 | --indicator-x: -50%; 19 | [dir="rtl"] & { 20 | --indicator-s: auto; 21 | --indicator-e: 0; 22 | --indicator-x: 50%; 23 | } 24 | } 25 | 26 | .indicator-center { 27 | --indicator-s: 50%; 28 | --indicator-e: 50%; 29 | --indicator-x: -50%; 30 | [dir="rtl"] & { 31 | --indicator-x: 50%; 32 | } 33 | } 34 | 35 | .indicator-end { 36 | --indicator-s: auto; 37 | --indicator-e: 0; 38 | --indicator-x: 50%; 39 | [dir="rtl"] & { 40 | --indicator-s: 0; 41 | --indicator-e: auto; 42 | --indicator-x: -50%; 43 | } 44 | } 45 | 46 | .indicator-bottom { 47 | --indicator-t: auto; 48 | --indicator-b: 0; 49 | --indicator-y: 50%; 50 | } 51 | 52 | .indicator-middle { 53 | --indicator-t: 50%; 54 | --indicator-b: 50%; 55 | --indicator-y: -50%; 56 | } 57 | 58 | .indicator-top { 59 | --indicator-t: 0; 60 | --indicator-b: auto; 61 | --indicator-y: -50%; 62 | } 63 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/kbd.css: -------------------------------------------------------------------------------- 1 | .kbd { 2 | @apply bg-base-200 rounded-field inline-flex items-center justify-center align-middle; 3 | padding-left: 0.5em; 4 | padding-right: 0.5em; 5 | border: var(--border) solid color-mix(in srgb, var(--color-base-content) 20%, #0000); 6 | border-bottom: calc(var(--border) + 1px) solid 7 | color-mix(in srgb, var(--color-base-content) 20%, #0000); 8 | --size: calc(var(--size-selector, 0.25rem) * 6); 9 | font-size: 0.875rem; 10 | height: var(--size); 11 | min-width: var(--size); 12 | } 13 | 14 | .kbd-xs { 15 | --size: calc(var(--size-selector, 0.25rem) * 4); 16 | font-size: 0.625rem; 17 | } 18 | 19 | .kbd-sm { 20 | --size: calc(var(--size-selector, 0.25rem) * 5); 21 | font-size: 0.75rem; 22 | } 23 | 24 | .kbd-md { 25 | --size: calc(var(--size-selector, 0.25rem) * 6); 26 | font-size: 0.875rem; 27 | } 28 | 29 | .kbd-lg { 30 | --size: calc(var(--size-selector, 0.25rem) * 7); 31 | font-size: 1rem; 32 | } 33 | 34 | .kbd-xl { 35 | --size: calc(var(--size-selector, 0.25rem) * 8); 36 | font-size: 1.125rem; 37 | } 38 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/link.css: -------------------------------------------------------------------------------- 1 | .link { 2 | @apply cursor-pointer underline; 3 | 4 | &:focus { 5 | @apply outline-hidden; 6 | } 7 | 8 | &:focus-visible { 9 | outline: 2px solid currentColor; 10 | outline-offset: 2px; 11 | } 12 | } 13 | 14 | .link-hover { 15 | @apply no-underline hover:underline; 16 | } 17 | 18 | .link-primary { 19 | @apply text-primary; 20 | 21 | @media (hover: hover) { 22 | &:hover { 23 | color: color-mix(in oklab, var(--color-primary) 80%, #000); 24 | } 25 | } 26 | } 27 | 28 | .link-secondary { 29 | @apply text-secondary; 30 | 31 | @media (hover: hover) { 32 | &:hover { 33 | color: color-mix(in oklab, var(--color-secondary) 80%, #000); 34 | } 35 | } 36 | } 37 | 38 | .link-accent { 39 | @apply text-accent; 40 | 41 | @media (hover: hover) { 42 | &:hover { 43 | color: color-mix(in oklab, var(--color-accent) 80%, #000); 44 | } 45 | } 46 | } 47 | 48 | .link-neutral { 49 | @apply text-neutral; 50 | 51 | @media (hover: hover) { 52 | &:hover { 53 | color: color-mix(in oklab, var(--color-neutral) 80%, #000); 54 | } 55 | } 56 | } 57 | 58 | .link-success { 59 | @apply text-success; 60 | 61 | @media (hover: hover) { 62 | &:hover { 63 | color: color-mix(in oklab, var(--color-success) 80%, #000); 64 | } 65 | } 66 | } 67 | 68 | .link-info { 69 | @apply text-info; 70 | 71 | @media (hover: hover) { 72 | &:hover { 73 | color: color-mix(in oklab, var(--color-info) 80%, #000); 74 | } 75 | } 76 | } 77 | 78 | .link-warning { 79 | @apply text-warning; 80 | 81 | @media (hover: hover) { 82 | &:hover { 83 | color: color-mix(in oklab, var(--color-warning) 80%, #000); 84 | } 85 | } 86 | } 87 | 88 | .link-error { 89 | @apply text-error; 90 | 91 | @media (hover: hover) { 92 | &:hover { 93 | color: color-mix(in oklab, var(--color-error) 80%, #000); 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/list.css: -------------------------------------------------------------------------------- 1 | .list { 2 | @apply flex flex-col; 3 | font-size: 0.875rem; 4 | :where(.list-row) { 5 | --list-grid-cols: minmax(0, auto) 1fr; 6 | @apply rounded-box relative grid grid-flow-col gap-4 p-4; 7 | word-break: break-word; 8 | grid-template-columns: var(--list-grid-cols); 9 | &:has(.list-col-grow:nth-child(1)) { 10 | --list-grid-cols: 1fr; 11 | } 12 | &:has(.list-col-grow:nth-child(2)) { 13 | --list-grid-cols: minmax(0, auto) 1fr; 14 | } 15 | &:has(.list-col-grow:nth-child(3)) { 16 | --list-grid-cols: minmax(0, auto) minmax(0, auto) 1fr; 17 | } 18 | &:has(.list-col-grow:nth-child(4)) { 19 | --list-grid-cols: minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr; 20 | } 21 | &:has(.list-col-grow:nth-child(5)) { 22 | --list-grid-cols: minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr; 23 | } 24 | &:has(.list-col-grow:nth-child(6)) { 25 | --list-grid-cols: minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 26 | minmax(0, auto) 1fr; 27 | } 28 | :not(.list-col-wrap) { 29 | @apply row-start-1; 30 | } 31 | } 32 | & > :not(:last-child) { 33 | &.list-row, 34 | .list-row { 35 | &:after { 36 | content: ""; 37 | border-bottom: var(--border) solid; 38 | inset-inline: var(--radius-box); 39 | @apply border-base-content/5 absolute bottom-0; 40 | } 41 | } 42 | } 43 | } 44 | .list-col-wrap { 45 | @apply row-start-2; 46 | } 47 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/navbar.css: -------------------------------------------------------------------------------- 1 | .navbar { 2 | @apply flex w-full items-center; 3 | padding: 0.5rem; 4 | min-height: 4rem; 5 | } 6 | 7 | .navbar-start { 8 | @apply inline-flex items-center; 9 | width: 50%; 10 | justify-content: flex-start; 11 | } 12 | 13 | .navbar-center { 14 | @apply inline-flex items-center; 15 | @apply shrink-0; 16 | } 17 | 18 | .navbar-end { 19 | @apply inline-flex items-center; 20 | width: 50%; 21 | justify-content: flex-end; 22 | } 23 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/radialprogress.css: -------------------------------------------------------------------------------- 1 | .radial-progress { 2 | @apply relative inline-grid h-[var(--size)] w-[var(--size)] place-content-center rounded-full bg-transparent; 3 | vertical-align: middle; 4 | box-sizing: content-box; 5 | --value: 0; 6 | --size: 5rem; 7 | --thickness: calc(var(--size) / 10); 8 | --radialprogress: calc(var(--value) * 1%); 9 | transition: --radialprogress 0.3s linear; 10 | 11 | &:before { 12 | @apply absolute inset-0 rounded-full; 13 | content: ""; 14 | background: 15 | radial-gradient(farthest-side, currentColor 98%, #0000) top/var(--thickness) var(--thickness) 16 | no-repeat, 17 | conic-gradient(currentColor var(--radialprogress), #0000 0); 18 | -webkit-mask: radial-gradient( 19 | farthest-side, 20 | #0000 calc(100% - var(--thickness)), 21 | #000 calc(100% + 0.5px - var(--thickness)) 22 | ); 23 | mask: radial-gradient( 24 | farthest-side, 25 | #0000 calc(100% - var(--thickness)), 26 | #000 calc(100% + 0.5px - var(--thickness)) 27 | ); 28 | } 29 | 30 | &:after { 31 | @apply absolute rounded-full bg-current; 32 | transition: transform 0.3s linear; 33 | content: ""; 34 | inset: calc(50% - var(--thickness) / 2); 35 | transform: rotate(calc(var(--value) * 3.6deg - 90deg)) translate(calc(var(--size) / 2 - 50%)); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/skeleton.css: -------------------------------------------------------------------------------- 1 | .skeleton { 2 | @apply bg-base-300 rounded-box motion-reduce:[transition-duration:15s]; 3 | will-change: background-position; 4 | animation: skeleton 1.8s ease-in-out infinite; 5 | background-image: linear-gradient( 6 | 105deg, 7 | #0000 0% 40%, 8 | var(--color-base-100) 50%, 9 | #0000 60% 100% 10 | ); 11 | background-size: 200% auto; 12 | background-repeat: no-repeat; 13 | background-position-x: -50%; 14 | } 15 | @keyframes skeleton { 16 | 0% { 17 | background-position: 150%; 18 | } 19 | 20 | 100% { 21 | background-position: -50%; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/stack.css: -------------------------------------------------------------------------------- 1 | .stack { 2 | @apply inline-grid; 3 | grid-template-columns: 3px 4px 1fr 4px 3px; 4 | grid-template-rows: 3px 4px 1fr 4px 3px; 5 | 6 | & > * { 7 | @apply h-full w-full; 8 | &:nth-child(n + 2) { 9 | @apply w-full opacity-70; 10 | } 11 | &:nth-child(2) { 12 | @apply z-2 opacity-90; 13 | } 14 | &:nth-child(1) { 15 | @apply z-3 w-full; 16 | } 17 | } 18 | &, 19 | &.stack-bottom { 20 | > * { 21 | grid-column: 3 / 4; 22 | grid-row: 3 / 6; 23 | &:nth-child(2) { 24 | grid-column: 2 / 5; 25 | grid-row: 2 / 5; 26 | } 27 | &:nth-child(1) { 28 | grid-column: 1 / 6; 29 | grid-row: 1 / 4; 30 | } 31 | } 32 | } 33 | &.stack-top { 34 | > * { 35 | grid-column: 3 / 4; 36 | grid-row: 1 / 4; 37 | &:nth-child(2) { 38 | grid-column: 2 / 5; 39 | grid-row: 2 / 5; 40 | } 41 | &:nth-child(1) { 42 | grid-column: 1 / 6; 43 | grid-row: 3 / 6; 44 | } 45 | } 46 | } 47 | &.stack-start { 48 | > * { 49 | grid-column: 1 / 4; 50 | grid-row: 3 / 4; 51 | &:nth-child(2) { 52 | grid-column: 2 / 5; 53 | grid-row: 2 / 5; 54 | } 55 | &:nth-child(1) { 56 | grid-column: 3 / 6; 57 | grid-row: 1 / 6; 58 | } 59 | } 60 | } 61 | &.stack-end { 62 | > * { 63 | grid-column: 3 / 6; 64 | grid-row: 3 / 4; 65 | &:nth-child(2) { 66 | grid-column: 2 / 5; 67 | grid-row: 2 / 5; 68 | } 69 | &:nth-child(1) { 70 | grid-column: 1 / 4; 71 | grid-row: 1 / 6; 72 | } 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/stat.css: -------------------------------------------------------------------------------- 1 | .stats { 2 | @apply rounded-box relative inline-grid grid-flow-col overflow-x-auto; 3 | } 4 | 5 | .stat { 6 | @apply inline-grid w-full gap-x-4 px-6 py-4; 7 | grid-template-columns: repeat(1, 1fr); 8 | 9 | &:not(:last-child) { 10 | border-inline-end: var(--border) dashed color-mix(in oklab, currentColor 10%, #0000); 11 | border-block-end: none; 12 | } 13 | } 14 | 15 | .stat-figure { 16 | @apply col-start-2 row-span-3 row-start-1 place-self-center justify-self-end; 17 | } 18 | 19 | .stat-title { 20 | @apply text-base-content/60 col-start-1 whitespace-nowrap; 21 | font-size: 0.75rem; 22 | } 23 | 24 | .stat-value { 25 | @apply col-start-1 whitespace-nowrap; 26 | font-size: 2rem; 27 | font-weight: 800; 28 | } 29 | 30 | .stat-desc { 31 | @apply text-base-content/60 col-start-1 whitespace-nowrap; 32 | font-size: 0.75rem; 33 | } 34 | 35 | .stat-actions { 36 | @apply col-start-1 whitespace-nowrap; 37 | } 38 | 39 | .stats-horizontal { 40 | @apply grid-flow-col overflow-x-auto; 41 | 42 | .stat:not(:last-child) { 43 | border-inline-end: var(--border) dashed color-mix(in oklab, currentColor 10%, #0000); 44 | border-block-end: none; 45 | } 46 | } 47 | 48 | .stats-vertical { 49 | @apply grid-flow-row overflow-y-auto; 50 | 51 | .stat:not(:last-child) { 52 | border-inline-end: none; 53 | border-block-end: var(--border) dashed color-mix(in oklab, currentColor 10%, #0000); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/status.css: -------------------------------------------------------------------------------- 1 | .status { 2 | @apply bg-base-content/20 rounded-selector inline-block aspect-square size-2 bg-center bg-no-repeat align-middle text-black/30; 3 | background-image: radial-gradient( 4 | circle at 35% 30%, 5 | oklch(1 0 0 / calc(var(--depth) * 0.5)), 6 | #0000 7 | ); 8 | box-shadow: 0 2px 3px -1px color-mix(in oklab, currentColor calc(var(--depth) * 100%), #0000); 9 | } 10 | 11 | .status-primary { 12 | @apply bg-primary text-primary; 13 | } 14 | 15 | .status-secondary { 16 | @apply bg-secondary text-secondary; 17 | } 18 | 19 | .status-accent { 20 | @apply bg-accent text-accent; 21 | } 22 | 23 | .status-neutral { 24 | @apply bg-neutral text-neutral; 25 | } 26 | 27 | .status-info { 28 | @apply bg-info text-info; 29 | /* background-image: url("data:image/svg+xml,%3Csvg width='1' height='5' fill='white' viewBox='0 0 1 5' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='1' height='1' fill='white'/%3E%3Crect y='2' width='1' height='3'/%3E%3C/svg%3E%0A"); */ 30 | } 31 | 32 | .status-success { 33 | @apply bg-success text-success; 34 | } 35 | 36 | .status-warning { 37 | @apply bg-warning text-warning; 38 | /* background-image: url("data:image/svg+xml,%3Csvg width='1' height='5' fill='white' viewBox='0 0 1 5' xmlns='http://www.w3.org/2000/svg'%3E%3Crect y='4' width='1' height='1' /%3E%3Crect width='1' height='3'/%3E%3C/svg%3E%0A"); */ 39 | } 40 | 41 | .status-error { 42 | @apply bg-error text-error; 43 | /* background-image: url("data:image/svg+xml,%3Csvg width='4' height='1' fill='white' viewBox='0 0 4 1' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='4' height='1'/%3E%3C/svg%3E%0A"); */ 44 | } 45 | 46 | .status-xs { 47 | @apply size-0.5; 48 | } 49 | 50 | .status-sm { 51 | @apply size-1; 52 | } 53 | 54 | .status-md { 55 | @apply size-2; 56 | } 57 | 58 | .status-lg { 59 | @apply size-3; 60 | } 61 | 62 | .status-xl { 63 | @apply size-4; 64 | } 65 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/toast.css: -------------------------------------------------------------------------------- 1 | .toast { 2 | @apply fixed start-auto end-4 top-auto bottom-4 flex flex-col gap-2 bg-transparent; 3 | translate: var(--toast-x, 0) var(--toast-y, 0); 4 | width: max-content; 5 | max-width: calc(100vw - 2rem); 6 | 7 | & > * { 8 | animation: toast 0.25s ease-out; 9 | } 10 | 11 | &:where(.toast-start) { 12 | @apply start-4 end-auto; 13 | --toast-x: 0; 14 | } 15 | 16 | &:where(.toast-center) { 17 | @apply start-1/2 end-1/2; 18 | --toast-x: -50%; 19 | } 20 | 21 | &:where(.toast-end) { 22 | @apply start-auto end-4; 23 | --toast-x: 0; 24 | } 25 | 26 | &:where(.toast-bottom) { 27 | @apply top-auto bottom-4; 28 | --toast-y: 0; 29 | } 30 | 31 | &:where(.toast-middle) { 32 | @apply top-1/2 bottom-auto; 33 | --toast-y: -50%; 34 | } 35 | 36 | &:where(.toast-top) { 37 | @apply top-4 bottom-auto; 38 | --toast-y: 0; 39 | } 40 | } 41 | @keyframes toast { 42 | 0% { 43 | scale: 0.9; 44 | opacity: 0; 45 | } 46 | 47 | 100% { 48 | scale: 1; 49 | opacity: 1; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /packages/daisyui/src/components/validator.css: -------------------------------------------------------------------------------- 1 | .validator { 2 | &:user-valid, 3 | &:has(:user-valid) { 4 | &, 5 | &:focus, 6 | &:checked, 7 | &[aria-checked="true"], 8 | &:focus-within { 9 | --input-color: var(--color-success); 10 | } 11 | } 12 | &:user-invalid, 13 | &:has(:user-invalid), 14 | &[aria-invalid]:not([aria-invalid="false"]) { 15 | &, 16 | &:focus, 17 | &:checked, 18 | &[aria-checked="true"], 19 | &:focus-within { 20 | --input-color: var(--color-error); 21 | } 22 | & ~ .validator-hint { 23 | @apply text-error visible block; 24 | } 25 | } 26 | } 27 | .validator-hint { 28 | @apply invisible mt-2; 29 | font-size: 0.75rem; 30 | } 31 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/abyss.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(20% 0.08 209); 3 | --color-base-200: oklch(15% 0.08 209); 4 | --color-base-300: oklch(10% 0.08 209); 5 | --color-base-content: oklch(90% 0.076 70.697); 6 | --color-primary: oklch(92% 0.2653 125); 7 | --color-primary-content: oklch(50% 0.2653 125); 8 | --color-secondary: oklch(83.27% 0.0764 298.3); 9 | --color-secondary-content: oklch(43.27% 0.0764 298.3); 10 | --color-accent: oklch(43% 0 0); 11 | --color-accent-content: oklch(98% 0 0); 12 | --color-neutral: oklch(30% 0.08 209); 13 | --color-neutral-content: oklch(90% 0.076 70.697); 14 | --color-info: oklch(74% 0.16 232.661); 15 | --color-info-content: oklch(29% 0.066 243.157); 16 | --color-success: oklch(79% 0.209 151.711); 17 | --color-success-content: oklch(26% 0.065 152.934); 18 | --color-warning: oklch(84.8% 0.1962 84.62); 19 | --color-warning-content: oklch(44.8% 0.1962 84.62); 20 | --color-error: oklch(65% 0.1985 24.22); 21 | --color-error-content: oklch(27% 0.1985 24.22); 22 | --radius-selector: 2rem; 23 | --radius-field: 0.25rem; 24 | --radius-box: 0.5rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 1; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/acid.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(98% 0 0); 3 | --color-base-200: oklch(95% 0 0); 4 | --color-base-300: oklch(91% 0 0); 5 | --color-base-content: oklch(0% 0 0); 6 | --color-primary: oklch(71.9% 0.357 330.759); 7 | --color-primary-content: oklch(14.38% 0.071 330.759); 8 | --color-secondary: oklch(73.37% 0.224 48.25); 9 | --color-secondary-content: oklch(14.674% 0.044 48.25); 10 | --color-accent: oklch(92.78% 0.264 122.962); 11 | --color-accent-content: oklch(18.556% 0.052 122.962); 12 | --color-neutral: oklch(21.31% 0.128 278.68); 13 | --color-neutral-content: oklch(84.262% 0.025 278.68); 14 | --color-info: oklch(60.72% 0.227 252.05); 15 | --color-info-content: oklch(12.144% 0.045 252.05); 16 | --color-success: oklch(85.72% 0.266 158.53); 17 | --color-success-content: oklch(17.144% 0.053 158.53); 18 | --color-warning: oklch(91.01% 0.212 100.5); 19 | --color-warning-content: oklch(18.202% 0.042 100.5); 20 | --color-error: oklch(64.84% 0.293 29.349); 21 | --color-error-content: oklch(12.968% 0.058 29.349); 22 | --radius-selector: 1rem; 23 | --radius-field: 1rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 1; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/aqua.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(37% 0.146 265.522); 3 | --color-base-200: oklch(28% 0.091 267.935); 4 | --color-base-300: oklch(22% 0.091 267.935); 5 | --color-base-content: oklch(90% 0.058 230.902); 6 | --color-primary: oklch(85.661% 0.144 198.645); 7 | --color-primary-content: oklch(40.124% 0.068 197.603); 8 | --color-secondary: oklch(60.682% 0.108 309.782); 9 | --color-secondary-content: oklch(96% 0.016 293.756); 10 | --color-accent: oklch(93.426% 0.102 94.555); 11 | --color-accent-content: oklch(18.685% 0.02 94.555); 12 | --color-neutral: oklch(27% 0.146 265.522); 13 | --color-neutral-content: oklch(80% 0.146 265.522); 14 | --color-info: oklch(54.615% 0.215 262.88); 15 | --color-info-content: oklch(90.923% 0.043 262.88); 16 | --color-success: oklch(62.705% 0.169 149.213); 17 | --color-success-content: oklch(12.541% 0.033 149.213); 18 | --color-warning: oklch(66.584% 0.157 58.318); 19 | --color-warning-content: oklch(27% 0.077 45.635); 20 | --color-error: oklch(73.95% 0.19 27.33); 21 | --color-error-content: oklch(14.79% 0.038 27.33); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 1; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/autumn.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(95.814% 0 0); 3 | --color-base-200: oklch(89.107% 0 0); 4 | --color-base-300: oklch(82.4% 0 0); 5 | --color-base-content: oklch(19.162% 0 0); 6 | --color-primary: oklch(40.723% 0.161 17.53); 7 | --color-primary-content: oklch(88.144% 0.032 17.53); 8 | --color-secondary: oklch(61.676% 0.169 23.865); 9 | --color-secondary-content: oklch(12.335% 0.033 23.865); 10 | --color-accent: oklch(73.425% 0.094 60.729); 11 | --color-accent-content: oklch(14.685% 0.018 60.729); 12 | --color-neutral: oklch(54.367% 0.037 51.902); 13 | --color-neutral-content: oklch(90.873% 0.007 51.902); 14 | --color-info: oklch(69.224% 0.097 207.284); 15 | --color-info-content: oklch(13.844% 0.019 207.284); 16 | --color-success: oklch(60.995% 0.08 174.616); 17 | --color-success-content: oklch(12.199% 0.016 174.616); 18 | --color-warning: oklch(70.081% 0.164 56.844); 19 | --color-warning-content: oklch(14.016% 0.032 56.844); 20 | --color-error: oklch(53.07% 0.241 24.16); 21 | --color-error-content: oklch(90.614% 0.048 24.16); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 1; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/black.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(0% 0 0); 3 | --color-base-200: oklch(19% 0 0); 4 | --color-base-300: oklch(22% 0 0); 5 | --color-base-content: oklch(87.609% 0 0); 6 | --color-primary: oklch(35% 0 0); 7 | --color-primary-content: oklch(100% 0 0); 8 | --color-secondary: oklch(35% 0 0); 9 | --color-secondary-content: oklch(100% 0 0); 10 | --color-accent: oklch(35% 0 0); 11 | --color-accent-content: oklch(100% 0 0); 12 | --color-neutral: oklch(35% 0 0); 13 | --color-neutral-content: oklch(100% 0 0); 14 | --color-info: oklch(45.201% 0.313 264.052); 15 | --color-info-content: oklch(89.04% 0.062 264.052); 16 | --color-success: oklch(51.975% 0.176 142.495); 17 | --color-success-content: oklch(90.395% 0.035 142.495); 18 | --color-warning: oklch(96.798% 0.211 109.769); 19 | --color-warning-content: oklch(19.359% 0.042 109.769); 20 | --color-error: oklch(62.795% 0.257 29.233); 21 | --color-error-content: oklch(12.559% 0.051 29.233); 22 | --radius-selector: 0rem; 23 | --radius-field: 0rem; 24 | --radius-box: 0rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/bumblebee.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(100% 0 0); 3 | --color-base-200: oklch(97% 0 0); 4 | --color-base-300: oklch(92% 0 0); 5 | --color-base-content: oklch(20% 0 0); 6 | --color-primary: oklch(85% 0.199 91.936); 7 | --color-primary-content: oklch(42% 0.095 57.708); 8 | --color-secondary: oklch(75% 0.183 55.934); 9 | --color-secondary-content: oklch(40% 0.123 38.172); 10 | --color-accent: oklch(0% 0 0); 11 | --color-accent-content: oklch(100% 0 0); 12 | --color-neutral: oklch(37% 0.01 67.558); 13 | --color-neutral-content: oklch(92% 0.003 48.717); 14 | --color-info: oklch(74% 0.16 232.661); 15 | --color-info-content: oklch(39% 0.09 240.876); 16 | --color-success: oklch(76% 0.177 163.223); 17 | --color-success-content: oklch(37% 0.077 168.94); 18 | --color-warning: oklch(82% 0.189 84.429); 19 | --color-warning-content: oklch(41% 0.112 45.904); 20 | --color-error: oklch(70% 0.191 22.216); 21 | --color-error-content: oklch(39% 0.141 25.723); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 1; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/business.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(24.353% 0 0); 3 | --color-base-200: oklch(22.648% 0 0); 4 | --color-base-300: oklch(20.944% 0 0); 5 | --color-base-content: oklch(84.87% 0 0); 6 | --color-primary: oklch(41.703% 0.099 251.473); 7 | --color-primary-content: oklch(88.34% 0.019 251.473); 8 | --color-secondary: oklch(64.092% 0.027 229.389); 9 | --color-secondary-content: oklch(12.818% 0.005 229.389); 10 | --color-accent: oklch(67.271% 0.167 35.791); 11 | --color-accent-content: oklch(13.454% 0.033 35.791); 12 | --color-neutral: oklch(27.441% 0.013 253.041); 13 | --color-neutral-content: oklch(85.488% 0.002 253.041); 14 | --color-info: oklch(62.616% 0.143 240.033); 15 | --color-info-content: oklch(12.523% 0.028 240.033); 16 | --color-success: oklch(70.226% 0.094 156.596); 17 | --color-success-content: oklch(14.045% 0.018 156.596); 18 | --color-warning: oklch(77.482% 0.115 81.519); 19 | --color-warning-content: oklch(15.496% 0.023 81.519); 20 | --color-error: oklch(51.61% 0.146 29.674); 21 | --color-error-content: oklch(90.322% 0.029 29.674); 22 | --radius-selector: 0rem; 23 | --radius-field: 0.25rem; 24 | --radius-box: 0.25rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/caramellatte.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(98% 0.016 73.684); 3 | --color-base-200: oklch(95% 0.038 75.164); 4 | --color-base-300: oklch(90% 0.076 70.697); 5 | --color-base-content: oklch(40% 0.123 38.172); 6 | --color-primary: oklch(0% 0 0); 7 | --color-primary-content: oklch(100% 0 0); 8 | --color-secondary: oklch(22.45% 0.075 37.85); 9 | --color-secondary-content: oklch(90% 0.076 70.697); 10 | --color-accent: oklch(46.44% 0.111 37.85); 11 | --color-accent-content: oklch(90% 0.076 70.697); 12 | --color-neutral: oklch(55% 0.195 38.402); 13 | --color-neutral-content: oklch(98% 0.016 73.684); 14 | --color-info: oklch(42% 0.199 265.638); 15 | --color-info-content: oklch(90% 0.076 70.697); 16 | --color-success: oklch(43% 0.095 166.913); 17 | --color-success-content: oklch(90% 0.076 70.697); 18 | --color-warning: oklch(82% 0.189 84.429); 19 | --color-warning-content: oklch(41% 0.112 45.904); 20 | --color-error: oklch(70% 0.191 22.216); 21 | --color-error-content: oklch(39% 0.141 25.723); 22 | --radius-selector: 2rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 2px; 28 | --depth: 1; 29 | --noise: 1; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/cmyk.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(100% 0 0); 3 | --color-base-200: oklch(95% 0 0); 4 | --color-base-300: oklch(90% 0 0); 5 | --color-base-content: oklch(20% 0 0); 6 | --color-primary: oklch(71.772% 0.133 239.443); 7 | --color-primary-content: oklch(14.354% 0.026 239.443); 8 | --color-secondary: oklch(64.476% 0.202 359.339); 9 | --color-secondary-content: oklch(12.895% 0.04 359.339); 10 | --color-accent: oklch(94.228% 0.189 105.306); 11 | --color-accent-content: oklch(18.845% 0.037 105.306); 12 | --color-neutral: oklch(21.778% 0 0); 13 | --color-neutral-content: oklch(84.355% 0 0); 14 | --color-info: oklch(68.475% 0.094 217.284); 15 | --color-info-content: oklch(13.695% 0.018 217.284); 16 | --color-success: oklch(46.949% 0.162 321.406); 17 | --color-success-content: oklch(89.389% 0.032 321.406); 18 | --color-warning: oklch(71.236% 0.159 52.023); 19 | --color-warning-content: oklch(14.247% 0.031 52.023); 20 | --color-error: oklch(62.013% 0.208 28.717); 21 | --color-error-content: oklch(12.402% 0.041 28.717); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/coffee.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(24% 0.023 329.708); 3 | --color-base-200: oklch(21% 0.021 329.708); 4 | --color-base-300: oklch(16% 0.019 329.708); 5 | --color-base-content: oklch(72.354% 0.092 79.129); 6 | --color-primary: oklch(71.996% 0.123 62.756); 7 | --color-primary-content: oklch(14.399% 0.024 62.756); 8 | --color-secondary: oklch(34.465% 0.029 199.194); 9 | --color-secondary-content: oklch(86.893% 0.005 199.194); 10 | --color-accent: oklch(42.621% 0.074 224.389); 11 | --color-accent-content: oklch(88.524% 0.014 224.389); 12 | --color-neutral: oklch(16.51% 0.015 326.261); 13 | --color-neutral-content: oklch(83.302% 0.003 326.261); 14 | --color-info: oklch(79.49% 0.063 184.558); 15 | --color-info-content: oklch(15.898% 0.012 184.558); 16 | --color-success: oklch(74.722% 0.072 131.116); 17 | --color-success-content: oklch(14.944% 0.014 131.116); 18 | --color-warning: oklch(88.15% 0.14 87.722); 19 | --color-warning-content: oklch(17.63% 0.028 87.722); 20 | --color-error: oklch(77.318% 0.128 31.871); 21 | --color-error-content: oklch(15.463% 0.025 31.871); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/corporate.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(100% 0 0); 3 | --color-base-200: oklch(93% 0 0); 4 | --color-base-300: oklch(86% 0 0); 5 | --color-base-content: oklch(22.389% 0.031 278.072); 6 | --color-primary: oklch(58% 0.158 241.966); 7 | --color-primary-content: oklch(100% 0 0); 8 | --color-secondary: oklch(55% 0.046 257.417); 9 | --color-secondary-content: oklch(100% 0 0); 10 | --color-accent: oklch(60% 0.118 184.704); 11 | --color-accent-content: oklch(100% 0 0); 12 | --color-neutral: oklch(0% 0 0); 13 | --color-neutral-content: oklch(100% 0 0); 14 | --color-info: oklch(60% 0.126 221.723); 15 | --color-info-content: oklch(100% 0 0); 16 | --color-success: oklch(62% 0.194 149.214); 17 | --color-success-content: oklch(100% 0 0); 18 | --color-warning: oklch(85% 0.199 91.936); 19 | --color-warning-content: oklch(0% 0 0); 20 | --color-error: oklch(70% 0.191 22.216); 21 | --color-error-content: oklch(0% 0 0); 22 | --radius-selector: 0.25rem; 23 | --radius-field: 0.25rem; 24 | --radius-box: 0.25rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/cupcake.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(97.788% 0.004 56.375); 3 | --color-base-200: oklch(93.982% 0.007 61.449); 4 | --color-base-300: oklch(91.586% 0.006 53.44); 5 | --color-base-content: oklch(23.574% 0.066 313.189); 6 | --color-primary: oklch(85% 0.138 181.071); 7 | --color-primary-content: oklch(43% 0.078 188.216); 8 | --color-secondary: oklch(89% 0.061 343.231); 9 | --color-secondary-content: oklch(45% 0.187 3.815); 10 | --color-accent: oklch(90% 0.076 70.697); 11 | --color-accent-content: oklch(47% 0.157 37.304); 12 | --color-neutral: oklch(27% 0.006 286.033); 13 | --color-neutral-content: oklch(92% 0.004 286.32); 14 | --color-info: oklch(68% 0.169 237.323); 15 | --color-info-content: oklch(29% 0.066 243.157); 16 | --color-success: oklch(69% 0.17 162.48); 17 | --color-success-content: oklch(26% 0.051 172.552); 18 | --color-warning: oklch(79% 0.184 86.047); 19 | --color-warning-content: oklch(28% 0.066 53.813); 20 | --color-error: oklch(64% 0.246 16.439); 21 | --color-error-content: oklch(27% 0.105 12.094); 22 | --radius-selector: 1rem; 23 | --radius-field: 2rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 2px; 28 | --depth: 1; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/cyberpunk.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(94.51% 0.179 104.32); 3 | --color-base-200: oklch(91.51% 0.179 104.32); 4 | --color-base-300: oklch(85.51% 0.179 104.32); 5 | --color-base-content: oklch(0% 0 0); 6 | --color-primary: oklch(74.22% 0.209 6.35); 7 | --color-primary-content: oklch(14.844% 0.041 6.35); 8 | --color-secondary: oklch(83.33% 0.184 204.72); 9 | --color-secondary-content: oklch(16.666% 0.036 204.72); 10 | --color-accent: oklch(71.86% 0.217 310.43); 11 | --color-accent-content: oklch(14.372% 0.043 310.43); 12 | --color-neutral: oklch(23.04% 0.065 269.31); 13 | --color-neutral-content: oklch(94.51% 0.179 104.32); 14 | --color-info: oklch(72.06% 0.191 231.6); 15 | --color-info-content: oklch(0% 0 0); 16 | --color-success: oklch(64.8% 0.15 160); 17 | --color-success-content: oklch(0% 0 0); 18 | --color-warning: oklch(84.71% 0.199 83.87); 19 | --color-warning-content: oklch(0% 0 0); 20 | --color-error: oklch(71.76% 0.221 22.18); 21 | --color-error-content: oklch(0% 0 0); 22 | --radius-selector: 0rem; 23 | --radius-field: 0rem; 24 | --radius-box: 0rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/dark.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(25.33% 0.016 252.42); 3 | --color-base-200: oklch(23.26% 0.014 253.1); 4 | --color-base-300: oklch(21.15% 0.012 254.09); 5 | --color-base-content: oklch(97.807% 0.029 256.847); 6 | --color-primary: oklch(58% 0.233 277.117); 7 | --color-primary-content: oklch(96% 0.018 272.314); 8 | --color-secondary: oklch(65% 0.241 354.308); 9 | --color-secondary-content: oklch(94% 0.028 342.258); 10 | --color-accent: oklch(77% 0.152 181.912); 11 | --color-accent-content: oklch(38% 0.063 188.416); 12 | --color-neutral: oklch(14% 0.005 285.823); 13 | --color-neutral-content: oklch(92% 0.004 286.32); 14 | --color-info: oklch(74% 0.16 232.661); 15 | --color-info-content: oklch(29% 0.066 243.157); 16 | --color-success: oklch(76% 0.177 163.223); 17 | --color-success-content: oklch(37% 0.077 168.94); 18 | --color-warning: oklch(82% 0.189 84.429); 19 | --color-warning-content: oklch(41% 0.112 45.904); 20 | --color-error: oklch(71% 0.194 13.428); 21 | --color-error-content: oklch(27% 0.105 12.094); 22 | --radius-selector: 0.5rem; 23 | --radius-field: 0.25rem; 24 | --radius-box: 0.5rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 1; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/dim.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(30.857% 0.023 264.149); 3 | --color-base-200: oklch(28.036% 0.019 264.182); 4 | --color-base-300: oklch(26.346% 0.018 262.177); 5 | --color-base-content: oklch(82.901% 0.031 222.959); 6 | --color-primary: oklch(86.133% 0.141 139.549); 7 | --color-primary-content: oklch(17.226% 0.028 139.549); 8 | --color-secondary: oklch(73.375% 0.165 35.353); 9 | --color-secondary-content: oklch(14.675% 0.033 35.353); 10 | --color-accent: oklch(74.229% 0.133 311.379); 11 | --color-accent-content: oklch(14.845% 0.026 311.379); 12 | --color-neutral: oklch(24.731% 0.02 264.094); 13 | --color-neutral-content: oklch(82.901% 0.031 222.959); 14 | --color-info: oklch(86.078% 0.142 206.182); 15 | --color-info-content: oklch(17.215% 0.028 206.182); 16 | --color-success: oklch(86.171% 0.142 166.534); 17 | --color-success-content: oklch(17.234% 0.028 166.534); 18 | --color-warning: oklch(86.163% 0.142 94.818); 19 | --color-warning-content: oklch(17.232% 0.028 94.818); 20 | --color-error: oklch(82.418% 0.099 33.756); 21 | --color-error-content: oklch(16.483% 0.019 33.756); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/dracula.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(28.822% 0.022 277.508); 3 | --color-base-200: oklch(26.805% 0.02 277.508); 4 | --color-base-300: oklch(24.787% 0.019 277.508); 5 | --color-base-content: oklch(97.747% 0.007 106.545); 6 | --color-primary: oklch(75.461% 0.183 346.812); 7 | --color-primary-content: oklch(15.092% 0.036 346.812); 8 | --color-secondary: oklch(74.202% 0.148 301.883); 9 | --color-secondary-content: oklch(14.84% 0.029 301.883); 10 | --color-accent: oklch(83.392% 0.124 66.558); 11 | --color-accent-content: oklch(16.678% 0.024 66.558); 12 | --color-neutral: oklch(39.445% 0.032 275.524); 13 | --color-neutral-content: oklch(87.889% 0.006 275.524); 14 | --color-info: oklch(88.263% 0.093 212.846); 15 | --color-info-content: oklch(17.652% 0.018 212.846); 16 | --color-success: oklch(87.099% 0.219 148.024); 17 | --color-success-content: oklch(17.419% 0.043 148.024); 18 | --color-warning: oklch(95.533% 0.134 112.757); 19 | --color-warning-content: oklch(19.106% 0.026 112.757); 20 | --color-error: oklch(68.22% 0.206 24.43); 21 | --color-error-content: oklch(13.644% 0.041 24.43); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/emerald.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(100% 0 0); 3 | --color-base-200: oklch(93% 0 0); 4 | --color-base-300: oklch(86% 0 0); 5 | --color-base-content: oklch(35.519% 0.032 262.988); 6 | --color-primary: oklch(76.662% 0.135 153.45); 7 | --color-primary-content: oklch(33.387% 0.04 162.24); 8 | --color-secondary: oklch(61.302% 0.202 261.294); 9 | --color-secondary-content: oklch(100% 0 0); 10 | --color-accent: oklch(72.772% 0.149 33.2); 11 | --color-accent-content: oklch(0% 0 0); 12 | --color-neutral: oklch(35.519% 0.032 262.988); 13 | --color-neutral-content: oklch(98.462% 0.001 247.838); 14 | --color-info: oklch(72.06% 0.191 231.6); 15 | --color-info-content: oklch(0% 0 0); 16 | --color-success: oklch(64.8% 0.15 160); 17 | --color-success-content: oklch(0% 0 0); 18 | --color-warning: oklch(84.71% 0.199 83.87); 19 | --color-warning-content: oklch(0% 0 0); 20 | --color-error: oklch(71.76% 0.221 22.18); 21 | --color-error-content: oklch(0% 0 0); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/fantasy.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(100% 0 0); 3 | --color-base-200: oklch(93% 0 0); 4 | --color-base-300: oklch(86% 0 0); 5 | --color-base-content: oklch(27.807% 0.029 256.847); 6 | --color-primary: oklch(37.45% 0.189 325.02); 7 | --color-primary-content: oklch(87.49% 0.037 325.02); 8 | --color-secondary: oklch(53.92% 0.162 241.36); 9 | --color-secondary-content: oklch(90.784% 0.032 241.36); 10 | --color-accent: oklch(75.98% 0.204 56.72); 11 | --color-accent-content: oklch(15.196% 0.04 56.72); 12 | --color-neutral: oklch(27.807% 0.029 256.847); 13 | --color-neutral-content: oklch(85.561% 0.005 256.847); 14 | --color-info: oklch(72.06% 0.191 231.6); 15 | --color-info-content: oklch(0% 0 0); 16 | --color-success: oklch(64.8% 0.15 160); 17 | --color-success-content: oklch(0% 0 0); 18 | --color-warning: oklch(84.71% 0.199 83.87); 19 | --color-warning-content: oklch(0% 0 0); 20 | --color-error: oklch(71.76% 0.221 22.18); 21 | --color-error-content: oklch(0% 0 0); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 1; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/forest.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(20.84% 0.008 17.911); 3 | --color-base-200: oklch(18.522% 0.007 17.911); 4 | --color-base-300: oklch(16.203% 0.007 17.911); 5 | --color-base-content: oklch(83.768% 0.001 17.911); 6 | --color-primary: oklch(68.628% 0.185 148.958); 7 | --color-primary-content: oklch(0% 0 0); 8 | --color-secondary: oklch(69.776% 0.135 168.327); 9 | --color-secondary-content: oklch(13.955% 0.027 168.327); 10 | --color-accent: oklch(70.628% 0.119 185.713); 11 | --color-accent-content: oklch(14.125% 0.023 185.713); 12 | --color-neutral: oklch(30.698% 0.039 171.364); 13 | --color-neutral-content: oklch(86.139% 0.007 171.364); 14 | --color-info: oklch(72.06% 0.191 231.6); 15 | --color-info-content: oklch(0% 0 0); 16 | --color-success: oklch(64.8% 0.15 160); 17 | --color-success-content: oklch(0% 0 0); 18 | --color-warning: oklch(84.71% 0.199 83.87); 19 | --color-warning-content: oklch(0% 0 0); 20 | --color-error: oklch(71.76% 0.221 22.18); 21 | --color-error-content: oklch(0% 0 0); 22 | --radius-selector: 1rem; 23 | --radius-field: 2rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/garden.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(92.951% 0.002 17.197); 3 | --color-base-200: oklch(86.445% 0.002 17.197); 4 | --color-base-300: oklch(79.938% 0.001 17.197); 5 | --color-base-content: oklch(16.961% 0.001 17.32); 6 | --color-primary: oklch(62.45% 0.278 3.836); 7 | --color-primary-content: oklch(100% 0 0); 8 | --color-secondary: oklch(48.495% 0.11 355.095); 9 | --color-secondary-content: oklch(89.699% 0.022 355.095); 10 | --color-accent: oklch(56.273% 0.054 154.39); 11 | --color-accent-content: oklch(100% 0 0); 12 | --color-neutral: oklch(24.155% 0.049 89.07); 13 | --color-neutral-content: oklch(92.951% 0.002 17.197); 14 | --color-info: oklch(72.06% 0.191 231.6); 15 | --color-info-content: oklch(0% 0 0); 16 | --color-success: oklch(64.8% 0.15 160); 17 | --color-success-content: oklch(0% 0 0); 18 | --color-warning: oklch(84.71% 0.199 83.87); 19 | --color-warning-content: oklch(0% 0 0); 20 | --color-error: oklch(71.76% 0.221 22.18); 21 | --color-error-content: oklch(0% 0 0); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/halloween.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(21% 0.006 56.043); 3 | --color-base-200: oklch(14% 0.004 49.25); 4 | --color-base-300: oklch(0% 0 0); 5 | --color-base-content: oklch(84.955% 0 0); 6 | --color-primary: oklch(77.48% 0.204 60.62); 7 | --color-primary-content: oklch(19.693% 0.004 196.779); 8 | --color-secondary: oklch(45.98% 0.248 305.03); 9 | --color-secondary-content: oklch(89.196% 0.049 305.03); 10 | --color-accent: oklch(64.8% 0.223 136.073); 11 | --color-accent-content: oklch(0% 0 0); 12 | --color-neutral: oklch(24.371% 0.046 65.681); 13 | --color-neutral-content: oklch(84.874% 0.009 65.681); 14 | --color-info: oklch(54.615% 0.215 262.88); 15 | --color-info-content: oklch(90.923% 0.043 262.88); 16 | --color-success: oklch(62.705% 0.169 149.213); 17 | --color-success-content: oklch(12.541% 0.033 149.213); 18 | --color-warning: oklch(66.584% 0.157 58.318); 19 | --color-warning-content: oklch(13.316% 0.031 58.318); 20 | --color-error: oklch(65.72% 0.199 27.33); 21 | --color-error-content: oklch(13.144% 0.039 27.33); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 1; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/lemonade.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(98.71% 0.02 123.72); 3 | --color-base-200: oklch(91.8% 0.018 123.72); 4 | --color-base-300: oklch(84.89% 0.017 123.72); 5 | --color-base-content: oklch(19.742% 0.004 123.72); 6 | --color-primary: oklch(58.92% 0.199 134.6); 7 | --color-primary-content: oklch(11.784% 0.039 134.6); 8 | --color-secondary: oklch(77.75% 0.196 111.09); 9 | --color-secondary-content: oklch(15.55% 0.039 111.09); 10 | --color-accent: oklch(85.39% 0.201 100.73); 11 | --color-accent-content: oklch(17.078% 0.04 100.73); 12 | --color-neutral: oklch(30.98% 0.075 108.6); 13 | --color-neutral-content: oklch(86.196% 0.015 108.6); 14 | --color-info: oklch(86.19% 0.047 224.14); 15 | --color-info-content: oklch(17.238% 0.009 224.14); 16 | --color-success: oklch(86.19% 0.047 157.85); 17 | --color-success-content: oklch(17.238% 0.009 157.85); 18 | --color-warning: oklch(86.19% 0.047 102.15); 19 | --color-warning-content: oklch(17.238% 0.009 102.15); 20 | --color-error: oklch(86.19% 0.047 25.85); 21 | --color-error-content: oklch(17.238% 0.009 25.85); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/light.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(100% 0 0); 3 | --color-base-200: oklch(98% 0 0); 4 | --color-base-300: oklch(95% 0 0); 5 | --color-base-content: oklch(21% 0.006 285.885); 6 | --color-primary: oklch(45% 0.24 277.023); 7 | --color-primary-content: oklch(93% 0.034 272.788); 8 | --color-secondary: oklch(65% 0.241 354.308); 9 | --color-secondary-content: oklch(94% 0.028 342.258); 10 | --color-accent: oklch(77% 0.152 181.912); 11 | --color-accent-content: oklch(38% 0.063 188.416); 12 | --color-neutral: oklch(14% 0.005 285.823); 13 | --color-neutral-content: oklch(92% 0.004 286.32); 14 | --color-info: oklch(74% 0.16 232.661); 15 | --color-info-content: oklch(29% 0.066 243.157); 16 | --color-success: oklch(76% 0.177 163.223); 17 | --color-success-content: oklch(37% 0.077 168.94); 18 | --color-warning: oklch(82% 0.189 84.429); 19 | --color-warning-content: oklch(41% 0.112 45.904); 20 | --color-error: oklch(71% 0.194 13.428); 21 | --color-error-content: oklch(27% 0.105 12.094); 22 | --radius-selector: 0.5rem; 23 | --radius-field: 0.25rem; 24 | --radius-box: 0.5rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 1; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/lofi.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(100% 0 0); 3 | --color-base-200: oklch(97% 0 0); 4 | --color-base-300: oklch(94% 0 0); 5 | --color-base-content: oklch(0% 0 0); 6 | --color-primary: oklch(15.906% 0 0); 7 | --color-primary-content: oklch(100% 0 0); 8 | --color-secondary: oklch(21.455% 0.001 17.278); 9 | --color-secondary-content: oklch(100% 0 0); 10 | --color-accent: oklch(26.861% 0 0); 11 | --color-accent-content: oklch(100% 0 0); 12 | --color-neutral: oklch(0% 0 0); 13 | --color-neutral-content: oklch(100% 0 0); 14 | --color-info: oklch(79.54% 0.103 205.9); 15 | --color-info-content: oklch(15.908% 0.02 205.9); 16 | --color-success: oklch(90.13% 0.153 164.14); 17 | --color-success-content: oklch(18.026% 0.03 164.14); 18 | --color-warning: oklch(88.37% 0.135 79.94); 19 | --color-warning-content: oklch(17.674% 0.027 79.94); 20 | --color-error: oklch(78.66% 0.15 28.47); 21 | --color-error-content: oklch(15.732% 0.03 28.47); 22 | --radius-selector: 2rem; 23 | --radius-field: 0.25rem; 24 | --radius-box: 0.5rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/luxury.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(14.076% 0.004 285.822); 3 | --color-base-200: oklch(20.219% 0.004 308.229); 4 | --color-base-300: oklch(23.219% 0.004 308.229); 5 | --color-base-content: oklch(75.687% 0.123 76.89); 6 | --color-primary: oklch(100% 0 0); 7 | --color-primary-content: oklch(20% 0 0); 8 | --color-secondary: oklch(27.581% 0.064 261.069); 9 | --color-secondary-content: oklch(85.516% 0.012 261.069); 10 | --color-accent: oklch(36.674% 0.051 338.825); 11 | --color-accent-content: oklch(87.334% 0.01 338.825); 12 | --color-neutral: oklch(24.27% 0.057 59.825); 13 | --color-neutral-content: oklch(93.203% 0.089 90.861); 14 | --color-info: oklch(79.061% 0.121 237.133); 15 | --color-info-content: oklch(15.812% 0.024 237.133); 16 | --color-success: oklch(78.119% 0.192 132.154); 17 | --color-success-content: oklch(15.623% 0.038 132.154); 18 | --color-warning: oklch(86.127% 0.136 102.891); 19 | --color-warning-content: oklch(17.225% 0.027 102.891); 20 | --color-error: oklch(71.753% 0.176 22.568); 21 | --color-error-content: oklch(14.35% 0.035 22.568); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 1; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/night.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(20.768% 0.039 265.754); 3 | --color-base-200: oklch(19.314% 0.037 265.754); 4 | --color-base-300: oklch(17.86% 0.034 265.754); 5 | --color-base-content: oklch(84.153% 0.007 265.754); 6 | --color-primary: oklch(75.351% 0.138 232.661); 7 | --color-primary-content: oklch(15.07% 0.027 232.661); 8 | --color-secondary: oklch(68.011% 0.158 276.934); 9 | --color-secondary-content: oklch(13.602% 0.031 276.934); 10 | --color-accent: oklch(72.36% 0.176 350.048); 11 | --color-accent-content: oklch(14.472% 0.035 350.048); 12 | --color-neutral: oklch(27.949% 0.036 260.03); 13 | --color-neutral-content: oklch(85.589% 0.007 260.03); 14 | --color-info: oklch(68.455% 0.148 237.251); 15 | --color-info-content: oklch(0% 0 0); 16 | --color-success: oklch(78.452% 0.132 181.911); 17 | --color-success-content: oklch(15.69% 0.026 181.911); 18 | --color-warning: oklch(83.242% 0.139 82.95); 19 | --color-warning-content: oklch(16.648% 0.027 82.95); 20 | --color-error: oklch(71.785% 0.17 13.118); 21 | --color-error-content: oklch(14.357% 0.034 13.118); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/nord.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(95.127% 0.007 260.731); 3 | --color-base-200: oklch(93.299% 0.01 261.788); 4 | --color-base-300: oklch(89.925% 0.016 262.749); 5 | --color-base-content: oklch(32.437% 0.022 264.182); 6 | --color-primary: oklch(59.435% 0.077 254.027); 7 | --color-primary-content: oklch(11.887% 0.015 254.027); 8 | --color-secondary: oklch(69.651% 0.059 248.687); 9 | --color-secondary-content: oklch(13.93% 0.011 248.687); 10 | --color-accent: oklch(77.464% 0.062 217.469); 11 | --color-accent-content: oklch(15.492% 0.012 217.469); 12 | --color-neutral: oklch(45.229% 0.035 264.131); 13 | --color-neutral-content: oklch(89.925% 0.016 262.749); 14 | --color-info: oklch(69.207% 0.062 332.664); 15 | --color-info-content: oklch(13.841% 0.012 332.664); 16 | --color-success: oklch(76.827% 0.074 131.063); 17 | --color-success-content: oklch(15.365% 0.014 131.063); 18 | --color-warning: oklch(85.486% 0.089 84.093); 19 | --color-warning-content: oklch(17.097% 0.017 84.093); 20 | --color-error: oklch(60.61% 0.12 15.341); 21 | --color-error-content: oklch(12.122% 0.024 15.341); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.25rem; 24 | --radius-box: 0.5rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/pastel.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(100% 0 0); 3 | --color-base-200: oklch(98.462% 0.001 247.838); 4 | --color-base-300: oklch(92.462% 0.001 247.838); 5 | --color-base-content: oklch(20% 0 0); 6 | --color-primary: oklch(90% 0.063 306.703); 7 | --color-primary-content: oklch(49% 0.265 301.924); 8 | --color-secondary: oklch(89% 0.058 10.001); 9 | --color-secondary-content: oklch(51% 0.222 16.935); 10 | --color-accent: oklch(90% 0.093 164.15); 11 | --color-accent-content: oklch(50% 0.118 165.612); 12 | --color-neutral: oklch(55% 0.046 257.417); 13 | --color-neutral-content: oklch(92% 0.013 255.508); 14 | --color-info: oklch(86% 0.127 207.078); 15 | --color-info-content: oklch(52% 0.105 223.128); 16 | --color-success: oklch(87% 0.15 154.449); 17 | --color-success-content: oklch(52% 0.154 150.069); 18 | --color-warning: oklch(83% 0.128 66.29); 19 | --color-warning-content: oklch(55% 0.195 38.402); 20 | --color-error: oklch(80% 0.114 19.571); 21 | --color-error-content: oklch(50% 0.213 27.518); 22 | --radius-selector: 1rem; 23 | --radius-field: 2rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 2px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/retro.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(91.637% 0.034 90.515); 3 | --color-base-200: oklch(88.272% 0.049 91.774); 4 | --color-base-300: oklch(84.133% 0.065 90.856); 5 | --color-base-content: oklch(41% 0.112 45.904); 6 | --color-primary: oklch(80% 0.114 19.571); 7 | --color-primary-content: oklch(39% 0.141 25.723); 8 | --color-secondary: oklch(92% 0.084 155.995); 9 | --color-secondary-content: oklch(44% 0.119 151.328); 10 | --color-accent: oklch(68% 0.162 75.834); 11 | --color-accent-content: oklch(41% 0.112 45.904); 12 | --color-neutral: oklch(44% 0.011 73.639); 13 | --color-neutral-content: oklch(86% 0.005 56.366); 14 | --color-info: oklch(58% 0.158 241.966); 15 | --color-info-content: oklch(96% 0.059 95.617); 16 | --color-success: oklch(51% 0.096 186.391); 17 | --color-success-content: oklch(96% 0.059 95.617); 18 | --color-warning: oklch(64% 0.222 41.116); 19 | --color-warning-content: oklch(96% 0.059 95.617); 20 | --color-error: oklch(70% 0.191 22.216); 21 | --color-error-content: oklch(40% 0.123 38.172); 22 | --radius-selector: 0.25rem; 23 | --radius-field: 0.25rem; 24 | --radius-box: 0.5rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/silk.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(97% 0.0035 67.78); 3 | --color-base-200: oklch(95% 0.0081 61.42); 4 | --color-base-300: oklch(90% 0.0081 61.42); 5 | --color-base-content: oklch(40% 0.0081 61.42); 6 | --color-primary: oklch(23.27% 0.0249 284.3); 7 | --color-primary-content: oklch(94.22% 0.2505 117.44); 8 | --color-secondary: oklch(23.27% 0.0249 284.3); 9 | --color-secondary-content: oklch(73.92% 0.2135 50.94); 10 | --color-accent: oklch(23.27% 0.0249 284.3); 11 | --color-accent-content: oklch(88.92% 0.2061 189.9); 12 | --color-neutral: oklch(20% 0 0); 13 | --color-neutral-content: oklch(80% 0.0081 61.42); 14 | --color-info: oklch(80.39% 0.1148 241.68); 15 | --color-info-content: oklch(30.39% 0.1148 241.68); 16 | --color-success: oklch(83.92% 0.0901 136.87); 17 | --color-success-content: oklch(23.92% 0.0901 136.87); 18 | --color-warning: oklch(83.92% 0.1085 80); 19 | --color-warning-content: oklch(43.92% 0.1085 80); 20 | --color-error: oklch(75.1% 0.1814 22.37); 21 | --color-error-content: oklch(35.1% 0.1814 22.37); 22 | --radius-selector: 2rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 2px; 28 | --depth: 1; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/sunset.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(22% 0.019 237.69); 3 | --color-base-200: oklch(20% 0.019 237.69); 4 | --color-base-300: oklch(18% 0.019 237.69); 5 | --color-base-content: oklch(77.383% 0.043 245.096); 6 | --color-primary: oklch(74.703% 0.158 39.947); 7 | --color-primary-content: oklch(14.94% 0.031 39.947); 8 | --color-secondary: oklch(72.537% 0.177 2.72); 9 | --color-secondary-content: oklch(14.507% 0.035 2.72); 10 | --color-accent: oklch(71.294% 0.166 299.844); 11 | --color-accent-content: oklch(14.258% 0.033 299.844); 12 | --color-neutral: oklch(26% 0.019 237.69); 13 | --color-neutral-content: oklch(70% 0.019 237.69); 14 | --color-info: oklch(85.559% 0.085 206.015); 15 | --color-info-content: oklch(17.111% 0.017 206.015); 16 | --color-success: oklch(85.56% 0.085 144.778); 17 | --color-success-content: oklch(17.112% 0.017 144.778); 18 | --color-warning: oklch(85.569% 0.084 74.427); 19 | --color-warning-content: oklch(17.113% 0.016 74.427); 20 | --color-error: oklch(85.511% 0.078 16.886); 21 | --color-error-content: oklch(17.102% 0.015 16.886); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/synthwave.css: -------------------------------------------------------------------------------- 1 | color-scheme: dark; 2 | --color-base-100: oklch(15% 0.09 281.288); 3 | --color-base-200: oklch(20% 0.09 281.288); 4 | --color-base-300: oklch(25% 0.09 281.288); 5 | --color-base-content: oklch(78% 0.115 274.713); 6 | --color-primary: oklch(71% 0.202 349.761); 7 | --color-primary-content: oklch(28% 0.109 3.907); 8 | --color-secondary: oklch(82% 0.111 230.318); 9 | --color-secondary-content: oklch(29% 0.066 243.157); 10 | --color-accent: oklch(75% 0.183 55.934); 11 | --color-accent-content: oklch(26% 0.079 36.259); 12 | --color-neutral: oklch(45% 0.24 277.023); 13 | --color-neutral-content: oklch(87% 0.065 274.039); 14 | --color-info: oklch(74% 0.16 232.661); 15 | --color-info-content: oklch(29% 0.066 243.157); 16 | --color-success: oklch(77% 0.152 181.912); 17 | --color-success-content: oklch(27% 0.046 192.524); 18 | --color-warning: oklch(90% 0.182 98.111); 19 | --color-warning-content: oklch(42% 0.095 57.708); 20 | --color-error: oklch(73.7% 0.121 32.639); 21 | --color-error-content: oklch(23.501% 0.096 290.329); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/valentine.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(97% 0.014 343.198); 3 | --color-base-200: oklch(94% 0.028 342.258); 4 | --color-base-300: oklch(89% 0.061 343.231); 5 | --color-base-content: oklch(52% 0.223 3.958); 6 | --color-primary: oklch(65% 0.241 354.308); 7 | --color-primary-content: oklch(100% 0 0); 8 | --color-secondary: oklch(62% 0.265 303.9); 9 | --color-secondary-content: oklch(97% 0.014 308.299); 10 | --color-accent: oklch(82% 0.111 230.318); 11 | --color-accent-content: oklch(39% 0.09 240.876); 12 | --color-neutral: oklch(40% 0.153 2.432); 13 | --color-neutral-content: oklch(89% 0.061 343.231); 14 | --color-info: oklch(86% 0.127 207.078); 15 | --color-info-content: oklch(44% 0.11 240.79); 16 | --color-success: oklch(84% 0.143 164.978); 17 | --color-success-content: oklch(43% 0.095 166.913); 18 | --color-warning: oklch(75% 0.183 55.934); 19 | --color-warning-content: oklch(26% 0.079 36.259); 20 | --color-error: oklch(63% 0.237 25.331); 21 | --color-error-content: oklch(97% 0.013 17.38); 22 | --radius-selector: 1rem; 23 | --radius-field: 2rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/winter.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(100% 0 0); 3 | --color-base-200: oklch(97.466% 0.011 259.822); 4 | --color-base-300: oklch(93.268% 0.016 262.751); 5 | --color-base-content: oklch(41.886% 0.053 255.824); 6 | --color-primary: oklch(56.86% 0.255 257.57); 7 | --color-primary-content: oklch(91.372% 0.051 257.57); 8 | --color-secondary: oklch(42.551% 0.161 282.339); 9 | --color-secondary-content: oklch(88.51% 0.032 282.339); 10 | --color-accent: oklch(59.939% 0.191 335.171); 11 | --color-accent-content: oklch(11.988% 0.038 335.171); 12 | --color-neutral: oklch(19.616% 0.063 257.651); 13 | --color-neutral-content: oklch(83.923% 0.012 257.651); 14 | --color-info: oklch(88.127% 0.085 214.515); 15 | --color-info-content: oklch(17.625% 0.017 214.515); 16 | --color-success: oklch(80.494% 0.077 197.823); 17 | --color-success-content: oklch(16.098% 0.015 197.823); 18 | --color-warning: oklch(89.172% 0.045 71.47); 19 | --color-warning-content: oklch(17.834% 0.009 71.47); 20 | --color-error: oklch(73.092% 0.11 20.076); 21 | --color-error-content: oklch(14.618% 0.022 20.076); 22 | --radius-selector: 1rem; 23 | --radius-field: 0.5rem; 24 | --radius-box: 1rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/themes/wireframe.css: -------------------------------------------------------------------------------- 1 | color-scheme: light; 2 | --color-base-100: oklch(100% 0 0); 3 | --color-base-200: oklch(97% 0 0); 4 | --color-base-300: oklch(94% 0 0); 5 | --color-base-content: oklch(20% 0 0); 6 | --color-primary: oklch(87% 0 0); 7 | --color-primary-content: oklch(26% 0 0); 8 | --color-secondary: oklch(87% 0 0); 9 | --color-secondary-content: oklch(26% 0 0); 10 | --color-accent: oklch(87% 0 0); 11 | --color-accent-content: oklch(26% 0 0); 12 | --color-neutral: oklch(87% 0 0); 13 | --color-neutral-content: oklch(26% 0 0); 14 | --color-info: oklch(44% 0.11 240.79); 15 | --color-info-content: oklch(90% 0.058 230.902); 16 | --color-success: oklch(43% 0.095 166.913); 17 | --color-success-content: oklch(90% 0.093 164.15); 18 | --color-warning: oklch(47% 0.137 46.201); 19 | --color-warning-content: oklch(92% 0.12 95.746); 20 | --color-error: oklch(44% 0.177 26.899); 21 | --color-error-content: oklch(88% 0.062 18.334); 22 | --radius-selector: 0rem; 23 | --radius-field: 0.25rem; 24 | --radius-box: 0.25rem; 25 | --size-selector: 0.25rem; 26 | --size-field: 0.25rem; 27 | --border: 1px; 28 | --depth: 0; 29 | --noise: 0; 30 | -------------------------------------------------------------------------------- /packages/daisyui/src/utilities/glass.css: -------------------------------------------------------------------------------- 1 | .glass { 2 | border: none; 3 | backdrop-filter: blur(var(--glass-blur, 40px)); 4 | background-color: #0000; 5 | background-image: 6 | linear-gradient( 7 | 135deg, 8 | oklch(100% 0 0 / var(--glass-opacity, 30%)) 0%, 9 | oklch(0% 0 0 / 0%) 100% 10 | ), 11 | linear-gradient( 12 | var(--glass-reflect-degree, 100deg), 13 | oklch(100% 0 0 / var(--glass-reflect-opacity, 5%)) 25%, 14 | oklch(0% 0 0 / 0%) 25% 15 | ); 16 | box-shadow: 17 | 0 0 0 1px oklch(100% 0 0 / var(--glass-border-opacity, 20%)) inset, 18 | 0 0 0 2px oklch(0% 0 0 / 5%); 19 | text-shadow: 0 1px oklch(0% 0 0 / var(--glass-text-shadow-opacity, 5%)); 20 | } 21 | -------------------------------------------------------------------------------- /packages/daisyui/src/utilities/typography.css: -------------------------------------------------------------------------------- 1 | :root .prose { 2 | --tw-prose-body: color-mix(in oklab, var(--color-base-content) 80%, #0000); 3 | --tw-prose-headings: var(--color-base-content); 4 | --tw-prose-lead: var(--color-base-content); 5 | --tw-prose-links: var(--color-base-content); 6 | --tw-prose-bold: var(--color-base-content); 7 | --tw-prose-counters: var(--color-base-content); 8 | --tw-prose-bullets: color-mix(in oklab, var(--color-base-content) 50%, #0000); 9 | --tw-prose-hr: color-mix(in oklab, var(--color-base-content) 20%, #0000); 10 | --tw-prose-quotes: var(--color-base-content); 11 | --tw-prose-quote-borders: color-mix(in oklab, var(--color-base-content) 20%, #0000); 12 | --tw-prose-captions: color-mix(in oklab, var(--color-base-content) 50%, #0000); 13 | --tw-prose-code: var(--color-base-content); 14 | --tw-prose-pre-code: var(--color-neutral-content); 15 | --tw-prose-pre-bg: var(--color-neutral); 16 | --tw-prose-th-borders: color-mix(in oklab, var(--color-base-content) 50%, #0000); 17 | --tw-prose-td-borders: color-mix(in oklab, var(--color-base-content) 20%, #0000); 18 | --tw-prose-kbd: color-mix(in oklab, var(--color-base-content) 80%, #0000); 19 | :where(code):not(pre > code) { 20 | background-color: var(--color-base-200); 21 | border-radius: var(--radius-selector); 22 | border: var(--border) solid var(--color-base-300); 23 | padding-inline: 0.5em; 24 | font-weight: inherit; 25 | &:before, 26 | &:after { 27 | display: none; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /packages/docs/.env.production: -------------------------------------------------------------------------------- 1 | PUBLIC_DAISYUI_API_PATH=https://api.daisyui.com 2 | -------------------------------------------------------------------------------- /packages/docs/.gitignore: -------------------------------------------------------------------------------- 1 | .svelte-kit 2 | .env.local 3 | /build 4 | -------------------------------------------------------------------------------- /packages/docs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "private": true, 4 | "name": "daisyui-docs", 5 | "engines": { 6 | "node": ">=20.18.1" 7 | }, 8 | "scripts": { 9 | "dev": "vite dev --port 3000 --open", 10 | "build": "NODE_ENV=production vite build --logLevel error", 11 | "preview": "bun run --bun build && vite preview --port 3000 --open", 12 | "stats": "open build/stats.html", 13 | "langdiff": "bun src/lib/scripts/compare-translate-files.js" 14 | }, 15 | "devDependencies": { 16 | "@jsdevtools/rehype-toc": "3.0.2", 17 | "@shikijs/transformers": "3.2.1", 18 | "@sveltejs/adapter-static": "3.0.8", 19 | "@sveltejs/kit": "2.20.2", 20 | "@sveltejs/vite-plugin-svelte": "5.0.3", 21 | "@tailwindcss/typography": "0.5.16", 22 | "daisyui": "workspace:*", 23 | "json-diff": "1.0.6", 24 | "mdsvex": "0.12.3", 25 | "rehype-external-links": "3.0.0", 26 | "rehype-slug": "6.0.0", 27 | "remark-flexible-code-titles": "1.2.0", 28 | "remark-github": "12.0.0", 29 | "remark-parse": "11.0.0", 30 | "rollup-plugin-visualizer": "5.14.0", 31 | "shiki": "3.2.1", 32 | "super-sitemap": "^1.0.3", 33 | "svelte": "5.25.6", 34 | "svelte-typeahead": "5.0.0", 35 | "theme-change": "2.5.0", 36 | "unist-util-visit": "5.0.0", 37 | "vite": "6.2.4" 38 | }, 39 | "dependencies": { 40 | "@minimal-analytics/ga4": "1.8.7", 41 | "@neoconfetti/svelte": "^2.2.2", 42 | "culori": "4.0.1", 43 | "js-yaml": "4.1.0", 44 | "pako": "2.1.0", 45 | "svelte-countdown": "1.1.2", 46 | "svelte-countup": "0.2.8" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /packages/docs/project.inlang/project_id: -------------------------------------------------------------------------------- 1 | c47c49157aca9b17424b022896bf15450334e186e57991fdf869dcaf67b8fdbf -------------------------------------------------------------------------------- /packages/docs/project.inlang/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://inlang.com/schema/project-settings", 3 | "sourceLanguageTag": "en", 4 | "languageTags": [ 5 | "en", 6 | "ar", 7 | "ca", 8 | "de", 9 | "es", 10 | "fa", 11 | "fr", 12 | "id", 13 | "it", 14 | "ja", 15 | "ko", 16 | "ms", 17 | "pl", 18 | "pt", 19 | "ru", 20 | "uk", 21 | "vi", 22 | "zh-hans", 23 | "zh-hant" 24 | ], 25 | "modules": [ 26 | "https://cdn.jsdelivr.net/npm/@inlang/plugin-json@4/dist/index.js", 27 | "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-empty-pattern@1/dist/index.js", 28 | "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-identical-pattern@1/dist/index.js", 29 | "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-without-source@1/dist/index.js", 30 | "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-missing-translation@1/dist/index.js" 31 | ], 32 | "plugin.inlang.json": { 33 | "pathPattern": "./src/translation/{languageTag}.json", 34 | "variableReferencePattern": [ 35 | "{", 36 | "}" 37 | ] 38 | } 39 | } -------------------------------------------------------------------------------- /packages/docs/src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | %sveltekit.head% 12 | 18 | 19 | 24 | 29 | 33 | 34 | 39 | 45 | 50 | 51 | 52 |
%sveltekit.body%
53 | 54 | 55 | -------------------------------------------------------------------------------- /packages/docs/src/components/AlternativeSidebar.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |
7 |
8 | {#if import.meta.env.DEV} 9 |
12 |
Ads
13 |
14 | {:else} 15 |
16 | 17 |
18 | {/if} 19 |
20 |
21 | -------------------------------------------------------------------------------- /packages/docs/src/components/Carbon.svelte: -------------------------------------------------------------------------------- 1 | 26 | 27 |
28 | -------------------------------------------------------------------------------- /packages/docs/src/components/PrefixEdit.svelte: -------------------------------------------------------------------------------- 1 | 16 | 17 |
18 | 30 |
31 | -------------------------------------------------------------------------------- /packages/docs/src/components/Translate.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | {@html $t(text, variables)} 7 | -------------------------------------------------------------------------------- /packages/docs/src/components/themegenerator/ThemeListItem.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
  • 6 | 33 |
  • 34 | -------------------------------------------------------------------------------- /packages/docs/src/lib/data/courses.js: -------------------------------------------------------------------------------- 1 | export const courses = [ 2 | { 3 | title: "Tailwind + DaisyUI", 4 | site: "Fireship.io", 5 | link: "https://fireship.io/courses/sveltekit/setup-tailwind/", 6 | }, 7 | { 8 | title: "Building with SvelteKit and GraphCMS - Styling with Tailwind and DaisyUI", 9 | site: "Netlify", 10 | link: "https://explorers.netlify.com/learn/building-with-sveltekit-and-graphcms/styling-with-tailwind-and-daisyui", 11 | }, 12 | { 13 | title: "Svelte for Beginners by Mike Karan", 14 | site: "Udemy", 15 | link: "https://www.udemy.com/course/svelte-for-beginners/", 16 | }, 17 | { 18 | title: "React Front To Back 2022 by Brad Traversy", 19 | site: "Udemy", 20 | link: "https://www.udemy.com/course/react-front-to-back-2022/", 21 | }, 22 | { 23 | title: "Build Instagram profile page UI clone w/Next.js TailwindCSS", 24 | site: "Udemy", 25 | link: "https://www.udemy.com/course/build-instagram-profile-page-ui-clone-nextjs-tailwindcss/", 26 | }, 27 | { 28 | title: "Instagram UI Clone Login Page w/ NextJS & TailwindCSS", 29 | site: "Udemy", 30 | link: "https://www.udemy.com/course/instagram-ui-clone-login-page-w-nextjs-tailwindcss/", 31 | }, 32 | { 33 | title: "Build your Developer Portfolio and Blog from Scratch with Svelte and GraphCMS", 34 | site: "freeCodeCamp", 35 | link: "https://www.freecodecamp.org/news/build-your-developer-portfolio-from-scratch-with-sveltekit-and-graphcms/", 36 | }, 37 | { 38 | title: "Building a React Admin Panel with refine and daisyUI", 39 | site: "Refine.dev", 40 | link: "https://refine.dev/blog/daisy-ui-react-admin-panel/", 41 | }, 42 | ] 43 | -------------------------------------------------------------------------------- /packages/docs/src/lib/data/stats.js: -------------------------------------------------------------------------------- 1 | export const stats = { 2 | components: "61", 3 | utilities: "500+", 4 | themes: "35", 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/lib/mdsvex/layout-blog.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 |
    12 | {#if thumbnail} 13 |
    14 | {title} 20 |
    21 | {/if} 22 |
    23 |
    24 | 25 | Published {timeago(date)} 26 | 27 | {#if author} 28 | by 29 | 30 | {author} 31 | 32 | {/if} 33 |
    34 | {#if title} 35 |

    {title}

    36 | {/if} 37 | {#if desc} 38 |

    {desc}

    39 | {/if} 40 | {@render children?.()} 41 |
    42 | {#if published && tags} 43 |
    44 | Tags: 45 | {#each tags as tag} 46 | 47 | {tag} 48 | 49 | {/each} 50 |
    51 | {/if} 52 |
    53 | -------------------------------------------------------------------------------- /packages/docs/src/lib/mdsvex/layout-docs.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
    17 |
    20 | {#if title} 21 |

    {@html $t(title)}

    22 | {/if} 23 | {#if desc} 24 |

    {@html $t(desc)}

    25 | {/if} 26 | {#if alert} 27 |
    28 | {alert} 29 |
    30 | {/if} 31 | {@render children?.()} 32 | 33 |
    34 | 35 |
    36 | -------------------------------------------------------------------------------- /packages/docs/src/lib/mediaQuery.js: -------------------------------------------------------------------------------- 1 | import { onMount } from "svelte" 2 | import { writable } from "svelte/store" 3 | 4 | export function useMediaQuery(query) { 5 | let mediaQuery = undefined 6 | const matches = writable(false) 7 | 8 | const update = () => { 9 | if (!mediaQuery) mediaQuery = window.matchMedia(query) 10 | matches.set(mediaQuery.matches) 11 | } 12 | 13 | onMount(() => { 14 | update() 15 | 16 | if (!mediaQuery) return 17 | 18 | if ("addEventListener" in mediaQuery) mediaQuery.addEventListener("change", update) 19 | else mediaQuery.addListener(update) 20 | 21 | return () => { 22 | if ("removeEventListener" in mediaQuery) mediaQuery.removeEventListener("change", update) 23 | else mediaQuery.removeListener(update) 24 | } 25 | }) 26 | 27 | return matches 28 | } 29 | -------------------------------------------------------------------------------- /packages/docs/src/lib/scripts/compare-translate-files.js: -------------------------------------------------------------------------------- 1 | import fs from "node:fs" 2 | import { diffString } from "json-diff" 3 | 4 | const translationDir = "src/translation" 5 | 6 | // Read all files from translation directory and filter out en.json 7 | fs.readdir(translationDir, (err, files) => { 8 | if (err) { 9 | console.error(err) 10 | return 11 | } 12 | 13 | const langs = files 14 | .filter((file) => file.endsWith(".json") && file !== "en.json") 15 | .map((file) => file.replace(".json", "")) 16 | 17 | for (const lang of langs) { 18 | fs.readFile("src/translation/en.json", "utf8", (err1, file1) => { 19 | if (err1) { 20 | console.error(err1) 21 | return 22 | } 23 | fs.readFile(`src/translation/${lang}.json`, "utf8", (err2, file2) => { 24 | if (err2) { 25 | console.error(err2) 26 | return 27 | } 28 | const diff = diffString(JSON.parse(file1), JSON.parse(file2), { 29 | keysOnly: true, 30 | }) 31 | if (diff) { 32 | console.log(`EN 🆚 ${lang.toUpperCase()}\n${diff}`) 33 | } 34 | }) 35 | }) 36 | } 37 | }) 38 | -------------------------------------------------------------------------------- /packages/docs/src/lib/stores.js: -------------------------------------------------------------------------------- 1 | import { writable } from "svelte/store" 2 | 3 | export const prefix = writable("") 4 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/codepen/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "https://codepen.io/pen?template=BaqgrNP&editors=1000") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/components/artboard/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "/docs/upgrade/") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/components/bottom-navigation/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "/components/dock/") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/components/button-group/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "/components/join/") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/components/input-group/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "/components/join/") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/discord/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "https://discord.gg/S6TZxycVHs") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/docs/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "/docs/install/") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/docs/default-themes/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "/docs/themes/") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/docs/migrate/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "/docs/v5/") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/docs/v5-beta/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "/docs/v5/") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/installation/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "/docs/install/") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/resources/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "https://daisyui.com/resources/videos/") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/stackblitz/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "https://stackblitz.com/edit/daisyui5") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(redirects)/tailwindplay/+page.server.js: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | import { redirect } from "@sveltejs/kit" 3 | export function load() { 4 | redirect(301, "https://play.tailwindcss.com/L2yalFmJcY") 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/(frameworks)/+layout.server.js: -------------------------------------------------------------------------------- 1 | import { PUBLIC_DAISYUI_API_PATH } from "$env/static/public" 2 | import yaml from "js-yaml" 3 | 4 | async function fetchFrameworksData() { 5 | try { 6 | const response = await fetch(`${PUBLIC_DAISYUI_API_PATH}/data/frameworks.yaml`) 7 | 8 | if (!response.ok) { 9 | throw new Error(`Failed to fetch data: ${response.status}`) 10 | } 11 | 12 | const yamlFile = await response.text() 13 | return yaml.load(yamlFile) 14 | } catch (err) { 15 | console.error("Error fetching data:", err) 16 | return null 17 | } 18 | } 19 | 20 | export async function load() { 21 | const frameworksData = await fetchFrameworksData() 22 | const testimonialsResponse = await fetch("https://img.daisyui.com/generated/testimonials.json") 23 | const testimonials = await testimonialsResponse.json() 24 | 25 | return { 26 | testimonials, 27 | frameworksData: frameworksData.map(({ name, logo }) => ({ name, logo })), 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/+layout.server.js: -------------------------------------------------------------------------------- 1 | import themes from "daisyui/functions/themeOrder" 2 | import { pages, pagesThatDontNeedSidebar } from "$lib/data/pages.js" 3 | 4 | import { version } from "daisyui/package.json" 5 | 6 | export async function load() { 7 | return { 8 | pagesThatDontNeedSidebar, 9 | pages, 10 | themes, 11 | daisyuiVersion: version, 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/+page.server.js: -------------------------------------------------------------------------------- 1 | import { stats } from "$lib/data/stats.js" 2 | 3 | export async function load() { 4 | const testimonialsResponse = await fetch("https://img.daisyui.com/generated/testimonials.json") 5 | const testimonials = await testimonialsResponse.json() 6 | return { 7 | testimonials, 8 | stats, 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/blog/(posts)/daisyui-logo/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: New daisyUI logo! 3 | desc: "I've been working on a new logo for daisyUI for a long time. Here's the new logo!" 4 | published: true 5 | date: 2025-04-21 6 | author: Pouya Saadeghi 7 | thumbnail: https://img.daisyui.com/images/daisyui/wallpaper-black.png 8 | tags: 9 | - News 10 | --- 11 | 12 | 15 | 16 | Today we're having a brand refresh for daisyUI! 17 | 18 |
    19 | daisyUI logo 27 |
    28 | 29 | The new logo moves away from the minimal geometric shapes and focuses on a more playful and friendly design. I've been picky about the logo for a long time, and I think this new design represents daisyUI in a more accurate way. 30 | 31 | [Here you can get the files in PNG and SVG formats](/brand/). And if you're using daisyUI logo in your project, please consider using the new logo. 32 | 33 | Join our [Discord](/discord/) to talk about the new logo and share your feedback. I would love to hear your thoughts! 34 | 35 |
    36 | daisyUI logo 44 |
    45 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/blog/(posts)/discord/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "daisyUI is now on Discord!" 3 | desc: "Finally we have a Discord server for daisyUI!" 4 | published: true 5 | date: 2024-02-07 6 | author: Pouya Saadeghi 7 | thumbnail: https://img.daisyui.com/images/blog/daisyui-discord.webp 8 | tags: 9 | - News 10 | --- 11 | 12 | 15 | 16 | For a long time [GitHub discussions](https://github.com/saadeghi/daisyui/discussions) was the only place to ask questions and connect with other daisyUI developers. sharing ideas and getting help. I still see GitHub discussions as a great place for long-term discussions and feature requests because it's easy to search and find old discussions, it's integrated with the codebase and more importantly it's open to public and indexed by search engines. 17 | 18 | And from the beginning people were asking for a Discord server. I was trying to avoid it because I didn't want to spread the community across multiple platforms. But the truth is GitHub discussions is not a good place for real-time casual conversations. 19 | 20 | Starting today, I'm opening [a Discord server for daisyUI](https://daisyui.com/discord/). Join us to get help, share your projects and discuss daisyUI. 21 | 22 | GitHub issues are still the only place to report bugs. Please don't report bugs in Discord. 23 | And GitHub discussions are still the best place for long-term, organized discussions and feature requests. 24 | 25 | [Join daisyUI Discord server →](https://daisyui.com/discord/) 26 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/blog/+layout.server.js: -------------------------------------------------------------------------------- 1 | export async function load() { 2 | const allTags = await Promise.all( 3 | Object.entries(import.meta.glob("./[(]posts[)]/*/+page.md")).map(async ([_path, resolver]) => { 4 | const { metadata } = await resolver() 5 | if (!metadata.published) { 6 | return {} 7 | } 8 | return { 9 | ...metadata.tags, 10 | } 11 | }), 12 | ) 13 | 14 | const tags = [] 15 | 16 | for (const obj of allTags) { 17 | for (const key in obj) { 18 | const value = obj[key] 19 | if (!tags.includes(value)) { 20 | tags.push(value) 21 | } 22 | } 23 | } 24 | 25 | return { 26 | tags, 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/blog/+page.server.js: -------------------------------------------------------------------------------- 1 | import { dirname } from "node:path" 2 | 3 | export async function load() { 4 | let posts = await Promise.all( 5 | Object.entries(import.meta.glob("./[(]posts[)]/*/+page.md")).map(async ([path, resolver]) => { 6 | const { metadata } = await resolver() 7 | const slug = dirname(path).split("/").pop() 8 | if (!metadata.published) { 9 | return {} 10 | } 11 | return { 12 | slug, 13 | ...metadata, 14 | } 15 | }), 16 | ) 17 | 18 | // filter out empty objects 19 | posts = posts.filter((obj) => Object.keys(obj).length !== 0) 20 | 21 | // sort by date 22 | posts = posts.sort((a, b) => new Date(b.date) - new Date(a.date)) 23 | 24 | return { 25 | posts, 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/blog/+page.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | {#if posts.length === 0} 13 |
    16 |

    Coming soon

    17 |
    18 | {/if} 19 | 46 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/blog/tag/[tag]/+page.server.js: -------------------------------------------------------------------------------- 1 | import { error } from "@sveltejs/kit" 2 | import { dirname } from "node:path" 3 | 4 | export async function load({ params }) { 5 | // Explicitly reference params.tag to ensure reactivity 6 | const currentTag = params.tag 7 | 8 | let posts = await Promise.all( 9 | Object.entries(import.meta.glob("./../../[(]posts[)]/*/+page.md")).map( 10 | async ([path, resolver]) => { 11 | const { metadata } = await resolver() 12 | const slug = dirname(path).split("/").pop() 13 | if (!metadata.published) { 14 | return {} 15 | } 16 | return { 17 | slug, 18 | ...metadata, 19 | } 20 | }, 21 | ), 22 | ) 23 | 24 | // Filter posts by the current tag 25 | posts = posts.filter((item) => { 26 | if (!item.tags) return false 27 | const normalizedTags = item.tags.map((tag) => tag.replace(/ /g, "-").toLowerCase()) 28 | return normalizedTags.includes(currentTag) // Use referenced tag 29 | }) 30 | 31 | posts = posts.filter((obj) => Object.keys(obj).length !== 0) 32 | posts = posts.sort((a, b) => new Date(b.date) - new Date(a.date)) 33 | 34 | if (posts.length === 0) { 35 | error(404, "Not found") 36 | } 37 | return { 38 | params: { tag: currentTag }, // Explicitly return the tag 39 | posts, 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/blog/tag/[tag]/+page.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 10 | 37 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/components/+layout.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | {@render children?.()} 7 | 8 | {#if $page.url.pathname == "/components/modal/"} 9 | 10 | 19 | 20 | 21 | 30 | 31 | 41 | {/if} 42 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/components/+page.server.js: -------------------------------------------------------------------------------- 1 | import { dirname } from "node:path" 2 | 3 | export async function load() { 4 | const components = await Promise.all( 5 | Object.entries(import.meta.glob("./*/+page.md")).map(async ([path, resolver]) => { 6 | const { metadata } = await resolver() 7 | const slug = dirname(path).split("/").pop() 8 | return { ...metadata, slug } 9 | }), 10 | ) 11 | 12 | return { 13 | components, 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/components/+page.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 |
    12 |
    13 |
    14 |

    15 |

    {Object.keys(components).length}

    16 |
    17 |
    20 | {#each components as { slug, title, desc }} 21 | 25 |
    26 | {title} 32 |
    33 |
    34 |

    35 |

    36 |
    37 |
    38 | {/each} 39 |
    40 |
    41 | 42 |
    43 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/components/button/accessibility/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | alert: This page is not up to date. Some of the examples might not work as expected. 3 | title: Button 4 | desc: Buttons allow the user to take actions or make choices. 5 | layout: components 6 | showComponentPageTabs: true 7 | --- 8 | 9 | 12 | 13 | soon 14 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/components/mockup-browser/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Browser mockup 3 | desc: Browser mockup shows a box that looks like a browser window. 4 | layout: components 5 | classnames: 6 | component: 7 | - class: mockup-browser 8 | desc: Browser mockup 9 | part: 10 | - class: mockup-browser-toolbar 11 | desc: Toolbar part which can include addressbar, etc 12 | --- 13 | 14 | 18 | 19 | ### ~browser mockup with border 20 |
    21 |
    22 |
    https://daisyui.com
    23 |
    24 |
    Hello!
    25 |
    26 | 27 | ```html 28 |
    29 |
    30 |
    https://daisyui.com
    31 |
    32 |
    Hello!
    33 |
    34 | ``` 35 | 36 | 37 | ### ~browser mockup with background color 38 |
    39 |
    40 |
    https://daisyui.com
    41 |
    42 |
    Hello!
    43 |
    44 | 45 | ```html 46 |
    47 |
    48 |
    https://daisyui.com
    49 |
    50 |
    Hello!
    51 |
    52 | ``` 53 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/components/mockup-phone/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Phone mockup 3 | desc: Phone mockup shows a mockup of an iPhone. 4 | layout: components 5 | classnames: 6 | component: 7 | - class: mockup-phone 8 | desc: Phone mockup 9 | part: 10 | - class: mockup-phone-camera 11 | desc: Camera part 12 | - class: mockup-phone-display 13 | desc: Display part 14 | --- 15 | 16 | 20 | 21 | ### ~iPhone mockup 22 |
    23 |
    24 |
    It's Glowtime.
    25 |
    26 | 27 | ```html 28 |
    29 |
    30 |
    It's Glowtime.
    31 |
    32 | ``` 33 | 34 | 35 | ### ~With color and wallpaper 36 |
    37 |
    38 |
    39 | wallpaper 40 |
    41 |
    42 | 43 | ```html 44 |
    45 |
    46 |
    47 | wallpaper 48 |
    49 |
    50 | ``` 51 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/components/mockup-window/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Window mockup 3 | desc: Window mockup shows a box that looks like an operating system window. 4 | layout: components 5 | classnames: 6 | component: 7 | - class: mockup-window 8 | desc: OS window mockup 9 | --- 10 | 11 | 15 | 16 | ### ~window mockup with border 17 |
    18 |
    Hello!
    19 |
    20 | 21 | ```html 22 |
    23 |
    Hello!
    24 |
    25 | ``` 26 | 27 | 28 | ### ~window mockup with background color 29 |
    30 |
    Hello!
    31 |
    32 | 33 | ```html 34 |
    35 |
    Hello!
    36 |
    37 | ``` 38 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/+layout.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | {@render children?.()} 6 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/changelog/+page.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 |
    10 | 11 |
    12 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/customize/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Customize daisyUI components 3 | desc: How to customize daisyUI? 4 | --- 5 | 6 | 9 | 10 |

    11 | 12 |

    13 | 14 | - 15 | 16 | ```html 17 | 18 | ``` 19 | 20 | 21 | 22 | 1. 23 | 24 | ```html 25 | 26 | 27 | 28 | ``` 29 | 30 | 31 | 32 | 33 | 34 | 2. 35 | 36 | ```html 37 | 38 | 39 | ``` 40 | 41 | 42 | 43 | 44 | 3. 45 | 46 | ```postcss 47 | @utility btn { 48 | @apply rounded-full; 49 | } 50 | ``` 51 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/editor/chatgpt/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ChatGPT setup for daisyUI 3 | desc: Setup ChatGPT to correctly generate daisyUI code based on your prompt. 4 | --- 5 | 6 | 9 | 10 | ## ChatGPT ChatGPT LLM setup 11 | 12 | ### Quick use 13 | 14 | [daisyui.com/llms.txt](https://daisyui.com/llms.txt) file is a compact, text version of daisyUI docs to help AI generate accurate daisyUI code based on your prompt. 15 | 16 | In Chat window, enable `🌐 Search` feature, and add this before your prompt: 17 | 18 | ```md:prompt 19 | https://daisyui.com/llms.txt 20 | ``` 21 | 22 | For example: 23 | 24 | ```md:prompt 25 | https://daisyui.com/llms.txt give me a light daisyUI 5 theme with tropical color palette 26 | ``` 27 | 28 | ### MCP server 29 | 30 | coming soon… 31 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/editor/claude/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Claude desktop setup for daisyUI 3 | desc: Setup Claude desktop to correctly generate daisyUI code based on your prompt. 4 | --- 5 | 6 | 9 | 10 | ## Claude Claude desktop LLM setup 11 | 12 | ### Quick use 13 | 14 | coming soon… 15 | 16 | ### MCP server 17 | 18 | MCP is a an API to communicate with AI models. You can add MCP servers and Claude will communicate with them to get more accurate results. 19 | 20 | I suggest using [Context7](https://context7.com/) [MCP server](https://github.com/upstash/context7-mcp) which provides many libraries including daisyUI. 21 | 22 | 1. Go to Settings > Developer 23 | 2. Click `Edit Config` button 24 | 3. Add this to the config file: 25 | 26 | ```diff:claude_desktop_config.json 27 | { 28 | "mcpServers": { 29 | + "Context7": { 30 | + "type": "stdio", 31 | + "command": "npx", 32 | + "args": ["-y", "@upstash/context7-mcp@latest"] 33 | + } 34 | } 35 | } 36 | ``` 37 | 38 | 4. Now you can ask AI anything about daisyUI, and write `use context7` at the end of your prompt. 39 | For example: 40 | ```md:prompt 41 | give me a light daisyUI 5 theme with tropical color palette. use context7 42 | ``` 43 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/editor/cline/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Cline setup for daisyUI 3 | desc: Setup Cline VSCode extension to correctly generate daisyUI code based on your prompt. 4 | --- 5 | 6 | 9 | 10 | ## Cline VSCode extension Cline VSCode extension 11 | 12 | [daisyui.com/llms.txt](https://daisyui.com/llms.txt) file is a compact, text version of daisyUI docs to help AI generate accurate daisyUI code based on your prompt. 13 | Here's how to use daisyUI llms.txt in Cline: 14 | 15 | ### Quick use 16 | 17 | In chat window type this before your prompt and Cline will use daisyUI's llms.txt file to generate code. 18 | 19 | ```md:prompt 20 | https://daisyui.com/llms.txt 21 | ``` 22 | 23 | ### Project-level permanent setup 24 | 25 | You can setup daisyUI's llms.txt file to your repo so Cline can use it by default. 26 | 27 | Run this command to save the llms.txt file to `.clinerules/daisyui.md` 28 | 29 | ```sh:Terminal 30 | curl -L https://daisyui.com/llms.txt --create-dirs -o .clinerules/daisyui.md 31 | ``` 32 | 33 | ### MCP server 34 | 35 | MCP is a an API to communicate with AI models. You can add MCP servers and Copilot will communicate with them to get more accurate results. 36 | 37 | I suggest using [Context7](https://context7.com/) [MCP server](https://github.com/upstash/context7-mcp) which provides many libraries including daisyUI. 38 | 39 | 1. Install `Context7` from Cline MCP marketplace 40 | 2. Now can ask AI anything about daisyUI, and write `use context7` at the end of your prompt. 41 | For example: 42 | 43 | ```md:prompt 44 | give me a light daisyUI 5 theme with tropical color palette. use context7 45 | ``` 46 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/editor/gemini/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gemini setup for daisyUI 3 | desc: Setup Gemini to correctly generate daisyUI code based on your prompt. 4 | --- 5 | 6 | 9 | 10 | ## Gemini Gemini LLM setup 11 | 12 | ### Quick use 13 | 14 | [daisyui.com/llms.txt](https://daisyui.com/llms.txt) file is a compact, text version of daisyUI docs to help AI generate accurate daisyUI code based on your prompt. 15 | 16 | In Chat window, enable `🔍 Deep research` feature, and add this before your prompt: 17 | 18 | ```md:prompt 19 | https://daisyui.com/llms.txt 20 | ``` 21 | 22 | For example: 23 | 24 | ```md:prompt 25 | https://daisyui.com/llms.txt give me a light daisyUI 5 theme with tropical color palette 26 | ``` 27 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/editor/grok/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Grok setup for daisyUI 3 | desc: Setup Grok to correctly generate daisyUI code based on your prompt. 4 | --- 5 | 6 | 9 | 10 | ## Grok Grok LLM setup 11 | 12 | ### Quick use 13 | 14 | [daisyui.com/llms.txt](https://daisyui.com/llms.txt) file is a compact, text version of daisyUI docs to help AI generate accurate daisyUI code based on your prompt. 15 | 16 | #### Through Deep Search 17 | 18 | In Chat window, enable `꩜ Deep Search` feature, and add this before your prompt: 19 | 20 | ```md:prompt 21 | https://daisyui.com/llms.txt 22 | ``` 23 | 24 | For example: 25 | 26 | ```md:prompt 27 | https://daisyui.com/llms.txt give me a light daisyUI 5 theme with tropical color palette 28 | ``` 29 | 30 | #### Through Workspace (SuperGrok Only) 31 | 32 | This method gives much faster result as you don't need the `꩜ Deep Search` feature. 33 | 34 | You can create a dedicated `Workspace` where you can upload the `llms.txt` file. To download the file, visit [https://daisyui.com/llms.txt](https://daisyui.com/llms.txt), right-click, and select "Save As...". Once downloaded, upload the file as an attachment in the Grok Workspace. 35 | 36 | From then on, every conversation in this Workspace will have access to the daisyUI documentation. 37 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/+layout.server.js: -------------------------------------------------------------------------------- 1 | import { PUBLIC_DAISYUI_API_PATH } from "$env/static/public" 2 | import yaml from "js-yaml" 3 | 4 | export async function load() { 5 | try { 6 | const response = await fetch(`${PUBLIC_DAISYUI_API_PATH}/data/frameworks.yaml`) 7 | 8 | if (!response.ok) { 9 | throw new Error(`Failed to fetch frameworks: ${response.status}`) 10 | } 11 | 12 | const yamlFile = await response.text() 13 | const frameworks = yaml.load(yamlFile) 14 | 15 | return { 16 | frameworks, 17 | } 18 | } catch (error) { 19 | console.error("Error loading frameworks:", error) 20 | return { 21 | frameworks: [], 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/angular/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Angular 3 | desc: How to install Tailwind CSS and daisyUI in a Angular project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Angular project 11 | 12 | Install Angular CLI globally 13 | 14 | ```sh:Terminal 15 | npm install -g @angular/cli@latest 16 | ``` 17 | 18 | Create a new Angular project called `my-project` and navigate to it 19 | 20 | ```sh:Terminal 21 | ng new my-project --style css 22 | cd my-project 23 | ``` 24 | 25 | ### 2. Install Tailwind CSS, PostCSS, and daisyUI 26 | 27 | ```sh:Terminal 28 | npm install daisyui@latest tailwindcss@latest @tailwindcss/postcss@latest postcss@latest --force 29 | ``` 30 | 31 | Add Tailwind CSS plugin for PostCSS to a new `.postcssrc.json` file at root 32 | 33 | ```json:.postcssrc.json 34 | { 35 | "plugins": { 36 | "@tailwindcss/postcss": {} 37 | } 38 | } 39 | ``` 40 | 41 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 42 | 43 | ```postcss:src/styles.css 44 | @import "tailwindcss"; 45 | @plugin "daisyui"; 46 | ``` 47 | 48 | Run the Angular development server 49 | ```sh:Terminal 50 | ng serve 51 | ``` 52 | 53 | Now you can use daisyUI class names! 54 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/astro/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Astro 3 | desc: How to install Tailwind CSS and daisyUI in a Astro project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Astro project 11 | 12 | Create a new Astro project in the current directory 13 | 14 | ```sh:Terminal 15 | npm create astro@latest ./ 16 | ``` 17 | 18 | ### 2. Install Tailwind CSS and daisyUI 19 | 20 | ```sh:Terminal 21 | npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest 22 | ``` 23 | 24 | Add Tailwind CSS to Astro config 25 | 26 | ```js:astro.config.mjs 27 | // @ts-check 28 | import { defineConfig } from "astro/config"; 29 | import tailwindcss from "@tailwindcss/vite"; 30 | 31 | export default defineConfig({ 32 | vite: { 33 | plugins: [tailwindcss()], 34 | }, 35 | }); 36 | ``` 37 | 38 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 39 | 40 | ```postcss:src/assets/app.css 41 | @import "tailwindcss"; 42 | @plugin "daisyui"; 43 | ``` 44 | 45 | Import the CSS file on top of your astro Layout file 46 | ```js:src/layouts/Layout.astro 47 | --- 48 | import "../assets/app.css"; 49 | --- 50 | ``` 51 | 52 | Now you can use daisyUI class names! 53 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/bun/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Use daisyUI in a Bun dev server 3 | desc: How to use Tailwind CSS and daisyUI in a Bun dev server 4 | --- 5 | 6 | 9 | 10 | Using Bun 1.2.4+ you can serve HTML and CSS files directly in a [dev server](https://bun.sh/docs/bundler/fullstack). Here's how to setup daisyUI for it. 11 | 12 | ### 1. Create a new Bun project 13 | 14 | Create a new Bun project in the current directory 15 | 16 | ```sh:Terminal 17 | bun init -y 18 | ``` 19 | 20 | ### 2. Install bun-plugin-tailwind and daisyUI 21 | 22 | ```sh:Terminal 23 | bun install bun-plugin-tailwind daisyui@latest 24 | ``` 25 | 26 | Create a `bunfig.toml` file at root and add bun-plugin-tailwind as a plugin 27 | 28 | ```toml:bunfig.toml 29 | [serve.static] 30 | plugins = ["bun-plugin-tailwind"] 31 | ``` 32 | 33 | ### 3. Add HTML and CSS files 34 | 35 | Create `index.html` at root 36 | 37 | ```html:index.html 38 | 39 | 40 | 41 | daisyUI 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | ``` 50 | 51 | Create `style.css` at root, add Tailwind CSS and daisyUI 52 | 53 | ```postcss:style.css 54 | @import "tailwindcss"; 55 | @plugin "daisyui"; 56 | ``` 57 | 58 | ## Serve the HTML file 59 | 60 | ```sh:Terminal 61 | bun index.html 62 | ``` 63 | 64 | Now you can use daisyUI class names! 65 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/cli/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Use daisyUI with Tailwind CSS CLI 3 | desc: How to install and use daisyUI with Tailwind CSS CLI 4 | --- 5 | 6 | 9 | 10 | ### 1. Install 11 | 12 | Initialize a new Node project in the current directory using `npm init -y` if it's not a Node project already. 13 | 14 | Install Tailwind CSS CLI and daisyUI 15 | 16 | ```sh:Terminal 17 | npm install tailwindcss@latest @tailwindcss/cli@latest daisyui@latest 18 | ``` 19 | 20 | ### 2. Add Tailwind CSS and daisyUI 21 | 22 | Add Tailwind CSS and daisyUI to your CSS file. 23 | Address your HTML and other markup files in the `source` function. 24 | 25 | ```postcss:app.css 26 | @import "tailwindcss" source(none); 27 | @source "./public/*.{html,js}"; 28 | @plugin "daisyui"; 29 | ``` 30 | 31 | ### 3. Build CSS 32 | 33 | Add a script to your package.json to build the CSS. 34 | 35 | ```json:package.json 36 | { 37 | "scripts": { 38 | "build:css": "npx @tailwindcss/cli -i app.css -o public/output.css" 39 | }, 40 | } 41 | ``` 42 | 43 | Run the script to build the CSS file 44 | 45 | ```sh:Terminal 46 | npm run build:css 47 | ``` 48 | This command creates a `public/output.css` file with the compiled CSS. You can link this file to your HTML file. 49 | 50 | ```html:public/index.html 51 | 52 | ``` 53 | 54 | Now you can use daisyUI class names! 55 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/fresh/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Deno Fresh 3 | desc: How to install Tailwind CSS and daisyUI in a Deno Fresh project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Fresh project 11 | 12 | Install Deno, according to the [official Deno docs](https://docs.deno.com/runtime/) 13 | 14 | Create a new Fresh project called `myapp` and navigate to it 15 | 16 | ```sh:Terminal 17 | deno run -A -r https://fresh.deno.dev myapp --tailwind=false --vscode=false 18 | cd myapp 19 | ``` 20 | 21 | Add `"nodeModulesDir": "auto",` to `deno.json` file 22 | 23 | ```diff:deno.json 24 | { 25 | + "nodeModulesDir": "auto", 26 | "lock": false, 27 | 28 | //...rest of the file 29 | 30 | } 31 | ``` 32 | 33 | ### 2. Add Tailwind CSS and daisyUI 34 | 35 | Install Tailwind CSS, daisyUI and fresh-plugin-tailwindcss 36 | 37 | ```sh:Terminal 38 | deno i -D npm:tailwindcss@latest npm:daisyui@latest jsr:@pakornv/fresh-plugin-tailwindcss 39 | ``` 40 | 41 | Add Tailwind CSS and daisyUI to your CSS file 42 | 43 | ```postcss:static/styles.css 44 | @import "tailwindcss"; 45 | @plugin "daisyui"; 46 | ``` 47 | 48 | Add these lines to `fresh.config.ts` file 49 | 50 | ```diff:fresh.config.ts 51 | import { defineConfig } from "$fresh/server.ts"; 52 | + import tailwind from "@pakornv/fresh-plugin-tailwindcss"; 53 | 54 | export default defineConfig({ 55 | + plugins: [tailwind()], 56 | }); 57 | ``` 58 | 59 | ### 3. Run the server 60 | 61 | Run the Deno server with the following command 62 | 63 | ```sh:Terminal 64 | deno task start 65 | ``` 66 | 67 | Now you can use daisyUI class names! 68 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/htmx/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Use daisyUI with HTMX 3 | desc: How to install and use daisyUI with HTMX 4 | --- 5 | 6 | 9 | 10 | > :INFO: 11 | > 12 | > This guide uses daisyUI as a Node.js dependency. If you don't want to use Node.js, try the [CDN version of daisyUI](/docs/cdn/). 13 | 14 | ### 1. Install 15 | 16 | Initialize a new Node project in the current directory using `npm init -y` if it's not a Node project already. 17 | 18 | Install Tailwind CSS CLI and daisyUI 19 | 20 | ```sh:Terminal 21 | npm install tailwindcss@latest @tailwindcss/cli@latest daisyui@latest 22 | ``` 23 | 24 | ### 2. Add Tailwind CSS and daisyUI 25 | 26 | Add Tailwind CSS and daisyUI to your CSS file. 27 | Address your HTML and other markup files in the `source` function. 28 | 29 | ```postcss:app.css 30 | @import "tailwindcss" source(none); 31 | @source "./public/*.{html,js}"; 32 | @plugin "daisyui"; 33 | ``` 34 | 35 | ### 3. Build CSS 36 | 37 | Add a script to your package.json to build the CSS. 38 | 39 | ```json:package.json 40 | { 41 | "scripts": { 42 | "build:css": "npx @tailwindcss/cli -i app.css -o public/output.css" 43 | }, 44 | } 45 | ``` 46 | 47 | Run the script to build the CSS file 48 | 49 | ```sh:Terminal 50 | npm run build:css 51 | ``` 52 | This command creates a `public/output.css` file with the compiled CSS. You can link this file to your HTML file. 53 | 54 | ```html:public/index.html 55 | 56 | ``` 57 | 58 | Now you can use daisyUI class names! 59 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/laravel/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Laravel 3 | desc: How to install Tailwind CSS and daisyUI in a Laravel project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Laravel project 11 | 12 | Install PHP, Composer and Laravel Installer according to the [official Laravel documentation](https://laravel.com/docs/12.x/installation#creating-a-laravel-project) 13 | 14 | Create a new Laravel project 15 | 16 | ```sh:Terminal 17 | laravel new my-app 18 | cd my-app 19 | ``` 20 | 21 | ### 2. Install daisyUI 22 | 23 | ```sh:Terminal 24 | npm i -D daisyui@latest 25 | ``` 26 | 27 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 28 | 29 | ```css:resources/css/app.css 30 | @import "tailwindcss"; 31 | 32 | @source "../**/*.blade.php"; 33 | @source "../**/*.js"; 34 | @source "../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php"; 35 | @source "../../storage/framework/views/*.php"; 36 | 37 | @plugin "daisyui"; 38 | ``` 39 | 40 | ### 3. Run your project 41 | 42 | Run your Laravel project 43 | 44 | ```sh:Terminal 45 | php artisan serve 46 | ``` 47 | And on another terminal tab, run Vite 48 | 49 | ```sh:Terminal 50 | npm run dev 51 | ``` 52 | 53 | Now you can use daisyUI class names! 54 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/lit/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Lit 3 | desc: How to install Tailwind CSS and daisyUI in a Lit + Vite project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Vite project 11 | 12 | Create a new Vite project in the current directory 13 | 14 | ```sh:Terminal 15 | npm create vite@latest ./ -- --template lit 16 | ``` 17 | 18 | ### 2. Install Tailwind CSS and daisyUI 19 | 20 | ```sh:Terminal 21 | npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest 22 | ``` 23 | 24 | Add Tailwind CSS to Vite config 25 | 26 | ```js:vite.config.js 27 | import { defineConfig } from 'vite'; 28 | import tailwindcss from '@tailwindcss/vite'; 29 | 30 | export default defineConfig({ 31 | plugins: [ 32 | tailwindcss() 33 | ], 34 | }); 35 | ``` 36 | 37 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 38 | 39 | ```postcss:src/index.css 40 | @import "tailwindcss"; 41 | @plugin "daisyui"; 42 | ``` 43 | 44 | ### 3. Make the CSS available for shadow DOM elements 45 | 46 | Put this code in `src/my-element.js` file and remove the old code 47 | ```js:src/my-element.js 48 | import { LitElement, html } from "lit"; 49 | import { unsafeCSS } from "lit"; 50 | import globalStyles from "./index.css?inline"; 51 | 52 | export class MyElement extends LitElement { 53 | static styles = [unsafeCSS(globalStyles)]; 54 | render() { 55 | return html` `; 56 | } 57 | } 58 | 59 | window.customElements.define("my-element", MyElement); 60 | ``` 61 | 62 | Now you can use daisyUI class names! 63 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/nextjs/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Next.js 3 | desc: How to install Tailwind CSS and daisyUI in a Next.js project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Next.js project 11 | 12 | Create a new Next.js project in the current directory 13 | 14 | ```sh:Terminal 15 | npm create next-app@latest ./ 16 | ``` 17 | 18 | ### 2. Install Tailwind CSS and daisyUI 19 | 20 | ```sh:Terminal 21 | npm install tailwindcss @tailwindcss/postcss daisyui@latest 22 | ``` 23 | 24 | ### 3. Add Tailwind CSS and daisyUI 25 | 26 | Add Tailwind CSS to your PostCSS config file 27 | 28 | ```js:postcss.config.mjs 29 | /** @type {import('postcss-load-config').Config} */ 30 | const config = { 31 | plugins: { 32 | '@tailwindcss/postcss': {}, 33 | }, 34 | }; 35 | export default config; 36 | ``` 37 | 38 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 39 | 40 | ```postcss:app/globals.css 41 | @import "tailwindcss"; 42 | @plugin "daisyui"; 43 | ``` 44 | 45 | Now you can use daisyUI class names! 46 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/nuxt/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Nuxt 3 | desc: How to install Tailwind CSS and daisyUI in a Nuxt project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Nuxt project 11 | 12 | Create a new Nuxt project in the current directory 13 | 14 | ```sh:Terminal 15 | npx nuxi@latest init 16 | ``` 17 | 18 | ### 2. Install Tailwind CSS and daisyUI 19 | 20 | ```sh:Terminal 21 | npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest 22 | ``` 23 | 24 | Add Tailwind CSS to Vite config 25 | 26 | ```js:nuxt.config.ts 27 | import tailwindcss from "@tailwindcss/vite"; 28 | export default defineNuxtConfig({ 29 | vite: { 30 | plugins: [tailwindcss()], 31 | }, 32 | css: ["~/assets/app.css"], 33 | }); 34 | ``` 35 | 36 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 37 | 38 | ```postcss:assets/app.css 39 | @import "tailwindcss"; 40 | @plugin "daisyui"; 41 | ``` 42 | 43 | Now you can use daisyUI class names! 44 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/phoenix/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Elixir Phoenix 3 | desc: How to install Tailwind CSS and daisyUI in a Elixir Phoenix project 4 | --- 5 | 6 | 9 | 10 | > :SUCCESS: 11 | > 12 | > Elixir Phoenix `1.8.0-rc.0` and later comes with Tailwind CSS 4 and daisyUI 5 out of the box! 13 | 14 | ### 1. Create a new Phoenix project 15 | 16 | Install Elixir according to the [official Elixir documentation](https://elixir-lang.org/install.html) 17 | 18 | Create a new Phoenix project in the current directory. 19 | 20 | ```sh:Terminal 21 | mix phx.new ./ --no-ecto 22 | ``` 23 | Here we are using the `--no-ecto` flag to skip the database setup, just for demonstration purposes. 24 | 25 | 26 | ### 2. Run your project 27 | 28 | Run your Phoenix project 29 | 30 | ```sh:Terminal 31 | mix phx.server 32 | ``` 33 | 34 | Now you can use daisyUI class names! 35 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/postcss/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for PostCSS 3 | desc: How to install Tailwind CSS and daisyUI in PostCSS 4 | --- 5 | 6 | 9 | 10 | ### 1. Install 11 | 12 | Initialize a new Node project in the current directory using `npm init -y` if it's not a Node project already. 13 | 14 | Install PostCSS, Tailwind CSS, and daisyUI 15 | 16 | ```sh:Terminal 17 | npm i postcss postcss-cli tailwindcss @tailwindcss/postcss daisyui@latest 18 | ``` 19 | 20 | ### 2. Add Tailwind CSS and daisyUI 21 | 22 | Create a postcss.config.mjs file and add Tailwind CSS to it 23 | 24 | ```js:postcss.config.mjs 25 | const config = { 26 | plugins: { 27 | '@tailwindcss/postcss': {}, 28 | }, 29 | }; 30 | export default config; 31 | ``` 32 | 33 | Add Tailwind CSS and daisyUI to your CSS file. 34 | Address your HTML and other markup files in the `source` function. 35 | 36 | ```postcss:app.css 37 | @import "tailwindcss" source(none); 38 | @source "./public/*.{html,js}"; 39 | @plugin "daisyui"; 40 | ``` 41 | 42 | ### 3. Build CSS 43 | 44 | Add a script to your package.json to build the CSS. 45 | 46 | ```json:package.json 47 | { 48 | "scripts": { 49 | "build:css": "postcss app.css -o public/output.css" 50 | }, 51 | } 52 | ``` 53 | 54 | Run the script to build the CSS file 55 | 56 | ```sh:Terminal 57 | npm run build:css 58 | ``` 59 | This command creates a `public/output.css` file with the compiled CSS. You can link this file to your HTML file. 60 | 61 | ```html:public/index.html 62 | 63 | ``` 64 | 65 | Now you can use daisyUI class names! 66 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/qwik/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Qwik 3 | desc: How to install Tailwind CSS and daisyUI in a Qwik project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Qwik project 11 | 12 | Create a new Qwik project in the current directory 13 | 14 | ```sh:Terminal 15 | npm create qwik@latest empty ./ 16 | ``` 17 | 18 | ### 2. Install Tailwind CSS and daisyUI 19 | 20 | ```sh:Terminal 21 | npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest 22 | ``` 23 | 24 | Add Tailwind CSS to Vite config 25 | 26 | ```js:vite.config.js 27 | import tailwindcss from "@tailwindcss/vite"; 28 | //... 29 | export default defineConfig(({ command, mode }): UserConfig => { 30 | return { 31 | plugins: [tailwindcss(), qwikCity(), qwikVite(), tsconfigPaths()], 32 | // ... 33 | }; 34 | }); 35 | ``` 36 | 37 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 38 | 39 | ```postcss:src/index.css 40 | @import "tailwindcss"; 41 | @plugin "daisyui"; 42 | ``` 43 | 44 | Now you can use daisyUI class names! 45 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/react/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for React 3 | desc: How to install Tailwind CSS and daisyUI in a React project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new React project 11 | 12 | Create a new Vite React project in the current directory 13 | 14 | ```sh:Terminal 15 | npm create vite@latest ./ -- --template react 16 | ``` 17 | 18 | ### 2. Install Tailwind CSS and daisyUI 19 | 20 | ```sh:Terminal 21 | npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest 22 | ``` 23 | 24 | Add Tailwind CSS to Vite config 25 | 26 | ```js:vite.config.js 27 | import { defineConfig } from "vite"; 28 | import tailwindcss from "@tailwindcss/vite"; 29 | import react from "@vitejs/plugin-react"; 30 | 31 | export default defineConfig({ 32 | plugins: [tailwindcss(), react()], 33 | }); 34 | ``` 35 | 36 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 37 | 38 | ```postcss:src/App.css 39 | @import "tailwindcss"; 40 | @plugin "daisyui"; 41 | ``` 42 | 43 | Now you can use daisyUI class names! 44 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/reactrouter/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for React Router 3 | desc: How to install daisyUI in a React Router project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new React Router project 11 | 12 | Create a new React Router project in the current directory 13 | 14 | ```sh:Terminal 15 | npm create react-router@latest ./ 16 | ``` 17 | 18 | ### 2. Install daisyUI 19 | 20 | ```sh:Terminal 21 | npm install daisyui@latest 22 | ``` 23 | 24 | ### 3. Add daisyUI 25 | 26 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 27 | 28 | ```postcss:app/app.css 29 | @import "tailwindcss"; 30 | @plugin "daisyui"; 31 | ``` 32 | 33 | Now you can use daisyUI class names! 34 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/rsbuild/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Rsbuild 3 | desc: How to install Tailwind CSS and daisyUI in a Rsbuild project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Rsbuild project 11 | 12 | Create a new Rsbuild project in the current directory 13 | 14 | ```sh:Terminal 15 | npm create rsbuild -d ./ 16 | ``` 17 | 18 | ### 2. Install Tailwind CSS and daisyUI 19 | 20 | Rsbuild has built-in support for PostCSS 21 | 22 | ```sh:Terminal 23 | npm add tailwindcss @tailwindcss/postcss daisyui@latest 24 | ``` 25 | 26 | Create a postcss.config.mjs file and add Tailwind CSS to it 27 | 28 | ```js:postcss.config.mjs 29 | const config = { 30 | plugins: { 31 | '@tailwindcss/postcss': {}, 32 | }, 33 | }; 34 | export default config; 35 | ``` 36 | 37 | Put Tailwind CSS and daisyUI in your CSS file at `src/` (and remove old styles). 38 | 39 | ```postcss:src/App.css 40 | @import "tailwindcss"; 41 | @plugin "daisyui"; 42 | ``` 43 | 44 | Now you can use daisyUI class names! 45 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/solid-start/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Solid Start 3 | desc: How to install Tailwind CSS and daisyUI in a Solid Start project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Solid Start project 11 | 12 | Create a new Solid Start project in the current directory 13 | 14 | ```sh:Terminal 15 | npm init solid@latest ./ 16 | ``` 17 | 18 | ### 2. Install Tailwind CSS and daisyUI 19 | 20 | ```sh:Terminal 21 | npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest 22 | ``` 23 | 24 | Add Tailwind CSS to Vite config 25 | 26 | ```js:app.config.ts 27 | import { defineConfig } from "@solidjs/start/config"; 28 | import tailwindcss from "@tailwindcss/vite"; 29 | export default defineConfig({ 30 | vite: { 31 | plugins: [tailwindcss()], 32 | }, 33 | }); 34 | ``` 35 | 36 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 37 | 38 | ```postcss:src/app.css 39 | @import "tailwindcss"; 40 | @plugin "daisyui"; 41 | ``` 42 | 43 | Now you can use daisyUI class names! 44 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/solid/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Solid 3 | desc: How to install Tailwind CSS and daisyUI in a Solid project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Solid project 11 | 12 | Create a new Solid project in the current directory 13 | 14 | ```sh:Terminal 15 | npx degit solidjs/templates/js 16 | ``` 17 | 18 | ### 2. Install Tailwind CSS and daisyUI 19 | 20 | ```sh:Terminal 21 | npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest 22 | ``` 23 | 24 | Add Tailwind CSS to Vite config 25 | 26 | ```js:vite.config.js 27 | import { defineConfig } from "vite"; 28 | import tailwindcss from "@tailwindcss/vite"; 29 | import solidPlugin from "vite-plugin-solid"; 30 | 31 | export default defineConfig({ 32 | plugins: [tailwindcss(), solidPlugin()], 33 | server: { 34 | port: 3000, 35 | }, 36 | build: { 37 | target: "esnext", 38 | }, 39 | }); 40 | ``` 41 | 42 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 43 | 44 | ```postcss:src/index.css 45 | @import "tailwindcss"; 46 | @plugin "daisyui"; 47 | ``` 48 | 49 | Now you can use daisyUI class names! 50 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/sveltekit/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for SvelteKit 3 | desc: How to install Tailwind CSS and daisyUI in a SvelteKit project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new SvelteKit project 11 | 12 | Create a new SvelteKit project in the current directory 13 | 14 | ```sh:Terminal 15 | npx sv create ./ 16 | ``` 17 | 18 | ### 2. Install Tailwind CSS and daisyUI 19 | 20 | ```sh:Terminal 21 | npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest 22 | ``` 23 | 24 | Add Tailwind CSS to Vite config 25 | 26 | ```js:vite.config.js 27 | import tailwindcss from "@tailwindcss/vite"; 28 | import { sveltekit } from "@sveltejs/kit/vite"; 29 | import { defineConfig } from "vite"; 30 | 31 | export default defineConfig({ 32 | plugins: [tailwindcss(), sveltekit()], 33 | }); 34 | 35 | ``` 36 | 37 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 38 | 39 | ```postcss:src/style.css 40 | @import "tailwindcss"; 41 | @plugin "daisyui"; 42 | ``` 43 | 44 | Import the CSS file in your Svelte page (or layout) 45 | ```html:src/routes/+page.svelte 46 | 49 | ``` 50 | 51 | Now you can use daisyUI class names! 52 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/vike/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Vike 3 | desc: How to install Tailwind CSS and daisyUI in a Vike project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Vike project 11 | 12 | Create a new Vike project in the current directory 13 | 14 | ```sh:Terminal 15 | npm create vike ./ 16 | ``` 17 | 18 | ### 2. Install Tailwind CSS and daisyUI 19 | 20 | ```sh:Terminal 21 | npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest 22 | ``` 23 | 24 | Add Tailwind CSS to Vite config 25 | 26 | ```ts:vite.config.ts 27 | import tailwindcss from "@tailwindcss/vite"; 28 | import vike from "vike/plugin"; 29 | import { defineConfig } from "vite"; 30 | 31 | export default defineConfig({ 32 | plugins: [tailwindcss(), vike()], 33 | }); 34 | ``` 35 | 36 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 37 | 38 | ```postcss:renderer/Layout.css 39 | @import "tailwindcss"; 40 | @plugin "daisyui"; 41 | ``` 42 | 43 | Now you can use daisyUI class names! 44 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/vite/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Vite 3 | desc: How to install Tailwind CSS and daisyUI in a Vite project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Vite project 11 | 12 | Create a new Vite project in the current directory 13 | 14 | ```sh:Terminal 15 | npm create vite@latest ./ -- --template vanilla 16 | ``` 17 | 18 | ### 2. Install Tailwind CSS and daisyUI 19 | 20 | ```sh:Terminal 21 | npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest 22 | ``` 23 | 24 | Add Tailwind CSS to Vite config 25 | 26 | ```js:vite.config.js 27 | import { defineConfig } from 'vite'; 28 | import tailwindcss from '@tailwindcss/vite'; 29 | 30 | export default defineConfig({ 31 | plugins: [ 32 | tailwindcss() 33 | ], 34 | }); 35 | ``` 36 | 37 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 38 | 39 | ```postcss:src/style.css 40 | @import "tailwindcss"; 41 | @plugin "daisyui"; 42 | ``` 43 | 44 | Now you can use daisyUI class names! 45 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/vue/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Vue 3 | desc: How to install Tailwind CSS and daisyUI in a Vue project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Vue project 11 | 12 | Create a new Vite Vue project in the current directory 13 | 14 | ```sh:Terminal 15 | npm create vite@latest ./ -- --template vue 16 | ``` 17 | 18 | ### 2. Install Tailwind CSS and daisyUI 19 | 20 | ```sh:Terminal 21 | npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest 22 | ``` 23 | 24 | Add Tailwind CSS to Vite config 25 | 26 | ```js:vite.config.js 27 | import { defineConfig } from "vite"; 28 | import tailwindcss from "@tailwindcss/vite"; 29 | import vue from "@vitejs/plugin-vue"; 30 | 31 | export default defineConfig({ 32 | plugins: [tailwindcss(), vue()], 33 | }); 34 | ``` 35 | 36 | Put Tailwind CSS and daisyUI in your CSS file (and remove old styles) 37 | 38 | ```postcss:src/style.css 39 | @import "tailwindcss"; 40 | @plugin "daisyui"; 41 | ``` 42 | 43 | Now you can use daisyUI class names! 44 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/install/waku/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install daisyUI for Waku 3 | desc: How to install daisyUI in a Waku project 4 | --- 5 | 6 | 9 | 10 | ### 1. Create a new Waku project 11 | 12 | Create a new Waku project in called `myapp` and navigate to it: 13 | 14 | ```sh:Terminal 15 | npm create waku@latest -- --project-name=myapp 16 | cd myapp 17 | ``` 18 | 19 | ### 2. Install daisyUI 20 | 21 | ```sh:Terminal 22 | npm i daisyui 23 | ``` 24 | 25 | Put daisyUI in your CSS file (and remove old styles) 26 | 27 | ```diff:src/styles.css 28 | @import "tailwindcss"; 29 | + @plugin "daisyui"; 30 | ``` 31 | 32 | Now you can use daisyUI class names! 33 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/roadmap/+page.server.js: -------------------------------------------------------------------------------- 1 | import { PUBLIC_DAISYUI_API_PATH } from "$env/static/public" 2 | import yaml from "js-yaml" 3 | 4 | export async function load() { 5 | try { 6 | const response = await fetch(`${PUBLIC_DAISYUI_API_PATH}/data/roadmap.yaml`) 7 | 8 | if (!response.ok) { 9 | throw new Error(`Failed to fetch roadmap: ${response.status}`) 10 | } 11 | 12 | const yamlFile = await response.text() 13 | const roadmap = yaml.load(yamlFile) 14 | 15 | return { 16 | roadmap, 17 | } 18 | } catch (error) { 19 | console.error("Error loading roadmap:", error) 20 | return { 21 | roadmap: [], 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/docs/use/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Add component classes to your HTML 3 | desc: How to use daisyUI classes to style your page? 4 | --- 5 | 6 | 9 | 10 | 11 | So instead of making a button using only utility classes 12 | 13 | ```html 14 | 18 | ``` 19 | 20 | 21 | 22 | You can just use a component class like this 23 | 24 | ```html 25 | 26 | ``` 27 | 28 | 29 | 30 | Then you can modify the component with daisyUI additional utility classes 31 | 32 | ```html 33 | 34 | ``` 35 | 36 | 37 | 38 | Or you can modify the component with Tailwind CSS utility classes 39 | 40 | ```html 41 | 42 | ``` 43 | 44 | 45 | -------------------------------------------------------------------------------- /packages/docs/src/routes/(routes)/resources/+layout.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
    14 |
    15 | 36 | {@render children?.()} 37 |
    38 | 39 |
    40 |