mirror of https://github.com/saadeghi/daisyui
parent
7b51e79f62
commit
2779841cab
473 changed files with 54459 additions and 0 deletions
@ -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 }} |
||||
|
@ -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,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…
Reference in new issue