Move v2 files to v3 branch

This commit is contained in:
Pouya Saadeghi 2023-02-27 17:58:14 +03:00
parent 7b51e79f62
commit 2779841cab
473 changed files with 54459 additions and 0 deletions

151
.github/CONTRIBUTING.md vendored Normal file
View File

@ -0,0 +1,151 @@
# Contributing to daisyUI
daisyUI welcomes contributions from anyone willing to help 🤝
## Reporting issues
- Before opening a new issue, first [search for existing issues](https://github.com/saadeghi/daisyui/issues?q=) to avoid duplications.
- Provide detailed reports to make things easier for maintainers.
- If there's a weird bug, please provide a reproduction repository on Github (or a [CodePen page](https://daisyui.com/codepen/) or [Tailwind Play](https://daisyui.com/tailwindplay/) page)
## Fixing existing issues
- You can help by [fixing existing issues](https://github.com/saadeghi/daisyui/issues?q=)
- Don't work on issues assigned to others (to avoid duplicate efforts)
- Before starting to work on an issue, please first add a comment and ask to get assigned to that issue. This way everyone will know you're working on that and it avoids duplicate efforts.
- Commit messages must start with: `fix: #1 [description]` which `1` is the number of issue, so the issue will close automatically and it gets added to changelog file on a release.
## Feature requests
- If you have an idea to discuss with the community, please [open a discussion](https://github.com/saadeghi/daisyui/discussions)
- For feature requests, [open a new issue](https://github.com/saadeghi/daisyui/issues/new)
- All feature requests may not fit this library and some may get rejected. Don't take it personally.
## Pull requests
- A pull request must fix [an open issue](https://github.com/saadeghi/daisyui/issues?q=is%3Aissue+is%3Aopen) **assigned to you**. If there's no issue, please create one first. If it's not assigned to you, please ask for it in the comments. This is for avoiding duplicate efforts.
- Fixing typos doesn't need to be an issue. You can just open a pull request.
- Fixing a mistake in document website doesn't need to be an issue. You can just open a pull request.
## Building on local
### To build the daisyUI node package on local:
1. [Fork and] clone the repo on local
1. Install package dependencies:
```
npm install
```
1. Build the package:
```
npm run build
```
1. Now you can import daisyUI to your `tailwind.config.js`:
```js
module.exports = {
plugins: [require("/path/to/dist/directory")],
};
```
### To run the [documentation site](https://daisyui.com/) on local:
1. [Fork and] clone the repo on local
1. Install package dependencies:
```
npm install
```
1. Build the package:
```
npm run build
```
1. Install document site dependencies:
```
npm run install:docs
```
1. Run the document site:
```
npm run dev
```
## Adding a new component
Before adding a new component, please make sure it's [start a discussion about it on Github](https://github.com/saadeghi/daisyui/discussions) so we can talk about how the structure and style should be.
There is a `List of components` at the end of [/README.md](https://github.com/saadeghi/daisyui/blob/master/README.md) that I think would be a good addition to daisyUI.
### File structure
All component styles are in [`/src`](https://github.com/saadeghi/daisyui/tree/master/src) but it's important to separate the style to 4 files:
- `/src/components/unstyled`: Styles that define the layout and placement of a component
(for example: [layout of `tab` and `tabs`](https://github.com/saadeghi/daisyui/blob/master/src/components/unstyled/tab.css))
- `/src/components/styled`: Styles that define the visual appearance of a component
(for example: [colors and spacing of `alert`](https://github.com/saadeghi/daisyui/blob/master/src/components/styled/alert.css))
- `/src/utilities/unstyled`: Styles that define the layout and placement of a variant of a component that must be responsive
(for example: [sizes of a `.btn`](https://github.com/saadeghi/daisyui/blob/master/src/utilities/unstyled/button.css))
- `/src/utilities/styled`: Styles that define the visual appearance of a variant of a component that must be responsive
(for example: [colors of `alert`](https://github.com/saadeghi/daisyui/blob/master/src/utilities/styled/alert.css))
> Separating styles to these 4 files, allows us to use daisyUI components with/without _design decision_ styles ([See `styled` config](styled)) and allows us to define some styles as responsive utilities (to work with `lg:`, `md:`, `sm:`, etc... prefixes)
### Code samples with dynamic prefix
If your component documentation page contains `pre` blocks for code samples, be sure to follow the example below so that the code will be displayed with the correct prefix dynamically set by user:
```svelte
<Component title="Buttons with brand colors">
<button class="btn">Button</button>
<button class="btn btn-primary">Primary</button>
<button class="btn btn-secondary">Secondary</button>
<button class="btn btn-accent">Accent</button>
<button class="btn btn-ghost">Ghost</button>
<button class="btn btn-link">Link</button>
<!-- add $$ to each class name in pre block-->
<pre slot="html" use:replace={{ to: $prefix }}>{
`<button class="$$btn">Button</button>
<button class="$$btn $$btn-primary">Button</button>
<button class="$$btn $$btn-secondary">Button</button>
<button class="$$btn $$btn-accent">Button</button>
<button class="$$btn $$btn-ghost">Button</button>
<button class="$$btn $$btn-link">Button</button>`
}</pre>
</Component>
```
### An example
Let's say we want to add a new component named `.coolbutton` (don't add that actually 😅 )
1. Add these files:
```
/src/components/unstyled/coolbutton.css
/src/components/styled/coolbutton.css
```
1. Add your CSS there (you can use `@apply`)
- `/unstyled/coolbutton.css` is for the structure of the component without any design decision
- `/styled/coolbutton.css` is for the visual appearance of the component with colors, spacing, etc.
1. Add a page to documentation site:
```
/src/docs/src/routes/components/coolbutton.svelte.md
```
1. Add page info and some HTML to your [Svelte](https://svelte.dev/) markdown ([mdsvex](https://mdsvex.pngwn.io/)) file that uses your class name
```mdx
---
title: Coolbutton
desc: It's a button but it's cool!
published: true
---
<button class="coolbutton">Cool!</button>
```
1. Build the documentation site:
```
npm run dev
```
1. Now when you open the site on localhost, you can see your new page, showing the new component with your style:
```
http://localhost:3000/components/coolbutton
```

1
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1 @@
open_collective: daisyui

42
.github/ISSUE_TEMPLATE/bug-report.yml vendored Normal file
View File

@ -0,0 +1,42 @@
name: 🐞 Report a new Bug
description: If you found a new bug on daisyUI, report it here.
title: "bug: "
body:
- type: markdown
attributes:
value: |
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 bug is not addressed before.
- type: input
id: version
attributes:
label: What version of daisyUI are you using?
description: You can see the daisyUI version number on your `package.json` file.
placeholder: 'example: v2.47.0'
validations:
required: false
- type: textarea
id: description
attributes:
label: Describe your issue
description: Describe the problem and say how and when it happens
validations:
required: true
- type: dropdown
id: browsers
attributes:
label: What browsers are you seeing the problem on?
multiple: true
options:
- Chrome
- Safari
- Firefox
- Edge
- Other
- type: input
id: reproduction
attributes:
label: Reproduction URL (optional)
description: Provide a link to a [Tailwind Play](https://daisyui.com/tailwindplay/) page or a public GitHub repo so we can reproduce the issue.
placeholder: 'https://'
validations:
required: false

14
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: 🔎 Search in Discussions
url: https://github.com/saadeghi/daisyui/discussions
about: First see if there's an existing topic in Discussions.
- name: 🔎 Search in Issues
url: https://github.com/saadeghi/daisyui/issues?q=is%3Aissue
about: If you found a bug, first see if there's an existing issue about it.
- name: ❓ Ask a new question in Discussions
url: https://github.com/saadeghi/daisyui/discussions/new?category=q-a
about: If you have a new question and you couldn't find answers.
- name: 💡 Ideas / Feature request
url: https://github.com/saadeghi/daisyui/discussions/new?category=ideas-feature-requests
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

View File

@ -0,0 +1,33 @@
name: 📕 Documentation Issue
description: If you found an issue on daisyui.com website
title: "docs: "
body:
- type: markdown
attributes:
value: |
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.
- type: input
id: page
attributes:
label: On which page do you see this issue?
placeholder: 'example: https://daisyui.com/'
validations:
required: false
- type: textarea
id: description
attributes:
label: Describe the issue
description: Describe the problem and say how and when it happens
validations:
required: true
- type: dropdown
id: browsers
attributes:
label: What browsers are you seeing the problem on?
multiple: true
options:
- Chrome
- Safari
- Firefox
- Edge
- Other

102
.github/workflows/publish.yml vendored Normal file
View File

@ -0,0 +1,102 @@
name: "Build, Publish, Deploy"
on:
push:
branches:
- master
jobs:
release:
name: "Build"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
- name: Setup Node.js environment
uses: actions/setup-node@v2.1.2
with:
node-version: 16.8.0
registry-url: https://registry.npmjs.org
- name: check latest released version
id: check
uses: EndBug/version-check@v2.1.0
with:
file-url: https://unpkg.com/daisyui@latest/package.json
static-checking: localIsNew
- name: Install dependencies
if: steps.check.outputs.changed == 'true'
run: npm install
- name: build
if: steps.check.outputs.changed == 'true'
run: npm run build
- name: Publish
if: steps.check.outputs.changed == 'true'
run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- name: Read package version from package.json
if: steps.check.outputs.changed == 'true'
uses: nyaa8/package-version@v1
with:
path: "package.json"
- name: update package version in env
if: steps.check.outputs.changed == 'true'
uses: SpicyPizza/create-envfile@v1
with:
envkey_VITE_DAISYUI_VERSION: ${{ env.PACKAGE_VERSION }}
file_name: src/docs/.env
- name: update package version in readme
if: steps.check.outputs.changed == 'true'
uses: mingjun97/file-regex-replace@v1
with:
regex: 'cdn.jsdelivr.net\/npm\/daisyui@.*\/dist\/'
replacement: "cdn.jsdelivr.net/npm/daisyui@${{ env.PACKAGE_VERSION }}/dist/"
include: "README.md"
- name: Commit files
if: steps.check.outputs.changed == 'true'
id: commit
run: |
git config --local user.email "pouya.saadeghi@gmail.com"
git config --local user.name "Pouya Saadeghi"
git add --all
if [-z "$(git status --porcelain)"]; then
echo "::set-output name=push::false"
else
git commit -m "Update version" -a
echo "::set-output name=push::true"
fi
shell: bash
- name: Push changes
if: steps.commit.outputs.push == 'true'
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Wait 10 seconds for npm publish
if: steps.check.outputs.changed == 'true'
uses: whatnick/wait-action@master
with:
time: "10s"
- name: Install document website dependencies
run: cd src/docs && npm install
- name: Build document website
run: cd src/docs && npm run build
- name: Deploy docs to github pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./src/docs/build
cname: ${{ secrets.CNAME }}

11
.gitignore vendored Normal file
View File

@ -0,0 +1,11 @@
node_modules
yarn.lock
/package-lock.json
.next
/dist
/colors
/index.js
.idea
.DS_Store
*.tgz
/coverage

1747
CHANGELOG.md Normal file

File diff suppressed because it is too large Load Diff

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 Pouya Saadeghi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

249
README.md Normal file
View File

@ -0,0 +1,249 @@
<div align="center">
[![][logo-url]][docs-url]
**The most popular, free and open-source Tailwind CSS component library**
[ [See all components](https://daisyui.com/components/) ]
[![][tweet]][tweet-url]
</div>
[![][banner-url]][docs-url]
# daisyUI 2.0
[![][build]][build-url] [![][npm]][npm-url] [![][number-of-components]][docs-url] [![][license]][license-url]
[![][dl]][npm-url] [![][stars]][gh-url] [![][commit]][gh-url]
- [Official website →](https://daisyui.com/)
- [See all components →](https://daisyui.com/components/)
- [How to use →](https://daisyui.com/docs/install/)
## 🌼 Features
- A plugin for Tailwind CSS
- Faster development
- Cleaner HTML
- Customizable and themeable
- Pure CSS. Works on all frameworks
## 📀 Install now!
```bash
npm i daisyui
```
Then add daisyUI to your `tailwind.config.js`:
```js
module.exports = {
plugins: [require("daisyui")],
};
```
[ [Read more →][docs-url-install] ]
<details>
<summary>
Or use a CDN
</summary>
Loading CSS files from CDN is not recommended for production. It's better to install Tailwind and daisyUI as Nodejs dependencies so you can config/customize everything, and purge unused styles.
```html
<link href="https://cdn.jsdelivr.net/npm/daisyui@2.51.2/dist/full.css" rel="stylesheet" type="text/css" />
<script src="https://cdn.tailwindcss.com"></script>
```
</details>
## 🚀 Use
[[See all components →](https://daisyui.com/components/)]
## 📘 Documents + Examples
See the official site: [ [daisyui.com →](https://daisyui.com/)]
## 🤝 Support daisyUI
| | |
|---|---|
| **Premium Sponsors** <br /> Support this project by becoming a premium sponsor. <br /> [[Become a sponsor](https://opencollective.com/daisyui)] | <a href="https://opencollective.com/daisyui" target="_blank"><img src="https://opencollective.com/daisyui/tiers/premium-sponsor.svg?button=false&width=500&avatarHeight=120"></a> |
| **Backers** <br /> Thank you to all our backers! <br /> [[Become a backer](https://opencollective.com/daisyui)] | <a href="https://opencollective.com/daisyui" target="_blank"><img src="https://opencollective.com/daisyui/backers.svg?button=false&width=500&avatarHeight=46"><img src="https://opencollective.com/daisyui/organizations.svg?button=false&width=500&avatarHeight=46"></a> |
| **Contributors** <br /> This project exists thanks to all the people who contribute. <br /> [[Contribute](https://github.com/saadeghi/daisyui/blob/master/.github/CONTRIBUTING.md)] | <a href="https://github.com/saadeghi/daisyui/graphs/contributors" target="_blank"><img src="https://contrib.rocks/image?repo=saadeghi/daisyui&columns=13" width="500"></a> |
Tweet about daisyUI: [![][tweet]][tweet-url]
## 📁 List of components
<details>
<summary>
show / hide
</summary>
- Actions
- [x] Button
- [x] Dropdown
- [x] Modal
- [x] Swap
- Data display
- [x] Alert
- [x] Avatar
- [x] Badge
- [ ] Banner
- [ ] Calendar
- [x] Card
- [x] Carousel
- [x] Chat bubble
- [x] Collapse
- [ ] Comment
- [x] Countdown
- [ ] Empty placeholder
- [x] Kbd
- [ ] Loading
- [x] Progress
- [x] Radial progress
- [x] Stat
- [x] Table
- [ ] Tag
- [ ] Timeline
- [x] Toast
- [x] Tooltip
- [ ] Treeview
- Data input
- [x] Checkbox
- [x] Text input
- [x] Radio
- [x] Range
- [x] Rating
- [x] Select
- [x] Textarea
- [x] Toggle
- [ ] Upload
- Layout
- [x] Artboard
- [x] Button group
- [x] Divider
- [x] Drawer
- [x] Footer
- [x] Hero
- [x] Indicator
- [x] Input group
- [x] Mask
- [x] Stack
- Navigation
- [x] Bottom Navigation
- [x] Breadcrumbs
- [x] Link
- [x] Menu
- [x] Navbar
- [x] Pagination
- [x] Steps
- [x] Tab
- Mockup
- [ ] Browser
- [x] Code
- [x] Phone
- [x] Window
</details>
## 📰 Featured on:
<details>
<summary>
show / hide
</summary>
- Blogs
- [Logrocket](https://blog.logrocket.com/daisyui-tailwind-components-react-apps/)
- [GraphCMS](https://graphcms.com/blog/build-a-personal-timeline-with-graphcms-and-sveltekit)
- [wweb.dev](https://wweb.dev/weekly/85/)
- [flaming.codes](https://flaming.codes/posts/boostrap-tailwind-alternative-with-daisy-ui)
- [rockyourcode](https://www.rockyourcode.com/how-to-setup-react-typescript-with-snowpack-and-daisyui/)
- [HackerNews](https://news.ycombinator.com/item?id=28004515)
- [Product Hunt](https://www.producthunt.com/posts/daisyui)
- [Siecle Digital](https://siecledigital.fr/2021/05/29/daisyui-plugin-gratuit-avec-composants-tailwind-css-a/)
- [speckyboy](https://speckyboy.com/weekly-news-for-designers-594/)
- [dailydev](https://app.daily.dev/posts/-4OPGw0te)
- [Future Tech Blog (Japanese)](https://future-architect.github.io/articles/20211124a/)
- [Adding Tailwind and Daisy UI to SvelteKit](https://dev.to/brewhousedigital/adding-tailwind-and-daisy-ui-to-sveltekit-2hk5)
- Youtube videos
- [Supabase & Sveltekit - Build Twitter in 75 minutes](https://www.youtube.com/watch?v=mPQyckogDYc)
- [Setup the Best Frontend JavaScript Stack - Svelte, Vite, TailwindCSS and DaisyUI](https://www.youtube.com/watch?v=mEBPN_9jTAE)
- [Jamstack powered Image gallery with Cloudinary, Tailwind and DaisyUI](https://www.youtube.com/watch?v=Hpjq0D1vcpM)
- [SvelteKit Crash Course w/ Tailwind CSS and DaisyUI, GraphQL and dynamic routes](https://www.youtube.com/watch?v=zH2qG9YwN3s)
- [DaisyUI : Worth a try or skip on by?](https://www.youtube.com/watch?v=hM9fENyAquM)
- [How to use daisyUI in SvelteKit?](https://www.youtube.com/watch?v=haKnkk6ds20)
- [DaisyUI Untuk Yang Mau Pindah ke TailwindCSS dari Bootstrap (Indonesian)](https://www.youtube.com/watch?v=Wm2g6FWec34)
- [Next.js - Tailwind - DeisyUI Setup](https://www.youtube.com/watch?v=uXQgJbUj3PQ)
- [Svelte Setup with Vite, Tailwind, DaisyUI. Custom Themes!](https://www.youtube.com/watch?v=5lF5PxBJoso)
- [Build a blog with Svelte](https://www.youtube.com/watch?v=u9jtHBE6NL8)
- [Building a product in less than 10 minutes: Laravel, InertiaJS, VueJS, TailwindCSS, DaisyUI](https://www.youtube.com/watch?v=XR1rS-CCfx0)
- [Infinite scrolling with MERN | ReactJS, TailwindCSS v3, DaisyUI | NodeJs, Express, MongoDB](https://www.youtube.com/watch?v=y7LYoRGRqRI)
- [How to install TailwindCSS v3 and DaisyUI to your React app](https://www.youtube.com/watch?v=XBYvzPe7skc)
- [Laravel: DaisyUI Agiliza Tus Desarrollos Con TailwindCSS + Select2 Tailwind Style (Spanish)](https://www.youtube.com/watch?v=28db3jojTgo)
- [Build a Responsive Landing Page using DaisyUI, ReactJS and Tailwind CSS](https://www.youtube.com/watch?v=37gtpvy-k9U)
- Courses
- [Building with SvelteKit and GraphCMS](https://explorers.netlify.com/learn/building-with-sveltekit-and-graphcms)
- [Svelte for Beginners by Mike Karan](https://www.udemy.com/course/svelte-for-beginners/)
- [React Front To Back 2022 by Brad Traversy](https://www.udemy.com/course/react-front-to-back-2022/)
- [Build Instagram profile page UI clone w/Next.js TailwindCSS](https://www.udemy.com/course/build-instagram-profile-page-ui-clone-nextjs-tailwindcss/)
- [Instagram UI Clone Login Page w/ NextJS & TailwindCSS](https://www.udemy.com/course/instagram-ui-clone-login-page-w-nextjs-tailwindcss/)
- [Build your Developer Portfolio and Blog from Scratch with Svelte and GraphCMS](https://www.freecodecamp.org/news/build-your-developer-portfolio-from-scratch-with-sveltekit-and-graphcms/)
- Starters
- [Vite-Boot](https://github.com/kirklin/vite-boot) Vite + Vue3 + TypeScript + Vue-Router4 + Pinia + Tailwind CSS + daisyUI Template.
</details>
---
<div align="center">
༼ つ ◕_◕ ༽つ Please share
[![][tweet]][tweet-url]
</div>
[install-size]: https://badgen.net/bundlephobia/minzip/daisyui?label=bundle%20size&color=green
[build]: https://badgen.net/github/checks/saadeghi/daisyui?label=build
[npm]: https://badgen.net/github/tag/saadeghi/daisyui?label=version&color=green
[dl]: https://badgen.net/npm/dt/daisyui?label=installs&icon=npm&color=green
[commit]: https://badgen.net/github/last-commit/saadeghi/daisyui?icon=github&color=green
[license]: https://badgen.net/github/license/saadeghi/daisyui?color=green
[stars]: https://badgen.net/github/stars/saadeghi/daisyui?color=green
[tweet]: https://img.shields.io/twitter/url?style=social&url=https%3A%2F%2Fgithub.com%2Fsaadeghi%2Fdaisyui
[install-size-url]: https://bundlephobia.com/result?p=daisyui
[license-url]: https://github.com/saadeghi/daisyui/blob/master/LICENSE
[npm-url]: https://www.npmjs.com/package/daisyui
[cdnjs-url]: https://cdnjs.com/libraries/daisyui
[gh-url]: https://github.com/saadeghi/daisyui
[tw-play-url]: https://daisyui.com/tailwindplay
[codepen-url]: https://codepen.io/saadeghi/pen/gOwWKvv
[unpkg-url]: https://unpkg.com/browse/daisyui/
[jsdeliver-url]: https://www.jsdelivr.com/package/npm/daisyui
[build-url]: https://github.com/saadeghi/daisyui/actions
[tweet-url]: https://twitter.com/intent/tweet?text=daisyUI%20%0D%0AComponents%20for%20Tailwind%20CSS%20%0D%0Ahttps://github.com/saadeghi/daisyui
[number-of-components]: https://badgen.net/badge/total%20components/49/green
[docs-url-install]: https://daisyui.com/docs/install
[docs-url]: https://daisyui.com/
[logo-url]: https://raw.githubusercontent.com/saadeghi/files/main/daisyui/logo-4.svg
[banner-url]: https://raw.githubusercontent.com/saadeghi/files/main/daisyui/card-3.png

118
package.json Normal file
View File

@ -0,0 +1,118 @@
{
"name": "daisyui",
"version": "2.51.2",
"description": "daisyUI - Tailwind CSS Components",
"author": "Pouya Saadeghi",
"license": "MIT",
"homepage": "https://daisyui.com",
"repository": {
"type": "git",
"url": "git+https://github.com/saadeghi/daisyui.git"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/daisyui"
},
"bugs": {
"url": "https://github.com/saadeghi/daisyui/issues"
},
"keywords": [
"design-system",
"tailwindcss",
"components",
"ui-library",
"component",
"framework",
"tailwind",
"theming",
"postcss",
"design",
"css",
"ui"
],
"main": "src/index.js",
"typings": "src/index.d.ts",
"types": "src/index.d.ts",
"files": [
"src/lib/**/*.js",
"dist/*.js",
"dist/{themes,styled,unstyled,full}.css",
"!dist/*.rtl.css",
"src/index.js",
"src/colors/*.js",
"src/index.d.ts"
],
"browserslist": [
"> 7%"
],
"publishConfig": {
"access": "public",
"branches": [
"master"
]
},
"prettier": "./src/prettier.config.js",
"scripts": {
"prettier": "prettier --write . --ignore-path ./src/.prettierignore",
"prebase": "postcss --config src/base src/base/*.css --base src --dir dist",
"base": "cat dist/base/*.css > dist/base.css",
"postbase": "prejss-cli dist/base.css --format commonjs",
"preutilities:global": "postcss --config src/utilities/global src/utilities/global/*.css --base src --dir dist",
"utilities:global": "cat dist/utilities/global/*.css > dist/utilities.css",
"postutilities:global": "prejss-cli dist/utilities.css --format commonjs",
"preutilities:unstyled": "postcss --config src/utilities/unstyled src/utilities/unstyled/*.css --base src --dir dist",
"utilities:unstyled": "cat dist/utilities/unstyled/*.css > dist/utilities-unstyled.css",
"postutilities:unstyled": "prejss-cli dist/utilities-unstyled.css --format commonjs",
"preutilities:styled": "postcss --config src/utilities/styled src/utilities/styled/*.css --base src --dir dist",
"utilities:styled": "cat dist/utilities/styled/*.css > dist/utilities-styled.css",
"postutilities:styled": "prejss-cli dist/utilities-styled.css --format commonjs",
"components": "postcss --config src/components src/components/**/*.css --base src --dir dist",
"merge:unstyled": "cat dist/components/unstyled/*.css > dist/unstyled.css",
"merge:styled": "cat dist/components/unstyled/*.css dist/components/styled/*.css > dist/styled.css",
"rtl": "rtlcss dist/unstyled.css -s && rtlcss dist/styled.css -s",
"prejss": "prejss-cli dist/{unstyled,styled}{,.rtl}.css --format commonjs",
"themes": "postcss src/themes/index.css -o dist/themes.css --config src/themes",
"full": "postcss src/full/index.css -o dist/full.css --config src/full",
"postfull": "parcel-css --minify --targets '> 7%' dist/full.css -o dist/full.css",
"build": "npm run base && npm run utilities:global && npm run utilities:unstyled && npm run utilities:styled && npm run components && npm run merge:unstyled && npm run merge:styled && npm run rtl && npm run prejss && npm run themes && npm run full",
"install:docs": "cd src/docs && npm install",
"dev": "cd src/docs && npm run dev",
"add": "touch src/components/unstyled/$npm_config_name.css && touch src/components/styled/$npm_config_name.css",
"postadd": "open src/components/unstyled/$npm_config_name.css && open src/components/styled/$npm_config_name.css",
"test": "vitest",
"test:coverage": "vitest --coverage",
"test:ui": "vitest --ui",
"test:run": "vitest run",
"playground": "cd src/experiments/playground && npm run dev",
"release": "rm -f package-lock.json && standard-version",
"release:patch": "rm -f package-lock.json && standard-version --release-as patch",
"release:minor": "rm -f package-lock.json && standard-version --release-as minor",
"release:major": "rm -f package-lock.json && standard-version --release-as major"
},
"devDependencies": {
"@parcel/css-cli": "1.5.0",
"@types/css-selector-tokenizer": "^0.7.1",
"@vitest/ui": "^0.7.10",
"autoprefixer": "10.0.4",
"c8": "^7.11.0",
"color-contrast-checker": "^2.1.0",
"postcss-cli": "8.3.0",
"postcss-import": "13.0.0",
"postcss-nested": "5.0.1",
"prejss-cli": "0.3.3",
"prettier": "^2.7.1",
"rtlcss": "3.0.0",
"standard-version": "^9.5.0",
"vitest": "^0.7.10"
},
"dependencies": {
"color": "^4.2",
"css-selector-tokenizer": "^0.8.0",
"postcss-js": "^4.0.0",
"tailwindcss": "^3"
},
"peerDependencies": {
"autoprefixer": "^10.0.2",
"postcss": "^8.1.6"
}
}

5
src/.prettierignore Normal file
View File

@ -0,0 +1,5 @@
**/docs/.svelte-kit
**/docs/build
**/docs/node_modules
**/CHANGELOG.md
**/dist

5
src/base/colors.css Normal file
View File

@ -0,0 +1,5 @@
:root,
[data-theme] {
background-color: hsla(var(--b1) / var(--tw-bg-opacity, 1));
color: hsla(var(--bc) / var(--tw-text-opacity, 1));
}

4
src/base/general.css Normal file
View File

@ -0,0 +1,4 @@
/* device specific */
html {
-webkit-tap-highlight-color: transparent;
}

View File

@ -0,0 +1,9 @@
module.exports = {
plugins: [
require("postcss-import"),
require("postcss-nested")({
bubble: ["screen"],
}),
require("autoprefixer"),
],
};

34
src/colors/colorNames.js Normal file
View File

@ -0,0 +1,34 @@
module.exports = {
primary: "--p",
"primary-focus": "--pf",
"primary-content": "--pc",
secondary: "--s",
"secondary-focus": "--sf",
"secondary-content": "--sc",
accent: "--a",
"accent-focus": "--af",
"accent-content": "--ac",
neutral: "--n",
"neutral-focus": "--nf",
"neutral-content": "--nc",
"base-100": "--b1",
"base-200": "--b2",
"base-300": "--b3",
"base-content": "--bc",
info: "--in",
"info-content": "--inc",
success: "--su",
"success-content": "--suc",
warning: "--wa",
"warning-content": "--wac",
error: "--er",
"error-content": "--erc",
};

313
src/colors/functions.js Normal file
View File

@ -0,0 +1,313 @@
const Color = require("color");
const colorNames = require("./colorNames");
module.exports = {
generateForegroundColorFrom: function (input, percentage = 0.8) {
if (Color(input).isDark()) {
let arr = Color(input).mix(Color("white"), percentage).saturate(10).hsl().array()
return arr[0].toPrecision(5).replace(/\.?0+$/,"") + " " + arr[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + arr[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
} else {
let arr = Color(input).mix(Color("black"), percentage).saturate(10).hsl().array()
return arr[0].toPrecision(5).replace(/\.?0+$/,"") + " " + arr[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + arr[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
}
},
convertToHsl: function (input) {
let resultObj = {};
if (typeof input === "object" && input !== null) {
Object.entries(input).forEach(([rule, value]) => {
if (colorNames.hasOwnProperty(rule)) {
const hslArray = Color(value).hsl().array();
resultObj[colorNames[rule]] = hslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + hslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + hslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
} else {
resultObj[rule] = value;
}
// auto generate focus colors
if (!input.hasOwnProperty("primary-focus")) {
const darkerHslArray = Color(input["primary"]).darken(0.2).hsl().array();
resultObj["--pf"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
}
if (!input.hasOwnProperty("secondary-focus")) {
const darkerHslArray = Color(input["secondary"]).darken(0.2).hsl().array();
resultObj["--sf"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
}
if (!input.hasOwnProperty("accent-focus")) {
const darkerHslArray = Color(input["accent"]).darken(0.2).hsl().array();
resultObj["--af"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
}
if (!input.hasOwnProperty("neutral-focus")) {
const darkerHslArray = Color(input["neutral"]).darken(0.2).hsl().array();
resultObj["--nf"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
}
// auto generate base colors
if (!input.hasOwnProperty("base-100")) {
resultObj["--b1"] = 0 + " " + 0 + "%" + " " + 100 + "%";
}
if (!input.hasOwnProperty("base-200")) {
const darkerHslArray = Color(input["base-100"]).darken(0.1).hsl().array();
resultObj["--b2"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
}
if (!input.hasOwnProperty("base-300")) {
if (input.hasOwnProperty("base-200")) {
const darkerHslArray = Color(input["base-200"]).darken(0.1).hsl().array();
resultObj["--b3"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
} else {
const darkerHslArray = Color(input["base-100"]).darken(0.1).darken(0.1).hsl().array();
resultObj["--b3"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
}
}
// auto generate state colors
if (!input.hasOwnProperty("info")) {
resultObj["--in"] = 198 + " " + 93 + "%" + " " + 60 + "%";
}
if (!input.hasOwnProperty("success")) {
resultObj["--su"] = 158 + " " + 64 + "%" + " " + 52 + "%";
}
if (!input.hasOwnProperty("warning")) {
resultObj["--wa"] = 43 + " " + 96 + "%" + " " + 56 + "%";
}
if (!input.hasOwnProperty("error")) {
resultObj["--er"] = 0 + " " + 91 + "%" + " " + 71 + "%";
}
// auto generate content colors
if (!input.hasOwnProperty("base-content")) {
resultObj["--bc"] = this.generateForegroundColorFrom(input["base-100"])
}
if (!input.hasOwnProperty("primary-content")) {
resultObj["--pc"] = this.generateForegroundColorFrom(input["primary"])
}
if (!input.hasOwnProperty("secondary-content")) {
resultObj["--sc"] = this.generateForegroundColorFrom(input["secondary"])
}
if (!input.hasOwnProperty("accent-content")) {
resultObj["--ac"] = this.generateForegroundColorFrom(input["accent"])
}
if (!input.hasOwnProperty("neutral-content")) {
resultObj["--nc"] = this.generateForegroundColorFrom(input["neutral"])
}
if (!input.hasOwnProperty("info-content")) {
if (input.hasOwnProperty("info")) {
resultObj["--inc"] = this.generateForegroundColorFrom(input["info"])
} else {
resultObj["--inc"] = 198 + " " + 100 + "%" + " " + 12 + "%";
}
}
if (!input.hasOwnProperty("success-content")) {
if (input.hasOwnProperty("success")) {
resultObj["--suc"] = this.generateForegroundColorFrom(input["success"])
} else {
resultObj["--suc"] = 158 + " " + 100 + "%" + " " + 10 + "%";
}
}
if (!input.hasOwnProperty("warning-content")) {
if (input.hasOwnProperty("warning")) {
resultObj["--wac"] = this.generateForegroundColorFrom(input["warning"])
} else {
resultObj["--wac"] = 43 + " " + 100 + "%" + " " + 11 + "%";
}
}
if (!input.hasOwnProperty("error-content")) {
if (input.hasOwnProperty("error")) {
resultObj["--erc"] = this.generateForegroundColorFrom(input["error"])
} else {
resultObj["--erc"] = 0 + " " + 100 + "%" + " " + 14 + "%";
}
}
// auto generate css variables
if (!input.hasOwnProperty("--rounded-box")) {
resultObj["--rounded-box"] = "1rem";
}
if (!input.hasOwnProperty("--rounded-btn")) {
resultObj["--rounded-btn"] = "0.5rem";
}
if (!input.hasOwnProperty("--rounded-badge")) {
resultObj["--rounded-badge"] = "1.9rem";
}
if (!input.hasOwnProperty("--animation-btn")) {
resultObj["--animation-btn"] = "0.25s";
}
if (!input.hasOwnProperty("--animation-input")) {
resultObj["--animation-input"] = ".2s";
}
if (!input.hasOwnProperty("--btn-text-case")) {
resultObj["--btn-text-case"] = "uppercase";
}
if (!input.hasOwnProperty("--btn-focus-scale")) {
resultObj["--btn-focus-scale"] = "0.95";
}
if (!input.hasOwnProperty("--border-btn")) {
resultObj["--border-btn"] = "1px";
}
if (!input.hasOwnProperty("--tab-border")) {
resultObj["--tab-border"] = "1px";
}
if (!input.hasOwnProperty("--tab-radius")) {
resultObj["--tab-radius"] = "0.5rem";
}
});
return resultObj;
}
return input;
},
injectThemes: function (addBase, config, themes) {
let includedThemesObj = new Object();
// add light themes
if (config("daisyui.themes") == false) {
Object.entries(themes).forEach(([theme, index]) => {
includedThemesObj[theme] = this.convertToHsl(themes[theme]);
});
}
// add default themes
if (config("daisyui.themes") != false) {
Object.entries(themes).forEach(([theme, index]) => {
includedThemesObj[theme] = this.convertToHsl(themes[theme]);
});
}
// add custom themes
if (Array.isArray(config("daisyui.themes"))) {
config("daisyui.themes").forEach((item, index) => {
if (typeof item === "object" && item !== null) {
Object.entries(item).forEach(([customThemeName, customThemevalue]) => {
includedThemesObj["[data-theme=" + customThemeName + "]"] =
this.convertToHsl(customThemevalue);
});
}
});
}
let themeOrder = [];
if (Array.isArray(config("daisyui.themes"))) {
config("daisyui.themes").forEach((theme, index) => {
if (typeof theme === "object" && theme !== null) {
Object.entries(theme).forEach(([customThemeName, customThemevalue]) => {
themeOrder.push(customThemeName);
});
} else if (
includedThemesObj.hasOwnProperty("[data-theme=" + theme + "]")
) {
themeOrder.push(theme);
}
});
} else if (config("daisyui.themes") != false) {
themeOrder = [
"light",
"dark",
"cupcake",
"bumblebee",
"emerald",
"corporate",
"synthwave",
"retro",
"cyberpunk",
"valentine",
"halloween",
"garden",
"forest",
"aqua",
"lofi",
"pastel",
"fantasy",
"wireframe",
"black",
"luxury",
"dracula",
"cmyk",
"autumn",
"business",
"acid",
"lemonade",
"night",
"coffee",
"winter",
];
} else if (config("daisyui.themes") == false) {
themeOrder.push("light");
}
// inject themes in order
themeOrder.forEach((themeName, index) => {
if (index === 0) {
// first theme as root
addBase({
[":root"]: includedThemesObj["[data-theme=" + themeName + "]"],
});
} else if (index === 1) {
// auto dark
if (config("daisyui.darkTheme")) {
if (
themeOrder[0] != config("daisyui.darkTheme") &&
themeOrder.includes(config("daisyui.darkTheme"))
) {
addBase({
["@media (prefers-color-scheme: dark)"]: {
[":root"]:
includedThemesObj[
`[data-theme=${config("daisyui.darkTheme")}]`
],
},
});
}
}
else if (config("daisyui.darkTheme") === false ) {
// disables prefers-color-scheme: dark
} else {
if (themeOrder[0] != "dark" && themeOrder.includes("dark")) {
addBase({
["@media (prefers-color-scheme: dark)"]: {
[":root"]: includedThemesObj["[data-theme=dark]"],
},
});
}
}
// theme 0 with name
addBase({
["[data-theme=" + themeOrder[0] + "]"]:
includedThemesObj["[data-theme=" + themeOrder[0] + "]"],
});
// theme 1 with name
addBase({
["[data-theme=" + themeOrder[1] + "]"]:
includedThemesObj["[data-theme=" + themeOrder[1] + "]"],
});
} else {
addBase({
["[data-theme=" + themeName + "]"]:
includedThemesObj["[data-theme=" + themeName + "]"],
});
}
});
return {
includedThemesObj: includedThemesObj,
themeOrder: themeOrder,
};
}
}

52
src/colors/index.js Normal file
View File

@ -0,0 +1,52 @@
function withOpacityValue(variable, fallbackColor) {
return ({ opacityValue }) => {
let fallbackColorValue = "";
if (fallbackColor) {
fallbackColorValue = `, var(${fallbackColor})`;
}
if (opacityValue === undefined) {
return `hsl(var(${variable}${fallbackColorValue}))`;
}
return `hsl(var(${variable}${fallbackColorValue}) / ${opacityValue})`;
};
}
let colorObject = {
transparent: "transparent",
current: "currentColor",
primary: withOpacityValue("--p"),
"primary-focus": withOpacityValue("--pf", "--p"),
"primary-content": withOpacityValue("--pc"),
secondary: withOpacityValue("--s"),
"secondary-focus": withOpacityValue("--sf", "--s"),
"secondary-content": withOpacityValue("--sc"),
accent: withOpacityValue("--a"),
"accent-focus": withOpacityValue("--af", "--a"),
"accent-content": withOpacityValue("--ac"),
neutral: withOpacityValue("--n"),
"neutral-focus": withOpacityValue("--nf", "--n"),
"neutral-content": withOpacityValue("--nc"),
"base-100": withOpacityValue("--b1"),
"base-200": withOpacityValue("--b2", "--b1"),
"base-300": withOpacityValue("--b3", "--b2"),
"base-content": withOpacityValue("--bc"),
info: withOpacityValue("--in"),
"info-content": withOpacityValue("--inc", "--nc"),
success: withOpacityValue("--su"),
"success-content": withOpacityValue("--suc", "--nc"),
warning: withOpacityValue("--wa"),
"warning-content": withOpacityValue("--wac", "--nc"),
error: withOpacityValue("--er"),
"error-content": withOpacityValue("--erc", "--nc"),
};
module.exports = colorObject;

434
src/colors/themes.js Normal file
View File

@ -0,0 +1,434 @@
module.exports = {
"[data-theme=aqua]": {
"color-scheme": "dark",
primary: "#09ecf3",
"primary-content": "#005355",
secondary: "#966fb3",
accent: "#ffe999",
neutral: "#3b8ac4",
"base-100": "#345da7",
"info": "#2563eb",
"success": "#16a34a",
"warning": "#d97706",
"error": "#dc2626",
},
"[data-theme=black]": {
"color-scheme": "dark",
primary: "#343232",
secondary: "#343232",
accent: "#343232",
"base-100": "#000000",
"base-200": "#0D0D0D",
"base-300": "#1A1919",
neutral: "#272626",
"neutral-focus": "#343232",
info: "#0000ff",
success: "#008000",
warning: "#ffff00",
error: "#ff0000",
"--rounded-box": "0",
"--rounded-btn": "0",
"--rounded-badge": "0",
"--animation-btn": "0",
"--animation-input": "0",
"--btn-text-case": "lowercase",
"--btn-focus-scale": "1",
"--tab-radius": "0",
},
"[data-theme=bumblebee]": {
"color-scheme": "light",
primary: "#e0a82e",
"primary-content": "#181830",
secondary: "#f9d72f",
"secondary-content": "#181830",
accent: "#181830",
neutral: "#181830",
"base-100": "#ffffff",
},
"[data-theme=cmyk]": {
"color-scheme": "light",
primary: "#45AEEE",
secondary: "#E8488A",
accent: "#FFF232",
neutral: "#1a1a1a",
"base-100": "#ffffff",
info: "#4AA8C0",
success: "#823290",
warning: "#EE8133",
error: "#E93F33",
},
"[data-theme=corporate]": {
"color-scheme": "light",
primary: "#4b6bfb",
secondary: "#7b92b2",
accent: "#67cba0",
neutral: "#181a2a",
"neutral-content": "#edf2f7",
"base-100": "#ffffff",
"base-content": "#181a2a",
"--rounded-box": "0.25rem",
"--rounded-btn": ".125rem",
"--rounded-badge": ".125rem",
"--animation-btn": "0",
"--animation-input": "0",
"--btn-focus-scale": "1",
},
"[data-theme=cupcake]": {
"color-scheme": "light",
primary: "#65c3c8",
secondary: "#ef9fbc",
accent: "#eeaf3a",
neutral: "#291334",
"base-100": "#faf7f5",
"base-200": "#efeae6",
"base-300": "#e7e2df",
"base-content": "#291334",
"--rounded-btn": "1.9rem",
"--tab-border": "2px",
"--tab-radius": ".5rem",
},
"[data-theme=cyberpunk]": {
"color-scheme": "light",
fontFamily: "ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace",
primary: "#ff7598",
secondary: "#75d1f0",
accent: "#c07eec",
neutral: "#423f00",
"neutral-content": "#ffee00",
"base-100": "#ffee00",
"--rounded-box": "0",
"--rounded-btn": "0",
"--rounded-badge": "0",
"--tab-radius": "0",
},
"[data-theme=dark]": {
"color-scheme": "dark",
primary: "#661AE6",
"primary-content": "#ffffff",
secondary: "#D926AA",
"secondary-content": "#ffffff",
accent: "#1FB2A5",
"accent-content": "#ffffff",
neutral: "#191D24",
"neutral-focus": "#111318",
"neutral-content": "#A6ADBB",
"base-100": "#2A303C",
"base-200": "#242933",
"base-300": "#20252E",
"base-content": "#A6ADBB",
},
"[data-theme=dracula]": {
"color-scheme": "dark",
primary: "#ff79c6",
secondary: "#bd93f9",
accent: "#ffb86c",
neutral: "#414558",
"base-100": "#282a36",
"base-content": "#f8f8f2",
info: "#8be9fd",
success: "#50fa7b",
warning: "#f1fa8c",
error: "#ff5555",
},
"[data-theme=emerald]": {
"color-scheme": "light",
primary: "#66cc8a",
"primary-content": "#223D30",
secondary: "#377cfb",
"secondary-content": "#f9fafb",
accent: "#ea5234",
"accent-content": "#f9fafb",
neutral: "#333c4d",
"neutral-content": "#f9fafb",
"base-100": "#ffffff",
"base-content": "#333c4d",
"--animation-btn": "0",
"--animation-input": "0",
"--btn-focus-scale": "1",
},
"[data-theme=fantasy]": {
"color-scheme": "light",
primary: "#6e0b75",
secondary: "#007ebd",
accent: "#f8860d",
neutral: "#1f2937",
"base-100": "#ffffff",
"base-content": "#1f2937",
},
"[data-theme=forest]": {
"color-scheme": "dark",
primary: "#1eb854",
"primary-content": "#c2ffd7",
secondary: "#1fd65f",
accent: "#d99330",
neutral: "#110e0e",
"base-100": "#171212",
"--rounded-btn": "1.9rem",
},
"[data-theme=garden]": {
"color-scheme": "light",
primary: "#5c7f67",
secondary: "#ecf4e7",
"secondary-content": "#24331a",
accent: "#fae5e5",
"accent-content": "#322020",
neutral: "#5d5656",
"neutral-content": "#e9e7e7",
"base-100": "#e9e7e7",
"base-content": "#100f0f",
},
"[data-theme=halloween]": {
"color-scheme": "dark",
primary: "#f28c18",
"primary-content": "#131616",
secondary: "#6d3a9c",
accent: "#51a800",
neutral: "#1b1d1d",
"base-100": "#212121",
info: "#2563eb",
success: "#16a34a",
warning: "#d97706",
error: "#dc2626",
},
"[data-theme=light]": {
"color-scheme": "light",
primary: "#570df8",
"primary-content": "#ffffff",
secondary: "#f000b8",
"secondary-content": "#ffffff",
accent: "#37cdbe",
"accent-content": "#163835",
neutral: "#3d4451",
"neutral-content": "#ffffff",
"base-100": "#ffffff",
"base-200": "#F2F2F2",
"base-300": "#E5E6E6",
"base-content": "#1f2937",
},
"[data-theme=lofi]": {
"color-scheme": "light",
"primary": "#0D0D0D",
"primary-content": "#ffffff",
"secondary": "#1A1919",
"secondary-content": "#ffffff",
"accent": "#262626",
"accent-content": "#ffffff",
"neutral": "#000000",
"neutral-content": "#ffffff",
"base-100": "#ffffff",
"base-200": "#F2F2F2",
"base-300": "#E6E5E5",
"base-content": "#000000",
"info": "#0070F3",
"info-content": "#ffffff",
"success": "#21CC51",
"success-content": "#ffffff",
"warning": "#FF6154",
"warning-content": "#ffffff",
"error": "#DE1C8D",
"error-content": "#ffffff",
"--rounded-box": "0.25rem",
"--rounded-btn": "0.125rem",
"--rounded-badge": "0.125rem",
"--animation-btn": "0",
"--animation-input": "0",
"--btn-focus-scale": "1",
"--tab-radius": "0",
},
"[data-theme=luxury]": {
"color-scheme": "dark",
primary: "#ffffff",
secondary: "#152747",
accent: "#513448",
neutral: "#171618",
"neutral-content": "#dca54c",
"base-100": "#09090b",
"base-200": "#171618",
"base-300": "#2e2d2f",
"base-content": "#dca54c",
info: "#66c6ff",
success: "#87d039",
warning: "#e2d562",
error: "#ff6f6f",
},
"[data-theme=pastel]": {
"color-scheme": "light",
primary: "#d1c1d7",
secondary: "#f6cbd1",
accent: "#b4e9d6",
neutral: "#70acc7",
"base-100": "#ffffff",
"base-200": "#f9fafb",
"base-300": "#d1d5db",
"--rounded-btn": "1.9rem",
},
"[data-theme=retro]": {
"color-scheme": "light",
primary: "#ef9995",
"primary-content": "#282425",
secondary: "#a4cbb4",
"secondary-content": "#282425",
accent: "#ebdc99",
"accent-content": "#282425",
neutral: "#7d7259",
"neutral-content": "#e4d8b4",
"base-100": "#e4d8b4",
"base-200": "#d2c59d",
"base-300": "#c6b386",
"base-content": "#282425",
"info": "#2563eb",
"success": "#16a34a",
"warning": "#d97706",
"error": "#dc2626",
"--rounded-box": "0.4rem",
"--rounded-btn": "0.4rem",
"--rounded-badge": "0.4rem",
},
"[data-theme=synthwave]": {
"color-scheme": "dark",
primary: "#e779c1",
secondary: "#58c7f3",
accent: "#f3cc30",
neutral: "#20134e",
"neutral-content": "#f9f7fd",
"base-100": "#2d1b69",
"base-content": "#f9f7fd",
info: "#53c0f3",
"info-content": "#201047",
success: "#71ead2",
"success-content": "#201047",
warning: "#f3cc30",
"warning-content": "#201047",
error: "#e24056",
"error-content": "#f9f7fd",
},
"[data-theme=valentine]": {
"color-scheme": "light",
primary: "#e96d7b",
secondary: "#a991f7",
accent: "#88dbdd",
neutral: "#af4670",
"neutral-content": "#f0d6e8",
"base-100": "#f0d6e8",
"base-content": "#632c3b",
"info": "#2563eb",
"success": "#16a34a",
"warning": "#d97706",
"error": "#dc2626",
"--rounded-btn": "1.9rem",
},
"[data-theme=wireframe]": {
"color-scheme": "light",
fontFamily: 'Chalkboard,comic sans ms,"sanssecondaryerif"',
primary: "#b8b8b8",
secondary: "#b8b8b8",
accent: "#b8b8b8",
neutral: "#ebebeb",
"base-100": "#ffffff",
"base-200": "#eeeeee",
"base-300": "#dddddd",
info: "#0000ff",
success: "#008000",
warning: "#a6a659",
error: "#ff0000",
"--rounded-box": "0.2rem",
"--rounded-btn": "0.2rem",
"--rounded-badge": "0.2rem",
"--tab-radius": "0.2rem",
},
"[data-theme=autumn]": {
"color-scheme": "light",
primary: "#8C0327",
secondary: "#D85251",
accent: "#D59B6A",
neutral: "#826A5C",
"base-100": "#f1f1f1",
info: "#42ADBB",
success: "#499380",
warning: "#E97F14",
error: "#DF1A2F",
},
"[data-theme=business]": {
"color-scheme": "dark",
primary: "#1C4E80",
secondary: "#7C909A",
accent: "#EA6947",
neutral: "#23282E",
"base-100": "#202020",
info: "#0091D5",
success: "#6BB187",
warning: "#DBAE59",
error: "#AC3E31",
"--rounded-box": "0.25rem",
"--rounded-btn": ".125rem",
"--rounded-badge": ".125rem",
},
"[data-theme=acid]": {
"color-scheme": "light",
primary: "#FF00F4",
secondary: "#FF7400",
accent: "#CBFD03",
neutral: "#191A3F",
"base-100": "#fafafa",
info: "#3194F6",
success: "#5FC992",
warning: "#F7DE2D",
error: "#E60300",
"--rounded-box": "1.25rem",
"--rounded-btn": "1rem",
"--rounded-badge": "1rem",
},
"[data-theme=lemonade]": {
"color-scheme": "light",
primary: "#519903",
secondary: "#E9E92E",
accent: "#F7F9CA",
neutral: "#191A3F",
"base-100": "#ffffff",
info: "#C8E1E7",
success: "#DEF29F",
warning: "#F7E589",
error: "#F2B6B5",
},
"[data-theme=night]": {
"color-scheme": "dark",
"primary": "#38bdf8",
"secondary": "#818CF8",
"accent": "#F471B5",
"neutral": "#1E293B",
"neutral-focus": "#273449",
"base-100": "#0F172A",
"info": "#0CA5E9",
"success": "#2DD4BF",
"warning": "#F4BF50",
"error": "#FB7085",
},
"[data-theme=coffee]": {
"color-scheme": "dark",
"primary": "#DB924B",
"secondary": "#263E3F",
"accent": "#10576D",
"neutral": "#120C12",
"base-100": "#20161F",
"base-content": "#756E63",
"info": "#8DCAC1",
"success": "#9DB787",
"warning": "#FFD25F",
"error": "#FC9581",
},
"[data-theme=winter]": {
"color-scheme": "light",
"primary": "#047AFF",
"secondary": "#463AA2",
"accent": "#C148AC",
"neutral": "#021431",
"base-100": "#ffffff",
"base-200": "#F2F7FF",
"base-300": "#E3E9F4",
"base-content": "#394E6A",
"info": "#93E7FB",
"success": "#81CFD1",
"warning": "#EFD7BB",
"error": "#E58B8B",
},
};

View File

@ -0,0 +1,10 @@
module.exports = {
plugins: [
require("postcss-import"),
require("postcss-nested")({
bubble: ["screen"],
}),
require("tailwindcss")("./src/components/tailwind.config.js"),
require("autoprefixer"),
],
};

View File

@ -0,0 +1,15 @@
.alert {
@apply bg-base-200 p-4 rounded-box;
&-info {
@apply bg-info text-info-content;
}
&-success {
@apply bg-success text-success-content;
}
&-warning {
@apply bg-warning text-warning-content;
}
&-error {
@apply bg-error text-error-content;
}
}

View File

@ -0,0 +1,6 @@
.avatar-group {
@apply flex overflow-hidden;
:where(.avatar) {
@apply overflow-hidden rounded-full border-4 border-base-100;
}
}

View File

@ -0,0 +1,117 @@
.badge {
@apply border border-neutral bg-neutral text-neutral-content rounded-badge;
&-primary {
@apply border-primary bg-primary text-primary-content;
}
&-secondary {
@apply border-secondary bg-secondary text-secondary-content;
}
&-accent {
@apply border-accent bg-accent text-accent-content;
}
&-info {
@apply border-transparent bg-info text-info-content;
}
&-success {
@apply border-transparent bg-success text-success-content;
}
&-warning {
@apply border-transparent bg-warning text-warning-content;
}
&-error {
@apply border-transparent bg-error text-error-content;
}
&-ghost {
@apply border-base-200 bg-base-200 text-base-content;
}
&-outline {
@apply border-current border-opacity-50 bg-transparent text-current;
&.badge-primary {
@apply text-primary;
}
&.badge-secondary {
@apply text-secondary;
}
&.badge-accent {
@apply text-accent;
}
&.badge-info {
@apply text-info;
}
&.badge-success {
@apply text-success;
}
&.badge-warning {
@apply text-warning;
}
&.badge-error {
@apply text-error;
}
}
}
.btn-outline {
.badge {
@apply border-neutral-focus text-neutral-content;
}
&.btn-primary .badge {
@apply border-primary bg-primary text-primary-content;
}
&.btn-secondary .badge {
@apply border-secondary bg-secondary text-secondary-content;
}
&.btn-accent .badge {
@apply border-accent bg-accent text-accent-content;
}
.badge.outline {
@apply border-neutral-focus bg-transparent;
}
&.btn-primary .badge-outline {
@apply border-primary bg-transparent text-primary;
}
&.btn-secondary .badge-outline {
@apply border-secondary bg-transparent text-secondary;
}
&.btn-accent .badge-outline {
@apply border-accent bg-transparent text-accent;
}
&.btn-info .badge-outline {
@apply border-info bg-transparent text-info;
}
&.btn-success .badge-outline {
@apply border-success bg-transparent text-success;
}
&.btn-warning .badge-outline {
@apply border-warning bg-transparent text-warning;
}
&.btn-error .badge-outline {
@apply border-error bg-transparent text-error;
}
&:hover .badge {
@apply border-base-200 bg-base-200 text-base-content;
&.outline {
@apply border-base-200 text-neutral-content;
}
}
&.btn-primary:hover .badge {
@apply border-primary-content bg-primary-content text-primary;
&.outline {
@apply border-primary-content bg-primary-focus text-primary-content;
}
}
&.btn-secondary:hover .badge {
@apply border-secondary-content bg-secondary-content text-secondary;
&.outline {
@apply border-secondary-content bg-secondary-focus text-secondary-content;
}
}
&.btn-accent:hover .badge {
@apply border-accent-content bg-accent-content text-accent;
&.outline {
@apply border-accent-content bg-accent-focus text-accent-content;
}
}
}

View File

@ -0,0 +1,29 @@
.btm-nav {
@apply h-16 bg-base-100 text-current;
&>* {
@apply border-current;
&:not(.active) {
@apply pt-0.5;
}
/* active */
&:where(.active) {
@apply bg-base-100 border-t-2;
}
/* disabled */
&.disabled,
&.disabled:hover,
&[disabled],
&[disabled]:hover {
@apply border-opacity-0 bg-neutral bg-opacity-10 text-base-content text-opacity-20 pointer-events-none;
}
.label {
@apply text-base;
}
}
}

View File

@ -0,0 +1,27 @@
.breadcrumbs {
@apply py-2;
& > ul {
& > li {
& > a {
&:focus {
@apply outline-none;
}
&:focus-visible {
outline: 2px solid currentColor;
outline-offset: 2px;
}
}
& + *:before {
content: "";
@apply ml-2 mr-3 block h-1.5 w-1.5 rotate-45 transform opacity-40;
border-top: 1px solid;
border-right: 1px solid;
background-color: transparent;
}
}
}
}
[dir="rtl"] .breadcrumbs > ul > li + *:before {
--tw-rotate: -135deg;
}

View File

@ -0,0 +1,238 @@
.btn {
@apply font-semibold uppercase no-underline;
border-width: var(--border-btn, 1px);
animation: button-pop var(--animation-btn, 0.25s) ease-out;
text-transform: var(--btn-text-case, uppercase);
&:active:hover,
&:active:focus {
animation: none;
}
&:active:hover,
&:active:focus {
transform: scale(var(--btn-focus-scale, 0.95));
}
/* default btn */
& {
@apply border-neutral bg-neutral text-neutral-content no-underline;
&:hover,
&-active {
@apply border-neutral-focus bg-neutral-focus;
}
&:focus-visible {
outline: 2px solid hsl(var(--nf));
outline-offset: 2px;
}
}
/* brand colors */
&-primary {
@apply border-primary bg-primary text-primary-content;
&:hover,
&.btn-active {
@apply border-primary-focus bg-primary-focus;
}
&:focus-visible {
outline: 2px solid hsl(var(--p));
}
}
&-secondary {
@apply border-secondary bg-secondary text-secondary-content;
&:hover,
&.btn-active {
@apply border-secondary-focus bg-secondary-focus;
}
&:focus-visible {
outline: 2px solid hsl(var(--s));
}
}
&-accent {
@apply border-accent bg-accent text-accent-content;
&:hover,
&.btn-active {
@apply border-accent-focus bg-accent-focus;
}
&:focus-visible {
outline: 2px solid hsl(var(--a));
}
}
/* btn with state colors */
&-info {
@apply border-info bg-info text-info-content;
&:hover,
&.btn-active {
@apply border-info bg-info;
}
&:focus-visible {
outline: 2px solid hsl(var(--in));
}
}
&-success {
@apply border-success bg-success text-success-content;
&:hover,
&.btn-active {
@apply border-success bg-success;
}
&:focus-visible {
outline: 2px solid hsl(var(--su));
}
}
&-warning {
@apply border-warning bg-warning text-warning-content;
&:hover,
&.btn-active {
@apply border-warning bg-warning;
}
&:focus-visible {
outline: 2px solid hsl(var(--wa));
}
}
&-error {
@apply border-error bg-error text-error-content;
&:hover,
&.btn-active {
@apply border-error bg-error;
}
&:focus-visible {
outline: 2px solid hsl(var(--er));
}
}
/* glass */
&.glass {
&:hover,
&.btn-active {
--glass-opacity: 25%;
--glass-border-opacity: 15%;
}
&:focus-visible {
outline: 2px solid currentColor;
}
}
/* btn variants */
&-ghost {
@apply border border-transparent bg-transparent text-current;
&:hover,
&.btn-active {
@apply border-opacity-0 bg-base-content bg-opacity-20;
}
&:focus-visible {
outline: 2px solid currentColor;
}
}
&-link {
@apply border-transparent bg-transparent text-primary underline;
&:hover,
&.btn-active {
@apply border-transparent bg-transparent underline;
}
&:focus-visible {
outline: 2px solid currentColor;
}
}
/* outline */
&-outline {
@apply border-current bg-transparent text-base-content;
&:hover,
&.btn-active {
@apply border-base-content bg-base-content text-base-100;
}
&.btn-primary {
@apply text-primary;
&:hover,
&.btn-active {
@apply border-primary-focus bg-primary-focus text-primary-content;
}
}
&.btn-secondary {
@apply text-secondary;
&:hover,
&.btn-active {
@apply border-secondary-focus bg-secondary-focus text-secondary-content;
}
}
&.btn-accent {
@apply text-accent;
&:hover,
&.btn-active {
@apply border-accent-focus bg-accent-focus text-accent-content;
}
}
&.btn-success {
@apply text-success;
&:hover,
&.btn-active {
@apply border-success bg-success text-success-content;
}
}
&.btn-info {
@apply text-info;
&:hover,
&.btn-active {
@apply border-info bg-info text-info-content;
}
}
&.btn-warning {
@apply text-warning;
&:hover,
&.btn-active {
@apply border-warning bg-warning text-warning-content;
}
}
&.btn-error {
@apply text-error;
&:hover,
&.btn-active {
@apply border-error bg-error text-error-content;
}
}
}
/* disabled */
&-disabled,
&-disabled:hover,
&[disabled],
&[disabled]:hover {
@apply border-opacity-0 bg-neutral bg-opacity-20 text-base-content text-opacity-20;
}
/* loading */
&.loading {
&.btn-square:before,
&.btn-circle:before {
@apply mr-0;
}
&.btn-xl:before,
&.btn-lg:before {
@apply h-5 w-5;
}
&.btn-sm:before,
&.btn-xs:before {
@apply h-3 w-3;
}
}
}
/* group */
.btn-group {
& > input[type="radio"]:checked.btn,
& > .btn-active {
@apply border-primary bg-primary text-primary-content;
&:focus-visible {
outline: 2px solid hsl(var(--p));
}
}
}
@keyframes button-pop {
0% {
transform: scale(var(--btn-focus-scale, 0.95));
}
40% {
transform: scale(1.02);
}
100% {
transform: scale(1);
}
}

View File

@ -0,0 +1,53 @@
.card {
@apply rounded-box;
:where(figure:first-child) {
@apply overflow-hidden;
border-start-start-radius: inherit;
border-start-end-radius: inherit;
border-end-start-radius: unset;
border-end-end-radius: unset;
}
:where(figure:last-child) {
@apply overflow-hidden;
border-start-start-radius: unset;
border-start-end-radius: unset;
border-end-start-radius: inherit;
border-end-end-radius: inherit;
}
&:focus-visible {
outline: 2px solid currentColor;
outline-offset: 2px;
}
&.bordered {
@apply border border-base-200;
}
&-bordered {
@apply border border-base-200;
}
&.compact {
.card-body {
@apply p-4 text-sm;
}
}
&-body {
padding: var(--padding-card, 2rem);
@apply flex flex-col gap-2;
}
&-title {
@apply flex items-center gap-2 text-xl font-semibold;
}
&.image-full {
&:before {
@apply z-10 bg-neutral opacity-75 rounded-box;
}
}
&.image-full > &-body {
@apply z-20 text-neutral-content;
}
&.image-full {
:where(figure) {
@apply overflow-hidden;
border-radius: inherit;
}
}
}

View File

@ -0,0 +1,7 @@
.carousel {
-ms-overflow-style: none;
scrollbar-width: none;
&::-webkit-scrollbar {
@apply hidden;
}
}

View File

@ -0,0 +1,51 @@
.chat {
&-bubble {
@apply rounded-box;
min-height: 2.75rem;
min-width: 2.75rem;
/* default */
& {
@apply bg-neutral text-neutral-content;
}
/* brand colors */
&-primary {
@apply bg-primary text-primary-content;
}
&-secondary {
@apply bg-secondary text-secondary-content;
}
&-accent {
@apply bg-accent text-accent-content;
}
/* state colors */
&-info {
@apply bg-info text-info-content;
}
&-success {
@apply bg-success text-success-content;
}
&-warning {
@apply bg-warning text-warning-content;
}
&-error {
@apply bg-error text-error-content;
}
}
&-start .chat-bubble {
@apply rounded-bl-none;
&:before {
left: -0.75rem;
}
}
&-end .chat-bubble {
@apply rounded-br-none;
&:before {
left: 100%;
}
}
}

View File

@ -0,0 +1,142 @@
.checkbox {
--chkbg: var(--bc);
--chkfg: var(--b1);
@apply h-6 w-6 cursor-pointer appearance-none border border-base-content border-opacity-20 rounded-btn;
&:focus-visible {
outline: 2px solid hsl(var(--bc));
outline-offset: 2px;
}
&:checked,
&[checked="true"],
&[aria-checked="true"] {
@apply bg-base-content bg-no-repeat;
animation: checkmark var(--animation-input, 0.2s) ease-in-out;
background-image: linear-gradient(-45deg, transparent 65%, hsl(var(--chkbg)) 65.99%), linear-gradient(45deg, transparent 75%, hsl(var(--chkbg)) 75.99%), linear-gradient(-45deg, hsl(var(--chkbg)) 40%, transparent 40.99%), linear-gradient(45deg, hsl(var(--chkbg)) 30%, hsl(var(--chkfg)) 30.99%, hsl(var(--chkfg)) 40%, transparent 40.99%), linear-gradient(-45deg, hsl(var(--chkfg)) 50%, hsl(var(--chkbg)) 50.99%);
}
&:indeterminate {
@apply bg-base-content bg-no-repeat;
animation: checkmark var(--animation-input, 0.2s) ease-in-out;
background-image: linear-gradient(90deg, transparent 80%, hsl(var(--chkbg)) 80%), linear-gradient(-90deg, transparent 80%, hsl(var(--chkbg)) 80%), linear-gradient(0deg, hsl(var(--chkbg)) 43%, hsl(var(--chkfg)) 43%, hsl(var(--chkfg)) 57%, hsl(var(--chkbg)) 57%);
}
&-primary {
--chkbg: var(--p);
--chkfg: var(--pc);
@apply border-primary hover:border-primary;
&:focus-visible {
outline: 2px solid hsl(var(--p));
}
&:checked,
&[checked="true"],
&[aria-checked="true"] {
@apply border-primary bg-primary text-primary-content;
}
}
&-secondary {
--chkbg: var(--s);
--chkfg: var(--sc);
@apply border-secondary hover:border-secondary;
&:focus-visible {
outline: 2px solid hsl(var(--s));
}
&:checked,
&[checked="true"],
&[aria-checked="true"] {
@apply border-secondary bg-secondary text-secondary-content;
}
}
&-accent {
--chkbg: var(--a);
--chkfg: var(--ac);
@apply border-accent hover:border-accent;
&:focus-visible {
outline: 2px solid hsl(var(--a));
}
&:checked,
&[checked="true"],
&[aria-checked="true"] {
@apply border-accent bg-accent text-accent-content;
}
}
&-success {
--chkbg: var(--su);
--chkfg: var(--suc);
@apply border-success hover:border-success;
&:focus-visible {
outline: 2px solid hsl(var(--su));
}
&:checked,
&[checked="true"],
&[aria-checked=true] {
@apply border-success bg-success text-success-content;
}
}
&-warning {
--chkbg: var(--wa);
--chkfg: var(--wac);
@apply border-warning hover:border-warning;
&:focus-visible {
outline: 2px solid hsl(var(--wa));
}
&:checked,
&[checked="true"],
&[aria-checked=true] {
@apply border-warning bg-warning text-warning-content;
}
}
&-info {
--chkbg: var(--in);
--chkfg: var(--inc);
@apply border-info hover:border-info;
&:focus-visible {
outline: 2px solid hsl(var(--in));
}
&:checked,
&[checked="true"],
&[aria-checked=true] {
@apply border-info bg-info text-info-content;
}
}
&-error {
--chkbg: var(--er);
--chkfg: var(--erc);
@apply border-error hover:border-error;
&:focus-visible {
outline: 2px solid hsl(var(--er));
}
&:checked,
&[checked="true"],
&[aria-checked=true] {
@apply border-error bg-error text-error-content;
}
}
&:disabled {
@apply cursor-not-allowed border-transparent bg-base-content opacity-20;
}
}
@keyframes checkmark {
0% {
background-position-y: 5px;
}
50% {
background-position-y: -2px;
}
100% {
background-position-y: 0;
}
}
/* backward compatibility */
.checkbox-mark {
@apply hidden;
}
[dir="rtl"] {
.checkbox {
&:checked,
&[checked="true"],
&[aria-checked="true"] {
background-image: linear-gradient(45deg, transparent 65%, hsl(var(--chkbg)) 65.99%), linear-gradient(-45deg, transparent 75%, hsl(var(--chkbg)) 75.99%), linear-gradient(45deg, hsl(var(--chkbg)) 40%, transparent 40.99%), linear-gradient(-45deg, hsl(var(--chkbg)) 30%, hsl(var(--chkfg)) 30.99%, hsl(var(--chkfg)) 40%, transparent 40.99%), linear-gradient(45deg, hsl(var(--chkfg)) 50%, hsl(var(--chkbg)) 50.99%);
}
}
}

View File

@ -0,0 +1,78 @@
.collapse:focus-visible {
outline: 2px solid hsl(var(--nf));
outline-offset: 2px;
}
.collapse-arrow .collapse-title:after {
@apply absolute block h-2 w-2 transition-all ease-in-out rotate-[45deg] translate-y-[-100%];
transition-duration: 0.2s;
top: 50%;
right: 1.4rem;
content: "";
transform-origin: 75% 75%;
box-shadow: 2px 2px;
pointer-events: none;
}
[dir="rtl"] .collapse-arrow .collapse-title:after {
--tw-rotate: -45deg;
}
.collapse-plus .collapse-title:after {
@apply absolute block h-2 w-2 transition-all duration-300 ease-in-out;
top: 0.9rem;
right: 1.4rem;
content: "+";
pointer-events: none;
}
.collapse:not(.collapse-open):not(.collapse-close) input[type="checkbox"],
.collapse:not(.collapse-open):not(.collapse-close) .collapse-title {
@apply cursor-pointer;
}
.collapse:focus:not(.collapse-open):not(.collapse-close) .collapse-title {
cursor: unset;
}
.collapse-title {
@apply relative;
}
:where(.collapse > input[type="checkbox"]) {
z-index: 1;
}
.collapse-title,
:where(.collapse > input[type="checkbox"]) {
@apply w-full p-4 pr-12;
min-height: 3.75rem;
transition: background-color 0.2s ease-in-out;
}
/*
.collapse-open :where(.collapse-title),
.collapse:focus:not(.collapse-close) :where(.collapse-title),
.collapse:not(.collapse-close) :where(input[type="checkbox"]:checked ~ .collapse-title) {
@apply bg-base-content bg-opacity-10;
} */
.collapse-content {
@apply px-4;
cursor: unset;
transition: padding 0.2s ease-in-out, background-color 0.2s ease-in-out;
}
.collapse-open :where(.collapse-content),
.collapse:focus:not(.collapse-close) :where(.collapse-content),
.collapse:not(.collapse-close) :where(input[type="checkbox"]:checked ~ .collapse-content) {
@apply pb-4;
transition: padding 0.2s ease-in-out, background-color 0.2s ease-in-out;
}
.collapse-open.collapse-arrow .collapse-title:after,
.collapse-arrow:focus:not(.collapse-close) .collapse-title:after,
.collapse-arrow:not(.collapse-close) input[type="checkbox"]:checked ~ .collapse-title:after {
@apply rotate-[225deg] translate-y-[-50%];
}
[dir="rtl"] .collapse-open.collapse-arrow .collapse-title:after,
[dir="rtl"] .collapse-arrow:focus:not(.collapse-close) .collapse-title:after,
[dir="rtl"] .collapse-arrow:not(.collapse-close) input[type="checkbox"]:checked ~ .collapse-title:after {
--tw-rotate: 135deg;
}
.collapse-open.collapse-plus .collapse-title:after,
.collapse-plus:focus:not(.collapse-close) .collapse-title:after,
.collapse-plus:not(.collapse-close) input[type="checkbox"]:checked ~ .collapse-title:after {
content: "";
}

View File

@ -0,0 +1,8 @@
.countdown {
& > * {
&:before {
text-align: center;
transition: all 1s cubic-bezier(1, 0, 0, 1);
}
}
}

View File

@ -0,0 +1,12 @@
.divider {
@apply my-4 h-4 whitespace-nowrap;
&:before {
@apply bg-base-content bg-opacity-10;
}
&:after {
@apply bg-base-content bg-opacity-10;
}
&:not(:empty) {
@apply gap-4;
}
}

View File

@ -0,0 +1,74 @@
.drawer.drawer-end > .drawer-toggle:checked ~ .drawer-content {
@apply -translate-x-2;
}
.drawer-toggle {
& ~ .drawer-content {
@apply transition-all duration-300 ease-in-out;
}
& ~ .drawer-side {
& > .drawer-overlay {
@apply cursor-pointer bg-neutral-focus transition-all duration-300 ease-in-out;
}
& > .drawer-overlay + * {
@apply transition-all duration-300 ease-in-out;
}
}
&:checked {
& ~ .drawer-content {
@apply translate-x-2;
}
& ~ .drawer-side {
& > .drawer-overlay {
opacity: 0.999999; /* 1 causes a bug on chrome 🤷‍♂️ */
@apply bg-opacity-40;
}
}
}
&:focus-visible {
& ~ .drawer-content .drawer-button {
outline: 2px solid hsl(var(--nf));
outline-offset: 2px;
&.btn-primary {
outline: 2px solid hsl(var(--p));
}
&.btn-secondary {
outline: 2px solid hsl(var(--s));
}
&.btn-accent {
outline: 2px solid hsl(var(--a));
}
&.btn-info {
outline: 2px solid hsl(var(--in));
}
&.btn-success {
outline: 2px solid hsl(var(--su));
}
&.btn-warning {
outline: 2px solid hsl(var(--wa));
}
&.btn-error {
outline: 2px solid hsl(var(--er));
}
&.glass {
outline: 2px solid currentColor;
}
&.btn-ghost {
outline: 2px solid currentColor;
}
&.btn-link {
outline: 2px solid currentColor;
}
}
}
}
@media (min-width: 1024px) {
.drawer-mobile {
& > .drawer-toggle {
&:checked {
& ~ .drawer-content {
@apply translate-x-0;
}
}
}
}
}

View File

@ -0,0 +1,21 @@
.dropdown .dropdown-content {
@apply origin-top scale-95 transform transition duration-200 ease-in-out;
}
.dropdown-bottom .dropdown-content {
@apply origin-top;
}
.dropdown-top .dropdown-content {
@apply origin-bottom;
}
.dropdown-left .dropdown-content {
@apply origin-right;
}
.dropdown-right .dropdown-content {
@apply origin-left;
}
.dropdown.dropdown-open .dropdown-content,
.dropdown.dropdown-hover:hover .dropdown-content,
.dropdown:focus .dropdown-content,
.dropdown:focus-within .dropdown-content {
@apply scale-100;
}

View File

@ -0,0 +1,96 @@
.file-input {
@apply border border-base-content border-opacity-0 bg-base-100 rounded-btn text-base overflow-hidden;
&::file-selector-button {
@apply font-semibold uppercase no-underline border-neutral bg-neutral text-neutral-content;
border-width: var(--border-btn, 1px);
animation: button-pop var(--animation-btn, 0.25s) ease-out;
text-transform: var(--btn-text-case, uppercase);
}
&-bordered {
@apply border-opacity-20;
}
&:focus {
outline: 2px solid hsla(var(--bc) / 0.2);
outline-offset: 2px;
}
&-ghost {
@apply bg-opacity-5;
&:focus {
@apply bg-opacity-100 text-base-content;
box-shadow: none;
}
&::file-selector-button {
@apply border border-transparent bg-transparent text-current;
}
}
&-primary {
@apply border-primary;
&:focus {
outline: 2px solid hsl(var(--p));
}
&::file-selector-button {
@apply border-primary bg-primary text-primary-content;
}
}
&-secondary {
@apply border-secondary;
&:focus {
outline: 2px solid hsl(var(--s));
}
&::file-selector-button {
@apply border-secondary bg-secondary text-secondary-content;
}
}
&-accent {
@apply border-accent;
&:focus {
outline: 2px solid hsl(var(--a));
}
&::file-selector-button {
@apply border-accent bg-accent text-accent-content;
}
}
&-info {
@apply border-info;
&:focus {
outline: 2px solid hsl(var(--in));
}
&::file-selector-button {
@apply border-info bg-info text-info-content;
}
}
&-success {
@apply border-success;
&:focus {
outline: 2px solid hsl(var(--su));
}
&::file-selector-button {
@apply border-success bg-success text-success-content;
}
}
&-warning {
@apply border-warning;
&:focus {
outline: 2px solid hsl(var(--wa));
}
&::file-selector-button {
@apply border-warning bg-warning text-warning-content;
}
}
&-error {
@apply border-error;
&:focus {
outline: 2px solid hsl(var(--er));
}
&::file-selector-button {
@apply border-error bg-error text-error-content;
}
}
&-disabled,
&[disabled] {
@apply cursor-not-allowed border-base-200 bg-base-200 text-opacity-20 placeholder-base-content placeholder-opacity-20;
&::file-selector-button {
@apply border-opacity-0 bg-neutral bg-opacity-20 text-base-content text-opacity-20;
}
}
}

View File

@ -0,0 +1,9 @@
.footer {
@apply gap-y-10 gap-x-4 text-sm;
& > * {
@apply gap-2;
}
&-title {
@apply mb-2 font-bold uppercase opacity-50;
}
}

View File

@ -0,0 +1,12 @@
.label {
@apply px-1 py-2;
&-text {
@apply text-sm text-base-content;
}
&-text-alt {
@apply text-xs text-base-content;
}
a {
@apply hover:text-base-content;
}
}

View File

@ -0,0 +1,8 @@
.hero {
&-overlay {
@apply bg-neutral bg-opacity-50;
}
&-content {
@apply max-w-7xl gap-4 p-4;
}
}

View File

@ -0,0 +1,69 @@
.input {
@apply border border-base-content border-opacity-0 bg-base-100 rounded-btn text-base;
&[list]::-webkit-calendar-picker-indicator {
line-height: 1em;
}
&-bordered {
@apply border-opacity-20;
}
&:focus {
outline: 2px solid hsla(var(--bc) / 0.2);
outline-offset: 2px;
}
&-ghost {
@apply bg-opacity-5;
&:focus {
@apply bg-opacity-100 text-base-content;
box-shadow: none;
}
}
&-primary {
@apply border-primary;
&:focus {
outline: 2px solid hsl(var(--p));
}
}
&-secondary {
@apply border-secondary;
&:focus {
outline: 2px solid hsl(var(--s));
}
}
&-accent {
@apply border-accent;
&:focus {
outline: 2px solid hsl(var(--a));
}
}
&-info {
@apply border-info;
&:focus {
outline: 2px solid hsl(var(--in));
}
}
&-success {
@apply border-success;
&:focus {
outline: 2px solid hsl(var(--su));
}
}
&-warning {
@apply border-warning;
&:focus {
outline: 2px solid hsl(var(--wa));
}
}
&-error {
@apply border-error;
&:focus {
outline: 2px solid hsl(var(--er));
}
}
&-disabled,
&[disabled] {
@apply cursor-not-allowed border-base-200 bg-base-200 text-opacity-20 placeholder-base-content placeholder-opacity-20;
}
/* &::-webkit-calendar-picker-indicator {
display: none;
} */
}

View File

@ -0,0 +1,6 @@
.kbd {
@apply border border-base-content border-opacity-20 bg-base-200 px-2 rounded-btn;
border-bottom-width: 2px;
min-height: 2.2em;
min-width: 2.2em;
}

View File

@ -0,0 +1,33 @@
.link {
&-primary {
@apply text-primary hover:text-primary-focus;
}
&-secondary {
@apply text-secondary hover:text-secondary-focus;
}
&-accent {
@apply text-accent hover:text-accent-focus;
}
&-neutral {
@apply text-neutral hover:text-neutral-focus;
}
&-success {
@apply text-success hover:text-success;
}
&-info {
@apply text-info hover:text-info;
}
&-warning {
@apply text-warning hover:text-warning;
}
&-error {
@apply text-error hover:text-error;
}
&:focus {
@apply outline-none;
}
&:focus-visible {
outline: 2px solid currentColor;
outline-offset: 2px;
}
}

View File

@ -0,0 +1,59 @@
.mask {
&-squircle {
mask-image: url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 0C20 0 0 20 0 100s20 100 100 100 100-20 100-100S180 0 100 0Z'/%3e%3c/svg%3e");
}
&-decagon {
mask-image: url("data:image/svg+xml,%3csvg width='192' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 0 58.779 19.098 36.327 50v61.804l-36.327 50L96 200l-58.779-19.098-36.327-50V69.098l36.327-50z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-diamond {
mask-image: url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m100 0 100 100-100 100L0 100z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-heart {
mask-image: url("data:image/svg+xml,%3csvg width='200' height='185' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 184.606a15.384 15.384 0 0 1-8.653-2.678C53.565 156.28 37.205 138.695 28.182 127.7 8.952 104.264-.254 80.202.005 54.146.308 24.287 24.264 0 53.406 0c21.192 0 35.869 11.937 44.416 21.879a2.884 2.884 0 0 0 4.356 0C110.725 11.927 125.402 0 146.594 0c29.142 0 53.098 24.287 53.4 54.151.26 26.061-8.956 50.122-28.176 73.554-9.023 10.994-25.383 28.58-63.165 54.228a15.384 15.384 0 0 1-8.653 2.673Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e");
}
&-hexagon {
mask-image: url("data:image/svg+xml,%3csvg width='182' height='201' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M.3 65.486c0-9.196 6.687-20.063 14.211-25.078l61.86-35.946c8.36-5.016 20.899-5.016 29.258 0l61.86 35.946c8.36 5.015 14.211 15.882 14.211 25.078v71.055c0 9.196-6.687 20.063-14.211 25.079l-61.86 35.945c-8.36 4.18-20.899 4.18-29.258 0L14.51 161.62C6.151 157.44.3 145.737.3 136.54V65.486Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e");
}
&-hexagon-2 {
mask-image: url("data:image/svg+xml,%3csvg width='200' height='182' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M64.786 181.4c-9.196 0-20.063-6.687-25.079-14.21L3.762 105.33c-5.016-8.36-5.016-20.9 0-29.259l35.945-61.86C44.723 5.851 55.59 0 64.786 0h71.055c9.196 0 20.063 6.688 25.079 14.211l35.945 61.86c4.18 8.36 4.18 20.899 0 29.258l-35.945 61.86c-4.18 8.36-15.883 14.211-25.079 14.211H64.786Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e");
}
&-circle {
mask-image: url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-parallelogram {
mask-image: url("data:image/svg+xml,%3csvg width='200' height='154' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M46.154 0H200l-46.154 153.846H0z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-parallelogram-2 {
mask-image: url("data:image/svg+xml,%3csvg width='200' height='154' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M153.846 0H0l46.154 153.846H200z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-parallelogram-3 {
mask-image: url("data:image/svg+xml,%3csvg width='154' height='201' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M.077 47.077v153.846l153.846-46.154V.923z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-parallelogram-4 {
mask-image: url("data:image/svg+xml,%3csvg width='154' height='201' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M153.923 47.077v153.846L.077 154.77V.923z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-pentagon {
mask-image: url("data:image/svg+xml,%3csvg width='192' height='181' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 0 95.106 69.098-36.327 111.804H37.22L.894 69.098z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-square {
mask-image: url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M0 0h200v200H0z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-star {
mask-image: url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-star-2 {
mask-image: url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 153.044-58.779 26.243 7.02-63.513L.894 68.481l63.117-13.01L96 0l31.989 55.472 63.117 13.01-43.347 47.292 7.02 63.513z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-triangle {
mask-image: url("data:image/svg+xml,%3csvg width='174' height='149' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m87 148.476-86.603.185L43.86 74.423 87 0l43.14 74.423 43.463 74.238z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-triangle-2 {
mask-image: url("data:image/svg+xml,%3csvg width='174' height='150' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m87 .738 86.603-.184-43.463 74.238L87 149.214 43.86 74.792.397.554z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-triangle-3 {
mask-image: url("data:image/svg+xml,%3csvg width='150' height='174' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m149.369 87.107.185 86.603-74.239-43.463L.893 87.107l74.422-43.14L149.554.505z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
&-triangle-4 {
mask-image: url("data:image/svg+xml,%3csvg width='150' height='174' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M.631 87.107.446.505l74.239 43.462 74.422 43.14-74.422 43.14L.446 173.71z' fill-rule='evenodd'/%3e%3c/svg%3e");
}
}

View File

@ -0,0 +1,133 @@
.menu {
&.horizontal {
> li {
&.bordered {
> a,
> button,
> span {
@apply border-l-0 border-b-4 border-primary;
}
}
}
}
&[class*=" px-"]:not(&[class*=" px-0"]) li > *,
&[class^="px-"]:not(&[class^="px-0"]) li > *,
&[class*=" p-"]:not(&[class*=" p-0"]) li > *,
&[class^="p-"]:not(&[class^="p-0"]) li > * {
@apply rounded-btn;
}
:where(li.bordered > *) {
@apply border-l-4 border-primary;
}
:where(li) > :where(*:not(ul)) {
@apply gap-3 px-4 py-3 text-current;
}
:where(li:not(.menu-title):not(:empty)) > :where(*:not(ul):focus),
:where(li:not(.menu-title):not(:empty)) > :where(*:not(ul):hover) {
@apply bg-base-content bg-opacity-10;
}
:where(li:not(.menu-title):not(:empty)) > :where(:not(ul).active),
:where(li:not(.menu-title):not(:empty)) > :where(*:not(ul):active) {
@apply bg-primary text-primary-content;
}
:where(li:empty) {
@apply mx-4 my-2 h-px bg-base-content bg-opacity-10;
}
li.disabled {
& > * {
@apply select-none text-base-content text-opacity-20 hover:bg-transparent;
}
}
li.hover-bordered {
a {
@apply border-l-4 border-transparent hover:border-primary;
}
}
&.compact {
li {
> a,
> span {
@apply py-2 text-sm;
}
}
}
.menu-title {
@apply text-xs font-bold opacity-40;
> * {
@apply py-1;
}
}
}
.menu :where(li:not(.disabled)) > :where(*:not(ul)) {
@apply outline-none transition duration-200 ease-in-out;
}
.menu > :where(li:first-child) {
border-top-left-radius: inherit;
border-top-right-radius: inherit;
border-bottom-right-radius: unset;
border-bottom-left-radius: unset;
}
.menu > :where(li:first-child) > :where(:not(ul)) {
border-top-left-radius: inherit;
border-top-right-radius: inherit;
border-bottom-right-radius: unset;
border-bottom-left-radius: unset;
}
.menu > :where(li:last-child) {
border-top-left-radius: unset;
border-top-right-radius: unset;
border-bottom-right-radius: inherit;
border-bottom-left-radius: inherit;
}
.menu > :where(li:last-child) > :where(:not(ul)) {
border-top-left-radius: unset;
border-top-right-radius: unset;
border-bottom-right-radius: inherit;
border-bottom-left-radius: inherit;
}
.menu > :where(li) > :where(ul) {
border-top-left-radius: inherit;
border-top-right-radius: inherit;
border-bottom-right-radius: inherit;
border-bottom-left-radius: inherit;
}
.menu > :where(li) > :where(ul) :where(li) {
@apply w-full whitespace-nowrap;
}
.menu > :where(li) > :where(ul) :where(li) :where(ul) {
@apply pl-4;
}
.menu > :where(li) > :where(ul) :where(li) > :where(:not(ul)) {
@apply w-full whitespace-nowrap;
}
.menu > :where(li) > :where(ul) > :where(li:first-child) {
border-top-left-radius: inherit;
border-top-right-radius: inherit;
border-bottom-right-radius: unset;
border-bottom-left-radius: unset;
}
.menu > :where(li) > :where(ul) > :where(li:first-child) > :where(:not(ul)) {
border-top-left-radius: inherit;
border-top-right-radius: inherit;
border-bottom-right-radius: unset;
border-bottom-left-radius: unset;
}
.menu > :where(li) > :where(ul) > :where(li:last-child) {
border-top-left-radius: unset;
border-top-right-radius: unset;
border-bottom-right-radius: inherit;
border-bottom-left-radius: inherit;
}
.menu > :where(li) > :where(ul) > :where(li:last-child) > :where(:not(ul)) {
border-top-left-radius: unset;
border-top-right-radius: unset;
border-bottom-right-radius: inherit;
border-bottom-left-radius: inherit;
}

View File

@ -0,0 +1,78 @@
.mockup {
&-code {
@apply min-w-[18rem] bg-neutral py-5 text-neutral-content rounded-box;
&:before {
content: "";
@apply mb-4 block h-3 w-3 rounded-full opacity-30;
box-shadow: 1.4em 0, 2.8em 0, 4.2em 0;
}
pre {
@apply pr-5;
&:before {
content: "";
margin-right: 2ch;
}
}
pre[data-prefix] {
&:before {
content: attr(data-prefix);
@apply w-8 opacity-50;
}
}
}
&-window {
@apply pt-5 rounded-box;
&:before {
content: "";
@apply mb-4 block h-3 w-3 rounded-full opacity-30;
box-shadow: 1.4em 0, 2.8em 0, 4.2em 0;
}
}
&-phone {
display: inline-block;
border: 4px solid #444;
border-radius: 50px;
background-color: #000;
padding: 10px;
margin: 0 auto;
overflow: hidden;
.camera {
position: relative;
top: 0px;
left: 0px;
background: #000;
height: 25px;
width: 150px;
margin: 0 auto;
border-bottom-left-radius: 17px;
border-bottom-right-radius: 17px;
z-index: 11;
&:before {
content: "";
position: absolute;
top: 35%;
left: 50%;
width: 50px;
height: 4px;
border-radius: 5px;
background-color: #0c0b0e;
transform: translate(-50%, -50%);
}
&:after {
content: "";
position: absolute;
top: 20%;
left: 70%;
width: 8px;
height: 8px;
border-radius: 5px;
background-color: #0f0b25;
}
}
.display {
overflow: hidden;
border-radius: 40px;
margin-top: -25px;
}
}
}

View File

@ -0,0 +1,21 @@
.modal {
@apply bg-neutral-focus bg-opacity-40 duration-200 ease-in-out;
transition-property: transform, opacity, visibility;
overflow-y: hidden;
overscroll-behavior: contain;
}
.modal-box {
@apply transform bg-base-100 p-6 transition duration-200 ease-in-out rounded-t-box;
@apply w-11/12 max-w-lg scale-90 rounded-b-box rounded-t-box;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
overflow-y: auto;
overscroll-behavior: contain;
}
.modal-open .modal-box,
.modal-toggle:checked + .modal .modal-box,
.modal:target .modal-box {
@apply translate-y-0 scale-100;
}
.modal-action {
@apply mt-6 justify-end space-x-2;
}

View File

@ -0,0 +1,5 @@
.navbar {
padding: var(--navbar-padding, 0.5rem);
min-height: 4rem;
@apply w-full;
}

View File

@ -0,0 +1,92 @@
.progress {
@apply h-2 rounded-box;
&::-moz-progress-bar {
@apply bg-neutral;
}
&-primary::-moz-progress-bar {
@apply bg-primary;
}
&-secondary::-moz-progress-bar {
@apply bg-secondary;
}
&-accent::-moz-progress-bar {
@apply bg-accent;
}
&-info::-moz-progress-bar {
@apply bg-info;
}
&-success::-moz-progress-bar {
@apply bg-success;
}
&-warning::-moz-progress-bar {
@apply bg-warning;
}
&-error::-moz-progress-bar {
@apply bg-error;
}
&:indeterminate::after {
@apply bg-neutral;
}
&-primary:indeterminate::after {
@apply bg-primary;
}
&-secondary:indeterminate::after {
@apply bg-secondary;
}
&-accent:indeterminate::after {
@apply bg-accent;
}
&-info:indeterminate::after {
@apply bg-info;
}
&-success:indeterminate::after {
@apply bg-success;
}
&-warning:indeterminate::after {
@apply bg-warning;
}
&-error:indeterminate::after {
@apply bg-error;
}
&::-webkit-progress-bar {
@apply bg-neutral bg-opacity-20 rounded-box;
}
&::-webkit-progress-value {
@apply bg-neutral-focus rounded-box;
}
&-primary::-webkit-progress-value {
@apply bg-primary;
}
&-secondary::-webkit-progress-value {
@apply bg-secondary;
}
&-accent::-webkit-progress-value {
@apply bg-accent;
}
&-info::-webkit-progress-value {
@apply bg-info;
}
&-success::-webkit-progress-value {
@apply bg-success;
}
&-warning::-webkit-progress-value {
@apply bg-warning;
}
&-error::-webkit-progress-value {
@apply bg-error;
}
}
.progress:indeterminate::after {
content: "";
@apply inset-y-0 -left-[40%] w-1/3 absolute rounded-box;
animation: progress-loading 5s infinite ease-in-out;
}
@keyframes progress-loading {
50% {
left: 107%;
}
}

View File

@ -0,0 +1,8 @@
.radial-progress {
--value: 0;
--size: 5rem;
--thickness: calc(var(--size) / 10);
}
.radial-progress:after {
@apply bg-current;
}

View File

@ -0,0 +1,112 @@
.radio {
--chkbg: var(--bc);
@apply h-6 w-6 cursor-pointer appearance-none rounded-full border border-base-content border-opacity-20;
transition: background, box-shadow var(--animation-input, 0.2s) ease-in-out;
&:focus-visible {
outline: 2px solid hsl(var(--bc));
outline-offset: 2px;
}
&:checked,
&[aria-checked=true] {
@apply bg-base-content;
animation: radiomark var(--animation-input, 0.2s) ease-in-out;
box-shadow: 0 0 0 4px hsl(var(--b1)) inset, 0 0 0 4px hsl(var(--b1)) inset;
}
&-primary {
--chkbg: var(--p);
@apply border-primary hover:border-primary;
&:focus-visible {
outline: 2px solid hsl(var(--p));
}
&:checked,
&[aria-checked=true] {
@apply border-primary bg-primary text-primary-content;
}
}
&-secondary {
--chkbg: var(--s);
@apply border-secondary hover:border-secondary;
&:focus-visible {
outline: 2px solid hsl(var(--s));
}
&:checked,
&[aria-checked=true] {
@apply border-secondary bg-secondary text-secondary-content;
}
}
&-accent {
--chkbg: var(--a);
@apply border-accent hover:border-accent;
&:focus-visible {
outline: 2px solid hsl(var(--a));
}
&:checked,
&[aria-checked=true] {
@apply border-accent bg-accent text-accent-content;
}
}
&-success {
--chkbg: var(--su);
@apply border-success hover:border-success;
&:focus-visible {
outline: 2px solid hsl(var(--su));
}
&:checked,
&[aria-checked=true] {
@apply border-success bg-success text-success-content;
}
}
&-warning {
--chkbg: var(--wa);
@apply border-warning hover:border-warning;
&:focus-visible {
outline: 2px solid hsl(var(--wa));
}
&:checked,
&[aria-checked=true] {
@apply border-warning bg-warning text-warning-content;
}
}
&-info {
--chkbg: var(--in);
@apply border-info hover:border-info;
&:focus-visible {
outline: 2px solid hsl(var(--in));
}
&:checked,
&[aria-checked=true] {
@apply border-info bg-info text-info-content;
}
}
&-error {
--chkbg: var(--er);
@apply border-error hover:border-error;
&:focus-visible {
outline: 2px solid hsl(var(--er));
}
&:checked,
&[aria-checked=true] {
@apply border-error bg-error text-error-content;
}
}
&:disabled {
@apply cursor-not-allowed opacity-20;
}
}
@keyframes radiomark {
0% {
box-shadow: 0 0 0 12px hsl(var(--b1)) inset, 0 0 0 12px hsl(var(--b1)) inset;
}
50% {
box-shadow: 0 0 0 3px hsl(var(--b1)) inset, 0 0 0 3px hsl(var(--b1)) inset;
}
100% {
box-shadow: 0 0 0 4px hsl(var(--b1)) inset, 0 0 0 4px hsl(var(--b1)) inset;
}
}
/* backward compatibility */
.radio-mark {
@apply hidden;
}

View File

@ -0,0 +1,62 @@
.range {
appearance: none;
-webkit-appearance: none;
--range-shdw: var(--bc);
@apply bg-transparent rounded-box overflow-hidden;
&:focus-visible::-webkit-slider-thumb {
--focus-shadow: 0 0 0 6px hsl(var(--b1)) inset, 0 0 0 2rem hsl(var(--range-shdw)) inset;
}
&:focus-visible::-moz-range-thumb {
--focus-shadow: 0 0 0 6px hsl(var(--b1)) inset, 0 0 0 2rem hsl(var(--range-shdw)) inset;
}
&::-webkit-slider-runnable-track {
@apply h-2 w-full rounded-box;
background-color: hsla(var(--bc) / 0.1);
}
&::-moz-range-track {
@apply h-2 w-full rounded-box;
background-color: hsla(var(--bc) / 0.1);
}
&::-webkit-slider-thumb {
background-color: hsl(var(--b1));
@apply relative h-6 w-6 border-none rounded-box;
appearance: none;
-webkit-appearance: none;
top: 50%;
color: hsl(var(--range-shdw));
transform: translateY(-50%);
--filler-size: 100rem;
--filler-offset: 0.6rem;
box-shadow: 0 0 0 3px hsl(var(--range-shdw)) inset, var(--focus-shadow, 0 0), calc(var(--filler-size) * -1 - var(--filler-offset)) 0 0 var(--filler-size);
}
&::-moz-range-thumb {
background-color: hsl(var(--b1));
@apply relative h-6 w-6 border-none rounded-box;
top: 50%;
color: hsl(var(--range-shdw));
--filler-size: 100rem;
--filler-offset: 0.5rem;
box-shadow: 0 0 0 3px hsl(var(--range-shdw)) inset, var(--focus-shadow, 0 0), calc(var(--filler-size) * -1 - var(--filler-offset)) 0 0 var(--filler-size);
}
&-primary {
--range-shdw: var(--p);
}
&-secondary {
--range-shdw: var(--s);
}
&-accent {
--range-shdw: var(--a);
}
&-success {
--range-shdw: var(--su);
}
&-warning {
--range-shdw: var(--wa);
}
&-info {
--range-shdw: var(--in);
}
&-error {
--range-shdw: var(--er);
}
}

View File

@ -0,0 +1,46 @@
.rating {
& input {
@apply appearance-none;
-webkit-appearance: none;
}
:where(input) {
animation: rating-pop var(--animation-input, 0.25s) ease-out;
@apply h-6 w-6 bg-base-content bg-opacity-100;
}
& .rating-hidden {
@apply w-2 bg-transparent;
}
input:checked ~ input,
input[aria-checked=true] ~ input {
@apply bg-opacity-20;
}
input:focus-visible {
@apply transition-transform duration-300 ease-in-out;
transform: translateY(-0.125em);
}
& input:active:focus {
animation: none;
}
& input:active:focus {
transform: translateY(-0.125em);
}
}
.rating-half {
:where(input:not(.rating-hidden)) {
@apply w-3;
}
}
@keyframes rating-pop {
0% {
transform: translateY(-0.125em);
}
40% {
transform: translateY(-0.125em);
}
100% {
transform: translateY(0);
}
}

View File

@ -0,0 +1,75 @@
.select {
@apply border border-base-content border-opacity-0 bg-base-100 pr-10 font-semibold rounded-btn;
&-bordered {
@apply border-opacity-20;
}
background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
background-position: calc(100% - 20px) calc(1px + 50%), calc(100% - 16px) calc(1px + 50%);
background-size: 4px 4px, 4px 4px;
background-repeat: no-repeat;
&:focus {
outline: 2px solid hsla(var(--bc) / 0.2);
outline-offset: 2px;
}
&-ghost {
@apply bg-opacity-5;
&:focus {
@apply bg-opacity-100 text-base-content;
}
}
&-primary {
@apply border-primary;
&:focus {
outline: 2px solid hsl(var(--p));
}
}
&-secondary {
@apply border-secondary;
&:focus {
outline: 2px solid hsl(var(--s));
}
}
&-accent {
@apply border-accent;
&:focus {
outline: 2px solid hsl(var(--a));
}
}
&-info {
@apply border-info;
&:focus {
outline: 2px solid hsl(var(--in));
}
}
&-success {
@apply border-success;
&:focus {
outline: 2px solid hsl(var(--su));
}
}
&-warning {
@apply border-warning;
&:focus {
outline: 2px solid hsl(var(--wa));
}
}
&-error {
@apply border-error;
&:focus {
outline: 2px solid hsl(var(--er));
}
}
&-disabled,
&[disabled] {
@apply cursor-not-allowed border-base-200 bg-base-200 text-opacity-20 placeholder-base-content placeholder-opacity-20;
}
&-multiple,
&[multiple],
&[size]&:not([size="1"]) {
@apply bg-none pr-4;
}
}
[dir="rtl"] .select {
background-position: calc(0% + 12px) calc(1px + 50%), calc(0% + 16px) calc(1px + 50%);
}

View File

@ -0,0 +1,15 @@
.stack {
@apply place-items-center items-end;
& > * {
@apply w-full;
}
& > * {
@apply opacity-60;
}
& > *:nth-child(2) {
@apply opacity-80;
}
& > *:nth-child(1) {
@apply opacity-100;
}
}

View File

@ -0,0 +1,29 @@
.stats {
@apply bg-base-100 text-base-content rounded-box;
}
:where(.stats) {
@apply divide-x divide-y-0 overflow-x-auto;
}
.stat {
@apply gap-x-4 border-base-content border-opacity-10 px-6 py-4;
&-title {
@apply text-base-content/60;
}
&-value {
@apply text-4xl font-extrabold;
}
&-desc {
@apply text-xs text-base-content/60;
}
&-actions {
@apply mt-4;
}
}
/* .stat + .stat {
@apply border-l border-base-content border-opacity-10;
}
.stats.grid-flow-row {
.stat + .stat {
@apply border-l-0 border-t;
}
} */

View File

@ -0,0 +1,82 @@
.steps {
/* &,
&-horizontal{ */
.step {
grid-template-rows: 40px 1fr;
grid-template-columns: auto;
min-width: 4rem;
&:before {
@apply top-0 col-start-1 row-start-1 h-2 w-full transform bg-base-300 text-base-content;
content: "";
margin-left: -100%;
}
}
/* } */
.step {
&:after {
content: counter(step);
counter-increment: step;
z-index: 1;
@apply relative col-start-1 row-start-1 grid h-8 w-8 place-items-center place-self-center rounded-full bg-base-300 text-base-content;
}
&:first-child:before {
content: none;
}
&[data-content]:after {
content: attr(data-content);
}
}
.step-neutral + .step-neutral:before,
.step-neutral:after {
@apply bg-neutral text-neutral-content;
}
.step-primary + .step-primary:before,
.step-primary:after {
@apply bg-primary text-primary-content;
}
.step-secondary + .step-secondary:before,
.step-secondary:after {
@apply bg-secondary text-secondary-content;
}
.step-accent + .step-accent:before,
.step-accent:after {
@apply bg-accent text-accent-content;
}
.step-info + .step-info:before {
@apply bg-info;
}
.step-info:after {
@apply bg-info text-info-content;
}
.step-success + .step-success:before {
@apply bg-success;
}
.step-success:after {
@apply bg-success text-success-content;
}
.step-warning + .step-warning:before {
@apply bg-warning;
}
.step-warning:after {
@apply bg-warning text-warning-content;
}
.step-error + .step-error:before {
@apply bg-error;
}
.step-error:after {
@apply bg-error text-error-content;
}
/* &-vertical{
.step {
gap: .5rem;
grid-template-columns: 40px 1fr;
grid-template-rows: auto;
min-height: 4rem;
justify-items: start;
&:before {
@apply w-2 h-full top-0 transform -translate-y-1/2 -translate-x-1/2;
margin-left: 50%;
}
}
} */
}

View File

@ -0,0 +1,52 @@
.swap {
@apply cursor-pointer;
}
.swap > * {
@apply duration-300 ease-in-out;
transition-property: transform, opacity;
}
.swap-rotate .swap-on,
.swap-rotate .swap-indeterminate,
.swap-rotate input:indeterminate ~ .swap-on {
@apply rotate-45;
}
.swap-rotate input:checked ~ .swap-off,
.swap-rotate.swap-active .swap-off,
.swap-rotate input:indeterminate ~ .swap-off {
@apply -rotate-45;
}
.swap-rotate input:checked ~ .swap-on,
.swap-rotate.swap-active .swap-on,
.swap-rotate input:indeterminate ~ .swap-indeterminate {
@apply rotate-0;
}
.swap-flip {
transform-style: preserve-3d;
perspective: 16em;
}
.swap-flip .swap-on,
.swap-flip .swap-indeterminate,
.swap-flip input:indeterminate ~ .swap-on {
transform: rotateY(180deg);
backface-visibility: hidden;
@apply opacity-100;
}
.swap-flip input:checked ~ .swap-off,
.swap-flip.swap-active .swap-off,
.swap-flip input:indeterminate ~ .swap-off {
transform: rotateY(-180deg);
backface-visibility: hidden;
@apply opacity-100;
}
.swap-flip input:checked ~ .swap-on,
.swap-flip.swap-active .swap-on,
.swap-flip input:indeterminate ~ .swap-indeterminate {
transform: rotateY(0deg);
}

View File

@ -0,0 +1,108 @@
.tab {
@apply text-opacity-50 hover:text-opacity-100;
--tab-color: hsla(var(--bc) / var(--tw-text-opacity, 1));
--tab-bg: hsla(var(--b1) / var(--tw-bg-opacity, 1));
--tab-border-color: hsla(var(--b3) / var(--tw-bg-opacity, 1));
color: var(--tab-color);
padding-left: var(--tab-padding, 1rem);
padding-right: var(--tab-padding, 1rem);
&.tab-active:not(.tab-disabled):not([disabled]) {
@apply border-base-content border-opacity-100 text-opacity-100;
}
&:focus {
@apply outline-none;
}
&:focus-visible {
outline: 2px solid currentColor;
outline-offset: -3px;
&.tab-lifted {
border-bottom-right-radius: var(--tab-radius, 0.5rem);
border-bottom-left-radius: var(--tab-radius, 0.5rem);
}
}
/* disabled */
&-disabled,
&-disabled:hover,
&[disabled],
&[disabled]:hover {
@apply text-base-content text-opacity-20 cursor-not-allowed;
}
}
.tab-bordered {
@apply border-base-content border-opacity-20;
border-style: solid;
border-bottom-width: calc(var(--tab-border, 1px) + 1px);
}
.tab-lifted {
border: var(--tab-border, 1px) solid transparent;
border-width: 0 0 var(--tab-border, 1px) 0;
border-top-left-radius: var(--tab-radius, 0.5rem);
border-top-right-radius: var(--tab-radius, 0.5rem);
border-bottom-color: var(--tab-border-color);
padding-left: var(--tab-padding, 1rem);
padding-right: var(--tab-padding, 1rem);
padding-top: var(--tab-border, 1px);
&.tab-active:not(.tab-disabled):not([disabled]) {
background-color: var(--tab-bg);
border-width: var(--tab-border, 1px) var(--tab-border, 1px) 0 var(--tab-border, 1px);
border-left-color: var(--tab-border-color);
border-right-color: var(--tab-border-color);
border-top-color: var(--tab-border-color);
padding-left: calc(var(--tab-padding, 1rem) - var(--tab-border, 1px));
padding-right: calc(var(--tab-padding, 1rem) - var(--tab-border, 1px));
padding-bottom: var(--tab-border, 1px);
padding-top: 0;
&:before,
&:after {
z-index: 1;
content: "";
display: block;
position: absolute;
width: var(--tab-radius, 0.5rem);
height: var(--tab-radius, 0.5rem);
bottom: 0;
--tab-grad: calc(68% - var(--tab-border, 1px));
--tab-corner-bg: radial-gradient(circle at var(--circle-pos), transparent var(--tab-grad), var(--tab-border-color) calc(var(--tab-grad) + 0.3px), var(--tab-border-color) calc(var(--tab-grad) + var(--tab-border, 1px)), var(--tab-bg) calc(var(--tab-grad) + var(--tab-border, 1px) + 0.3px));
}
&:before {
left: calc(var(--tab-radius, 0.5rem) * -1);
--circle-pos: top left;
background-image: var(--tab-corner-bg);
/* RTL quick fix */
[dir="rtl"] & {
--circle-pos: top right;
}
}
&:after {
right: calc(var(--tab-radius, 0.5rem) * -1);
--circle-pos: top right;
background-image: var(--tab-corner-bg);
/* RTL quick fix */
[dir="rtl"] & {
--circle-pos: top left;
}
}
&:first-child:before {
background: none;
}
&:last-child:after {
background: none;
}
}
}
.tab-lifted.tab-active:not(.tab-disabled):not([disabled]) + .tab-lifted.tab-active:not(.tab-disabled):not([disabled]) {
&:before {
background: none;
}
}
.tabs-boxed {
@apply bg-base-200 p-1 rounded-btn;
.tab {
@apply rounded-btn;
}
.tab-active:not(.tab-disabled):not([disabled]) {
@apply bg-primary text-primary-content hover:text-primary-content;
}
}

View File

@ -0,0 +1,73 @@
.table {
@apply text-left;
:where(th, td) {
@apply whitespace-nowrap p-4 align-middle;
}
tr.active,
tr.active:nth-child(even) {
th,
td {
@apply bg-base-300;
}
}
tr.hover:hover,
tr.hover:nth-child(even):hover {
th,
td {
@apply bg-base-300;
}
}
&:where(:not(.table-zebra)) {
:where(thead, tbody, tfoot) {
:where(tr:not(:last-child) :where(th, td)) {
@apply border-b border-base-200;
}
}
}
:where(thead, tfoot) {
:where(th, td) {
@apply bg-base-200 text-xs font-bold uppercase;
}
}
:where(tbody th, tbody td) {
@apply bg-base-100;
}
&-zebra tbody {
tr:nth-child(even) {
th,
td {
@apply bg-base-200;
}
}
}
}
:where(.table *:first-child) {
:where(*:first-child) {
:where(th, td) {
&:first-child {
@apply rounded-tl-lg;
}
&:last-child {
@apply rounded-tr-lg;
}
}
}
}
:where(.table *:last-child) {
:where(*:last-child) {
:where(th, td) {
&:first-child {
@apply rounded-bl-lg;
}
&:last-child {
@apply rounded-br-lg;
}
}
}
}

View File

@ -0,0 +1,63 @@
.textarea {
@apply border border-base-content border-opacity-0 bg-base-100 rounded-btn;
&-bordered {
@apply border-opacity-20;
}
&:focus {
outline: 2px solid hsla(var(--bc) / 0.2);
outline-offset: 2px;
}
&-ghost {
@apply bg-opacity-5;
&:focus {
@apply bg-opacity-100 text-base-content;
box-shadow: none;
}
}
&-primary {
@apply border-primary;
&:focus {
outline: 2px solid hsl(var(--p));
}
}
&-secondary {
@apply border-secondary;
&:focus {
outline: 2px solid hsl(var(--s));
}
}
&-accent {
@apply border-accent;
&:focus {
outline: 2px solid hsl(var(--a));
}
}
&-info {
@apply border-info;
&:focus {
outline: 2px solid hsl(var(--in));
}
}
&-success {
@apply border-success;
&:focus {
outline: 2px solid hsl(var(--su));
}
}
&-warning {
@apply border-warning;
&:focus {
outline: 2px solid hsl(var(--wa));
}
}
&-error {
@apply border-error;
&:focus {
outline: 2px solid hsl(var(--er));
}
}
&-disabled,
&[disabled] {
@apply cursor-not-allowed border-base-200 bg-base-200 text-opacity-20 placeholder-base-content placeholder-opacity-20;
}
}

View File

@ -0,0 +1,17 @@
.toast {
@apply gap-2 p-4;
&>*{
animation: toast-pop 0.25s ease-out;
}
}
@keyframes toast-pop {
0% {
transform: scale(0.9);
opacity: 0;
}
100% {
transform: scale(1);
opacity: 1;
}
}

View File

@ -0,0 +1,118 @@
.toggle {
--tglbg: hsl(var(--b1));
--handleoffset: 1.5rem;
--handleoffsetcalculator: calc(var(--handleoffset) * -1);
--togglehandleborder: 0 0;
@apply h-6 w-12 cursor-pointer appearance-none border border-base-content border-opacity-20 bg-base-content bg-opacity-50 duration-300 ease-in-out rounded-badge;
transition: background, box-shadow var(--animation-input, 0.2s) ease-in-out;
box-shadow: var(--handleoffsetcalculator) 0 0 2px var(--tglbg) inset, 0 0 0 2px var(--tglbg) inset, var(--togglehandleborder);
[dir="rtl"] & {
--handleoffsetcalculator: calc(var(--handleoffset) * 1);
}
&:focus-visible {
outline: 2px solid hsl(var(--bc));
outline-offset: 2px;
}
&:checked,
&[checked="true"],
&[aria-checked=true] {
--handleoffsetcalculator: var(--handleoffset);
@apply border-opacity-100 bg-opacity-100;
[dir="rtl"] & {
--handleoffsetcalculator: calc(var(--handleoffset) * -1);
}
}
&:indeterminate {
@apply border-opacity-100 bg-opacity-100;
box-shadow: calc(var(--handleoffset) / 2) 0 0 2px var(--tglbg) inset, calc(var(--handleoffset) / -2) 0 0 2px var(--tglbg) inset, 0 0 0 2px var(--tglbg) inset;
[dir="rtl"] & {
box-shadow: calc(var(--handleoffset) / 2) 0 0 2px var(--tglbg) inset, calc(var(--handleoffset) / -2) 0 0 2px var(--tglbg) inset, 0 0 0 2px var(--tglbg) inset;
}
}
&-primary {
&:focus-visible {
outline: 2px solid hsl(var(--p));
}
&:checked,
&[checked="true"],
&[aria-checked=true] {
@apply border-primary;
@apply border-primary border-opacity-10 bg-primary text-primary-content;
}
}
&-secondary {
&:focus-visible {
outline: 2px solid hsl(var(--s));
}
&:checked,
&[checked="true"],
&[aria-checked=true] {
@apply border-secondary;
@apply border-secondary border-opacity-10 bg-secondary text-secondary-content;
}
}
&-accent {
&:focus-visible {
outline: 2px solid hsl(var(--a));
}
&:checked,
&[checked="true"],
&[aria-checked=true] {
@apply border-accent;
@apply border-accent border-opacity-10 bg-accent text-accent-content;
}
}
&-success {
&:focus-visible {
outline: 2px solid hsl(var(--su));
}
&:checked,
&[checked="true"],
&[aria-checked=true] {
@apply border-success;
@apply border-success border-opacity-10 bg-success text-success-content;
}
}
&-warning {
&:focus-visible {
outline: 2px solid hsl(var(--wa));
}
&:checked,
&[checked="true"],
&[aria-checked=true] {
@apply border-warning;
@apply border-warning border-opacity-10 bg-warning text-warning-content;
}
}
&-info {
&:focus-visible {
outline: 2px solid hsl(var(--in));
}
&:checked,
&[checked="true"],
&[aria-checked=true] {
@apply border-info;
@apply border-info border-opacity-10 bg-info text-info-content;
}
}
&-error {
&:focus-visible {
outline: 2px solid hsl(var(--er));
}
&:checked,
&[checked="true"],
&[aria-checked=true] {
@apply border-error;
@apply border-error border-opacity-10 bg-error text-error-content;
}
}
&:disabled {
@apply cursor-not-allowed bg-transparent border-base-content opacity-30;
--togglehandleborder: 0 0 0 3px hsl(var(--bc)) inset, var(--handleoffsetcalculator) 0 0 3px hsl(var(--bc)) inset;
}
}
/* backward compatibility */
.toggle-mark {
@apply hidden;
}

View File

@ -0,0 +1,110 @@
.tooltip {
@apply relative inline-block text-center;
--tooltip-tail: 3px;
--tooltip-color: hsl(var(--n));
--tooltip-text-color: hsl(var(--nc));
--tooltip-tail-offset: calc(100% + 1px - var(--tooltip-tail));
}
.tooltip:before,
.tooltip:after {
@apply opacity-0 transition delay-100 duration-200 ease-in-out;
}
.tooltip:after {
@apply absolute;
}
.tooltip:before {
@apply max-w-xs rounded px-2 py-1 text-sm;
background-color: var(--tooltip-color);
color: var(--tooltip-text-color);
width: max-content;
}
.tooltip.tooltip-open:before,
.tooltip.tooltip-open:after,
.tooltip:hover:before,
.tooltip:hover:after {
@apply opacity-100 delay-75;
}
.tooltip:not([data-tip]):hover:before,
.tooltip:not([data-tip]):hover:after {
visibility: hidden;
opacity: 0;
}
.tooltip:after {
content: "";
border-style: solid;
border-width: var(--tooltip-tail, 0);
width: 0;
height: 0;
display: block;
position: absolute;
}
.tooltip, .tooltip-top {
&:after {
transform: translateX(-50%);
border-color: var(--tooltip-color) transparent transparent transparent;
top: auto;
left: 50%;
right: auto;
bottom: var(--tooltip-tail-offset);
}
}
.tooltip-bottom {
&:after {
transform: translateX(-50%);
border-color: transparent transparent var(--tooltip-color) transparent;
top: var(--tooltip-tail-offset);
left: 50%;
right: auto;
bottom: auto;
}
}
.tooltip-left {
&:after {
transform: translateY(-50%);
border-color: transparent transparent transparent var(--tooltip-color);
top: 50%;
left: auto;
right: calc(var(--tooltip-tail-offset) + 1px);
bottom: auto;
}
}
.tooltip-right {
&:after {
transform: translateY(-50%);
border-color: transparent var(--tooltip-color) transparent transparent;
top: 50%;
left: calc(var(--tooltip-tail-offset) + 1px);
right: auto;
bottom: auto;
}
}
.tooltip {
&-primary {
--tooltip-color: hsl(var(--p));
--tooltip-text-color: hsl(var(--pc));
}
&-secondary {
--tooltip-color: hsl(var(--s));
--tooltip-text-color: hsl(var(--sc));
}
&-accent {
--tooltip-color: hsl(var(--a));
--tooltip-text-color: hsl(var(--ac));
}
&-info {
--tooltip-color: hsla(var(--in));
--tooltip-text-color: hsl(var(--inc));
}
&-success {
--tooltip-color: hsla(var(--su));
--tooltip-text-color: hsl(var(--suc));
}
&-warning {
--tooltip-color: hsla(var(--wa));
--tooltip-text-color: hsl(var(--wac));
}
&-error {
--tooltip-color: hsla(var(--er));
--tooltip-text-color: hsl(var(--erc));
}
}

View File

@ -0,0 +1,37 @@
:root .prose{
--tw-prose-body: hsla(var(--bc)/.8);
--tw-prose-headings: hsl(var(--bc));
--tw-prose-lead: hsl(var(--bc));
--tw-prose-links: hsl(var(--bc));
--tw-prose-bold: hsl(var(--bc));
--tw-prose-counters: hsl(var(--bc));
--tw-prose-bullets: hsla(var(--bc)/.5);
--tw-prose-hr: hsla(var(--bc)/.2);
--tw-prose-quotes: hsl(var(--bc));
--tw-prose-quote-borders: hsla(var(--bc)/.2);
--tw-prose-captions: hsla(var(--bc)/.5);
--tw-prose-code: hsl(var(--bc));
--tw-prose-pre-code: hsl(var(--nc));
--tw-prose-pre-bg: hsl(var(--n));
--tw-prose-th-borders: hsla(var(--bc)/.5);
--tw-prose-td-borders: hsla(var(--bc)/.2);
}
.prose{
& :where(code):not(:where([class~="not-prose"] *)){
padding: 2px 8px;
border-radius: var(--rounded-badge);
}
& code:after,
& code:before{
content: none;
}
pre{
code{
border-radius: 0;
padding: 0;
}
}
& :where(tbody tr, thead):not(:where([class~="not-prose"] *)){
border-bottom-color: hsl(var(--bc) / 20%);
}
}

View File

@ -0,0 +1,25 @@
const plugin = require("tailwindcss/plugin");
const responsiveRegex = require("../lib/responsiveRegex");
module.exports = {
content: [
{ raw: '' },
],
safelist: responsiveRegex,
theme: {
colors: require("../colors"),
},
plugins: [
plugin(function ({ addBase, addUtilities }) {
addBase(require("../../dist/base"));
addUtilities(require("../../dist/utilities"), {
variants: ["responsive"],
});
addUtilities(require("../../dist/utilities-unstyled"), {
variants: ["responsive"],
});
addUtilities(require("../../dist/utilities-styled"), {
variants: ["responsive"],
});
}),
],
};

View File

@ -0,0 +1,6 @@
.alert {
@apply flex w-full flex-col items-center justify-between gap-4 space-y-2 md:flex-row md:space-y-0;
> :where(*) {
@apply flex items-center gap-2;
}
}

View File

@ -0,0 +1,3 @@
.artboard {
@apply w-full;
}

View File

@ -0,0 +1,14 @@
.avatar {
@apply relative inline-flex;
& > div {
@apply block aspect-square overflow-hidden;
}
img {
@apply h-full w-full object-cover;
}
&.placeholder {
& > div {
@apply flex items-center justify-center;
}
}
}

View File

@ -0,0 +1,7 @@
.badge {
@apply inline-flex items-center justify-center transition duration-200 ease-in-out;
@apply h-5 text-sm leading-5;
width: fit-content;
padding-left: 0.563rem;
padding-right: 0.563rem;
}

View File

@ -0,0 +1,7 @@
.btm-nav {
@apply flex flex-row items-center justify-around fixed bottom-0 left-0 right-0 w-full;
padding-bottom: env(safe-area-inset-bottom);
&>* {
@apply flex items-center justify-center flex-col basis-full h-full cursor-pointer relative gap-1;
}
}

View File

@ -0,0 +1,13 @@
.breadcrumbs {
@apply max-w-full overflow-x-auto;
& > ul {
@apply flex items-center whitespace-nowrap;
min-height: min-content;
& > li {
@apply flex items-center;
& > a {
@apply flex cursor-pointer items-center hover:underline;
}
}
}
}

View File

@ -0,0 +1,60 @@
.btn {
@apply inline-flex flex-shrink-0 cursor-pointer select-none flex-wrap items-center justify-center border-transparent text-center transition duration-200 ease-in-out rounded-btn;
@apply h-12 px-4 text-sm min-h-12;
line-height: 1em;
/* disabled */
&-disabled,
&[disabled] {
@apply pointer-events-none;
}
/* shapes */
&-square {
@apply h-12 w-12 p-0;
}
&-circle {
@apply h-12 w-12 rounded-full p-0;
}
/* loading */
&.loading {
&,
&:hover {
@apply pointer-events-none;
}
&:before {
@apply mr-2 h-4 w-4 rounded-full border-2;
animation: spin 2s linear infinite;
content: "";
border-top-color: transparent;
border-left-color: transparent;
border-bottom-color: currentColor;
border-right-color: currentColor;
}
}
}
@media (prefers-reduced-motion: reduce) {
.btn.loading:before {
animation: spin 10s linear infinite;
}
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
/* group */
.btn-group {
@apply inline-flex;
& > input[type="radio"].btn {
@apply appearance-none;
}
& > input[type="radio"].btn:before {
content: attr(data-title);
}
}

View File

@ -0,0 +1,35 @@
.card {
@apply relative flex flex-col;
&:focus {
@apply outline-none;
}
&-body {
@apply flex flex-auto flex-col;
:where(p) {
@apply flex-grow;
}
}
&-actions {
@apply flex flex-wrap items-start gap-2;
}
& figure {
@apply flex items-center justify-center;
}
&.image-full {
@apply grid;
&:before {
@apply relative;
content: "";
}
&:before,
& > * {
@apply col-start-1 row-start-1;
}
& > figure img {
@apply h-full object-cover;
}
}
&.image-full > &-body {
@apply relative;
}
}

View File

@ -0,0 +1,19 @@
.carousel {
@apply flex overflow-x-scroll;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
&-vertical {
@apply flex-col overflow-y-scroll;
scroll-snap-type: y mandatory;
}
&-item {
@apply box-content flex flex-none;
scroll-snap-align: start;
}
&-center .carousel-item {
scroll-snap-align: center;
}
&-end .carousel-item {
scroll-snap-align: end;
}
}

View File

@ -0,0 +1,68 @@
.chat {
@apply grid grid-cols-2 gap-x-3 py-1;
&-image {
@apply self-end row-span-2;
}
&-header {
@apply text-sm row-start-1;
}
&-footer {
@apply text-sm row-start-3;
}
&-bubble {
@apply block w-fit px-4 py-2 relative;
max-width: 90%;
&:before {
@apply w-3 h-3 absolute bottom-0;
background-color: inherit;
content: "";
mask-size: contain;
mask-repeat: no-repeat;
mask-position: center;
}
}
&-start {
@apply place-items-start;
grid-template-columns: auto 1fr;
.chat-header {
@apply col-start-2;
}
.chat-footer {
@apply col-start-2;
}
.chat-image {
@apply col-start-1;
}
.chat-bubble {
@apply col-start-2;
&:before {
mask-image: url("data:image/svg+xml,%3csvg width='3' height='3' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m 0 3 L 3 3 L 3 0 C 3 1 1 3 0 3'/%3e%3c/svg%3e");
[dir="rtl"] & {
mask-image: url("data:image/svg+xml,%3csvg width='3' height='3' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m 0 3 L 1 3 L 3 3 C 2 3 0 1 0 0'/%3e%3c/svg%3e");
}
}
}
}
&-end {
@apply place-items-end;
grid-template-columns: 1fr auto;
.chat-header {
@apply col-start-1;
}
.chat-footer {
@apply col-start-1;
}
.chat-image {
@apply col-start-2;
}
.chat-bubble {
@apply col-start-1;
&:before {
mask-image: url("data:image/svg+xml,%3csvg width='3' height='3' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m 0 3 L 1 3 L 3 3 C 2 3 0 1 0 0'/%3e%3c/svg%3e");
[dir="rtl"] & {
mask-image: url("data:image/svg+xml,%3csvg width='3' height='3' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m 0 3 L 3 3 L 3 0 C 3 1 1 3 0 3'/%3e%3c/svg%3e");
}
}
}
}
}

View File

@ -0,0 +1,3 @@
.checkbox {
@apply shrink-0;
}

View File

@ -0,0 +1,26 @@
.collapse.collapse {
@apply visible;
}
.collapse {
@apply relative grid overflow-hidden;
grid-template-rows: 1fr auto;
}
.collapse-title,
.collapse > input[type="checkbox"],
.collapse-content {
@apply col-start-1 row-start-1;
}
.collapse > input[type="checkbox"] {
@apply appearance-none opacity-0;
}
.collapse-content {
@apply row-start-2 overflow-hidden;
max-height: 0px;
}
.collapse-open .collapse-content,
.collapse:focus:not(.collapse-close) .collapse-content,
.collapse:not(.collapse-close)
input[type="checkbox"]:checked
~ .collapse-content {
max-height: none;
}

View File

@ -0,0 +1,16 @@
:root .countdown {
line-height: 1em;
}
.countdown {
display: inline-flex;
& > * {
height: 1em;
@apply inline-block overflow-y-hidden;
&:before {
position: relative;
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";
white-space: pre;
top: calc(var(--value) * -1em);
}
}
}

View File

@ -0,0 +1,9 @@
.divider {
@apply flex flex-row items-center self-stretch;
&:before,
&:after {
content: "";
@apply flex-grow;
@apply h-0.5 w-full;
}
}

View File

@ -0,0 +1,104 @@
.drawer {
@apply grid overflow-hidden w-full;
height: 100vh;
height: 100dvh;
&.drawer-end {
direction: rtl;
}
&.drawer-end > * {
direction: ltr;
}
&.drawer-end > .drawer-toggle {
& ~ .drawer-side > .drawer-overlay + * {
@apply translate-x-full justify-self-end;
}
&:checked ~ .drawer-side > .drawer-overlay + * {
@apply translate-x-0;
}
}
}
:where(.drawer-toggle ~ .drawer-content) {
height: inherit;
}
.drawer-toggle {
@apply absolute h-0 w-0 appearance-none opacity-0;
& ~ .drawer-content {
@apply z-0 col-start-1 row-start-1 overflow-y-auto;
}
& ~ .drawer-side {
@apply col-start-1 row-start-1 grid max-h-screen overflow-x-hidden;
& > .drawer-overlay {
@apply invisible col-start-1 row-start-1 opacity-0;
}
& > .drawer-overlay + * {
@apply z-10 col-start-1 row-start-1 -translate-x-full transform;
}
}
&:checked {
& ~ .drawer-side {
@apply overflow-y-auto overflow-x-hidden isolate;
& > .drawer-overlay {
@apply visible;
}
& > .drawer-overlay + * {
@apply translate-x-0;
}
}
}
}
[dir="rtl"] .drawer-toggle ~ .drawer-side > .drawer-overlay + * {
@apply translate-x-full;
}
[dir="rtl"] .drawer-toggle:checked ~ .drawer-side > .drawer-overlay + * {
@apply translate-x-0;
}
[dir="rtl"] .drawer.drawer-end > .drawer-toggle ~ .drawer-side > .drawer-overlay + * {
--tw-translate-x: -100%;
}
[dir="rtl"] .drawer.drawer-end > .drawer-toggle:checked ~ .drawer-side > .drawer-overlay + * {
--tw-translate-x: 0px;
}
[dir="rtl"] .drawer.drawer-end > .drawer-toggle:checked ~ .drawer-content {
--tw-translate-x: 0.5rem;
}
@media (min-width: 1024px) {
.drawer-mobile {
grid-auto-columns: max-content auto;
& > .drawer-toggle {
& ~ .drawer-content {
@apply h-auto lg:col-start-2;
}
& ~ .drawer-side {
@apply overflow-y-auto;
& > .drawer-overlay {
@apply lg:visible;
}
& > .drawer-overlay + * {
@apply lg:translate-x-0;
}
}
}
}
.drawer-mobile.drawer-end {
grid-auto-columns: auto max-content;
direction: ltr;
& > .drawer-toggle {
& ~ .drawer-content {
@apply h-auto lg:col-start-1;
}
& ~ .drawer-side {
@apply overflow-y-auto lg:col-start-2;
& > .drawer-overlay {
@apply lg:visible;
}
& > .drawer-overlay + * {
@apply lg:translate-x-0;
}
}
}
}
}

View File

@ -0,0 +1,36 @@
.dropdown {
@apply relative inline-block;
}
.dropdown > *:focus {
@apply outline-none;
}
.dropdown .dropdown-content {
@apply invisible absolute z-50 opacity-0;
}
.dropdown-end .dropdown-content {
@apply right-0;
}
.dropdown-left .dropdown-content {
@apply top-0 right-full bottom-auto;
}
.dropdown-right .dropdown-content {
@apply left-full top-0 bottom-auto;
}
.dropdown-bottom .dropdown-content {
@apply bottom-auto top-full;
}
.dropdown-top .dropdown-content {
@apply bottom-full top-auto;
}
.dropdown-end.dropdown-right .dropdown-content {
@apply bottom-0 top-auto;
}
.dropdown-end.dropdown-left .dropdown-content {
@apply bottom-0 top-auto;
}
.dropdown.dropdown-open .dropdown-content,
.dropdown.dropdown-hover:hover .dropdown-content,
.dropdown:not(.dropdown-hover):focus .dropdown-content,
.dropdown:not(.dropdown-hover):focus-within .dropdown-content {
@apply visible opacity-100;
}

View File

@ -0,0 +1,7 @@
.file-input {
@apply flex-shrink h-12 pr-4 text-sm leading-loose;
&::file-selector-button {
@apply inline-flex flex-shrink-0 cursor-pointer select-none flex-wrap items-center justify-center border-transparent text-center transition duration-200 ease-in-out h-[2.875rem] px-4 text-sm min-h-[2.875rem] mr-4;
line-height: 1em;
}
}

View File

@ -0,0 +1,20 @@
.footer {
@apply grid w-full grid-flow-row place-items-start;
& > * {
@apply grid place-items-start;
}
&-center {
@apply place-items-center text-center;
& > * {
@apply place-items-center;
}
}
}
@media (min-width: 48rem) {
.footer {
grid-auto-flow: column;
}
.footer-center {
grid-auto-flow: row dense;
}
}

View File

@ -0,0 +1,6 @@
.form-control {
@apply flex flex-col;
}
.label {
@apply flex select-none items-center justify-between;
}

View File

@ -0,0 +1,12 @@
.hero {
@apply grid w-full place-items-center bg-cover bg-center;
& > * {
@apply col-start-1 row-start-1;
}
&-overlay {
@apply col-start-1 row-start-1 h-full w-full;
}
&-content {
@apply z-0 flex items-center justify-center;
}
}

View File

@ -0,0 +1,8 @@
.indicator {
@apply relative inline-flex;
width: max-content;
& :where(.indicator-item) {
z-index: 1;
@apply absolute transform whitespace-nowrap;
}
}

View File

@ -0,0 +1,58 @@
.input {
@apply flex-shrink;
@apply h-12 px-4 text-sm leading-loose;
}
.input-group {
@apply flex w-full items-stretch;
> .input {
@apply isolate;
}
> *,
> .input,
> .textarea,
> .select {
@apply rounded-none;
}
&-md {
@apply text-sm leading-loose;
}
&-lg {
@apply text-lg leading-loose;
}
&-sm {
@apply text-sm leading-8;
}
&-xs {
@apply text-xs leading-relaxed;
}
:where(span) {
@apply flex items-center bg-base-300 px-4;
}
> :first-child {
border-top-left-radius: var(--rounded-btn, 0.5rem);
border-top-right-radius: 0;
border-bottom-left-radius: var(--rounded-btn, 0.5rem);
border-bottom-right-radius: 0;
}
> :last-child {
border-top-left-radius: 0;
border-top-right-radius: var(--rounded-btn, 0.5rem);
border-bottom-left-radius: 0;
border-bottom-right-radius: var(--rounded-btn, 0.5rem);
}
&-vertical {
@apply flex-col;
:first-child {
border-top-left-radius: var(--rounded-btn, 0.5rem);
border-top-right-radius: var(--rounded-btn, 0.5rem);
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
:last-child {
border-top-left-radius: 0;
border-top-right-radius: 0;
border-bottom-left-radius: var(--rounded-btn, 0.5rem);
border-bottom-right-radius: var(--rounded-btn, 0.5rem);
}
}
}

View File

@ -0,0 +1,3 @@
.kbd {
@apply inline-flex items-center justify-center;
}

View File

@ -0,0 +1,6 @@
.link {
@apply cursor-pointer underline;
&-hover {
@apply no-underline hover:underline;
}
}

View File

@ -0,0 +1,13 @@
.mask {
mask-size: contain;
mask-repeat: no-repeat;
mask-position: center;
}
.mask-half-1 {
mask-size: 200%;
mask-position: left;
}
.mask-half-2 {
mask-size: 200%;
mask-position: right;
}

View File

@ -0,0 +1,39 @@
.menu {
@apply flex flex-col flex-wrap;
&.horizontal {
@apply inline-flex flex-row;
:where(li) {
@apply flex-row;
}
}
}
:where(.menu li) {
@apply relative flex flex-col flex-wrap items-stretch shrink-0;
}
.menu :where(li:not(.menu-title)) > :where(*:not(ul)) {
@apply flex;
}
.menu :where(li:not(.disabled):not(.menu-title)) > :where(*:not(ul)) {
@apply cursor-pointer select-none items-center outline-none;
}
.menu > :where(li > *:not(ul):focus) {
@apply outline-none;
}
.menu > :where(li.disabled > *:not(ul):focus) {
@apply cursor-auto;
}
.menu > :where(li) :where(ul) {
@apply flex flex-col items-stretch;
}
.menu > :where(li) > :where(ul) {
@apply absolute hidden;
top: initial;
left: 100%;
}
.menu > :where(li:hover) > :where(ul) {
@apply flex;
}
.menu > :where(li:focus) > :where(ul) {
@apply flex;
}

View File

@ -0,0 +1,20 @@
.mockup {
&-code {
@apply relative overflow-hidden overflow-x-auto;
pre[data-prefix] {
&:before {
content: attr(data-prefix);
@apply inline-block text-right;
}
}
}
&-window {
@apply relative overflow-hidden overflow-x-auto;
pre[data-prefix] {
&:before {
content: attr(data-prefix);
@apply inline-block text-right;
}
}
}
}

View File

@ -0,0 +1,21 @@
.modal {
@apply pointer-events-none invisible fixed inset-0 flex justify-center opacity-0;
z-index: 999;
}
:where(.modal){
@apply items-center;
}
.modal-box {
max-height: calc(100vh - 5em);
}
.modal-open,
.modal:target,
.modal-toggle:checked + .modal {
@apply pointer-events-auto visible opacity-100;
}
.modal-action {
@apply flex;
}
.modal-toggle {
@apply fixed h-0 w-0 appearance-none opacity-0;
}

View File

@ -0,0 +1,17 @@
.navbar {
@apply flex items-center;
}
:where(.navbar > *) {
@apply inline-flex items-center;
}
.navbar-start {
width: 50%;
justify-content: flex-start;
}
.navbar-center {
flex-shrink: 0;
}
.navbar-end {
width: 50%;
justify-content: flex-end;
}

View File

@ -0,0 +1,3 @@
.progress {
@apply relative w-full appearance-none overflow-hidden;
}

View File

@ -0,0 +1,29 @@
.radial-progress {
@apply w-[var(--size)] h-[var(--size)] bg-transparent rounded-full place-content-center inline-grid relative;
vertical-align: middle;
box-sizing: content-box;
}
.radial-progress::-moz-progress-bar {
@apply bg-transparent appearance-none;
}
.radial-progress::-webkit-progress-value {
@apply bg-transparent appearance-none;
}
.radial-progress::-webkit-progress-bar {
@apply bg-transparent appearance-none;
}
.radial-progress:before,
.radial-progress:after {
@apply absolute rounded-full;
content: "";
}
.radial-progress:before {
@apply inset-0;
background: radial-gradient(farthest-side, currentColor 98%, #0000) top/var(--thickness) var(--thickness) no-repeat, conic-gradient(currentColor calc(var(--value) * 1%), #0000 0);
-webkit-mask: radial-gradient(farthest-side, #0000 calc(99% - var(--thickness)), #000 calc(100% - var(--thickness)));
mask: radial-gradient(farthest-side, #0000 calc(99% - var(--thickness)), #000 calc(100% - var(--thickness)));
}
.radial-progress:after {
inset: calc(50% - var(--thickness) / 2);
transform: rotate(calc(var(--value) * 3.6deg - 90deg)) translate(calc(var(--size) / 2 - 50%));
}

View File

@ -0,0 +1,3 @@
.radio {
@apply shrink-0;
}

View File

@ -0,0 +1,6 @@
.range {
@apply h-6 w-full cursor-pointer;
&:focus {
outline: none;
}
}

View File

@ -0,0 +1,6 @@
.rating {
@apply relative inline-flex;
:where(input) {
@apply cursor-pointer rounded-none;
}
}

View File

@ -0,0 +1,14 @@
.select {
@apply inline-flex flex-shrink-0 cursor-pointer select-none appearance-none;
@apply h-12 pl-4 pr-10 text-sm leading-loose min-h-12;
/* disabled */
/* &-disabled,
&[disabled] {
@apply pointer-events-none;
} */
/* multiple */
&[multiple] {
@apply h-auto;
}
}

Some files were not shown because too many files have changed in this diff Show More