Move v2 files to v3 branch

pull/1753/head
Pouya Saadeghi 1 year ago
parent 7b51e79f62
commit 2779841cab
  1. 151
      .github/CONTRIBUTING.md
  2. 1
      .github/FUNDING.yml
  3. 42
      .github/ISSUE_TEMPLATE/bug-report.yml
  4. 14
      .github/ISSUE_TEMPLATE/config.yml
  5. 33
      .github/ISSUE_TEMPLATE/documentation-issue.yml
  6. 102
      .github/workflows/publish.yml
  7. 11
      .gitignore
  8. 1747
      CHANGELOG.md
  9. 21
      LICENSE
  10. 249
      README.md
  11. 118
      package.json
  12. 5
      src/.prettierignore
  13. 5
      src/base/colors.css
  14. 4
      src/base/general.css
  15. 9
      src/base/postcss.config.js
  16. 34
      src/colors/colorNames.js
  17. 313
      src/colors/functions.js
  18. 52
      src/colors/index.js
  19. 434
      src/colors/themes.js
  20. 10
      src/components/postcss.config.js
  21. 15
      src/components/styled/alert.css
  22. 6
      src/components/styled/avatar.css
  23. 117
      src/components/styled/badge.css
  24. 29
      src/components/styled/bottom-navigation.css
  25. 27
      src/components/styled/breadcrumbs.css
  26. 238
      src/components/styled/button.css
  27. 53
      src/components/styled/card.css
  28. 7
      src/components/styled/carousel.css
  29. 51
      src/components/styled/chat.css
  30. 142
      src/components/styled/checkbox.css
  31. 78
      src/components/styled/collapse.css
  32. 8
      src/components/styled/countdown.css
  33. 12
      src/components/styled/divider.css
  34. 74
      src/components/styled/drawer.css
  35. 21
      src/components/styled/dropdown.css
  36. 96
      src/components/styled/file-input.css
  37. 9
      src/components/styled/footer.css
  38. 12
      src/components/styled/form.css
  39. 8
      src/components/styled/hero.css
  40. 69
      src/components/styled/input.css
  41. 6
      src/components/styled/kbd.css
  42. 33
      src/components/styled/link.css
  43. 59
      src/components/styled/mask.css
  44. 133
      src/components/styled/menu.css
  45. 78
      src/components/styled/mockup.css
  46. 21
      src/components/styled/modal.css
  47. 5
      src/components/styled/navbar.css
  48. 92
      src/components/styled/progress.css
  49. 8
      src/components/styled/radial-progress.css
  50. 112
      src/components/styled/radio.css
  51. 62
      src/components/styled/range.css
  52. 46
      src/components/styled/rating.css
  53. 75
      src/components/styled/select.css
  54. 15
      src/components/styled/stack.css
  55. 29
      src/components/styled/stat.css
  56. 82
      src/components/styled/steps.css
  57. 52
      src/components/styled/swap.css
  58. 108
      src/components/styled/tab.css
  59. 73
      src/components/styled/table.css
  60. 63
      src/components/styled/textarea.css
  61. 17
      src/components/styled/toast.css
  62. 118
      src/components/styled/toggle.css
  63. 110
      src/components/styled/tooltip.css
  64. 37
      src/components/styled/typography.css
  65. 25
      src/components/tailwind.config.js
  66. 6
      src/components/unstyled/alert.css
  67. 3
      src/components/unstyled/artboard.css
  68. 14
      src/components/unstyled/avatar.css
  69. 7
      src/components/unstyled/badge.css
  70. 7
      src/components/unstyled/bottom-navigation.css
  71. 13
      src/components/unstyled/breadcrumbs.css
  72. 60
      src/components/unstyled/button.css
  73. 35
      src/components/unstyled/card.css
  74. 19
      src/components/unstyled/carousel.css
  75. 68
      src/components/unstyled/chat.css
  76. 3
      src/components/unstyled/checkbox.css
  77. 26
      src/components/unstyled/collapse.css
  78. 16
      src/components/unstyled/countdown.css
  79. 9
      src/components/unstyled/divider.css
  80. 104
      src/components/unstyled/drawer.css
  81. 36
      src/components/unstyled/dropdown.css
  82. 7
      src/components/unstyled/file-input.css
  83. 20
      src/components/unstyled/footer.css
  84. 6
      src/components/unstyled/form.css
  85. 12
      src/components/unstyled/hero.css
  86. 8
      src/components/unstyled/indicator.css
  87. 58
      src/components/unstyled/input.css
  88. 3
      src/components/unstyled/kbd.css
  89. 6
      src/components/unstyled/link.css
  90. 13
      src/components/unstyled/mask.css
  91. 39
      src/components/unstyled/menu.css
  92. 20
      src/components/unstyled/mockup.css
  93. 21
      src/components/unstyled/modal.css
  94. 17
      src/components/unstyled/navbar.css
  95. 3
      src/components/unstyled/progress.css
  96. 29
      src/components/unstyled/radial-progress.css
  97. 3
      src/components/unstyled/radio.css
  98. 6
      src/components/unstyled/range.css
  99. 6
      src/components/unstyled/rating.css
  100. 14
      src/components/unstyled/select.css
  101. Some files were not shown because too many files have changed in this diff Show More

@ -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
```

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

@ -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

@ -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

@ -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

@ -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

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

File diff suppressed because it is too large Load Diff

@ -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.

@ -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

@ -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"
}
}

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

@ -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));
}

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

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

@ -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",
};

@ -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,
};
}
}

@ -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;

@ -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",
},
};

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

@ -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;
}
}

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

@ -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;
}
}
}

@ -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;
}
}
}

@ -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;
}

@ -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);
}
}

@ -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;
}
}
}

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

@ -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%;
}
}
}

@ -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%);
}
}
}

@ -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: "−";
}

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

@ -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;
}
}

@ -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;
}
}
}
}
}

@ -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;
}

@ -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;
}
}
}

@ -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;
}
}

@ -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;
}
}

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

@ -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;
} */
}

@ -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;
}

@ -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;
}
}

@ -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");
}
}

@ -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;
}

@ -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;
}
}
}

@ -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;
}

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

@ -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%;
}
}

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

@ -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;
}

@ -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);
}
}

@ -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);
}
}

@ -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%);
}

@ -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;
}
}

@ -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;
}
} */

@ -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%;
}
}
} */
}

@ -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);
}

@ -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;
}
}

@ -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;
}
}
}
}

@ -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;
}
}

@ -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;
}
}

@ -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;
}

@ -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));
}
}

@ -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%);
}
}

@ -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"],
});
}),
],
};

@ -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;
}
}

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

@ -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;
}
}
}

@ -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;
}

@ -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;
}
}

@ -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;
}
}
}
}

@ -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);
}
}

@ -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;
}
}

@ -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;
}
}

@ -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");
}
}
}
}
}

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

@ -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;
}

@ -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);
}
}
}

@ -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;
}
}

@ -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;
}
}
}
}
}

@ -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;
}

@ -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;
}
}

@ -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;
}
}

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

@ -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;
}
}

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

@ -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);
}
}
}

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

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

@ -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;
}

@ -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;
}

@ -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;
}
}
}
}

@ -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;
}

@ -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;
}

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

@ -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%));
}

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

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

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

@ -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

Loading…
Cancel
Save