diff --git a/Public/css/main.css b/Public/css/main.css
index e0ce378..a86c959 100644
--- a/Public/css/main.css
+++ b/Public/css/main.css
@@ -1,5 +1,5 @@
@import "tailwindcss";
@plugin "daisyui" {
- themes: light --default, dark --prefersdark, dracula;
+ themes: all;
}
diff --git a/Public/css/output.css b/Public/css/output.css
index 82f9d63..5f9f61f 100644
--- a/Public/css/output.css
+++ b/Public/css/output.css
@@ -10,14 +10,11 @@
--color-red-500: oklch(63.7% 0.237 25.331);
--color-red-600: oklch(57.7% 0.245 27.325);
--color-green-400: oklch(79.2% 0.209 151.711);
- --color-blue-400: oklch(70.7% 0.165 254.624);
--color-indigo-600: oklch(51.1% 0.262 276.966);
--color-slate-300: oklch(86.9% 0.022 252.894);
--color-slate-900: oklch(20.8% 0.042 265.755);
--color-gray-200: oklch(92.8% 0.006 264.531);
- --color-gray-300: oklch(87.2% 0.01 258.338);
--color-gray-400: oklch(70.7% 0.022 261.325);
- --color-gray-900: oklch(21% 0.034 264.665);
--color-black: #000;
--color-white: #fff;
--spacing: 0.25rem;
@@ -2209,9 +2206,6 @@
.collapse {
visibility: collapse;
}
- .invisible {
- visibility: hidden;
- }
.visible {
visibility: visible;
}
@@ -4677,6 +4671,9 @@
}
}
}
+ .z-1 {
+ z-index: 1;
+ }
.tab-content {
@layer daisyui.l1.l2.l3 {
order: var(--tabcontent-order);
@@ -5366,15 +5363,9 @@
}
}
}
- .my-1 {
- margin-block: calc(var(--spacing) * 1);
- }
.my-1\.5 {
margin-block: calc(var(--spacing) * 1.5);
}
- .my-2 {
- margin-block: calc(var(--spacing) * 2);
- }
.my-auto {
margin-block: auto;
}
@@ -5581,18 +5572,6 @@
border-width: var(--border, 1px) 0 var(--border, 1px) var(--border, 1px);
}
}
- .ms-4 {
- margin-inline-start: calc(var(--spacing) * 4);
- }
- .ms-6 {
- margin-inline-start: calc(var(--spacing) * 6);
- }
- .ms-8 {
- margin-inline-start: calc(var(--spacing) * 8);
- }
- .me-4 {
- margin-inline-end: calc(var(--spacing) * 4);
- }
.modal-action {
@layer daisyui.l1.l2.l3 {
margin-top: calc(0.25rem * 6);
@@ -6439,15 +6418,9 @@
}
}
}
- .h-40 {
- height: calc(var(--spacing) * 40);
- }
.h-\[1em\] {
height: 1em;
}
- .h-auto {
- height: auto;
- }
.h-fit {
height: fit-content;
}
@@ -6588,18 +6561,6 @@
width: calc(var(--size-selector, 0.25rem) * 4);
}
}
- .w-24 {
- width: calc(var(--spacing) * 24);
- }
- .w-40 {
- width: calc(var(--spacing) * 40);
- }
- .w-64 {
- width: calc(var(--spacing) * 64);
- }
- .w-auto {
- width: auto;
- }
.w-fit {
width: fit-content;
}
@@ -6835,9 +6796,6 @@
.justify-end {
justify-content: flex-end;
}
- .justify-start {
- justify-content: flex-start;
- }
.gap-1 {
gap: calc(var(--spacing) * 1);
}
@@ -6861,13 +6819,6 @@
margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
}
}
- .space-x-0 {
- :where(& > :not(:last-child)) {
- --tw-space-x-reverse: 0;
- margin-inline-start: calc(calc(var(--spacing) * 0) * var(--tw-space-x-reverse));
- margin-inline-end: calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-x-reverse)));
- }
- }
.space-x-2 {
:where(& > :not(:last-child)) {
--tw-space-x-reverse: 0;
@@ -6992,9 +6943,6 @@
.rounded-md {
border-radius: var(--radius-md);
}
- .rounded-none {
- border-radius: 0;
- }
.rounded-selector {
border-radius: var(--radius-selector);
}
@@ -7290,12 +7238,6 @@
border-color: currentColor;
}
}
- .border-base-100 {
- border-color: var(--color-base-100);
- }
- .border-base-200 {
- border-color: var(--color-base-200);
- }
.border-gray-200 {
border-color: var(--color-gray-200);
}
@@ -7465,12 +7407,6 @@
.bg-base-300 {
background-color: var(--color-base-300);
}
- .bg-neutral {
- background-color: var(--color-neutral);
- }
- .bg-primary {
- background-color: var(--color-primary);
- }
.bg-red-500 {
background-color: var(--color-red-500);
}
@@ -7689,12 +7625,6 @@
.mask-repeat {
mask-repeat: repeat;
}
- .object-contain {
- object-fit: contain;
- }
- .object-scale-down {
- object-fit: scale-down;
- }
.checkbox-lg {
@layer daisyui.l1.l2 {
padding: 0.3125rem;
@@ -7888,18 +7818,12 @@
}
}
}
- .px-2 {
- padding-inline: calc(var(--spacing) * 2);
- }
.px-3 {
padding-inline: calc(var(--spacing) * 3);
}
.px-4 {
padding-inline: calc(var(--spacing) * 4);
}
- .py-1 {
- padding-block: calc(var(--spacing) * 1);
- }
.py-1\.5 {
padding-block: calc(var(--spacing) * 1.5);
}
@@ -7912,9 +7836,6 @@
.ps-2 {
padding-inline-start: calc(var(--spacing) * 2);
}
- .ps-8 {
- padding-inline-start: calc(var(--spacing) * 8);
- }
.file-input-xl {
@layer daisyui.l1.l2 {
padding-inline-end: calc(0.25rem * 6);
@@ -7929,9 +7850,6 @@
.pe-2 {
padding-inline-end: calc(var(--spacing) * 2);
}
- .pe-4 {
- padding-inline-end: calc(var(--spacing) * 4);
- }
.pt-6 {
padding-top: calc(var(--spacing) * 6);
}
@@ -8565,9 +8483,6 @@
.text-error {
color: var(--color-error);
}
- .text-gray-200 {
- color: var(--color-gray-200);
- }
.text-gray-400 {
color: var(--color-gray-400);
}
@@ -9529,11 +9444,6 @@
color: var(--color-white);
}
}
- .md\:grid-cols-1 {
- @media (width >= 48rem) {
- grid-template-columns: repeat(1, minmax(0, 1fr));
- }
- }
.md\:grid-cols-2 {
@media (width >= 48rem) {
grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -9592,66 +9502,16 @@
}
}
}
- .lg\:visible {
- @media (width >= 64rem) {
- visibility: visible;
- }
- }
- .lg\:block {
- @media (width >= 64rem) {
- display: block;
- }
- }
- .lg\:inline-block {
- @media (width >= 64rem) {
- display: inline-block;
- }
- }
- .lg\:table-cell {
- @media (width >= 64rem) {
- display: table-cell;
- }
- }
- .lg\:grid-cols-2 {
- @media (width >= 64rem) {
- grid-template-columns: repeat(2, minmax(0, 1fr));
- }
- }
.lg\:grid-cols-3 {
@media (width >= 64rem) {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
- .xl\:visible {
- @media (width >= 80rem) {
- visibility: visible;
- }
- }
- .xl\:table-cell {
- @media (width >= 80rem) {
- display: table-cell;
- }
- }
- .xl\:grid-cols-2 {
- @media (width >= 80rem) {
- grid-template-columns: repeat(2, minmax(0, 1fr));
- }
- }
- .xl\:grid-cols-3 {
- @media (width >= 80rem) {
- grid-template-columns: repeat(3, minmax(0, 1fr));
- }
- }
.\32 xl\:table-cell {
@media (width >= 96rem) {
display: table-cell;
}
}
- .dark\:text-white {
- @media (prefers-color-scheme: dark) {
- color: var(--color-white);
- }
- }
.is-drawer-close\:tooltip {
&:where(.drawer-toggle:not(:checked) ~ .drawer-side, .drawer-toggle:not(:checked) ~ .drawer-side *) {
@layer daisyui.l1.l2.l3 {
@@ -9761,11 +9621,6 @@
grid-template-columns: repeat(1, minmax(0, 1fr));
}
}
- .is-drawer-close\:items-center {
- &:where(.drawer-toggle:not(:checked) ~ .drawer-side, .drawer-toggle:not(:checked) ~ .drawer-side *) {
- align-items: center;
- }
- }
.is-drawer-close\:justify-center {
&:where(.drawer-toggle:not(:checked) ~ .drawer-side, .drawer-toggle:not(:checked) ~ .drawer-side *) {
justify-content: center;
@@ -9810,16 +9665,6 @@
max-width: 300px;
}
}
- .is-drawer-open\:min-w-\[340px\] {
- &:where(.drawer-toggle:checked ~ .drawer-side, .drawer-toggle:checked ~ .drawer-side *) {
- min-width: 340px;
- }
- }
- .is-drawer-open\:justify-between {
- &:where(.drawer-toggle:checked ~ .drawer-side, .drawer-toggle:checked ~ .drawer-side *) {
- justify-content: space-between;
- }
- }
.is-drawer-open\:justify-start {
&:where(.drawer-toggle:checked ~ .drawer-side, .drawer-toggle:checked ~ .drawer-side *) {
justify-content: flex-start;
@@ -9969,6 +9814,600 @@
--noise: 0;
}
}
+@layer base {
+ :root:has(input.theme-controller[value=cupcake]:checked),[data-theme=cupcake] {
+ color-scheme: light;
+ --color-base-100: oklch(97.788% 0.004 56.375);
+ --color-base-200: oklch(93.982% 0.007 61.449);
+ --color-base-300: oklch(91.586% 0.006 53.44);
+ --color-base-content: oklch(23.574% 0.066 313.189);
+ --color-primary: oklch(85% 0.138 181.071);
+ --color-primary-content: oklch(43% 0.078 188.216);
+ --color-secondary: oklch(89% 0.061 343.231);
+ --color-secondary-content: oklch(45% 0.187 3.815);
+ --color-accent: oklch(90% 0.076 70.697);
+ --color-accent-content: oklch(47% 0.157 37.304);
+ --color-neutral: oklch(27% 0.006 286.033);
+ --color-neutral-content: oklch(92% 0.004 286.32);
+ --color-info: oklch(68% 0.169 237.323);
+ --color-info-content: oklch(29% 0.066 243.157);
+ --color-success: oklch(69% 0.17 162.48);
+ --color-success-content: oklch(26% 0.051 172.552);
+ --color-warning: oklch(79% 0.184 86.047);
+ --color-warning-content: oklch(28% 0.066 53.813);
+ --color-error: oklch(64% 0.246 16.439);
+ --color-error-content: oklch(27% 0.105 12.094);
+ --radius-selector: 1rem;
+ --radius-field: 2rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 2px;
+ --depth: 1;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=bumblebee]:checked),[data-theme=bumblebee] {
+ color-scheme: light;
+ --color-base-100: oklch(100% 0 0);
+ --color-base-200: oklch(97% 0 0);
+ --color-base-300: oklch(92% 0 0);
+ --color-base-content: oklch(20% 0 0);
+ --color-primary: oklch(85% 0.199 91.936);
+ --color-primary-content: oklch(42% 0.095 57.708);
+ --color-secondary: oklch(75% 0.183 55.934);
+ --color-secondary-content: oklch(40% 0.123 38.172);
+ --color-accent: oklch(0% 0 0);
+ --color-accent-content: oklch(100% 0 0);
+ --color-neutral: oklch(37% 0.01 67.558);
+ --color-neutral-content: oklch(92% 0.003 48.717);
+ --color-info: oklch(74% 0.16 232.661);
+ --color-info-content: oklch(39% 0.09 240.876);
+ --color-success: oklch(76% 0.177 163.223);
+ --color-success-content: oklch(37% 0.077 168.94);
+ --color-warning: oklch(82% 0.189 84.429);
+ --color-warning-content: oklch(41% 0.112 45.904);
+ --color-error: oklch(70% 0.191 22.216);
+ --color-error-content: oklch(39% 0.141 25.723);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 1;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=emerald]:checked),[data-theme=emerald] {
+ color-scheme: light;
+ --color-base-100: oklch(100% 0 0);
+ --color-base-200: oklch(93% 0 0);
+ --color-base-300: oklch(86% 0 0);
+ --color-base-content: oklch(35.519% 0.032 262.988);
+ --color-primary: oklch(76.662% 0.135 153.45);
+ --color-primary-content: oklch(33.387% 0.04 162.24);
+ --color-secondary: oklch(61.302% 0.202 261.294);
+ --color-secondary-content: oklch(100% 0 0);
+ --color-accent: oklch(72.772% 0.149 33.2);
+ --color-accent-content: oklch(0% 0 0);
+ --color-neutral: oklch(35.519% 0.032 262.988);
+ --color-neutral-content: oklch(98.462% 0.001 247.838);
+ --color-info: oklch(72.06% 0.191 231.6);
+ --color-info-content: oklch(0% 0 0);
+ --color-success: oklch(64.8% 0.15 160);
+ --color-success-content: oklch(0% 0 0);
+ --color-warning: oklch(84.71% 0.199 83.87);
+ --color-warning-content: oklch(0% 0 0);
+ --color-error: oklch(71.76% 0.221 22.18);
+ --color-error-content: oklch(0% 0 0);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=corporate]:checked),[data-theme=corporate] {
+ color-scheme: light;
+ --color-base-100: oklch(100% 0 0);
+ --color-base-200: oklch(93% 0 0);
+ --color-base-300: oklch(86% 0 0);
+ --color-base-content: oklch(22.389% 0.031 278.072);
+ --color-primary: oklch(58% 0.158 241.966);
+ --color-primary-content: oklch(100% 0 0);
+ --color-secondary: oklch(55% 0.046 257.417);
+ --color-secondary-content: oklch(100% 0 0);
+ --color-accent: oklch(60% 0.118 184.704);
+ --color-accent-content: oklch(100% 0 0);
+ --color-neutral: oklch(0% 0 0);
+ --color-neutral-content: oklch(100% 0 0);
+ --color-info: oklch(60% 0.126 221.723);
+ --color-info-content: oklch(100% 0 0);
+ --color-success: oklch(62% 0.194 149.214);
+ --color-success-content: oklch(100% 0 0);
+ --color-warning: oklch(85% 0.199 91.936);
+ --color-warning-content: oklch(0% 0 0);
+ --color-error: oklch(70% 0.191 22.216);
+ --color-error-content: oklch(0% 0 0);
+ --radius-selector: 0.25rem;
+ --radius-field: 0.25rem;
+ --radius-box: 0.25rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=synthwave]:checked),[data-theme=synthwave] {
+ color-scheme: dark;
+ --color-base-100: oklch(15% 0.09 281.288);
+ --color-base-200: oklch(20% 0.09 281.288);
+ --color-base-300: oklch(25% 0.09 281.288);
+ --color-base-content: oklch(78% 0.115 274.713);
+ --color-primary: oklch(71% 0.202 349.761);
+ --color-primary-content: oklch(28% 0.109 3.907);
+ --color-secondary: oklch(82% 0.111 230.318);
+ --color-secondary-content: oklch(29% 0.066 243.157);
+ --color-accent: oklch(75% 0.183 55.934);
+ --color-accent-content: oklch(26% 0.079 36.259);
+ --color-neutral: oklch(45% 0.24 277.023);
+ --color-neutral-content: oklch(87% 0.065 274.039);
+ --color-info: oklch(74% 0.16 232.661);
+ --color-info-content: oklch(29% 0.066 243.157);
+ --color-success: oklch(77% 0.152 181.912);
+ --color-success-content: oklch(27% 0.046 192.524);
+ --color-warning: oklch(90% 0.182 98.111);
+ --color-warning-content: oklch(42% 0.095 57.708);
+ --color-error: oklch(73.7% 0.121 32.639);
+ --color-error-content: oklch(23.501% 0.096 290.329);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=retro]:checked),[data-theme=retro] {
+ color-scheme: light;
+ --color-base-100: oklch(91.637% 0.034 90.515);
+ --color-base-200: oklch(88.272% 0.049 91.774);
+ --color-base-300: oklch(84.133% 0.065 90.856);
+ --color-base-content: oklch(41% 0.112 45.904);
+ --color-primary: oklch(80% 0.114 19.571);
+ --color-primary-content: oklch(39% 0.141 25.723);
+ --color-secondary: oklch(92% 0.084 155.995);
+ --color-secondary-content: oklch(44% 0.119 151.328);
+ --color-accent: oklch(68% 0.162 75.834);
+ --color-accent-content: oklch(41% 0.112 45.904);
+ --color-neutral: oklch(44% 0.011 73.639);
+ --color-neutral-content: oklch(86% 0.005 56.366);
+ --color-info: oklch(58% 0.158 241.966);
+ --color-info-content: oklch(96% 0.059 95.617);
+ --color-success: oklch(51% 0.096 186.391);
+ --color-success-content: oklch(96% 0.059 95.617);
+ --color-warning: oklch(64% 0.222 41.116);
+ --color-warning-content: oklch(96% 0.059 95.617);
+ --color-error: oklch(70% 0.191 22.216);
+ --color-error-content: oklch(40% 0.123 38.172);
+ --radius-selector: 0.25rem;
+ --radius-field: 0.25rem;
+ --radius-box: 0.5rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=cyberpunk]:checked),[data-theme=cyberpunk] {
+ color-scheme: light;
+ --color-base-100: oklch(94.51% 0.179 104.32);
+ --color-base-200: oklch(91.51% 0.179 104.32);
+ --color-base-300: oklch(85.51% 0.179 104.32);
+ --color-base-content: oklch(0% 0 0);
+ --color-primary: oklch(74.22% 0.209 6.35);
+ --color-primary-content: oklch(14.844% 0.041 6.35);
+ --color-secondary: oklch(83.33% 0.184 204.72);
+ --color-secondary-content: oklch(16.666% 0.036 204.72);
+ --color-accent: oklch(71.86% 0.217 310.43);
+ --color-accent-content: oklch(14.372% 0.043 310.43);
+ --color-neutral: oklch(23.04% 0.065 269.31);
+ --color-neutral-content: oklch(94.51% 0.179 104.32);
+ --color-info: oklch(72.06% 0.191 231.6);
+ --color-info-content: oklch(0% 0 0);
+ --color-success: oklch(64.8% 0.15 160);
+ --color-success-content: oklch(0% 0 0);
+ --color-warning: oklch(84.71% 0.199 83.87);
+ --color-warning-content: oklch(0% 0 0);
+ --color-error: oklch(71.76% 0.221 22.18);
+ --color-error-content: oklch(0% 0 0);
+ --radius-selector: 0rem;
+ --radius-field: 0rem;
+ --radius-box: 0rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=valentine]:checked),[data-theme=valentine] {
+ color-scheme: light;
+ --color-base-100: oklch(97% 0.014 343.198);
+ --color-base-200: oklch(94% 0.028 342.258);
+ --color-base-300: oklch(89% 0.061 343.231);
+ --color-base-content: oklch(52% 0.223 3.958);
+ --color-primary: oklch(65% 0.241 354.308);
+ --color-primary-content: oklch(100% 0 0);
+ --color-secondary: oklch(62% 0.265 303.9);
+ --color-secondary-content: oklch(97% 0.014 308.299);
+ --color-accent: oklch(82% 0.111 230.318);
+ --color-accent-content: oklch(39% 0.09 240.876);
+ --color-neutral: oklch(40% 0.153 2.432);
+ --color-neutral-content: oklch(89% 0.061 343.231);
+ --color-info: oklch(86% 0.127 207.078);
+ --color-info-content: oklch(44% 0.11 240.79);
+ --color-success: oklch(84% 0.143 164.978);
+ --color-success-content: oklch(43% 0.095 166.913);
+ --color-warning: oklch(75% 0.183 55.934);
+ --color-warning-content: oklch(26% 0.079 36.259);
+ --color-error: oklch(63% 0.237 25.331);
+ --color-error-content: oklch(97% 0.013 17.38);
+ --radius-selector: 1rem;
+ --radius-field: 2rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=halloween]:checked),[data-theme=halloween] {
+ color-scheme: dark;
+ --color-base-100: oklch(21% 0.006 56.043);
+ --color-base-200: oklch(14% 0.004 49.25);
+ --color-base-300: oklch(0% 0 0);
+ --color-base-content: oklch(84.955% 0 0);
+ --color-primary: oklch(77.48% 0.204 60.62);
+ --color-primary-content: oklch(19.693% 0.004 196.779);
+ --color-secondary: oklch(45.98% 0.248 305.03);
+ --color-secondary-content: oklch(89.196% 0.049 305.03);
+ --color-accent: oklch(64.8% 0.223 136.073);
+ --color-accent-content: oklch(0% 0 0);
+ --color-neutral: oklch(24.371% 0.046 65.681);
+ --color-neutral-content: oklch(84.874% 0.009 65.681);
+ --color-info: oklch(54.615% 0.215 262.88);
+ --color-info-content: oklch(90.923% 0.043 262.88);
+ --color-success: oklch(62.705% 0.169 149.213);
+ --color-success-content: oklch(12.541% 0.033 149.213);
+ --color-warning: oklch(66.584% 0.157 58.318);
+ --color-warning-content: oklch(13.316% 0.031 58.318);
+ --color-error: oklch(65.72% 0.199 27.33);
+ --color-error-content: oklch(13.144% 0.039 27.33);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 1;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=garden]:checked),[data-theme=garden] {
+ color-scheme: light;
+ --color-base-100: oklch(92.951% 0.002 17.197);
+ --color-base-200: oklch(86.445% 0.002 17.197);
+ --color-base-300: oklch(79.938% 0.001 17.197);
+ --color-base-content: oklch(16.961% 0.001 17.32);
+ --color-primary: oklch(62.45% 0.278 3.836);
+ --color-primary-content: oklch(100% 0 0);
+ --color-secondary: oklch(48.495% 0.11 355.095);
+ --color-secondary-content: oklch(89.699% 0.022 355.095);
+ --color-accent: oklch(56.273% 0.054 154.39);
+ --color-accent-content: oklch(100% 0 0);
+ --color-neutral: oklch(24.155% 0.049 89.07);
+ --color-neutral-content: oklch(92.951% 0.002 17.197);
+ --color-info: oklch(72.06% 0.191 231.6);
+ --color-info-content: oklch(0% 0 0);
+ --color-success: oklch(64.8% 0.15 160);
+ --color-success-content: oklch(0% 0 0);
+ --color-warning: oklch(84.71% 0.199 83.87);
+ --color-warning-content: oklch(0% 0 0);
+ --color-error: oklch(71.76% 0.221 22.18);
+ --color-error-content: oklch(0% 0 0);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=forest]:checked),[data-theme=forest] {
+ color-scheme: dark;
+ --color-base-100: oklch(20.84% 0.008 17.911);
+ --color-base-200: oklch(18.522% 0.007 17.911);
+ --color-base-300: oklch(16.203% 0.007 17.911);
+ --color-base-content: oklch(83.768% 0.001 17.911);
+ --color-primary: oklch(68.628% 0.185 148.958);
+ --color-primary-content: oklch(0% 0 0);
+ --color-secondary: oklch(69.776% 0.135 168.327);
+ --color-secondary-content: oklch(13.955% 0.027 168.327);
+ --color-accent: oklch(70.628% 0.119 185.713);
+ --color-accent-content: oklch(14.125% 0.023 185.713);
+ --color-neutral: oklch(30.698% 0.039 171.364);
+ --color-neutral-content: oklch(86.139% 0.007 171.364);
+ --color-info: oklch(72.06% 0.191 231.6);
+ --color-info-content: oklch(0% 0 0);
+ --color-success: oklch(64.8% 0.15 160);
+ --color-success-content: oklch(0% 0 0);
+ --color-warning: oklch(84.71% 0.199 83.87);
+ --color-warning-content: oklch(0% 0 0);
+ --color-error: oklch(71.76% 0.221 22.18);
+ --color-error-content: oklch(0% 0 0);
+ --radius-selector: 1rem;
+ --radius-field: 2rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=aqua]:checked),[data-theme=aqua] {
+ color-scheme: dark;
+ --color-base-100: oklch(37% 0.146 265.522);
+ --color-base-200: oklch(28% 0.091 267.935);
+ --color-base-300: oklch(22% 0.091 267.935);
+ --color-base-content: oklch(90% 0.058 230.902);
+ --color-primary: oklch(85.661% 0.144 198.645);
+ --color-primary-content: oklch(40.124% 0.068 197.603);
+ --color-secondary: oklch(60.682% 0.108 309.782);
+ --color-secondary-content: oklch(96% 0.016 293.756);
+ --color-accent: oklch(93.426% 0.102 94.555);
+ --color-accent-content: oklch(18.685% 0.02 94.555);
+ --color-neutral: oklch(27% 0.146 265.522);
+ --color-neutral-content: oklch(80% 0.146 265.522);
+ --color-info: oklch(54.615% 0.215 262.88);
+ --color-info-content: oklch(90.923% 0.043 262.88);
+ --color-success: oklch(62.705% 0.169 149.213);
+ --color-success-content: oklch(12.541% 0.033 149.213);
+ --color-warning: oklch(66.584% 0.157 58.318);
+ --color-warning-content: oklch(27% 0.077 45.635);
+ --color-error: oklch(73.95% 0.19 27.33);
+ --color-error-content: oklch(14.79% 0.038 27.33);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 1;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=lofi]:checked),[data-theme=lofi] {
+ color-scheme: light;
+ --color-base-100: oklch(100% 0 0);
+ --color-base-200: oklch(97% 0 0);
+ --color-base-300: oklch(94% 0 0);
+ --color-base-content: oklch(0% 0 0);
+ --color-primary: oklch(15.906% 0 0);
+ --color-primary-content: oklch(100% 0 0);
+ --color-secondary: oklch(21.455% 0.001 17.278);
+ --color-secondary-content: oklch(100% 0 0);
+ --color-accent: oklch(26.861% 0 0);
+ --color-accent-content: oklch(100% 0 0);
+ --color-neutral: oklch(0% 0 0);
+ --color-neutral-content: oklch(100% 0 0);
+ --color-info: oklch(79.54% 0.103 205.9);
+ --color-info-content: oklch(15.908% 0.02 205.9);
+ --color-success: oklch(90.13% 0.153 164.14);
+ --color-success-content: oklch(18.026% 0.03 164.14);
+ --color-warning: oklch(88.37% 0.135 79.94);
+ --color-warning-content: oklch(17.674% 0.027 79.94);
+ --color-error: oklch(78.66% 0.15 28.47);
+ --color-error-content: oklch(15.732% 0.03 28.47);
+ --radius-selector: 2rem;
+ --radius-field: 0.25rem;
+ --radius-box: 0.5rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=pastel]:checked),[data-theme=pastel] {
+ color-scheme: light;
+ --color-base-100: oklch(100% 0 0);
+ --color-base-200: oklch(98.462% 0.001 247.838);
+ --color-base-300: oklch(92.462% 0.001 247.838);
+ --color-base-content: oklch(20% 0 0);
+ --color-primary: oklch(90% 0.063 306.703);
+ --color-primary-content: oklch(49% 0.265 301.924);
+ --color-secondary: oklch(89% 0.058 10.001);
+ --color-secondary-content: oklch(51% 0.222 16.935);
+ --color-accent: oklch(90% 0.093 164.15);
+ --color-accent-content: oklch(50% 0.118 165.612);
+ --color-neutral: oklch(55% 0.046 257.417);
+ --color-neutral-content: oklch(92% 0.013 255.508);
+ --color-info: oklch(86% 0.127 207.078);
+ --color-info-content: oklch(52% 0.105 223.128);
+ --color-success: oklch(87% 0.15 154.449);
+ --color-success-content: oklch(52% 0.154 150.069);
+ --color-warning: oklch(83% 0.128 66.29);
+ --color-warning-content: oklch(55% 0.195 38.402);
+ --color-error: oklch(80% 0.114 19.571);
+ --color-error-content: oklch(50% 0.213 27.518);
+ --radius-selector: 1rem;
+ --radius-field: 2rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 2px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=fantasy]:checked),[data-theme=fantasy] {
+ color-scheme: light;
+ --color-base-100: oklch(100% 0 0);
+ --color-base-200: oklch(93% 0 0);
+ --color-base-300: oklch(86% 0 0);
+ --color-base-content: oklch(27.807% 0.029 256.847);
+ --color-primary: oklch(37.45% 0.189 325.02);
+ --color-primary-content: oklch(87.49% 0.037 325.02);
+ --color-secondary: oklch(53.92% 0.162 241.36);
+ --color-secondary-content: oklch(90.784% 0.032 241.36);
+ --color-accent: oklch(75.98% 0.204 56.72);
+ --color-accent-content: oklch(15.196% 0.04 56.72);
+ --color-neutral: oklch(27.807% 0.029 256.847);
+ --color-neutral-content: oklch(85.561% 0.005 256.847);
+ --color-info: oklch(72.06% 0.191 231.6);
+ --color-info-content: oklch(0% 0 0);
+ --color-success: oklch(64.8% 0.15 160);
+ --color-success-content: oklch(0% 0 0);
+ --color-warning: oklch(84.71% 0.199 83.87);
+ --color-warning-content: oklch(0% 0 0);
+ --color-error: oklch(71.76% 0.221 22.18);
+ --color-error-content: oklch(0% 0 0);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 1;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=wireframe]:checked),[data-theme=wireframe] {
+ color-scheme: light;
+ --color-base-100: oklch(100% 0 0);
+ --color-base-200: oklch(97% 0 0);
+ --color-base-300: oklch(94% 0 0);
+ --color-base-content: oklch(20% 0 0);
+ --color-primary: oklch(87% 0 0);
+ --color-primary-content: oklch(26% 0 0);
+ --color-secondary: oklch(87% 0 0);
+ --color-secondary-content: oklch(26% 0 0);
+ --color-accent: oklch(87% 0 0);
+ --color-accent-content: oklch(26% 0 0);
+ --color-neutral: oklch(87% 0 0);
+ --color-neutral-content: oklch(26% 0 0);
+ --color-info: oklch(44% 0.11 240.79);
+ --color-info-content: oklch(90% 0.058 230.902);
+ --color-success: oklch(43% 0.095 166.913);
+ --color-success-content: oklch(90% 0.093 164.15);
+ --color-warning: oklch(47% 0.137 46.201);
+ --color-warning-content: oklch(92% 0.12 95.746);
+ --color-error: oklch(44% 0.177 26.899);
+ --color-error-content: oklch(88% 0.062 18.334);
+ --radius-selector: 0rem;
+ --radius-field: 0.25rem;
+ --radius-box: 0.25rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=black]:checked),[data-theme=black] {
+ color-scheme: dark;
+ --color-base-100: oklch(0% 0 0);
+ --color-base-200: oklch(19% 0 0);
+ --color-base-300: oklch(22% 0 0);
+ --color-base-content: oklch(87.609% 0 0);
+ --color-primary: oklch(35% 0 0);
+ --color-primary-content: oklch(100% 0 0);
+ --color-secondary: oklch(35% 0 0);
+ --color-secondary-content: oklch(100% 0 0);
+ --color-accent: oklch(35% 0 0);
+ --color-accent-content: oklch(100% 0 0);
+ --color-neutral: oklch(35% 0 0);
+ --color-neutral-content: oklch(100% 0 0);
+ --color-info: oklch(45.201% 0.313 264.052);
+ --color-info-content: oklch(89.04% 0.062 264.052);
+ --color-success: oklch(51.975% 0.176 142.495);
+ --color-success-content: oklch(90.395% 0.035 142.495);
+ --color-warning: oklch(96.798% 0.211 109.769);
+ --color-warning-content: oklch(19.359% 0.042 109.769);
+ --color-error: oklch(62.795% 0.257 29.233);
+ --color-error-content: oklch(12.559% 0.051 29.233);
+ --radius-selector: 0rem;
+ --radius-field: 0rem;
+ --radius-box: 0rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=luxury]:checked),[data-theme=luxury] {
+ color-scheme: dark;
+ --color-base-100: oklch(14.076% 0.004 285.822);
+ --color-base-200: oklch(20.219% 0.004 308.229);
+ --color-base-300: oklch(23.219% 0.004 308.229);
+ --color-base-content: oklch(75.687% 0.123 76.89);
+ --color-primary: oklch(100% 0 0);
+ --color-primary-content: oklch(20% 0 0);
+ --color-secondary: oklch(27.581% 0.064 261.069);
+ --color-secondary-content: oklch(85.516% 0.012 261.069);
+ --color-accent: oklch(36.674% 0.051 338.825);
+ --color-accent-content: oklch(87.334% 0.01 338.825);
+ --color-neutral: oklch(24.27% 0.057 59.825);
+ --color-neutral-content: oklch(93.203% 0.089 90.861);
+ --color-info: oklch(79.061% 0.121 237.133);
+ --color-info-content: oklch(15.812% 0.024 237.133);
+ --color-success: oklch(78.119% 0.192 132.154);
+ --color-success-content: oklch(15.623% 0.038 132.154);
+ --color-warning: oklch(86.127% 0.136 102.891);
+ --color-warning-content: oklch(17.225% 0.027 102.891);
+ --color-error: oklch(71.753% 0.176 22.568);
+ --color-error-content: oklch(14.35% 0.035 22.568);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 1;
+ --noise: 0;
+ }
+}
@layer base {
:root:has(input.theme-controller[value=dracula]:checked),[data-theme=dracula] {
color-scheme: dark;
@@ -10002,6 +10441,468 @@
--noise: 0;
}
}
+@layer base {
+ :root:has(input.theme-controller[value=cmyk]:checked),[data-theme=cmyk] {
+ color-scheme: light;
+ --color-base-100: oklch(100% 0 0);
+ --color-base-200: oklch(95% 0 0);
+ --color-base-300: oklch(90% 0 0);
+ --color-base-content: oklch(20% 0 0);
+ --color-primary: oklch(71.772% 0.133 239.443);
+ --color-primary-content: oklch(14.354% 0.026 239.443);
+ --color-secondary: oklch(64.476% 0.202 359.339);
+ --color-secondary-content: oklch(12.895% 0.04 359.339);
+ --color-accent: oklch(94.228% 0.189 105.306);
+ --color-accent-content: oklch(18.845% 0.037 105.306);
+ --color-neutral: oklch(21.778% 0 0);
+ --color-neutral-content: oklch(84.355% 0 0);
+ --color-info: oklch(68.475% 0.094 217.284);
+ --color-info-content: oklch(13.695% 0.018 217.284);
+ --color-success: oklch(46.949% 0.162 321.406);
+ --color-success-content: oklch(89.389% 0.032 321.406);
+ --color-warning: oklch(71.236% 0.159 52.023);
+ --color-warning-content: oklch(14.247% 0.031 52.023);
+ --color-error: oklch(62.013% 0.208 28.717);
+ --color-error-content: oklch(12.402% 0.041 28.717);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=autumn]:checked),[data-theme=autumn] {
+ color-scheme: light;
+ --color-base-100: oklch(95.814% 0 0);
+ --color-base-200: oklch(89.107% 0 0);
+ --color-base-300: oklch(82.4% 0 0);
+ --color-base-content: oklch(19.162% 0 0);
+ --color-primary: oklch(40.723% 0.161 17.53);
+ --color-primary-content: oklch(88.144% 0.032 17.53);
+ --color-secondary: oklch(61.676% 0.169 23.865);
+ --color-secondary-content: oklch(12.335% 0.033 23.865);
+ --color-accent: oklch(73.425% 0.094 60.729);
+ --color-accent-content: oklch(14.685% 0.018 60.729);
+ --color-neutral: oklch(54.367% 0.037 51.902);
+ --color-neutral-content: oklch(90.873% 0.007 51.902);
+ --color-info: oklch(69.224% 0.097 207.284);
+ --color-info-content: oklch(13.844% 0.019 207.284);
+ --color-success: oklch(60.995% 0.08 174.616);
+ --color-success-content: oklch(12.199% 0.016 174.616);
+ --color-warning: oklch(70.081% 0.164 56.844);
+ --color-warning-content: oklch(14.016% 0.032 56.844);
+ --color-error: oklch(53.07% 0.241 24.16);
+ --color-error-content: oklch(90.614% 0.048 24.16);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 1;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=business]:checked),[data-theme=business] {
+ color-scheme: dark;
+ --color-base-100: oklch(24.353% 0 0);
+ --color-base-200: oklch(22.648% 0 0);
+ --color-base-300: oklch(20.944% 0 0);
+ --color-base-content: oklch(84.87% 0 0);
+ --color-primary: oklch(41.703% 0.099 251.473);
+ --color-primary-content: oklch(88.34% 0.019 251.473);
+ --color-secondary: oklch(64.092% 0.027 229.389);
+ --color-secondary-content: oklch(12.818% 0.005 229.389);
+ --color-accent: oklch(67.271% 0.167 35.791);
+ --color-accent-content: oklch(13.454% 0.033 35.791);
+ --color-neutral: oklch(27.441% 0.013 253.041);
+ --color-neutral-content: oklch(85.488% 0.002 253.041);
+ --color-info: oklch(62.616% 0.143 240.033);
+ --color-info-content: oklch(12.523% 0.028 240.033);
+ --color-success: oklch(70.226% 0.094 156.596);
+ --color-success-content: oklch(14.045% 0.018 156.596);
+ --color-warning: oklch(77.482% 0.115 81.519);
+ --color-warning-content: oklch(15.496% 0.023 81.519);
+ --color-error: oklch(51.61% 0.146 29.674);
+ --color-error-content: oklch(90.322% 0.029 29.674);
+ --radius-selector: 0rem;
+ --radius-field: 0.25rem;
+ --radius-box: 0.25rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=acid]:checked),[data-theme=acid] {
+ color-scheme: light;
+ --color-base-100: oklch(98% 0 0);
+ --color-base-200: oklch(95% 0 0);
+ --color-base-300: oklch(91% 0 0);
+ --color-base-content: oklch(0% 0 0);
+ --color-primary: oklch(71.9% 0.357 330.759);
+ --color-primary-content: oklch(14.38% 0.071 330.759);
+ --color-secondary: oklch(73.37% 0.224 48.25);
+ --color-secondary-content: oklch(14.674% 0.044 48.25);
+ --color-accent: oklch(92.78% 0.264 122.962);
+ --color-accent-content: oklch(18.556% 0.052 122.962);
+ --color-neutral: oklch(21.31% 0.128 278.68);
+ --color-neutral-content: oklch(84.262% 0.025 278.68);
+ --color-info: oklch(60.72% 0.227 252.05);
+ --color-info-content: oklch(12.144% 0.045 252.05);
+ --color-success: oklch(85.72% 0.266 158.53);
+ --color-success-content: oklch(17.144% 0.053 158.53);
+ --color-warning: oklch(91.01% 0.212 100.5);
+ --color-warning-content: oklch(18.202% 0.042 100.5);
+ --color-error: oklch(64.84% 0.293 29.349);
+ --color-error-content: oklch(12.968% 0.058 29.349);
+ --radius-selector: 1rem;
+ --radius-field: 1rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 1;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=lemonade]:checked),[data-theme=lemonade] {
+ color-scheme: light;
+ --color-base-100: oklch(98.71% 0.02 123.72);
+ --color-base-200: oklch(91.8% 0.018 123.72);
+ --color-base-300: oklch(84.89% 0.017 123.72);
+ --color-base-content: oklch(19.742% 0.004 123.72);
+ --color-primary: oklch(58.92% 0.199 134.6);
+ --color-primary-content: oklch(11.784% 0.039 134.6);
+ --color-secondary: oklch(77.75% 0.196 111.09);
+ --color-secondary-content: oklch(15.55% 0.039 111.09);
+ --color-accent: oklch(85.39% 0.201 100.73);
+ --color-accent-content: oklch(17.078% 0.04 100.73);
+ --color-neutral: oklch(30.98% 0.075 108.6);
+ --color-neutral-content: oklch(86.196% 0.015 108.6);
+ --color-info: oklch(86.19% 0.047 224.14);
+ --color-info-content: oklch(17.238% 0.009 224.14);
+ --color-success: oklch(86.19% 0.047 157.85);
+ --color-success-content: oklch(17.238% 0.009 157.85);
+ --color-warning: oklch(86.19% 0.047 102.15);
+ --color-warning-content: oklch(17.238% 0.009 102.15);
+ --color-error: oklch(86.19% 0.047 25.85);
+ --color-error-content: oklch(17.238% 0.009 25.85);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=night]:checked),[data-theme=night] {
+ color-scheme: dark;
+ --color-base-100: oklch(20.768% 0.039 265.754);
+ --color-base-200: oklch(19.314% 0.037 265.754);
+ --color-base-300: oklch(17.86% 0.034 265.754);
+ --color-base-content: oklch(84.153% 0.007 265.754);
+ --color-primary: oklch(75.351% 0.138 232.661);
+ --color-primary-content: oklch(15.07% 0.027 232.661);
+ --color-secondary: oklch(68.011% 0.158 276.934);
+ --color-secondary-content: oklch(13.602% 0.031 276.934);
+ --color-accent: oklch(72.36% 0.176 350.048);
+ --color-accent-content: oklch(14.472% 0.035 350.048);
+ --color-neutral: oklch(27.949% 0.036 260.03);
+ --color-neutral-content: oklch(85.589% 0.007 260.03);
+ --color-info: oklch(68.455% 0.148 237.251);
+ --color-info-content: oklch(0% 0 0);
+ --color-success: oklch(78.452% 0.132 181.911);
+ --color-success-content: oklch(15.69% 0.026 181.911);
+ --color-warning: oklch(83.242% 0.139 82.95);
+ --color-warning-content: oklch(16.648% 0.027 82.95);
+ --color-error: oklch(71.785% 0.17 13.118);
+ --color-error-content: oklch(14.357% 0.034 13.118);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=coffee]:checked),[data-theme=coffee] {
+ color-scheme: dark;
+ --color-base-100: oklch(24% 0.023 329.708);
+ --color-base-200: oklch(21% 0.021 329.708);
+ --color-base-300: oklch(16% 0.019 329.708);
+ --color-base-content: oklch(72.354% 0.092 79.129);
+ --color-primary: oklch(71.996% 0.123 62.756);
+ --color-primary-content: oklch(14.399% 0.024 62.756);
+ --color-secondary: oklch(34.465% 0.029 199.194);
+ --color-secondary-content: oklch(86.893% 0.005 199.194);
+ --color-accent: oklch(42.621% 0.074 224.389);
+ --color-accent-content: oklch(88.524% 0.014 224.389);
+ --color-neutral: oklch(16.51% 0.015 326.261);
+ --color-neutral-content: oklch(83.302% 0.003 326.261);
+ --color-info: oklch(79.49% 0.063 184.558);
+ --color-info-content: oklch(15.898% 0.012 184.558);
+ --color-success: oklch(74.722% 0.072 131.116);
+ --color-success-content: oklch(14.944% 0.014 131.116);
+ --color-warning: oklch(88.15% 0.14 87.722);
+ --color-warning-content: oklch(17.63% 0.028 87.722);
+ --color-error: oklch(77.318% 0.128 31.871);
+ --color-error-content: oklch(15.463% 0.025 31.871);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=winter]:checked),[data-theme=winter] {
+ color-scheme: light;
+ --color-base-100: oklch(100% 0 0);
+ --color-base-200: oklch(97.466% 0.011 259.822);
+ --color-base-300: oklch(93.268% 0.016 262.751);
+ --color-base-content: oklch(41.886% 0.053 255.824);
+ --color-primary: oklch(56.86% 0.255 257.57);
+ --color-primary-content: oklch(91.372% 0.051 257.57);
+ --color-secondary: oklch(42.551% 0.161 282.339);
+ --color-secondary-content: oklch(88.51% 0.032 282.339);
+ --color-accent: oklch(59.939% 0.191 335.171);
+ --color-accent-content: oklch(11.988% 0.038 335.171);
+ --color-neutral: oklch(19.616% 0.063 257.651);
+ --color-neutral-content: oklch(83.923% 0.012 257.651);
+ --color-info: oklch(88.127% 0.085 214.515);
+ --color-info-content: oklch(17.625% 0.017 214.515);
+ --color-success: oklch(80.494% 0.077 197.823);
+ --color-success-content: oklch(16.098% 0.015 197.823);
+ --color-warning: oklch(89.172% 0.045 71.47);
+ --color-warning-content: oklch(17.834% 0.009 71.47);
+ --color-error: oklch(73.092% 0.11 20.076);
+ --color-error-content: oklch(14.618% 0.022 20.076);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=dim]:checked),[data-theme=dim] {
+ color-scheme: dark;
+ --color-base-100: oklch(30.857% 0.023 264.149);
+ --color-base-200: oklch(28.036% 0.019 264.182);
+ --color-base-300: oklch(26.346% 0.018 262.177);
+ --color-base-content: oklch(82.901% 0.031 222.959);
+ --color-primary: oklch(86.133% 0.141 139.549);
+ --color-primary-content: oklch(17.226% 0.028 139.549);
+ --color-secondary: oklch(73.375% 0.165 35.353);
+ --color-secondary-content: oklch(14.675% 0.033 35.353);
+ --color-accent: oklch(74.229% 0.133 311.379);
+ --color-accent-content: oklch(14.845% 0.026 311.379);
+ --color-neutral: oklch(24.731% 0.02 264.094);
+ --color-neutral-content: oklch(82.901% 0.031 222.959);
+ --color-info: oklch(86.078% 0.142 206.182);
+ --color-info-content: oklch(17.215% 0.028 206.182);
+ --color-success: oklch(86.171% 0.142 166.534);
+ --color-success-content: oklch(17.234% 0.028 166.534);
+ --color-warning: oklch(86.163% 0.142 94.818);
+ --color-warning-content: oklch(17.232% 0.028 94.818);
+ --color-error: oklch(82.418% 0.099 33.756);
+ --color-error-content: oklch(16.483% 0.019 33.756);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=nord]:checked),[data-theme=nord] {
+ color-scheme: light;
+ --color-base-100: oklch(95.127% 0.007 260.731);
+ --color-base-200: oklch(93.299% 0.01 261.788);
+ --color-base-300: oklch(89.925% 0.016 262.749);
+ --color-base-content: oklch(32.437% 0.022 264.182);
+ --color-primary: oklch(59.435% 0.077 254.027);
+ --color-primary-content: oklch(11.887% 0.015 254.027);
+ --color-secondary: oklch(69.651% 0.059 248.687);
+ --color-secondary-content: oklch(13.93% 0.011 248.687);
+ --color-accent: oklch(77.464% 0.062 217.469);
+ --color-accent-content: oklch(15.492% 0.012 217.469);
+ --color-neutral: oklch(45.229% 0.035 264.131);
+ --color-neutral-content: oklch(89.925% 0.016 262.749);
+ --color-info: oklch(69.207% 0.062 332.664);
+ --color-info-content: oklch(13.841% 0.012 332.664);
+ --color-success: oklch(76.827% 0.074 131.063);
+ --color-success-content: oklch(15.365% 0.014 131.063);
+ --color-warning: oklch(85.486% 0.089 84.093);
+ --color-warning-content: oklch(17.097% 0.017 84.093);
+ --color-error: oklch(60.61% 0.12 15.341);
+ --color-error-content: oklch(12.122% 0.024 15.341);
+ --radius-selector: 1rem;
+ --radius-field: 0.25rem;
+ --radius-box: 0.5rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=sunset]:checked),[data-theme=sunset] {
+ color-scheme: dark;
+ --color-base-100: oklch(22% 0.019 237.69);
+ --color-base-200: oklch(20% 0.019 237.69);
+ --color-base-300: oklch(18% 0.019 237.69);
+ --color-base-content: oklch(77.383% 0.043 245.096);
+ --color-primary: oklch(74.703% 0.158 39.947);
+ --color-primary-content: oklch(14.94% 0.031 39.947);
+ --color-secondary: oklch(72.537% 0.177 2.72);
+ --color-secondary-content: oklch(14.507% 0.035 2.72);
+ --color-accent: oklch(71.294% 0.166 299.844);
+ --color-accent-content: oklch(14.258% 0.033 299.844);
+ --color-neutral: oklch(26% 0.019 237.69);
+ --color-neutral-content: oklch(70% 0.019 237.69);
+ --color-info: oklch(85.559% 0.085 206.015);
+ --color-info-content: oklch(17.111% 0.017 206.015);
+ --color-success: oklch(85.56% 0.085 144.778);
+ --color-success-content: oklch(17.112% 0.017 144.778);
+ --color-warning: oklch(85.569% 0.084 74.427);
+ --color-warning-content: oklch(17.113% 0.016 74.427);
+ --color-error: oklch(85.511% 0.078 16.886);
+ --color-error-content: oklch(17.102% 0.015 16.886);
+ --radius-selector: 1rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 0;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=caramellatte]:checked),[data-theme=caramellatte] {
+ color-scheme: light;
+ --color-base-100: oklch(98% 0.016 73.684);
+ --color-base-200: oklch(95% 0.038 75.164);
+ --color-base-300: oklch(90% 0.076 70.697);
+ --color-base-content: oklch(40% 0.123 38.172);
+ --color-primary: oklch(0% 0 0);
+ --color-primary-content: oklch(100% 0 0);
+ --color-secondary: oklch(22.45% 0.075 37.85);
+ --color-secondary-content: oklch(90% 0.076 70.697);
+ --color-accent: oklch(46.44% 0.111 37.85);
+ --color-accent-content: oklch(90% 0.076 70.697);
+ --color-neutral: oklch(55% 0.195 38.402);
+ --color-neutral-content: oklch(98% 0.016 73.684);
+ --color-info: oklch(42% 0.199 265.638);
+ --color-info-content: oklch(90% 0.076 70.697);
+ --color-success: oklch(43% 0.095 166.913);
+ --color-success-content: oklch(90% 0.076 70.697);
+ --color-warning: oklch(82% 0.189 84.429);
+ --color-warning-content: oklch(41% 0.112 45.904);
+ --color-error: oklch(70% 0.191 22.216);
+ --color-error-content: oklch(39% 0.141 25.723);
+ --radius-selector: 2rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 2px;
+ --depth: 1;
+ --noise: 1;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=abyss]:checked),[data-theme=abyss] {
+ color-scheme: dark;
+ --color-base-100: oklch(20% 0.08 209);
+ --color-base-200: oklch(15% 0.08 209);
+ --color-base-300: oklch(10% 0.08 209);
+ --color-base-content: oklch(90% 0.076 70.697);
+ --color-primary: oklch(92% 0.2653 125);
+ --color-primary-content: oklch(50% 0.2653 125);
+ --color-secondary: oklch(83.27% 0.0764 298.3);
+ --color-secondary-content: oklch(43.27% 0.0764 298.3);
+ --color-accent: oklch(43% 0 0);
+ --color-accent-content: oklch(98% 0 0);
+ --color-neutral: oklch(30% 0.08 209);
+ --color-neutral-content: oklch(90% 0.076 70.697);
+ --color-info: oklch(74% 0.16 232.661);
+ --color-info-content: oklch(29% 0.066 243.157);
+ --color-success: oklch(79% 0.209 151.711);
+ --color-success-content: oklch(26% 0.065 152.934);
+ --color-warning: oklch(84.8% 0.1962 84.62);
+ --color-warning-content: oklch(44.8% 0.1962 84.62);
+ --color-error: oklch(65% 0.1985 24.22);
+ --color-error-content: oklch(27% 0.1985 24.22);
+ --radius-selector: 2rem;
+ --radius-field: 0.25rem;
+ --radius-box: 0.5rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 1px;
+ --depth: 1;
+ --noise: 0;
+ }
+}
+@layer base {
+ :root:has(input.theme-controller[value=silk]:checked),[data-theme=silk] {
+ color-scheme: light;
+ --color-base-100: oklch(97% 0.0035 67.78);
+ --color-base-200: oklch(95% 0.0081 61.42);
+ --color-base-300: oklch(90% 0.0081 61.42);
+ --color-base-content: oklch(40% 0.0081 61.42);
+ --color-primary: oklch(23.27% 0.0249 284.3);
+ --color-primary-content: oklch(94.22% 0.2505 117.44);
+ --color-secondary: oklch(23.27% 0.0249 284.3);
+ --color-secondary-content: oklch(73.92% 0.2135 50.94);
+ --color-accent: oklch(23.27% 0.0249 284.3);
+ --color-accent-content: oklch(88.92% 0.2061 189.9);
+ --color-neutral: oklch(20% 0 0);
+ --color-neutral-content: oklch(80% 0.0081 61.42);
+ --color-info: oklch(80.39% 0.1148 241.68);
+ --color-info-content: oklch(30.39% 0.1148 241.68);
+ --color-success: oklch(83.92% 0.0901 136.87);
+ --color-success-content: oklch(23.92% 0.0901 136.87);
+ --color-warning: oklch(83.92% 0.1085 80);
+ --color-warning-content: oklch(43.92% 0.1085 80);
+ --color-error: oklch(75.1% 0.1814 22.37);
+ --color-error-content: oklch(35.1% 0.1814 22.37);
+ --radius-selector: 2rem;
+ --radius-field: 0.5rem;
+ --radius-box: 1rem;
+ --size-selector: 0.25rem;
+ --size-field: 0.25rem;
+ --border: 2px;
+ --depth: 1;
+ --noise: 0;
+ }
+}
@layer base {
:root {
--fx-noise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E");
diff --git a/Sources/DatabaseClient/Interface.swift b/Sources/DatabaseClient/Interface.swift
index 45f9bcd..75706a3 100644
--- a/Sources/DatabaseClient/Interface.swift
+++ b/Sources/DatabaseClient/Interface.swift
@@ -18,8 +18,8 @@ public struct DatabaseClient: Sendable {
public var equipment: Equipment
public var componentLoss: ComponentLoss
public var effectiveLength: EffectiveLengthClient
- // public var rectangularDuct: RectangularDuct
public var users: Users
+ public var userProfile: UserProfile
}
extension DatabaseClient: TestDependencyKey {
@@ -30,8 +30,8 @@ extension DatabaseClient: TestDependencyKey {
equipment: .testValue,
componentLoss: .testValue,
effectiveLength: .testValue,
- // rectangularDuct: .testValue,
- users: .testValue
+ users: .testValue,
+ userProfile: .testValue
)
public static func live(database: any Database) -> Self {
@@ -42,8 +42,8 @@ extension DatabaseClient: TestDependencyKey {
equipment: .live(database: database),
componentLoss: .live(database: database),
effectiveLength: .live(database: database),
- // rectangularDuct: .live(database: database),
- users: .live(database: database)
+ users: .live(database: database),
+ userProfile: .live(database: database)
)
}
}
@@ -66,11 +66,11 @@ extension DatabaseClient.Migrations: DependencyKey {
Project.Migrate(),
User.Migrate(),
User.Token.Migrate(),
+ User.Profile.Migrate(),
ComponentPressureLoss.Migrate(),
EquipmentInfo.Migrate(),
Room.Migrate(),
EffectiveLength.Migrate(),
- // DuctSizing.RectangularDuct.Migrate(),
]
}
)
diff --git a/Sources/DatabaseClient/UserProfile.swift b/Sources/DatabaseClient/UserProfile.swift
new file mode 100644
index 0000000..d0ad378
--- /dev/null
+++ b/Sources/DatabaseClient/UserProfile.swift
@@ -0,0 +1,175 @@
+import Dependencies
+import DependenciesMacros
+import Fluent
+import ManualDCore
+import Vapor
+
+extension DatabaseClient {
+ @DependencyClient
+ public struct UserProfile: Sendable {
+ public var create: @Sendable (User.Profile.Create) async throws -> User.Profile
+ public var delete: @Sendable (User.Profile.ID) async throws -> Void
+ public var get: @Sendable (User.Profile.ID) async throws -> User.Profile?
+ public var update: @Sendable (User.Profile.ID, User.Profile.Update) async throws -> User.Profile
+ }
+}
+
+extension DatabaseClient.UserProfile: TestDependencyKey {
+
+ public static let testValue = Self()
+
+ public static func live(database: any Database) -> Self {
+ .init(
+ create: { profile in
+ try profile.validate()
+ let model = profile.toModel()
+ try await model.save(on: database)
+ return try model.toDTO()
+ },
+ delete: { id in
+ guard let model = try await UserProfileModel.find(id, on: database) else {
+ throw NotFoundError()
+ }
+ try await model.delete(on: database)
+ },
+ get: { id in
+ try await UserProfileModel.find(id, on: database)
+ .map { try $0.toDTO() }
+ },
+ update: { id, updates in
+ guard let model = try await UserProfileModel.find(id, on: database) else {
+ throw NotFoundError()
+ }
+ try updates.validate()
+ model.applyUpdates(updates)
+ if model.hasChanges {
+ try await model.save(on: database)
+ }
+ return try model.toDTO()
+ }
+ )
+ }
+}
+
+extension User.Profile.Create {
+
+ func validate() throws(ValidationError) {
+ guard !firstName.isEmpty else {
+ throw ValidationError("User first name should not be empty.")
+ }
+ guard !lastName.isEmpty else {
+ throw ValidationError("User last name should not be empty.")
+ }
+ }
+
+ func toModel() -> UserProfileModel {
+ .init(userID: userID, firstName: firstName, lastName: lastName, theme: theme)
+ }
+}
+
+extension User.Profile.Update {
+
+ func validate() throws(ValidationError) {
+ if let firstName {
+ guard !firstName.isEmpty else {
+ throw ValidationError("User first name should not be empty.")
+ }
+ }
+ if let lastName {
+ guard !lastName.isEmpty else {
+ throw ValidationError("User last name should not be empty.")
+ }
+ }
+ }
+}
+
+extension User.Profile {
+
+ struct Migrate: AsyncMigration {
+ let name = "Create UserProfile"
+
+ func prepare(on database: any Database) async throws {
+ try await database.schema(UserProfileModel.schema)
+ .id()
+ .field("firstName", .string, .required)
+ .field("lastName", .string, .required)
+ .field("theme", .string)
+ .field("userID", .uuid, .references(UserModel.schema, "id", onDelete: .cascade))
+ .field("createdAt", .datetime)
+ .field("updatedAt", .datetime)
+ .unique(on: "userID")
+ .create()
+ }
+
+ func revert(on database: any Database) async throws {
+ try await database.schema(UserProfileModel.schema).delete()
+ }
+ }
+}
+
+final class UserProfileModel: Model, @unchecked Sendable {
+
+ static let schema = "user_profile"
+
+ @ID(key: .id)
+ var id: UUID?
+
+ @Parent(key: "userID")
+ var user: UserModel
+
+ @Field(key: "firstName")
+ var firstName: String
+
+ @Field(key: "lastName")
+ var lastName: String
+
+ @Field(key: "theme")
+ var theme: String?
+
+ @Timestamp(key: "createdAt", on: .create, format: .iso8601)
+ var createdAt: Date?
+
+ @Timestamp(key: "updatedAt", on: .update, format: .iso8601)
+ var updatedAt: Date?
+
+ init() {}
+
+ init(
+ id: UUID? = nil,
+ userID: User.ID,
+ firstName: String,
+ lastName: String,
+ theme: Theme? = nil
+ ) {
+ self.id = id
+ $user.id = userID
+ self.firstName = firstName
+ self.lastName = lastName
+ self.theme = theme?.rawValue
+ }
+
+ func toDTO() throws -> User.Profile {
+ try .init(
+ id: requireID(),
+ userID: $user.id,
+ firstName: firstName,
+ lastName: lastName,
+ theme: self.theme.flatMap(Theme.init),
+ createdAt: createdAt!,
+ updatedAt: updatedAt!
+ )
+ }
+
+ func applyUpdates(_ updates: User.Profile.Update) {
+ if let firstName = updates.firstName, firstName != self.firstName {
+ self.firstName = firstName
+ }
+ if let lastName = updates.lastName, lastName != self.lastName {
+ self.lastName = lastName
+ }
+ if let theme = updates.theme, theme.rawValue != self.theme {
+ self.theme = theme.rawValue
+ }
+ }
+
+}
diff --git a/Sources/DatabaseClient/Users.swift b/Sources/DatabaseClient/Users.swift
index 4b95f4b..47623e3 100644
--- a/Sources/DatabaseClient/Users.swift
+++ b/Sources/DatabaseClient/Users.swift
@@ -104,6 +104,8 @@ extension User.Token {
.id()
.field("value", .string, .required)
.field("user_id", .uuid, .required, .references(UserModel.schema, "id"))
+ .field("createdAt", .datetime)
+ .field("updatedAt", .datetime)
.unique(on: "value")
.create()
}
diff --git a/Sources/ManualDCore/Theme.swift b/Sources/ManualDCore/Theme.swift
new file mode 100644
index 0000000..98e94b0
--- /dev/null
+++ b/Sources/ManualDCore/Theme.swift
@@ -0,0 +1,30 @@
+import Foundation
+
+public enum Theme: String, CaseIterable, Codable, Equatable, Sendable {
+ case aqua
+ case cupcake
+ case cyberpunk
+ case dark
+ case dracula
+ case light
+ case night
+ case nord
+ case retro
+ case synthwave
+
+ public static let darkThemes = [
+ Self.aqua,
+ Self.dark,
+ Self.dracula,
+ Self.night,
+ Self.synthwave,
+ ]
+
+ public static let lightThems = [
+ Self.cupcake,
+ Self.cyberpunk,
+ Self.light,
+ Self.nord,
+ Self.retro,
+ ]
+}
diff --git a/Sources/ManualDCore/User.swift b/Sources/ManualDCore/User.swift
index 20ca8fa..56b4c6b 100644
--- a/Sources/ManualDCore/User.swift
+++ b/Sources/ManualDCore/User.swift
@@ -1,6 +1,7 @@
import Dependencies
import Foundation
+// FIX: Remove username.
public struct User: Codable, Equatable, Identifiable, Sendable {
public let id: UUID
diff --git a/Sources/ManualDCore/UserProfile.swift b/Sources/ManualDCore/UserProfile.swift
new file mode 100644
index 0000000..f4b7cd1
--- /dev/null
+++ b/Sources/ManualDCore/UserProfile.swift
@@ -0,0 +1,70 @@
+import Foundation
+
+extension User {
+ public struct Profile: Codable, Equatable, Identifiable, Sendable {
+
+ public let id: UUID
+ public let userID: User.ID
+ public let firstName: String
+ public let lastName: String
+ public let theme: Theme?
+ public let createdAt: Date
+ public let updatedAt: Date
+
+ public init(
+ id: UUID,
+ userID: User.ID,
+ firstName: String,
+ lastName: String,
+ theme: Theme? = nil,
+ createdAt: Date,
+ updatedAt: Date
+ ) {
+ self.id = id
+ self.userID = userID
+ self.firstName = firstName
+ self.lastName = lastName
+ self.theme = theme
+ self.createdAt = createdAt
+ self.updatedAt = updatedAt
+ }
+ }
+}
+
+extension User.Profile {
+
+ public struct Create: Codable, Equatable, Sendable {
+ public let userID: User.ID
+ public let firstName: String
+ public let lastName: String
+ public let theme: Theme?
+
+ public init(
+ userID: User.ID,
+ firstName: String,
+ lastName: String,
+ theme: Theme? = nil
+ ) {
+ self.userID = userID
+ self.firstName = firstName
+ self.lastName = lastName
+ self.theme = theme
+ }
+ }
+
+ public struct Update: Codable, Equatable, Sendable {
+ public let firstName: String?
+ public let lastName: String?
+ public let theme: Theme?
+
+ public init(
+ firstName: String? = nil,
+ lastName: String? = nil,
+ theme: Theme? = nil
+ ) {
+ self.firstName = firstName
+ self.lastName = lastName
+ self.theme = theme
+ }
+ }
+}
diff --git a/Sources/Styleguide/SVG.swift b/Sources/Styleguide/SVG.swift
index 045c238..97844cd 100644
--- a/Sources/Styleguide/SVG.swift
+++ b/Sources/Styleguide/SVG.swift
@@ -20,6 +20,7 @@ extension SVG {
case chevronRight
case chevronsLeft
case circlePlus
+ case circleUser
case close
case doorClosed
case email
@@ -56,6 +57,10 @@ extension SVG {
return """
"""
+ case .circleUser:
+ return """
+
+ """
case .close:
return """
diff --git a/Sources/ViewController/Live.swift b/Sources/ViewController/Live.swift
index f7cf34a..4699c24 100644
--- a/Sources/ViewController/Live.swift
+++ b/Sources/ViewController/Live.swift
@@ -54,37 +54,27 @@ extension ViewController.Request {
}
case .project(let route):
return await route.renderView(on: self)
- default:
- // FIX: FIX
- return _render(isHtmxRequest: false) {
- div { "Fix me!" }
- }
}
}
func view(
@HTMLBuilder inner: () -> C
) -> AnySendableHTML where C: Sendable {
- _render(isHtmxRequest: isHtmxRequest, showSidebar: showSidebar) {
- inner()
- }
+ MainPage(theme: theme) { inner() }
}
func view(
@HTMLBuilder inner: () async -> C
) async -> AnySendableHTML where C: Sendable {
- await _render(isHtmxRequest: isHtmxRequest, showSidebar: showSidebar) {
- await inner()
+ let inner = await inner()
+
+ return MainPage(theme: theme) {
+ inner
}
}
- var showSidebar: Bool {
- switch route {
- case .login, .signup, .project(.page):
- return false
- default:
- return true
- }
+ var theme: Theme? {
+ .dracula
}
}
@@ -261,7 +251,6 @@ extension SiteRoute.View.ProjectRoute.RoomRoute {
return await roomsView(on: request, projectID: projectID)
case .submit(let form):
- // FIX: Just return a room row.
return await roomsView(on: request, projectID: projectID) {
_ = try await database.rooms.create(form)
}
@@ -587,41 +576,53 @@ extension SiteRoute.View.ProjectRoute.DuctSizingRoute {
}
}
-private func _render(
- isHtmxRequest: Bool,
- active activeTab: SiteRoute.View.ProjectRoute.DetailRoute.Tab = .rooms,
- showSidebar: Bool = true,
- @HTMLBuilder inner: () async throws -> C
-) async throws -> AnySendableHTML where C: Sendable {
- let inner = try await inner()
- if isHtmxRequest {
- return inner
- }
- return MainPage { inner }
-}
-
-private func _render(
- isHtmxRequest: Bool,
- active activeTab: SiteRoute.View.ProjectRoute.DetailRoute.Tab = .rooms,
- showSidebar: Bool = true,
- @HTMLBuilder inner: () async -> C
-) async -> AnySendableHTML where C: Sendable {
- let inner = await inner()
- if isHtmxRequest {
- return inner
- }
- return MainPage { inner }
-}
-
-private func _render(
- isHtmxRequest: Bool,
- active activeTab: SiteRoute.View.ProjectRoute.DetailRoute.Tab = .rooms,
- showSidebar: Bool = true,
- @HTMLBuilder inner: () -> C
-) -> AnySendableHTML where C: Sendable {
- let inner = inner()
- if isHtmxRequest {
- return inner
- }
- return MainPage { inner }
-}
+// private func _render(
+// isHtmxRequest: Bool,
+// active activeTab: SiteRoute.View.ProjectRoute.DetailRoute.Tab = .rooms,
+// showSidebar: Bool = true,
+// theme: Theme? = nil,
+// @HTMLBuilder inner: () async throws -> C
+// ) async throws -> AnySendableHTML where C: Sendable {
+// let inner = try await inner()
+// if isHtmxRequest {
+// return div(.class("h-screen w-full")) {
+// inner
+// }
+// .attributes(.data("theme", value: theme!.rawValue), when: theme != nil)
+// }
+// return MainPage(theme: theme) { inner }
+// }
+//
+// private func _render(
+// isHtmxRequest: Bool,
+// active activeTab: SiteRoute.View.ProjectRoute.DetailRoute.Tab = .rooms,
+// showSidebar: Bool = true,
+// theme: Theme? = nil,
+// @HTMLBuilder inner: () async -> C
+// ) async -> AnySendableHTML where C: Sendable {
+// let inner = await inner()
+// if isHtmxRequest {
+// return div(.class("h-screen w-full")) {
+// inner
+// }
+// .attributes(.data("theme", value: theme!.rawValue), when: theme != nil)
+// }
+// return MainPage(theme: theme) { inner }
+// }
+//
+// private func _render(
+// isHtmxRequest: Bool,
+// active activeTab: SiteRoute.View.ProjectRoute.DetailRoute.Tab = .rooms,
+// showSidebar: Bool = true,
+// theme: Theme? = nil,
+// @HTMLBuilder inner: () -> C
+// ) -> AnySendableHTML where C: Sendable {
+// let inner = inner()
+// if isHtmxRequest {
+// return div(.class("h-screen w-full")) {
+// inner
+// }
+// .attributes(.data("theme", value: theme!.rawValue), when: theme != nil)
+// }
+// return MainPage(theme: theme) { inner }
+// }
diff --git a/Sources/ViewController/Views/MainPage.swift b/Sources/ViewController/Views/MainPage.swift
index fe90a94..149cf89 100644
--- a/Sources/ViewController/Views/MainPage.swift
+++ b/Sources/ViewController/Views/MainPage.swift
@@ -9,10 +9,13 @@ public struct MainPage: SendableHTMLDocument where Inner: Sendable
public var lang: String { "en" }
let inner: Inner
+ let theme: Theme?
init(
+ theme: Theme? = nil,
_ inner: () -> Inner
) {
+ self.theme = theme
self.inner = inner()
}
@@ -54,10 +57,7 @@ public struct MainPage: SendableHTMLDocument where Inner: Sendable
div(.class("h-screen w-full")) {
inner
}
- script(.src("https://unpkg.com/lucide@latest")) {}
- script {
- "lucide.createIcons();"
- }
+ .attributes(.data("theme", value: theme!.rawValue), when: theme != nil)
}
}
diff --git a/Sources/ViewController/Views/Navbar.swift b/Sources/ViewController/Views/Navbar.swift
index b0538aa..8ae61f4 100644
--- a/Sources/ViewController/Views/Navbar.swift
+++ b/Sources/ViewController/Views/Navbar.swift
@@ -42,10 +42,34 @@ struct Navbar: HTML, Sendable {
}
}
div(.class("flex-none")) {
- button(.class("w-fit px-4 py-2")) {
- "User Menu"
+ details(.class("dropdown dropdown-left dropdown-bottom")) {
+ summary(.class("btn w-fit px-4 py-2")) {
+ SVG(.circleUser)
+ }
+ .navButton()
+
+ ul(
+ .class(
+ """
+ menu dropdown-content bg-base-100
+ rounded-box z-1 w-fit p-2 shadow-sm
+ """
+ )
+ ) {
+ li(.class("w-full")) {
+ // TODO: Save theme to user profile ??
+ div(.class("flex justify-between p-4 space-x-6")) {
+ Label("Theme")
+ input(.type(.checkbox), .class("toggle theme-controller"), .value("light"))
+ }
+ }
+ }
+
+ // button(.class("w-fit px-4 py-2")) {
+ // SVG(.circleUser)
+ // }
+ // .navButton()
}
- .navButton()
}
}
}
diff --git a/Sources/ViewController/Views/Project/ProjectView.swift b/Sources/ViewController/Views/Project/ProjectView.swift
index f9d4082..571f69d 100644
--- a/Sources/ViewController/Views/Project/ProjectView.swift
+++ b/Sources/ViewController/Views/Project/ProjectView.swift
@@ -82,13 +82,6 @@ extension ProjectView {
ul(.class("w-full")) {
- // FIX: Move to user profile / settings page.
- li(.class("w-full is-drawer-close:hidden")) {
- div(.class("flex justify-between p-4")) {
- Label("Theme")
- input(.type(.checkbox), .class("toggle theme-controller"), .value("light"))
- }
- }
li(.class("flex w-full")) {
row(
diff --git a/Sources/ViewController/Views/Rooms/RoomsView.swift b/Sources/ViewController/Views/Rooms/RoomsView.swift
index cf6d8a8..248e06e 100644
--- a/Sources/ViewController/Views/Rooms/RoomsView.swift
+++ b/Sources/ViewController/Views/Rooms/RoomsView.swift
@@ -121,6 +121,7 @@ struct RoomsView: HTML, Sendable {
}
public struct RoomRow: HTML, Sendable {
+
let room: Room
let shr: Double
@@ -137,7 +138,7 @@ struct RoomsView: HTML, Sendable {
}
public var body: some HTML {
- tr(.id("roomRow_\(room.name)")) {
+ tr(.id("roomRow_\(room.id.idString)")) {
td { room.name }
td {
div(.class("flex justify-center")) {
diff --git a/input.css b/input.css
deleted file mode 100644
index f577019..0000000
--- a/input.css
+++ /dev/null
@@ -1,8 +0,0 @@
-@import "tailwindcss";
-
-@source not "./tailwindcss";
-@source not "./daisyui{,*}.mjs";
-
-@plugin "./daisyui.mjs";
-@custom-variant dark (&:where([data-theme=dark], [data-theme=dark] *));
-
diff --git a/output.css b/output.css
deleted file mode 100644
index 1100a16..0000000
--- a/output.css
+++ /dev/null
@@ -1,3167 +0,0 @@
-/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
-@layer properties;
-@layer theme, base, components, utilities;
-@layer theme {
- :root, :host {
- --font-sans: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
- 'Noto Color Emoji';
- --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',
- monospace;
- --color-red-500: oklch(63.7% 0.237 25.331);
- --color-red-600: oklch(57.7% 0.245 27.325);
- --color-green-400: oklch(79.2% 0.209 151.711);
- --color-indigo-600: oklch(51.1% 0.262 276.966);
- --color-slate-300: oklch(86.9% 0.022 252.894);
- --color-slate-900: oklch(20.8% 0.042 265.755);
- --color-gray-200: oklch(92.8% 0.006 264.531);
- --color-gray-400: oklch(70.7% 0.022 261.325);
- --color-black: #000;
- --color-white: #fff;
- --spacing: 0.25rem;
- --text-sm: 0.875rem;
- --text-sm--line-height: calc(1.25 / 0.875);
- --text-lg: 1.125rem;
- --text-lg--line-height: calc(1.75 / 1.125);
- --text-xl: 1.25rem;
- --text-xl--line-height: calc(1.75 / 1.25);
- --text-2xl: 1.5rem;
- --text-2xl--line-height: calc(2 / 1.5);
- --text-3xl: 1.875rem;
- --text-3xl--line-height: calc(2.25 / 1.875);
- --text-4xl: 2.25rem;
- --text-4xl--line-height: calc(2.5 / 2.25);
- --font-weight-bold: 700;
- --radius-md: 0.375rem;
- --radius-lg: 0.5rem;
- --ease-out: cubic-bezier(0, 0, 0.2, 1);
- --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
- --default-transition-duration: 150ms;
- --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
- --default-font-family: var(--font-sans);
- --default-mono-font-family: var(--font-mono);
- }
-}
-@layer base {
- *, ::after, ::before, ::backdrop, ::file-selector-button {
- box-sizing: border-box;
- margin: 0;
- padding: 0;
- border: 0 solid;
- }
- html, :host {
- line-height: 1.5;
- -webkit-text-size-adjust: 100%;
- tab-size: 4;
- font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji');
- font-feature-settings: var(--default-font-feature-settings, normal);
- font-variation-settings: var(--default-font-variation-settings, normal);
- -webkit-tap-highlight-color: transparent;
- }
- hr {
- height: 0;
- color: inherit;
- border-top-width: 1px;
- }
- abbr:where([title]) {
- -webkit-text-decoration: underline dotted;
- text-decoration: underline dotted;
- }
- h1, h2, h3, h4, h5, h6 {
- font-size: inherit;
- font-weight: inherit;
- }
- a {
- color: inherit;
- -webkit-text-decoration: inherit;
- text-decoration: inherit;
- }
- b, strong {
- font-weight: bolder;
- }
- code, kbd, samp, pre {
- font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace);
- font-feature-settings: var(--default-mono-font-feature-settings, normal);
- font-variation-settings: var(--default-mono-font-variation-settings, normal);
- font-size: 1em;
- }
- small {
- font-size: 80%;
- }
- sub, sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
- }
- sub {
- bottom: -0.25em;
- }
- sup {
- top: -0.5em;
- }
- table {
- text-indent: 0;
- border-color: inherit;
- border-collapse: collapse;
- }
- :-moz-focusring {
- outline: auto;
- }
- progress {
- vertical-align: baseline;
- }
- summary {
- display: list-item;
- }
- ol, ul, menu {
- list-style: none;
- }
- img, svg, video, canvas, audio, iframe, embed, object {
- display: block;
- vertical-align: middle;
- }
- img, video {
- max-width: 100%;
- height: auto;
- }
- button, input, select, optgroup, textarea, ::file-selector-button {
- font: inherit;
- font-feature-settings: inherit;
- font-variation-settings: inherit;
- letter-spacing: inherit;
- color: inherit;
- border-radius: 0;
- background-color: transparent;
- opacity: 1;
- }
- :where(select:is([multiple], [size])) optgroup {
- font-weight: bolder;
- }
- :where(select:is([multiple], [size])) optgroup option {
- padding-inline-start: 20px;
- }
- ::file-selector-button {
- margin-inline-end: 4px;
- }
- ::placeholder {
- opacity: 1;
- }
- @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {
- ::placeholder {
- color: currentcolor;
- @supports (color: color-mix(in lab, red, red)) {
- color: color-mix(in oklab, currentcolor 50%, transparent);
- }
- }
- }
- textarea {
- resize: vertical;
- }
- ::-webkit-search-decoration {
- -webkit-appearance: none;
- }
- ::-webkit-date-and-time-value {
- min-height: 1lh;
- text-align: inherit;
- }
- ::-webkit-datetime-edit {
- display: inline-flex;
- }
- ::-webkit-datetime-edit-fields-wrapper {
- padding: 0;
- }
- ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {
- padding-block: 0;
- }
- ::-webkit-calendar-picker-indicator {
- line-height: 1;
- }
- :-moz-ui-invalid {
- box-shadow: none;
- }
- button, input:where([type='button'], [type='reset'], [type='submit']), ::file-selector-button {
- appearance: button;
- }
- ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
- height: auto;
- }
- [hidden]:where(:not([hidden='until-found'])) {
- display: none !important;
- }
-}
-@layer utilities {
- .modal {
- @layer daisyui.l1.l2.l3 {
- pointer-events: none;
- visibility: hidden;
- position: fixed;
- inset: calc(0.25rem * 0);
- margin: calc(0.25rem * 0);
- display: grid;
- height: 100%;
- max-height: none;
- width: 100%;
- max-width: none;
- align-items: center;
- justify-items: center;
- background-color: transparent;
- padding: calc(0.25rem * 0);
- color: inherit;
- transition: visibility 0.3s allow-discrete, background-color 0.3s ease-out, opacity 0.1s ease-out;
- overflow: clip;
- overscroll-behavior: contain;
- z-index: 999;
- scrollbar-gutter: auto;
- &::backdrop {
- display: none;
- }
- }
- @layer daisyui.l1.l2 {
- &.modal-open, &[open], &:target, .modal-toggle:checked + & {
- pointer-events: auto;
- visibility: visible;
- opacity: 100%;
- transition: visibility 0s allow-discrete, background-color 0.3s ease-out, opacity 0.1s ease-out;
- background-color: oklch(0% 0 0/ 0.4);
- .modal-box {
- translate: 0 0;
- scale: 1;
- opacity: 1;
- }
- :root:has(&) {
- --page-has-backdrop: 1;
- --page-overflow: hidden;
- --page-scroll-bg: var(--page-scroll-bg-on);
- --page-scroll-gutter: stable;
- --page-scroll-transition: var(--page-scroll-transition-on);
- animation: set-page-has-scroll forwards;
- animation-timeline: scroll();
- }
- }
- @starting-style {
- &.modal-open, &[open], &:target, .modal-toggle:checked + & {
- opacity: 0%;
- }
- }
- }
- }
- .drawer-side {
- :where(&) {
- @layer daisyui.l1.l2.l3 {
- overflow-x: hidden;
- overflow-y: hidden;
- }
- }
- @layer daisyui.l1.l2.l3 {
- pointer-events: none;
- visibility: hidden;
- position: fixed;
- inset-inline-start: calc(0.25rem * 0);
- top: calc(0.25rem * 0);
- z-index: 10;
- grid-column-start: 1;
- grid-row-start: 1;
- display: grid;
- width: 100%;
- grid-template-columns: repeat(1, minmax(0, 1fr));
- grid-template-rows: repeat(1, minmax(0, 1fr));
- align-items: flex-start;
- justify-items: start;
- overscroll-behavior: contain;
- background-color: transparent;
- opacity: 0%;
- transition: opacity 0.2s ease-out 0.1s allow-discrete, visibility 0.3s ease-out 0.1s allow-discrete;
- height: 100vh;
- height: 100dvh;
- > .drawer-overlay {
- position: sticky;
- top: calc(0.25rem * 0);
- cursor: pointer;
- place-self: stretch;
- background-color: oklch(0% 0 0 / 40%);
- }
- > * {
- grid-column-start: 1;
- grid-row-start: 1;
- }
- > :not(.drawer-overlay) {
- will-change: transform;
- transition: translate 0.3s ease-out, width 0.2s ease-out;
- translate: -100%;
- [dir="rtl"] & {
- translate: 100%;
- }
- }
- }
- }
- .drawer-toggle {
- @layer daisyui.l1.l2.l3 {
- position: fixed;
- height: calc(0.25rem * 0);
- width: calc(0.25rem * 0);
- appearance: none;
- opacity: 0%;
- :where(&:checked ~ .drawer-side) {
- scrollbar-color: currentColor oklch(0 0 0 / calc(var(--page-has-backdrop, 0) * 0.4));
- @supports (color: color-mix(in lab, red, red)) {
- scrollbar-color: color-mix(in oklch, currentColor 35%, #0000) oklch(0 0 0 / calc(var(--page-has-backdrop, 0) * 0.4));
- }
- }
- :where(:root:has(&:checked)) {
- --page-has-backdrop: 1;
- --page-overflow: hidden;
- --page-scroll-bg: var(--page-scroll-bg-on);
- --page-scroll-gutter: stable;
- --page-scroll-transition: var(--page-scroll-transition-on);
- animation: set-page-has-scroll forwards;
- animation-timeline: scroll();
- }
- }
- @layer daisyui.l1.l2 {
- :where(&:checked ~ .drawer-side) {
- pointer-events: auto;
- visibility: visible;
- overflow-y: auto;
- opacity: 100%;
- > :not(.drawer-overlay) {
- translate: 0%;
- }
- }
- &:focus-visible ~ .drawer-content label.drawer-button {
- outline: 2px solid;
- outline-offset: 2px;
- }
- }
- }
- .tooltip {
- @layer daisyui.l1.l2.l3 {
- position: relative;
- display: inline-block;
- --tt-bg: var(--color-neutral);
- --tt-off: calc(100% + 0.5rem);
- --tt-tail: calc(100% + 1px + 0.25rem);
- & > .tooltip-content, &[data-tip]:before {
- position: absolute;
- max-width: 20rem;
- border-radius: var(--radius-field);
- padding-inline: calc(0.25rem * 2);
- padding-block: calc(0.25rem * 1);
- text-align: center;
- white-space: normal;
- color: var(--color-neutral-content);
- opacity: 0%;
- font-size: 0.875rem;
- line-height: 1.25;
- background-color: var(--tt-bg);
- width: max-content;
- pointer-events: none;
- z-index: 2;
- --tw-content: attr(data-tip);
- content: var(--tw-content);
- }
- &:after {
- opacity: 0%;
- background-color: var(--tt-bg);
- content: "";
- pointer-events: none;
- width: 0.625rem;
- height: 0.25rem;
- display: block;
- position: absolute;
- mask-repeat: no-repeat;
- mask-position: -1px 0;
- --mask-tooltip: url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");
- mask-image: var(--mask-tooltip);
- }
- @media (prefers-reduced-motion: no-preference) {
- & > .tooltip-content, &[data-tip]:before, &:after {
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1) 75ms, transform 0.2s cubic-bezier(0.4, 0, 0.2, 1) 75ms;
- }
- }
- &:is([data-tip]:not([data-tip=""]), :has(.tooltip-content:not(:empty))) {
- &.tooltip-open, &:hover, &:has(:focus-visible) {
- & > .tooltip-content, &[data-tip]:before, &:after {
- opacity: 100%;
- --tt-pos: 0rem;
- @media (prefers-reduced-motion: no-preference) {
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1) 0s, transform 0.2s cubic-bezier(0.4, 0, 0.2, 1) 0s;
- }
- }
- }
- }
- }
- @layer daisyui.l1.l2 {
- > .tooltip-content, &[data-tip]:before {
- transform: translateX(-50%) translateY(var(--tt-pos, 0.25rem));
- inset: auto auto var(--tt-off) 50%;
- }
- &:after {
- transform: translateX(-50%) translateY(var(--tt-pos, 0.25rem));
- inset: auto auto var(--tt-tail) 50%;
- }
- }
- }
- .tab {
- @layer daisyui.l1.l2.l3 {
- position: relative;
- display: inline-flex;
- cursor: pointer;
- appearance: none;
- flex-wrap: wrap;
- align-items: center;
- justify-content: center;
- text-align: center;
- webkit-user-select: none;
- user-select: none;
- &:hover {
- @media (hover: hover) {
- color: var(--color-base-content);
- }
- }
- --tab-p: 0.75rem;
- --tab-bg: var(--color-base-100);
- --tab-border-color: var(--color-base-300);
- --tab-radius-ss: 0;
- --tab-radius-se: 0;
- --tab-radius-es: 0;
- --tab-radius-ee: 0;
- --tab-order: 0;
- --tab-radius-min: calc(0.75rem - var(--border));
- --tab-radius-limit: min(var(--radius-field), var(--tab-radius-min));
- --tab-radius-grad: #0000 calc(69% - var(--border)),
- var(--tab-border-color) calc(69% - var(--border) + 0.25px),
- var(--tab-border-color) 69%,
- var(--tab-bg) calc(69% + 0.25px);
- border-color: #0000;
- order: var(--tab-order);
- height: var(--tab-height);
- font-size: 0.875rem;
- padding-inline: var(--tab-p);
- &:is(input[type="radio"]) {
- min-width: fit-content;
- &:after {
- --tw-content: attr(aria-label);
- content: var(--tw-content);
- }
- }
- &:is(label) {
- position: relative;
- input {
- position: absolute;
- inset: calc(0.25rem * 0);
- cursor: pointer;
- appearance: none;
- opacity: 0%;
- }
- }
- &:checked, &:is(label:has(:checked)), &:is(.tab-active, [aria-selected="true"], [aria-current="true"], [aria-current="page"]) {
- & + .tab-content {
- display: block;
- }
- }
- &:not( :checked, label:has(:checked), :hover, .tab-active, [aria-selected="true"], [aria-current="true"], [aria-current="page"] ) {
- color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- color: color-mix(in oklab, var(--color-base-content) 50%, transparent);
- }
- }
- &:not(input):empty {
- flex-grow: 1;
- cursor: default;
- }
- &:focus {
- --tw-outline-style: none;
- outline-style: none;
- @media (forced-colors: active) {
- outline: 2px solid transparent;
- outline-offset: 2px;
- }
- }
- &:focus-visible, &:is(label:has(:checked:focus-visible)) {
- outline: 2px solid currentColor;
- outline-offset: -5px;
- }
- &[disabled] {
- pointer-events: none;
- opacity: 40%;
- }
- }
- }
- .menu {
- @layer daisyui.l1.l2.l3 {
- display: flex;
- width: fit-content;
- flex-direction: column;
- flex-wrap: wrap;
- padding: calc(0.25rem * 2);
- --menu-active-fg: var(--color-neutral-content);
- --menu-active-bg: var(--color-neutral);
- font-size: 0.875rem;
- :where(li ul) {
- position: relative;
- margin-inline-start: calc(0.25rem * 4);
- padding-inline-start: calc(0.25rem * 2);
- white-space: nowrap;
- &:before {
- position: absolute;
- inset-inline-start: calc(0.25rem * 0);
- top: calc(0.25rem * 3);
- bottom: calc(0.25rem * 3);
- background-color: var(--color-base-content);
- opacity: 10%;
- width: var(--border);
- content: "";
- }
- }
- :where(li > .menu-dropdown:not(.menu-dropdown-show)) {
- display: none;
- }
- :where(li:not(.menu-title) > *:not(ul, details, .menu-title, .btn)), :where(li:not(.menu-title) > details > summary:not(.menu-title)) {
- display: grid;
- grid-auto-flow: column;
- align-content: flex-start;
- align-items: center;
- gap: calc(0.25rem * 2);
- border-radius: var(--radius-field);
- padding-inline: calc(0.25rem * 3);
- padding-block: calc(0.25rem * 1.5);
- text-align: start;
- transition-property: color, background-color, box-shadow;
- transition-duration: 0.2s;
- transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
- grid-auto-columns: minmax(auto, max-content) auto max-content;
- text-wrap: balance;
- user-select: none;
- }
- :where(li > details > summary) {
- --tw-outline-style: none;
- outline-style: none;
- @media (forced-colors: active) {
- outline: 2px solid transparent;
- outline-offset: 2px;
- }
- &::-webkit-details-marker {
- display: none;
- }
- }
- :where(li > details > summary), :where(li > .menu-dropdown-toggle) {
- &:after {
- justify-self: flex-end;
- display: block;
- height: 0.375rem;
- width: 0.375rem;
- rotate: -135deg;
- translate: 0 -1px;
- transition-property: rotate, translate;
- transition-duration: 0.2s;
- content: "";
- transform-origin: 50% 50%;
- box-shadow: 2px 2px inset;
- pointer-events: none;
- }
- }
- details {
- overflow: hidden;
- interpolate-size: allow-keywords;
- }
- details::details-content {
- block-size: 0;
- @media (prefers-reduced-motion: no-preference) {
- transition-behavior: allow-discrete;
- transition-property: block-size, content-visibility;
- transition-duration: 0.2s;
- transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
- }
- }
- details[open]::details-content {
- block-size: auto;
- }
- :where(li > details[open] > summary):after, :where(li > .menu-dropdown-toggle.menu-dropdown-show):after {
- rotate: 45deg;
- translate: 0 1px;
- }
- :where( li:not(.menu-title, .disabled) > *:not(ul, details, .menu-title), li:not(.menu-title, .disabled) > details > summary:not(.menu-title) ):not(.menu-active, :active, .btn) {
- &.menu-focus, &:focus-visible {
- cursor: pointer;
- background-color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent);
- }
- color: var(--color-base-content);
- --tw-outline-style: none;
- outline-style: none;
- @media (forced-colors: active) {
- outline: 2px solid transparent;
- outline-offset: 2px;
- }
- }
- }
- :where( li:not(.menu-title, .disabled) > *:not(ul, details, .menu-title):not(.menu-active, :active, .btn):hover, li:not(.menu-title, .disabled) > details > summary:not(.menu-title):not(.menu-active, :active, .btn):hover ) {
- cursor: pointer;
- background-color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent);
- }
- --tw-outline-style: none;
- outline-style: none;
- @media (forced-colors: active) {
- outline: 2px solid transparent;
- outline-offset: 2px;
- }
- box-shadow: 0 1px oklch(0% 0 0 / 0.01) inset, 0 -1px oklch(100% 0 0 / 0.01) inset;
- }
- :where(li:empty) {
- background-color: var(--color-base-content);
- opacity: 10%;
- margin: 0.5rem 1rem;
- height: 1px;
- }
- :where(li) {
- position: relative;
- display: flex;
- flex-shrink: 0;
- flex-direction: column;
- flex-wrap: wrap;
- align-items: stretch;
- .badge {
- justify-self: flex-end;
- }
- & > *:not(ul, .menu-title, details, .btn):active, & > *:not(ul, .menu-title, details, .btn).menu-active, & > details > summary:active {
- --tw-outline-style: none;
- outline-style: none;
- @media (forced-colors: active) {
- outline: 2px solid transparent;
- outline-offset: 2px;
- }
- color: var(--menu-active-fg);
- background-color: var(--menu-active-bg);
- background-size: auto, calc(var(--noise) * 100%);
- background-image: none, var(--fx-noise);
- &:not(&:active) {
- box-shadow: 0 2px calc(var(--depth) * 3px) -2px var(--menu-active-bg);
- }
- }
- &.menu-disabled {
- pointer-events: none;
- color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- color: color-mix(in oklab, var(--color-base-content) 20%, transparent);
- }
- }
- }
- .dropdown:focus-within {
- .menu-dropdown-toggle:after {
- rotate: 45deg;
- translate: 0 1px;
- }
- }
- .dropdown-content {
- margin-top: calc(0.25rem * 2);
- padding: calc(0.25rem * 2);
- &:before {
- display: none;
- }
- }
- }
- }
- .btn {
- :where(&) {
- @layer daisyui.l1.l2.l3 {
- width: unset;
- }
- }
- @layer daisyui.l1.l2.l3 {
- display: inline-flex;
- flex-shrink: 0;
- cursor: pointer;
- flex-wrap: nowrap;
- align-items: center;
- justify-content: center;
- gap: calc(0.25rem * 1.5);
- text-align: center;
- vertical-align: middle;
- outline-offset: 2px;
- webkit-user-select: none;
- user-select: none;
- padding-inline: var(--btn-p);
- color: var(--btn-fg);
- --tw-prose-links: var(--btn-fg);
- height: var(--size);
- font-size: var(--fontsize, 0.875rem);
- font-weight: 600;
- outline-color: var(--btn-color, var(--color-base-content));
- transition-property: color, background-color, border-color, box-shadow;
- transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
- transition-duration: 0.2s;
- border-start-start-radius: var(--join-ss, var(--radius-field));
- border-start-end-radius: var(--join-se, var(--radius-field));
- border-end-start-radius: var(--join-es, var(--radius-field));
- border-end-end-radius: var(--join-ee, var(--radius-field));
- background-color: var(--btn-bg);
- background-size: auto, calc(var(--noise) * 100%);
- background-image: none, var(--btn-noise);
- border-width: var(--border);
- border-style: solid;
- border-color: var(--btn-border);
- text-shadow: 0 0.5px oklch(100% 0 0 / calc(var(--depth) * 0.15));
- touch-action: manipulation;
- box-shadow: 0 0.5px 0 0.5px oklch(100% 0 0 / calc(var(--depth) * 6%)) inset, var(--btn-shadow);
- --size: calc(var(--size-field, 0.25rem) * 10);
- --btn-bg: var(--btn-color, var(--color-base-200));
- --btn-fg: var(--color-base-content);
- --btn-p: 1rem;
- --btn-border: var(--btn-bg);
- @supports (color: color-mix(in lab, red, red)) {
- --btn-border: color-mix(in oklab, var(--btn-bg), #000 calc(var(--depth) * 5%));
- }
- --btn-shadow: 0 3px 2px -2px var(--btn-bg),
- 0 4px 3px -2px var(--btn-bg);
- @supports (color: color-mix(in lab, red, red)) {
- --btn-shadow: 0 3px 2px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000),
- 0 4px 3px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000);
- }
- --btn-noise: var(--fx-noise);
- @media (hover: hover) {
- &:hover {
- --btn-bg: var(--btn-color, var(--color-base-200));
- @supports (color: color-mix(in lab, red, red)) {
- --btn-bg: color-mix(in oklab, var(--btn-color, var(--color-base-200)), #000 7%);
- }
- }
- }
- &:focus-visible, &:has(:focus-visible) {
- outline-width: 2px;
- outline-style: solid;
- isolation: isolate;
- }
- &:active:not(.btn-active) {
- translate: 0 0.5px;
- --btn-bg: var(--btn-color, var(--color-base-200));
- @supports (color: color-mix(in lab, red, red)) {
- --btn-bg: color-mix(in oklab, var(--btn-color, var(--color-base-200)), #000 5%);
- }
- --btn-border: var(--btn-color, var(--color-base-200));
- @supports (color: color-mix(in lab, red, red)) {
- --btn-border: color-mix(in oklab, var(--btn-color, var(--color-base-200)), #000 7%);
- }
- --btn-shadow: 0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0);
- }
- &:is(input[type="checkbox"], input[type="radio"]) {
- appearance: none;
- &[aria-label]::after {
- --tw-content: attr(aria-label);
- content: var(--tw-content);
- }
- }
- &:where(input:checked:not(.filter .btn)) {
- --btn-color: var(--color-primary);
- --btn-fg: var(--color-primary-content);
- isolation: isolate;
- }
- }
- &:disabled {
- @layer daisyui.l1.l2 {
- &:not(.btn-link, .btn-ghost) {
- background-color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent);
- }
- box-shadow: none;
- }
- pointer-events: none;
- --btn-border: #0000;
- --btn-noise: none;
- --btn-fg: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- --btn-fg: color-mix(in oklch, var(--color-base-content) 20%, #0000);
- }
- }
- }
- &[disabled] {
- @layer daisyui.l1.l2 {
- &:not(.btn-link, .btn-ghost) {
- background-color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent);
- }
- box-shadow: none;
- }
- pointer-events: none;
- --btn-border: #0000;
- --btn-noise: none;
- --btn-fg: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- --btn-fg: color-mix(in oklch, var(--color-base-content) 20%, #0000);
- }
- }
- }
- }
- .loading {
- @layer daisyui.l1.l2.l3 {
- pointer-events: none;
- display: inline-block;
- aspect-ratio: 1 / 1;
- background-color: currentcolor;
- vertical-align: middle;
- width: calc(var(--size-selector, 0.25rem) * 6);
- mask-size: 100%;
- mask-repeat: no-repeat;
- mask-position: center;
- mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");
- }
- }
- .validator-hint {
- @layer daisyui.l1.l2.l3 {
- visibility: hidden;
- margin-top: calc(0.25rem * 2);
- font-size: 0.75rem;
- }
- }
- .validator {
- @layer daisyui.l1.l2.l3 {
- &:user-valid, &:has(:user-valid) {
- &, &:focus, &:checked, &[aria-checked="true"], &:focus-within {
- --input-color: var(--color-success);
- }
- }
- &:user-invalid, &:has(:user-invalid), &[aria-invalid]:not([aria-invalid="false"]), &:has([aria-invalid]:not([aria-invalid="false"])) {
- &, &:focus, &:checked, &[aria-checked="true"], &:focus-within {
- --input-color: var(--color-error);
- }
- & ~ .validator-hint {
- visibility: visible;
- color: var(--color-error);
- }
- }
- }
- &:user-invalid, &:has(:user-invalid), &[aria-invalid]:not([aria-invalid="false"]), &:has([aria-invalid]:not([aria-invalid="false"])) {
- & ~ .validator-hint {
- display: revert-layer;
- }
- }
- }
- .toggle {
- @layer daisyui.l1.l2.l3 {
- border: var(--border) solid currentColor;
- color: var(--input-color);
- position: relative;
- display: inline-grid;
- flex-shrink: 0;
- cursor: pointer;
- appearance: none;
- place-content: center;
- vertical-align: middle;
- webkit-user-select: none;
- user-select: none;
- grid-template-columns: 0fr 1fr 1fr;
- --radius-selector-max: calc(
- var(--radius-selector) + var(--radius-selector) + var(--radius-selector)
- );
- border-radius: calc( var(--radius-selector) + min(var(--toggle-p), var(--radius-selector-max)) + min(var(--border), var(--radius-selector-max)) );
- padding: var(--toggle-p);
- box-shadow: 0 1px currentColor inset;
- @supports (color: color-mix(in lab, red, red)) {
- box-shadow: 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000) inset;
- }
- transition: color 0.3s, grid-template-columns 0.2s;
- --input-color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- --input-color: color-mix(in oklab, var(--color-base-content) 50%, #0000);
- }
- --toggle-p: calc(var(--size) * 0.125);
- --size: calc(var(--size-selector, 0.25rem) * 6);
- width: calc((var(--size) * 2) - (var(--border) + var(--toggle-p)) * 2);
- height: var(--size);
- > * {
- z-index: 1;
- grid-column: span 1 / span 1;
- grid-column-start: 2;
- grid-row-start: 1;
- height: 100%;
- cursor: pointer;
- appearance: none;
- background-color: transparent;
- padding: calc(0.25rem * 0.5);
- transition: opacity 0.2s, rotate 0.4s;
- border: none;
- &:focus {
- --tw-outline-style: none;
- outline-style: none;
- @media (forced-colors: active) {
- outline: 2px solid transparent;
- outline-offset: 2px;
- }
- }
- &:nth-child(2) {
- color: var(--color-base-100);
- rotate: 0deg;
- }
- &:nth-child(3) {
- color: var(--color-base-100);
- opacity: 0%;
- rotate: -15deg;
- }
- }
- &:has(:checked) {
- > :nth-child(2) {
- opacity: 0%;
- rotate: 15deg;
- }
- > :nth-child(3) {
- opacity: 100%;
- rotate: 0deg;
- }
- }
- &:before {
- position: relative;
- inset-inline-start: calc(0.25rem * 0);
- grid-column-start: 2;
- grid-row-start: 1;
- aspect-ratio: 1 / 1;
- height: 100%;
- border-radius: var(--radius-selector);
- background-color: currentcolor;
- translate: 0;
- --tw-content: "";
- content: var(--tw-content);
- transition: background-color 0.1s, translate 0.2s, inset-inline-start 0.2s;
- box-shadow: 0 -1px oklch(0% 0 0 / calc(var(--depth) * 0.1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset, 0 1px currentColor;
- @supports (color: color-mix(in lab, red, red)) {
- box-shadow: 0 -1px oklch(0% 0 0 / calc(var(--depth) * 0.1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000);
- }
- background-size: auto, calc(var(--noise) * 100%);
- background-image: none, var(--fx-noise);
- }
- @media (forced-colors: active) {
- &:before {
- outline-style: var(--tw-outline-style);
- outline-width: 1px;
- outline-offset: calc(1px * -1);
- }
- }
- @media print {
- &:before {
- outline: 0.25rem solid;
- outline-offset: -1rem;
- }
- }
- &:focus-visible, &:has(:focus-visible) {
- outline: 2px solid currentColor;
- outline-offset: 2px;
- }
- &:checked, &[aria-checked="true"], &:has(> input:checked) {
- grid-template-columns: 1fr 1fr 0fr;
- background-color: var(--color-base-100);
- --input-color: var(--color-base-content);
- &:before {
- background-color: currentcolor;
- }
- @starting-style {
- &:before {
- opacity: 0;
- }
- }
- }
- &:indeterminate {
- grid-template-columns: 0.5fr 1fr 0.5fr;
- }
- &:disabled {
- cursor: not-allowed;
- opacity: 30%;
- &:before {
- background-color: transparent;
- border: var(--border) solid currentColor;
- }
- }
- }
- }
- .input {
- @layer daisyui.l1.l2.l3 {
- cursor: text;
- border: var(--border) solid #0000;
- position: relative;
- display: inline-flex;
- flex-shrink: 1;
- appearance: none;
- align-items: center;
- gap: calc(0.25rem * 2);
- background-color: var(--color-base-100);
- padding-inline: calc(0.25rem * 3);
- vertical-align: middle;
- white-space: nowrap;
- width: clamp(3rem, 20rem, 100%);
- height: var(--size);
- font-size: max(var(--font-size, 0.875rem), 0.875rem);
- touch-action: manipulation;
- border-start-start-radius: var(--join-ss, var(--radius-field));
- border-start-end-radius: var(--join-se, var(--radius-field));
- border-end-start-radius: var(--join-es, var(--radius-field));
- border-end-end-radius: var(--join-ee, var(--radius-field));
- border-color: var(--input-color);
- box-shadow: 0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset;
- @supports (color: color-mix(in lab, red, red)) {
- box-shadow: 0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset;
- }
- --size: calc(var(--size-field, 0.25rem) * 10);
- --input-color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- --input-color: color-mix(in oklab, var(--color-base-content) 20%, #0000);
- }
- &:where(input) {
- display: inline-flex;
- }
- :where(input) {
- display: inline-flex;
- height: 100%;
- width: 100%;
- appearance: none;
- background-color: transparent;
- border: none;
- &:focus, &:focus-within {
- --tw-outline-style: none;
- outline-style: none;
- @media (forced-colors: active) {
- outline: 2px solid transparent;
- outline-offset: 2px;
- }
- }
- }
- :where(input[type="url"]), :where(input[type="email"]) {
- direction: ltr;
- }
- :where(input[type="date"]) {
- display: inline-flex;
- }
- &:focus, &:focus-within {
- --input-color: var(--color-base-content);
- box-shadow: 0 1px var(--input-color);
- @supports (color: color-mix(in lab, red, red)) {
- box-shadow: 0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000);
- }
- outline: 2px solid var(--input-color);
- outline-offset: 2px;
- isolation: isolate;
- }
- @media (pointer: coarse) {
- @supports (-webkit-touch-callout: none) {
- &:focus, &:focus-within {
- --font-size: 1rem;
- }
- }
- }
- &:has(> input[disabled]), &:is(:disabled, [disabled]), fieldset:disabled & {
- cursor: not-allowed;
- border-color: var(--color-base-200);
- background-color: var(--color-base-200);
- color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- color: color-mix(in oklab, var(--color-base-content) 40%, transparent);
- }
- &::placeholder {
- color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- color: color-mix(in oklab, var(--color-base-content) 20%, transparent);
- }
- }
- box-shadow: none;
- }
- &:has(> input[disabled]) > input[disabled] {
- cursor: not-allowed;
- }
- &::-webkit-date-and-time-value {
- text-align: inherit;
- }
- &[type="number"] {
- &::-webkit-inner-spin-button {
- margin-block: calc(0.25rem * -3);
- margin-inline-end: calc(0.25rem * -3);
- }
- }
- &::-webkit-calendar-picker-indicator {
- position: absolute;
- inset-inline-end: 0.75em;
- }
- &:has(> input[type="date"]) {
- :where(input[type="date"]) {
- display: inline-flex;
- webkit-appearance: none;
- appearance: none;
- }
- input[type="date"]::-webkit-calendar-picker-indicator {
- position: absolute;
- inset-inline-end: 0.75em;
- width: 1em;
- height: 1em;
- cursor: pointer;
- }
- }
- }
- }
- .table {
- @layer daisyui.l1.l2.l3 {
- font-size: 0.875rem;
- position: relative;
- width: 100%;
- border-collapse: separate;
- --tw-border-spacing-x: calc(0.25rem * 0);
- --tw-border-spacing-y: calc(0.25rem * 0);
- border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);
- border-radius: var(--radius-box);
- text-align: left;
- &:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
- text-align: right;
- }
- tr.row-hover {
- &, &:nth-child(even) {
- &:hover {
- @media (hover: hover) {
- background-color: var(--color-base-200);
- }
- }
- }
- }
- :where(th, td) {
- padding-inline: calc(0.25rem * 4);
- padding-block: calc(0.25rem * 3);
- vertical-align: middle;
- }
- :where(thead, tfoot) {
- white-space: nowrap;
- color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- color: color-mix(in oklab, var(--color-base-content) 60%, transparent);
- }
- font-size: 0.875rem;
- font-weight: 600;
- }
- :where(tfoot tr:first-child :is(td, th)) {
- border-top: var(--border) solid var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- border-top: var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000);
- }
- }
- :where(.table-pin-rows thead tr) {
- position: sticky;
- top: calc(0.25rem * 0);
- z-index: 1;
- background-color: var(--color-base-100);
- }
- :where(.table-pin-rows tfoot tr) {
- position: sticky;
- bottom: calc(0.25rem * 0);
- z-index: 1;
- background-color: var(--color-base-100);
- }
- :where(.table-pin-cols tr th) {
- position: sticky;
- right: calc(0.25rem * 0);
- left: calc(0.25rem * 0);
- background-color: var(--color-base-100);
- }
- :where(thead tr :is(td, th), tbody tr:not(:last-child) :is(td, th)) {
- border-bottom: var(--border) solid var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- border-bottom: var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000);
- }
- }
- }
- }
- .steps {
- @layer daisyui.l1.l2.l3 {
- display: inline-grid;
- grid-auto-flow: column;
- overflow: hidden;
- overflow-x: auto;
- counter-reset: step;
- grid-auto-columns: 1fr;
- .step {
- display: grid;
- grid-template-columns: repeat(1, minmax(0, 1fr));
- grid-template-columns: auto;
- grid-template-rows: repeat(2, minmax(0, 1fr));
- grid-template-rows: 40px 1fr;
- place-items: center;
- text-align: center;
- min-width: 4rem;
- --step-bg: var(--color-base-300);
- --step-fg: var(--color-base-content);
- &:before {
- top: calc(0.25rem * 0);
- grid-column-start: 1;
- grid-row-start: 1;
- height: calc(0.25rem * 2);
- width: 100%;
- border: 1px solid;
- color: var(--step-bg);
- background-color: var(--step-bg);
- content: "";
- margin-inline-start: -100%;
- }
- > .step-icon, &:not(:has(.step-icon)):after {
- --tw-content: counter(step);
- content: var(--tw-content);
- counter-increment: step;
- z-index: 1;
- color: var(--step-fg);
- background-color: var(--step-bg);
- border: 1px solid var(--step-bg);
- position: relative;
- grid-column-start: 1;
- grid-row-start: 1;
- display: grid;
- height: calc(0.25rem * 8);
- width: calc(0.25rem * 8);
- place-items: center;
- place-self: center;
- border-radius: calc(infinity * 1px);
- }
- &:first-child:before {
- --tw-content: none;
- content: var(--tw-content);
- }
- &[data-content]:after {
- --tw-content: attr(data-content);
- content: var(--tw-content);
- }
- }
- }
- @layer daisyui.l1.l2 {
- .step-neutral {
- + .step-neutral:before, &:after, > .step-icon {
- --step-bg: var(--color-neutral);
- --step-fg: var(--color-neutral-content);
- }
- }
- .step-primary {
- + .step-primary:before, &:after, > .step-icon {
- --step-bg: var(--color-primary);
- --step-fg: var(--color-primary-content);
- }
- }
- .step-secondary {
- + .step-secondary:before, &:after, > .step-icon {
- --step-bg: var(--color-secondary);
- --step-fg: var(--color-secondary-content);
- }
- }
- .step-accent {
- + .step-accent:before, &:after, > .step-icon {
- --step-bg: var(--color-accent);
- --step-fg: var(--color-accent-content);
- }
- }
- .step-info {
- + .step-info:before, &:after, > .step-icon {
- --step-bg: var(--color-info);
- --step-fg: var(--color-info-content);
- }
- }
- .step-success {
- + .step-success:before, &:after, > .step-icon {
- --step-bg: var(--color-success);
- --step-fg: var(--color-success-content);
- }
- }
- .step-warning {
- + .step-warning:before, &:after, > .step-icon {
- --step-bg: var(--color-warning);
- --step-fg: var(--color-warning-content);
- }
- }
- .step-error {
- + .step-error:before, &:after, > .step-icon {
- --step-bg: var(--color-error);
- --step-fg: var(--color-error-content);
- }
- }
- }
- }
- .select {
- @layer daisyui.l1.l2.l3 {
- border: var(--border) solid #0000;
- position: relative;
- display: inline-flex;
- flex-shrink: 1;
- appearance: none;
- align-items: center;
- gap: calc(0.25rem * 1.5);
- background-color: var(--color-base-100);
- padding-inline-start: calc(0.25rem * 3);
- padding-inline-end: calc(0.25rem * 7);
- vertical-align: middle;
- width: clamp(3rem, 20rem, 100%);
- height: var(--size);
- font-size: 0.875rem;
- touch-action: manipulation;
- border-start-start-radius: var(--join-ss, var(--radius-field));
- border-start-end-radius: var(--join-se, var(--radius-field));
- border-end-start-radius: var(--join-es, var(--radius-field));
- border-end-end-radius: var(--join-ee, var(--radius-field));
- background-image: linear-gradient(45deg, #0000 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, #0000 50%);
- background-position: calc(100% - 20px) calc(1px + 50%), calc(100% - 16.1px) calc(1px + 50%);
- background-size: 4px 4px, 4px 4px;
- background-repeat: no-repeat;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- box-shadow: 0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset;
- @supports (color: color-mix(in lab, red, red)) {
- box-shadow: 0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset;
- }
- border-color: var(--input-color);
- --input-color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- --input-color: color-mix(in oklab, var(--color-base-content) 20%, #0000);
- }
- --size: calc(var(--size-field, 0.25rem) * 10);
- [dir="rtl"] & {
- background-position: calc(0% + 12px) calc(1px + 50%), calc(0% + 16px) calc(1px + 50%);
- &::picker(select), select::picker(select) {
- translate: 0.5rem 0;
- }
- }
- &[multiple] {
- height: auto;
- overflow: auto;
- padding-block: calc(0.25rem * 3);
- padding-inline-end: calc(0.25rem * 3);
- background-image: none;
- }
- select {
- margin-inline-start: calc(0.25rem * -3);
- margin-inline-end: calc(0.25rem * -7);
- width: calc(100% + 2.75rem);
- appearance: none;
- padding-inline-start: calc(0.25rem * 3);
- padding-inline-end: calc(0.25rem * 7);
- height: calc(100% - calc(var(--border) * 2));
- align-items: center;
- background: inherit;
- border-radius: inherit;
- border-style: none;
- &:focus, &:focus-within {
- --tw-outline-style: none;
- outline-style: none;
- @media (forced-colors: active) {
- outline: 2px solid transparent;
- outline-offset: 2px;
- }
- }
- &:not(:last-child) {
- margin-inline-end: calc(0.25rem * -5.5);
- background-image: none;
- }
- }
- &:focus, &:focus-within {
- --input-color: var(--color-base-content);
- box-shadow: 0 1px var(--input-color);
- @supports (color: color-mix(in lab, red, red)) {
- box-shadow: 0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000);
- }
- outline: 2px solid var(--input-color);
- outline-offset: 2px;
- isolation: isolate;
- }
- &:has(> select[disabled]), &:is(:disabled, [disabled]), fieldset:disabled & {
- cursor: not-allowed;
- border-color: var(--color-base-200);
- background-color: var(--color-base-200);
- color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- color: color-mix(in oklab, var(--color-base-content) 40%, transparent);
- }
- &::placeholder {
- color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- color: color-mix(in oklab, var(--color-base-content) 20%, transparent);
- }
- }
- }
- &:has(> select[disabled]) > select[disabled] {
- cursor: not-allowed;
- }
- &, & select {
- @supports (appearance: base-select) {
- appearance: base-select;
- }
- @supports (appearance: base-select) {
- &::picker(select) {
- appearance: base-select;
- }
- }
- &::picker(select) {
- color: inherit;
- max-height: min(24rem, 70dvh);
- margin-inline: 0.5rem;
- translate: -0.5rem 0;
- border: var(--border) solid var(--color-base-200);
- margin-block: calc(0.25rem * 2);
- border-radius: var(--radius-box);
- padding: calc(0.25rem * 2);
- background-color: inherit;
- box-shadow: 0 2px calc(var(--depth) * 3px) -2px oklch(0% 0 0/0.2);
- box-shadow: 0 20px 25px -5px rgb(0 0 0 / calc(var(--depth) * 0.1)), 0 8px 10px -6px rgb(0 0 0 / calc(var(--depth) * 0.1));
- }
- &::picker-icon {
- display: none;
- }
- optgroup {
- padding-top: 0.5em;
- option {
- &:nth-child(1) {
- margin-top: 0.5em;
- }
- }
- }
- option {
- border-radius: var(--radius-field);
- padding-inline: calc(0.25rem * 3);
- padding-block: calc(0.25rem * 1.5);
- transition-property: color, background-color;
- transition-duration: 0.2s;
- transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
- white-space: normal;
- &:not(:disabled) {
- &:hover, &:focus-visible {
- cursor: pointer;
- background-color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent);
- }
- --tw-outline-style: none;
- outline-style: none;
- @media (forced-colors: active) {
- outline: 2px solid transparent;
- outline-offset: 2px;
- }
- }
- &:active {
- background-color: var(--color-neutral);
- color: var(--color-neutral-content);
- box-shadow: 0 2px calc(var(--depth) * 3px) -2px var(--color-neutral);
- }
- }
- }
- }
- }
- }
- .checkbox {
- @layer daisyui.l1.l2.l3 {
- border: var(--border) solid var(--input-color, var(--color-base-content));
- @supports (color: color-mix(in lab, red, red)) {
- border: var(--border) solid var(--input-color, color-mix(in oklab, var(--color-base-content) 20%, #0000));
- }
- position: relative;
- display: inline-block;
- flex-shrink: 0;
- cursor: pointer;
- appearance: none;
- border-radius: var(--radius-selector);
- padding: calc(0.25rem * 1);
- vertical-align: middle;
- color: var(--color-base-content);
- box-shadow: 0 1px oklch(0% 0 0 / calc(var(--depth) * 0.1)) inset, 0 0 #0000 inset, 0 0 #0000;
- transition: background-color 0.2s, box-shadow 0.2s;
- --size: calc(var(--size-selector, 0.25rem) * 6);
- width: var(--size);
- height: var(--size);
- background-size: auto, calc(var(--noise) * 100%);
- background-image: none, var(--fx-noise);
- &:before {
- --tw-content: "";
- content: var(--tw-content);
- display: block;
- width: 100%;
- height: 100%;
- rotate: 45deg;
- background-color: currentcolor;
- opacity: 0%;
- transition: clip-path 0.3s, opacity 0.1s, rotate 0.3s, translate 0.3s;
- transition-delay: 0.1s;
- clip-path: polygon(20% 100%, 20% 80%, 50% 80%, 50% 80%, 70% 80%, 70% 100%);
- box-shadow: 0px 3px 0 0px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset;
- font-size: 1rem;
- line-height: 0.75;
- }
- &:focus-visible {
- outline: 2px solid var(--input-color, currentColor);
- outline-offset: 2px;
- }
- &:checked, &[aria-checked="true"] {
- background-color: var(--input-color, #0000);
- box-shadow: 0 0 #0000 inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * 0.1));
- &:before {
- clip-path: polygon(20% 100%, 20% 80%, 50% 80%, 50% 0%, 70% 0%, 70% 100%);
- opacity: 100%;
- }
- @media (forced-colors: active) {
- &:before {
- rotate: 0deg;
- background-color: transparent;
- --tw-content: "✔︎";
- clip-path: none;
- }
- }
- @media print {
- &:before {
- rotate: 0deg;
- background-color: transparent;
- --tw-content: "✔︎";
- clip-path: none;
- }
- }
- }
- &:indeterminate {
- background-color: var( --input-color, var(--color-base-content) );
- @supports (color: color-mix(in lab, red, red)) {
- background-color: var( --input-color, color-mix(in oklab, var(--color-base-content) 20%, #0000) );
- }
- &:before {
- rotate: 0deg;
- opacity: 100%;
- translate: 0 -35%;
- clip-path: polygon(20% 100%, 20% 80%, 50% 80%, 50% 80%, 80% 80%, 80% 100%);
- }
- }
- }
- &:disabled {
- @layer daisyui.l1.l2 {
- cursor: not-allowed;
- opacity: 20%;
- }
- }
- }
- .navbar {
- @layer daisyui.l1.l2.l3 {
- display: flex;
- width: 100%;
- align-items: center;
- padding: 0.5rem;
- min-height: 4rem;
- }
- :where(&) {
- @layer daisyui.l1.l2 {
- position: relative;
- }
- }
- }
- .drawer {
- @layer daisyui.l1.l2.l3 {
- position: relative;
- display: grid;
- width: 100%;
- grid-auto-columns: max-content auto;
- }
- }
- .card {
- @layer daisyui.l1.l2.l3 {
- position: relative;
- display: flex;
- flex-direction: column;
- border-radius: var(--radius-box);
- outline-width: 2px;
- transition: outline 0.2s ease-in-out;
- outline: 0 solid #0000;
- outline-offset: 2px;
- &:focus {
- --tw-outline-style: none;
- outline-style: none;
- @media (forced-colors: active) {
- outline: 2px solid transparent;
- outline-offset: 2px;
- }
- }
- &:focus-visible {
- outline-color: currentColor;
- }
- :where(figure:first-child) {
- 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) {
- overflow: hidden;
- border-start-start-radius: unset;
- border-start-end-radius: unset;
- border-end-start-radius: inherit;
- border-end-end-radius: inherit;
- }
- figure {
- display: flex;
- align-items: center;
- justify-content: center;
- }
- &:has(> input:is(input[type="checkbox"], input[type="radio"])) {
- cursor: pointer;
- user-select: none;
- }
- &:has(> :checked) {
- outline: 2px solid currentColor;
- }
- }
- }
- .absolute {
- position: absolute;
- }
- .static {
- position: static;
- }
- .tooltip-left {
- @layer daisyui.l1.l2 {
- > .tooltip-content, &[data-tip]:before {
- transform: translateX(calc(var(--tt-pos, 0.25rem) - 0.25rem)) translateY(-50%);
- inset: 50% var(--tt-off) auto auto;
- }
- &:after {
- transform: translateX(var(--tt-pos, 0.25rem)) translateY(-50%) rotate(-90deg);
- inset: 50% calc(var(--tt-tail) + 1px) auto auto;
- }
- }
- }
- .top-2 {
- top: calc(var(--spacing) * 2);
- }
- .right-2 {
- right: calc(var(--spacing) * 2);
- }
- .join {
- display: inline-flex;
- align-items: stretch;
- --join-ss: 0;
- --join-se: 0;
- --join-es: 0;
- --join-ee: 0;
- :where(.join-item) {
- border-start-start-radius: var(--join-ss, 0);
- border-start-end-radius: var(--join-se, 0);
- border-end-start-radius: var(--join-es, 0);
- border-end-end-radius: var(--join-ee, 0);
- * {
- --join-ss: var(--radius-field);
- --join-se: var(--radius-field);
- --join-es: var(--radius-field);
- --join-ee: var(--radius-field);
- }
- }
- > .join-item:where(:first-child) {
- --join-ss: var(--radius-field);
- --join-se: 0;
- --join-es: var(--radius-field);
- --join-ee: 0;
- }
- :first-child:not(:last-child) {
- :where(.join-item) {
- --join-ss: var(--radius-field);
- --join-se: 0;
- --join-es: var(--radius-field);
- --join-ee: 0;
- }
- }
- > .join-item:where(:last-child) {
- --join-ss: 0;
- --join-se: var(--radius-field);
- --join-es: 0;
- --join-ee: var(--radius-field);
- }
- :last-child:not(:first-child) {
- :where(.join-item) {
- --join-ss: 0;
- --join-se: var(--radius-field);
- --join-es: 0;
- --join-ee: var(--radius-field);
- }
- }
- > .join-item:where(:only-child) {
- --join-ss: var(--radius-field);
- --join-se: var(--radius-field);
- --join-es: var(--radius-field);
- --join-ee: var(--radius-field);
- }
- :only-child {
- :where(.join-item) {
- --join-ss: var(--radius-field);
- --join-se: var(--radius-field);
- --join-es: var(--radius-field);
- --join-ee: var(--radius-field);
- }
- }
- > :where(:focus, :has(:focus)) {
- z-index: 1;
- }
- @media (hover: hover) {
- > :where(.btn:hover, :has(.btn:hover)) {
- isolation: isolate;
- }
- }
- }
- .btn-active {
- @layer daisyui.l1.l2 {
- --btn-bg: var(--btn-color, var(--color-base-200));
- @supports (color: color-mix(in lab, red, red)) {
- --btn-bg: color-mix(in oklab, var(--btn-color, var(--color-base-200)), #000 7%);
- }
- --btn-shadow: 0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0);
- isolation: isolate;
- }
- }
- .modal-backdrop {
- @layer daisyui.l1.l2.l3 {
- grid-column-start: 1;
- grid-row-start: 1;
- display: grid;
- align-self: stretch;
- justify-self: stretch;
- color: transparent;
- z-index: -1;
- button {
- cursor: pointer;
- }
- }
- }
- .col-span-2 {
- grid-column: span 2 / span 2;
- }
- .modal-box {
- @layer daisyui.l1.l2.l3 {
- grid-column-start: 1;
- grid-row-start: 1;
- max-height: 100vh;
- width: calc(11/12 * 100%);
- max-width: 32rem;
- background-color: var(--color-base-100);
- padding: calc(0.25rem * 6);
- transition: translate 0.3s ease-out, scale 0.3s ease-out, opacity 0.2s ease-out 0.05s, box-shadow 0.3s ease-out;
- border-top-left-radius: var(--modal-tl, var(--radius-box));
- border-top-right-radius: var(--modal-tr, var(--radius-box));
- border-bottom-left-radius: var(--modal-bl, var(--radius-box));
- border-bottom-right-radius: var(--modal-br, var(--radius-box));
- scale: 95%;
- opacity: 0;
- box-shadow: oklch(0% 0 0/ 0.25) 0px 25px 50px -12px;
- overflow-y: auto;
- overscroll-behavior: contain;
- }
- }
- .drawer-content {
- @layer daisyui.l1.l2.l3 {
- grid-column-start: 2;
- grid-row-start: 1;
- min-width: calc(0.25rem * 0);
- }
- }
- .container {
- width: 100%;
- @media (width >= 40rem) {
- max-width: 40rem;
- }
- @media (width >= 48rem) {
- max-width: 48rem;
- }
- @media (width >= 64rem) {
- max-width: 64rem;
- }
- @media (width >= 80rem) {
- max-width: 80rem;
- }
- @media (width >= 96rem) {
- max-width: 96rem;
- }
- }
- .m-4 {
- margin: calc(var(--spacing) * 4);
- }
- .m-6 {
- margin: calc(var(--spacing) * 6);
- }
- .filter {
- @layer daisyui.l1.l2.l3 {
- display: flex;
- flex-wrap: wrap;
- input[type="radio"] {
- width: auto;
- }
- input {
- overflow: hidden;
- opacity: 100%;
- scale: 1;
- transition: margin 0.1s, opacity 0.3s, padding 0.3s, border-width 0.1s;
- &:not(:last-child) {
- margin-inline-end: calc(0.25rem * 1);
- }
- &.filter-reset {
- aspect-ratio: 1 / 1;
- &::after {
- --tw-content: "×";
- content: var(--tw-content);
- }
- }
- }
- &:not(:has(input:checked:not(.filter-reset))) {
- .filter-reset, input[type="reset"] {
- scale: 0;
- border-width: 0;
- margin-inline: calc(0.25rem * 0);
- width: calc(0.25rem * 0);
- padding-inline: calc(0.25rem * 0);
- opacity: 0%;
- }
- }
- &:has(input:checked:not(.filter-reset)) {
- input:not(:checked, .filter-reset, input[type="reset"]) {
- scale: 0;
- border-width: 0;
- margin-inline: calc(0.25rem * 0);
- width: calc(0.25rem * 0);
- padding-inline: calc(0.25rem * 0);
- opacity: 0%;
- }
- }
- }
- }
- .mx-2 {
- margin-inline: calc(var(--spacing) * 2);
- }
- .mx-auto {
- margin-inline: auto;
- }
- .my-1\.5 {
- margin-block: calc(var(--spacing) * 1.5);
- }
- .my-2 {
- margin-block: calc(var(--spacing) * 2);
- }
- .label {
- @layer daisyui.l1.l2.l3 {
- display: inline-flex;
- align-items: center;
- gap: calc(0.25rem * 1.5);
- white-space: nowrap;
- color: currentcolor;
- @supports (color: color-mix(in lab, red, red)) {
- color: color-mix(in oklab, currentcolor 60%, transparent);
- }
- &:has(input) {
- cursor: pointer;
- }
- &:is(.input > *, .select > *) {
- display: flex;
- height: calc(100% - 0.5rem);
- align-items: center;
- padding-inline: calc(0.25rem * 3);
- white-space: nowrap;
- font-size: inherit;
- &:first-child {
- margin-inline-start: calc(0.25rem * -3);
- margin-inline-end: calc(0.25rem * 3);
- border-inline-end: var(--border) solid currentColor;
- @supports (color: color-mix(in lab, red, red)) {
- border-inline-end: var(--border) solid color-mix(in oklab, currentColor 10%, #0000);
- }
- }
- &:last-child {
- margin-inline-start: calc(0.25rem * 3);
- margin-inline-end: calc(0.25rem * -3);
- border-inline-start: var(--border) solid currentColor;
- @supports (color: color-mix(in lab, red, red)) {
- border-inline-start: var(--border) solid color-mix(in oklab, currentColor 10%, #0000);
- }
- }
- }
- }
- }
- .join-item {
- &:where(*:not(:first-child, :disabled, [disabled], .btn-disabled)) {
- margin-inline-start: calc(var(--border, 1px) * -1);
- margin-block-start: 0;
- }
- &:where(*:is(:disabled, [disabled], .btn-disabled)) {
- border-width: var(--border, 1px) 0 var(--border, 1px) var(--border, 1px);
- }
- }
- .ms-4 {
- margin-inline-start: calc(var(--spacing) * 4);
- }
- .me-4 {
- margin-inline-end: calc(var(--spacing) * 4);
- }
- .mt-4 {
- margin-top: calc(var(--spacing) * 4);
- }
- .mt-6 {
- margin-top: calc(var(--spacing) * 6);
- }
- .mt-auto {
- margin-top: auto;
- }
- .mb-6 {
- margin-bottom: calc(var(--spacing) * 6);
- }
- .status {
- @layer daisyui.l1.l2.l3 {
- display: inline-block;
- aspect-ratio: 1 / 1;
- width: calc(0.25rem * 2);
- height: calc(0.25rem * 2);
- border-radius: var(--radius-selector);
- background-color: var(--color-base-content);
- @supports (color: color-mix(in lab, red, red)) {
- background-color: color-mix(in oklab, var(--color-base-content) 20%, transparent);
- }
- background-position: center;
- background-repeat: no-repeat;
- vertical-align: middle;
- color: color-mix(in srgb, #000 30%, transparent);
- @supports (color: color-mix(in lab, red, red)) {
- color: color-mix(in oklab, var(--color-black) 30%, transparent);
- }
- background-image: radial-gradient( circle at 35% 30%, oklch(1 0 0 / calc(var(--depth) * 0.5)), #0000 );
- box-shadow: 0 2px 3px -1px currentColor;
- @supports (color: color-mix(in lab, red, red)) {
- box-shadow: 0 2px 3px -1px color-mix(in oklab, currentColor calc(var(--depth) * 100%), #0000);
- }
- }
- }
- .badge {
- @layer daisyui.l1.l2.l3 {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- gap: calc(0.25rem * 2);
- border-radius: var(--radius-selector);
- vertical-align: middle;
- color: var(--badge-fg);
- border: var(--border) solid var(--badge-color, var(--color-base-200));
- font-size: 0.875rem;
- width: fit-content;
- background-size: auto, calc(var(--noise) * 100%);
- background-image: none, var(--fx-noise);
- background-color: var(--badge-bg);
- --badge-bg: var(--badge-color, var(--color-base-100));
- --badge-fg: var(--color-base-content);
- --size: calc(var(--size-selector, 0.25rem) * 6);
- height: var(--size);
- padding-inline: calc(var(--size) / 2 - var(--border));
- }
- }
- .card-body {
- @layer daisyui.l1.l2.l3 {
- display: flex;
- flex: auto;
- flex-direction: column;
- gap: calc(0.25rem * 2);
- padding: var(--card-p, 1.5rem);
- font-size: var(--card-fs, 0.875rem);
- :where(p) {
- flex-grow: 1;
- }
- }
- }
- .card-actions {
- @layer daisyui.l1.l2.l3 {
- display: flex;
- flex-wrap: wrap;
- align-items: flex-start;
- gap: calc(0.25rem * 2);
- }
- }
- .card-title {
- @layer daisyui.l1.l2.l3 {
- display: flex;
- align-items: center;
- gap: calc(0.25rem * 2);
- font-size: var(--cardtitle-fs, 1.125rem);
- font-weight: 600;
- }
- }
- .contents {
- display: contents;
- }
- .flex {
- display: flex;
- }
- .grid {
- display: grid;
- }
- .hidden {
- display: none;
- }
- .inline-block {
- display: inline-block;
- }
- .table {
- display: table;
- }
- .btn-circle {
- @layer daisyui.l1.l2 {
- border-radius: calc(infinity * 1px);
- padding-inline: calc(0.25rem * 0);
- width: var(--size);
- height: var(--size);
- }
- }
- .btn-square {
- @layer daisyui.l1.l2 {
- padding-inline: calc(0.25rem * 0);
- width: var(--size);
- height: var(--size);
- }
- }
- .size-4 {
- width: calc(var(--spacing) * 4);
- height: calc(var(--spacing) * 4);
- }
- .size-7 {
- width: calc(var(--spacing) * 7);
- height: calc(var(--spacing) * 7);
- }
- .h-\[1em\] {
- height: 1em;
- }
- .h-full {
- height: 100%;
- }
- .h-screen {
- height: 100vh;
- }
- .min-h-full {
- min-height: 100%;
- }
- .btn-block {
- @layer daisyui.l1.l2 {
- width: 100%;
- }
- }
- .w-full {
- width: 100%;
- }
- .grow {
- flex-grow: 1;
- }
- .grid-cols-1 {
- grid-template-columns: repeat(1, minmax(0, 1fr));
- }
- .grid-cols-5 {
- grid-template-columns: repeat(5, minmax(0, 1fr));
- }
- .flex-col {
- flex-direction: column;
- }
- .items-baseline {
- align-items: baseline;
- }
- .items-center {
- align-items: center;
- }
- .items-end {
- align-items: flex-end;
- }
- .items-start {
- align-items: flex-start;
- }
- .justify-between {
- justify-content: space-between;
- }
- .justify-center {
- justify-content: center;
- }
- .justify-end {
- justify-content: flex-end;
- }
- .gap-2 {
- gap: calc(var(--spacing) * 2);
- }
- .gap-4 {
- gap: calc(var(--spacing) * 4);
- }
- .space-y-4 {
- :where(& > :not(:last-child)) {
- --tw-space-y-reverse: 0;
- margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));
- margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));
- }
- }
- .space-y-6 {
- :where(& > :not(:last-child)) {
- --tw-space-y-reverse: 0;
- margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));
- margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
- }
- }
- .space-x-2 {
- :where(& > :not(:last-child)) {
- --tw-space-x-reverse: 0;
- margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));
- margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));
- }
- }
- .space-x-4 {
- :where(& > :not(:last-child)) {
- --tw-space-x-reverse: 0;
- margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));
- margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));
- }
- }
- .space-x-6 {
- :where(& > :not(:last-child)) {
- --tw-space-x-reverse: 0;
- margin-inline-start: calc(calc(var(--spacing) * 6) * var(--tw-space-x-reverse));
- margin-inline-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-x-reverse)));
- }
- }
- .overflow-x-auto {
- overflow-x: auto;
- }
- .rounded-box {
- border-radius: var(--radius-box);
- }
- .rounded-box {
- border-radius: var(--radius-box);
- }
- .rounded-lg {
- border-radius: var(--radius-lg);
- }
- .rounded-md {
- border-radius: var(--radius-md);
- }
- .border {
- border-style: var(--tw-border-style);
- border-width: 1px;
- }
- .border-b {
- border-bottom-style: var(--tw-border-style);
- border-bottom-width: 1px;
- }
- .badge-outline {
- @layer daisyui.l1.l2 {
- color: var(--badge-color);
- --badge-bg: #0000;
- background-image: none;
- border-color: currentColor;
- }
- }
- .border-gray-200 {
- border-color: var(--color-gray-200);
- }
- .border-primary {
- border-color: var(--color-primary);
- }
- .border-secondary {
- border-color: var(--color-secondary);
- }
- .table-zebra {
- @layer daisyui.l1.l2 {
- tbody {
- tr {
- &:where(:nth-child(even)) {
- background-color: var(--color-base-200);
- :where(.table-pin-cols tr th) {
- background-color: var(--color-base-200);
- }
- }
- &.row-hover {
- &, &:where(:nth-child(even)) {
- &:hover {
- @media (hover: hover) {
- background-color: var(--color-base-300);
- }
- }
- }
- }
- }
- }
- }
- }
- .bg-base-100 {
- background-color: var(--color-base-100);
- }
- .bg-base-200 {
- background-color: var(--color-base-200);
- }
- .bg-base-300 {
- background-color: var(--color-base-300);
- }
- .bg-red-500 {
- background-color: var(--color-red-500);
- }
- .bg-white {
- background-color: var(--color-white);
- }
- .loading-spinner {
- @layer daisyui.l1.l2 {
- mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");
- }
- }
- .p-4 {
- padding: calc(var(--spacing) * 4);
- }
- .px-3 {
- padding-inline: calc(var(--spacing) * 3);
- }
- .px-4 {
- padding-inline: calc(var(--spacing) * 4);
- }
- .py-1\.5 {
- padding-block: calc(var(--spacing) * 1.5);
- }
- .py-2 {
- padding-block: calc(var(--spacing) * 2);
- }
- .py-4 {
- padding-block: calc(var(--spacing) * 4);
- }
- .ps-2 {
- padding-inline-start: calc(var(--spacing) * 2);
- }
- .pe-2 {
- padding-inline-end: calc(var(--spacing) * 2);
- }
- .pt-6 {
- padding-top: calc(var(--spacing) * 6);
- }
- .pb-4 {
- padding-bottom: calc(var(--spacing) * 4);
- }
- .pb-6 {
- padding-bottom: calc(var(--spacing) * 6);
- }
- .text-2xl {
- font-size: var(--text-2xl);
- line-height: var(--tw-leading, var(--text-2xl--line-height));
- }
- .text-3xl {
- font-size: var(--text-3xl);
- line-height: var(--tw-leading, var(--text-3xl--line-height));
- }
- .text-4xl {
- font-size: var(--text-4xl);
- line-height: var(--tw-leading, var(--text-4xl--line-height));
- }
- .text-lg {
- font-size: var(--text-lg);
- line-height: var(--tw-leading, var(--text-lg--line-height));
- }
- .text-sm {
- font-size: var(--text-sm);
- line-height: var(--tw-leading, var(--text-sm--line-height));
- }
- .text-xl {
- font-size: var(--text-xl);
- line-height: var(--tw-leading, var(--text-xl--line-height));
- }
- .badge-lg {
- @layer daisyui.l1.l2 {
- --size: calc(var(--size-selector, 0.25rem) * 7);
- font-size: 1rem;
- }
- }
- .badge-xl {
- @layer daisyui.l1.l2 {
- --size: calc(var(--size-selector, 0.25rem) * 8);
- font-size: 1.125rem;
- }
- }
- .font-bold {
- --tw-font-weight: var(--font-weight-bold);
- font-weight: var(--font-weight-bold);
- }
- .text-error {
- color: var(--color-error);
- }
- .text-gray-400 {
- color: var(--color-gray-400);
- }
- .text-green-400 {
- color: var(--color-green-400);
- }
- .text-info {
- color: var(--color-info);
- }
- .text-primary {
- color: var(--color-primary);
- }
- .text-secondary {
- color: var(--color-secondary);
- }
- .text-slate-900 {
- color: var(--color-slate-900);
- }
- .text-success {
- color: var(--color-success);
- }
- .text-white {
- color: var(--color-white);
- }
- .lowercase {
- text-transform: lowercase;
- }
- .uppercase {
- text-transform: uppercase;
- }
- .italic {
- font-style: italic;
- }
- .btn-link {
- .prose :where(&):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
- text-decoration-line: none;
- }
- @layer daisyui.l1 {
- text-decoration-line: underline;
- outline-color: currentcolor;
- --btn-border: #0000;
- --btn-bg: #0000;
- --btn-noise: none;
- --btn-shadow: "";
- &:not(.btn-disabled, .btn:disabled, .btn[disabled]) {
- --btn-fg: var(--btn-color, var(--color-primary));
- }
- &:is(.btn-active, :hover, :active:focus, :focus-visible) {
- --btn-border: #0000;
- --btn-bg: #0000;
- }
- }
- }
- .opacity-50 {
- opacity: 50%;
- }
- .shadow-lg {
- --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
- }
- .shadow-sm {
- --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
- }
- .outline-1 {
- outline-style: var(--tw-outline-style);
- outline-width: 1px;
- }
- .-outline-offset-1 {
- outline-offset: calc(1px * -1);
- }
- .btn-ghost {
- @layer daisyui.l1 {
- &:not(.btn-active, :hover, :active:focus, :focus-visible, input:checked:not(.filter .btn)) {
- --btn-shadow: "";
- --btn-bg: #0000;
- --btn-border: #0000;
- --btn-noise: none;
- &:not(:disabled, [disabled], .btn-disabled) {
- outline-color: currentcolor;
- --btn-fg: var(--btn-color, currentColor);
- }
- }
- @media (hover: none) {
- &:not(.btn-active, :active, :focus-visible, input:checked:not(.filter .btn)):hover {
- outline-color: currentcolor;
- --btn-shadow: "";
- --btn-bg: #0000;
- --btn-fg: var(--btn-color, currentColor);
- --btn-border: #0000;
- --btn-noise: none;
- }
- }
- }
- }
- .outline-slate-300 {
- outline-color: var(--color-slate-300);
- }
- .filter {
- filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
- }
- .btn-soft {
- @layer daisyui.l1 {
- &:not( .btn-active, :hover, :active:focus, :focus-visible, input:checked:not(.filter .btn), :disabled, [disabled], .btn-disabled ) {
- --btn-shadow: "";
- --btn-fg: var(--btn-color, var(--color-base-content));
- --btn-bg: var(--btn-color, var(--color-base-content));
- @supports (color: color-mix(in lab, red, red)) {
- --btn-bg: color-mix(
- in oklab,
- var(--btn-color, var(--color-base-content)) 8%,
- var(--color-base-100)
- );
- }
- --btn-border: var(--btn-color, var(--color-base-content));
- @supports (color: color-mix(in lab, red, red)) {
- --btn-border: color-mix(
- in oklab,
- var(--btn-color, var(--color-base-content)) 10%,
- var(--color-base-100)
- );
- }
- --btn-noise: none;
- }
- @media (hover: none) {
- &:not(.btn-active, :active, :focus-visible, input:checked:not(.filter .btn)):hover {
- --btn-shadow: "";
- --btn-fg: var(--btn-color, var(--color-base-content));
- --btn-bg: var(--btn-color, var(--color-base-content));
- @supports (color: color-mix(in lab, red, red)) {
- --btn-bg: color-mix(
- in oklab,
- var(--btn-color, var(--color-base-content)) 8%,
- var(--color-base-100)
- );
- }
- --btn-border: var(--btn-color, var(--color-base-content));
- @supports (color: color-mix(in lab, red, red)) {
- --btn-border: color-mix(
- in oklab,
- var(--btn-color, var(--color-base-content)) 10%,
- var(--color-base-100)
- );
- }
- --btn-noise: none;
- }
- }
- }
- }
- .btn-sm {
- @layer daisyui.l1.l2 {
- --fontsize: 0.75rem;
- --btn-p: 0.75rem;
- --size: calc(var(--size-field, 0.25rem) * 8);
- }
- }
- .badge-error {
- @layer daisyui.l1.l2 {
- --badge-color: var(--color-error);
- --badge-fg: var(--color-error-content);
- }
- }
- .badge-info {
- @layer daisyui.l1.l2 {
- --badge-color: var(--color-info);
- --badge-fg: var(--color-info-content);
- }
- }
- .badge-primary {
- @layer daisyui.l1.l2 {
- --badge-color: var(--color-primary);
- --badge-fg: var(--color-primary-content);
- }
- }
- .badge-secondary {
- @layer daisyui.l1.l2 {
- --badge-color: var(--color-secondary);
- --badge-fg: var(--color-secondary-content);
- }
- }
- .badge-success {
- @layer daisyui.l1.l2 {
- --badge-color: var(--color-success);
- --badge-fg: var(--color-success-content);
- }
- }
- .btn-error {
- @layer daisyui.l1.l2.l3 {
- --btn-color: var(--color-error);
- --btn-fg: var(--color-error-content);
- }
- }
- .btn-primary {
- @layer daisyui.l1.l2.l3 {
- --btn-color: var(--color-primary);
- --btn-fg: var(--color-primary-content);
- }
- }
- .btn-secondary {
- @layer daisyui.l1.l2.l3 {
- --btn-color: var(--color-secondary);
- --btn-fg: var(--color-secondary-content);
- }
- }
- .btn-success {
- @layer daisyui.l1.l2.l3 {
- --btn-color: var(--color-success);
- --btn-fg: var(--color-success-content);
- }
- }
- .invalid\:border-red-500 {
- &:invalid {
- border-color: var(--color-red-500);
- }
- }
- .out-of-range\:border-red-500 {
- &:out-of-range {
- border-color: var(--color-red-500);
- }
- }
- .hover\:bg-red-600 {
- &:hover {
- @media (hover: hover) {
- background-color: var(--color-red-600);
- }
- }
- }
- .focus\:outline {
- &:focus {
- outline-style: var(--tw-outline-style);
- outline-width: 1px;
- }
- }
- .focus\:-outline-offset-2 {
- &:focus {
- outline-offset: calc(2px * -1);
- }
- }
- .focus\:outline-indigo-600 {
- &:focus {
- outline-color: var(--color-indigo-600);
- }
- }
- .md\:grid-cols-2 {
- @media (width >= 48rem) {
- grid-template-columns: repeat(2, minmax(0, 1fr));
- }
- }
- .lg\:drawer-open {
- @media (width >= 64rem) {
- @layer daisyui.l1.l2.l3 {
- > .drawer-toggle:checked {
- ~ .drawer-side {
- scrollbar-color: revert-layer;
- }
- :root:has(&) {
- --page-overflow: revert-layer;
- --page-scroll-gutter: revert-layer;
- --page-scroll-bg: revert-layer;
- --page-scroll-transition: revert-layer;
- --page-has-backdrop: revert-layer;
- animation: revert-layer;
- animation-timeline: revert-layer;
- }
- }
- }
- @layer daisyui.l1.l2 {
- > .drawer-side {
- overflow-y: auto;
- }
- > .drawer-toggle {
- display: none;
- ~ .drawer-side {
- pointer-events: auto;
- visibility: visible;
- position: sticky;
- display: block;
- width: auto;
- overscroll-behavior: auto;
- opacity: 100%;
- > .drawer-overlay {
- cursor: default;
- background-color: transparent;
- }
- }
- &:checked ~ .drawer-side {
- pointer-events: auto;
- visibility: visible;
- }
- }
- }
- @layer daisyui.l1 {
- > .drawer-toggle ~ .drawer-side > :not(.drawer-overlay) {
- translate: 0%;
- [dir="rtl"] & {
- translate: 0%;
- }
- }
- }
- }
- }
- .lg\:grid-cols-2 {
- @media (width >= 64rem) {
- grid-template-columns: repeat(2, minmax(0, 1fr));
- }
- }
- .lg\:grid-cols-3 {
- @media (width >= 64rem) {
- grid-template-columns: repeat(3, minmax(0, 1fr));
- }
- }
- .xl\:table-cell {
- @media (width >= 80rem) {
- display: table-cell;
- }
- }
- .\32 xl\:table-cell {
- @media (width >= 96rem) {
- display: table-cell;
- }
- }
- .dark\:text-white {
- @media (prefers-color-scheme: dark) {
- color: var(--color-white);
- }
- }
- .is-drawer-close\:tooltip {
- &:where(.drawer-toggle:not(:checked) ~ .drawer-side, .drawer-toggle:not(:checked) ~ .drawer-side *) {
- @layer daisyui.l1.l2.l3 {
- position: relative;
- display: inline-block;
- --tt-bg: var(--color-neutral);
- --tt-off: calc(100% + 0.5rem);
- --tt-tail: calc(100% + 1px + 0.25rem);
- & > .tooltip-content, &[data-tip]:before {
- position: absolute;
- max-width: 20rem;
- border-radius: var(--radius-field);
- padding-inline: calc(0.25rem * 2);
- padding-block: calc(0.25rem * 1);
- text-align: center;
- white-space: normal;
- color: var(--color-neutral-content);
- opacity: 0%;
- font-size: 0.875rem;
- line-height: 1.25;
- background-color: var(--tt-bg);
- width: max-content;
- pointer-events: none;
- z-index: 2;
- --tw-content: attr(data-tip);
- content: var(--tw-content);
- }
- &:after {
- opacity: 0%;
- background-color: var(--tt-bg);
- content: "";
- pointer-events: none;
- width: 0.625rem;
- height: 0.25rem;
- display: block;
- position: absolute;
- mask-repeat: no-repeat;
- mask-position: -1px 0;
- --mask-tooltip: url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");
- mask-image: var(--mask-tooltip);
- }
- @media (prefers-reduced-motion: no-preference) {
- & > .tooltip-content, &[data-tip]:before, &:after {
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1) 75ms, transform 0.2s cubic-bezier(0.4, 0, 0.2, 1) 75ms;
- }
- }
- &:is([data-tip]:not([data-tip=""]), :has(.tooltip-content:not(:empty))) {
- &.tooltip-open, &:hover, &:has(:focus-visible) {
- & > .tooltip-content, &[data-tip]:before, &:after {
- opacity: 100%;
- --tt-pos: 0rem;
- @media (prefers-reduced-motion: no-preference) {
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1) 0s, transform 0.2s cubic-bezier(0.4, 0, 0.2, 1) 0s;
- }
- }
- }
- }
- }
- @layer daisyui.l1.l2 {
- > .tooltip-content, &[data-tip]:before {
- transform: translateX(-50%) translateY(var(--tt-pos, 0.25rem));
- inset: auto auto var(--tt-off) 50%;
- }
- &:after {
- transform: translateX(-50%) translateY(var(--tt-pos, 0.25rem));
- inset: auto auto var(--tt-tail) 50%;
- }
- }
- }
- }
- .is-drawer-close\:tooltip-right {
- &:where(.drawer-toggle:not(:checked) ~ .drawer-side, .drawer-toggle:not(:checked) ~ .drawer-side *) {
- @layer daisyui.l1.l2 {
- > .tooltip-content, &[data-tip]:before {
- transform: translateX(calc(var(--tt-pos, -0.25rem) + 0.25rem)) translateY(-50%);
- inset: 50% auto auto var(--tt-off);
- }
- &:after {
- transform: translateX(var(--tt-pos, -0.25rem)) translateY(-50%) rotate(90deg);
- inset: 50% auto auto calc(var(--tt-tail) + 1px);
- }
- }
- }
- }
- .is-drawer-close\:hidden {
- &:where(.drawer-toggle:not(:checked) ~ .drawer-side, .drawer-toggle:not(:checked) ~ .drawer-side *) {
- display: none;
- }
- }
- .is-drawer-close\:w-14 {
- &:where(.drawer-toggle:not(:checked) ~ .drawer-side, .drawer-toggle:not(:checked) ~ .drawer-side *) {
- width: calc(var(--spacing) * 14);
- }
- }
- .is-drawer-close\:min-w-\[80px\] {
- &:where(.drawer-toggle:not(:checked) ~ .drawer-side, .drawer-toggle:not(:checked) ~ .drawer-side *) {
- min-width: 80px;
- }
- }
- .is-drawer-close\:items-center {
- &:where(.drawer-toggle:not(:checked) ~ .drawer-side, .drawer-toggle:not(:checked) ~ .drawer-side *) {
- align-items: center;
- }
- }
- .is-drawer-close\:overflow-visible {
- &:where(.drawer-toggle:not(:checked) ~ .drawer-side, .drawer-toggle:not(:checked) ~ .drawer-side *) {
- overflow: visible;
- }
- }
- .is-drawer-close\:text-error {
- &:where(.drawer-toggle:not(:checked) ~ .drawer-side, .drawer-toggle:not(:checked) ~ .drawer-side *) {
- color: var(--color-error);
- }
- }
- .is-drawer-close\:text-green-400 {
- &:where(.drawer-toggle:not(:checked) ~ .drawer-side, .drawer-toggle:not(:checked) ~ .drawer-side *) {
- color: var(--color-green-400);
- }
- }
- .is-drawer-open\:w-64 {
- &:where(.drawer-toggle:checked ~ .drawer-side, .drawer-toggle:checked ~ .drawer-side *) {
- width: calc(var(--spacing) * 64);
- }
- }
- .is-drawer-open\:min-w-\[340px\] {
- &:where(.drawer-toggle:checked ~ .drawer-side, .drawer-toggle:checked ~ .drawer-side *) {
- min-width: 340px;
- }
- }
- .is-drawer-open\:justify-between {
- &:where(.drawer-toggle:checked ~ .drawer-side, .drawer-toggle:checked ~ .drawer-side *) {
- justify-content: space-between;
- }
- }
- .is-drawer-open\:space-x-4 {
- &:where(.drawer-toggle:checked ~ .drawer-side, .drawer-toggle:checked ~ .drawer-side *) {
- :where(& > :not(:last-child)) {
- --tw-space-x-reverse: 0;
- margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));
- margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));
- }
- }
- }
-}
-@layer base {
- :where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light] {
- color-scheme: light;
- --color-base-100: oklch(100% 0 0);
- --color-base-200: oklch(98% 0 0);
- --color-base-300: oklch(95% 0 0);
- --color-base-content: oklch(21% 0.006 285.885);
- --color-primary: oklch(45% 0.24 277.023);
- --color-primary-content: oklch(93% 0.034 272.788);
- --color-secondary: oklch(65% 0.241 354.308);
- --color-secondary-content: oklch(94% 0.028 342.258);
- --color-accent: oklch(77% 0.152 181.912);
- --color-accent-content: oklch(38% 0.063 188.416);
- --color-neutral: oklch(14% 0.005 285.823);
- --color-neutral-content: oklch(92% 0.004 286.32);
- --color-info: oklch(74% 0.16 232.661);
- --color-info-content: oklch(29% 0.066 243.157);
- --color-success: oklch(76% 0.177 163.223);
- --color-success-content: oklch(37% 0.077 168.94);
- --color-warning: oklch(82% 0.189 84.429);
- --color-warning-content: oklch(41% 0.112 45.904);
- --color-error: oklch(71% 0.194 13.428);
- --color-error-content: oklch(27% 0.105 12.094);
- --radius-selector: 0.5rem;
- --radius-field: 0.25rem;
- --radius-box: 0.5rem;
- --size-selector: 0.25rem;
- --size-field: 0.25rem;
- --border: 1px;
- --depth: 1;
- --noise: 0;
- }
-}
-@layer base {
- @media (prefers-color-scheme: dark) {
- :root:not([data-theme]) {
- color-scheme: dark;
- --color-base-100: oklch(25.33% 0.016 252.42);
- --color-base-200: oklch(23.26% 0.014 253.1);
- --color-base-300: oklch(21.15% 0.012 254.09);
- --color-base-content: oklch(97.807% 0.029 256.847);
- --color-primary: oklch(58% 0.233 277.117);
- --color-primary-content: oklch(96% 0.018 272.314);
- --color-secondary: oklch(65% 0.241 354.308);
- --color-secondary-content: oklch(94% 0.028 342.258);
- --color-accent: oklch(77% 0.152 181.912);
- --color-accent-content: oklch(38% 0.063 188.416);
- --color-neutral: oklch(14% 0.005 285.823);
- --color-neutral-content: oklch(92% 0.004 286.32);
- --color-info: oklch(74% 0.16 232.661);
- --color-info-content: oklch(29% 0.066 243.157);
- --color-success: oklch(76% 0.177 163.223);
- --color-success-content: oklch(37% 0.077 168.94);
- --color-warning: oklch(82% 0.189 84.429);
- --color-warning-content: oklch(41% 0.112 45.904);
- --color-error: oklch(71% 0.194 13.428);
- --color-error-content: oklch(27% 0.105 12.094);
- --radius-selector: 0.5rem;
- --radius-field: 0.25rem;
- --radius-box: 0.5rem;
- --size-selector: 0.25rem;
- --size-field: 0.25rem;
- --border: 1px;
- --depth: 1;
- --noise: 0;
- }
- }
-}
-@layer base {
- :root:has(input.theme-controller[value=light]:checked),[data-theme=light] {
- color-scheme: light;
- --color-base-100: oklch(100% 0 0);
- --color-base-200: oklch(98% 0 0);
- --color-base-300: oklch(95% 0 0);
- --color-base-content: oklch(21% 0.006 285.885);
- --color-primary: oklch(45% 0.24 277.023);
- --color-primary-content: oklch(93% 0.034 272.788);
- --color-secondary: oklch(65% 0.241 354.308);
- --color-secondary-content: oklch(94% 0.028 342.258);
- --color-accent: oklch(77% 0.152 181.912);
- --color-accent-content: oklch(38% 0.063 188.416);
- --color-neutral: oklch(14% 0.005 285.823);
- --color-neutral-content: oklch(92% 0.004 286.32);
- --color-info: oklch(74% 0.16 232.661);
- --color-info-content: oklch(29% 0.066 243.157);
- --color-success: oklch(76% 0.177 163.223);
- --color-success-content: oklch(37% 0.077 168.94);
- --color-warning: oklch(82% 0.189 84.429);
- --color-warning-content: oklch(41% 0.112 45.904);
- --color-error: oklch(71% 0.194 13.428);
- --color-error-content: oklch(27% 0.105 12.094);
- --radius-selector: 0.5rem;
- --radius-field: 0.25rem;
- --radius-box: 0.5rem;
- --size-selector: 0.25rem;
- --size-field: 0.25rem;
- --border: 1px;
- --depth: 1;
- --noise: 0;
- }
-}
-@layer base {
- :root:has(input.theme-controller[value=dark]:checked),[data-theme=dark] {
- color-scheme: dark;
- --color-base-100: oklch(25.33% 0.016 252.42);
- --color-base-200: oklch(23.26% 0.014 253.1);
- --color-base-300: oklch(21.15% 0.012 254.09);
- --color-base-content: oklch(97.807% 0.029 256.847);
- --color-primary: oklch(58% 0.233 277.117);
- --color-primary-content: oklch(96% 0.018 272.314);
- --color-secondary: oklch(65% 0.241 354.308);
- --color-secondary-content: oklch(94% 0.028 342.258);
- --color-accent: oklch(77% 0.152 181.912);
- --color-accent-content: oklch(38% 0.063 188.416);
- --color-neutral: oklch(14% 0.005 285.823);
- --color-neutral-content: oklch(92% 0.004 286.32);
- --color-info: oklch(74% 0.16 232.661);
- --color-info-content: oklch(29% 0.066 243.157);
- --color-success: oklch(76% 0.177 163.223);
- --color-success-content: oklch(37% 0.077 168.94);
- --color-warning: oklch(82% 0.189 84.429);
- --color-warning-content: oklch(41% 0.112 45.904);
- --color-error: oklch(71% 0.194 13.428);
- --color-error-content: oklch(27% 0.105 12.094);
- --radius-selector: 0.5rem;
- --radius-field: 0.25rem;
- --radius-box: 0.5rem;
- --size-selector: 0.25rem;
- --size-field: 0.25rem;
- --border: 1px;
- --depth: 1;
- --noise: 0;
- }
-}
-@layer base {
- :root {
- --fx-noise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E");
- }
-}
-@layer base {
- :root {
- scrollbar-color: currentColor #0000;
- @supports (color: color-mix(in lab, red, red)) {
- scrollbar-color: color-mix(in oklch, currentColor 35%, #0000) #0000;
- }
- }
-}
-@layer base {
- @property --radialprogress {
- syntax: "";
- inherits: true;
- initial-value: 0%;
- }
-}
-@layer base {
- :root:not(span) {
- overflow: var(--page-overflow);
- }
-}
-@layer base {
- :root {
- background: var(--page-scroll-bg, var(--root-bg));
- --page-scroll-bg-on: linear-gradient(var(--root-bg, #0000), var(--root-bg, #0000))
- var(--root-bg, #0000);
- @supports (color: color-mix(in lab, red, red)) {
- --page-scroll-bg-on: linear-gradient(var(--root-bg, #0000), var(--root-bg, #0000))
- color-mix(in srgb, var(--root-bg, #0000), oklch(0% 0 0) calc(var(--page-has-backdrop, 0) * 40%));
- }
- --page-scroll-transition-on: background-color 0.3s ease-out;
- transition: var(--page-scroll-transition);
- scrollbar-gutter: var(--page-scroll-gutter, unset);
- scrollbar-gutter: if(style(--page-has-scroll: 1): var(--page-scroll-gutter, unset) ; else: unset);
- }
- @keyframes set-page-has-scroll {
- 0%, to {
- --page-has-scroll: 1;
- }
- }
-}
-@layer base {
- :root, [data-theme] {
- background: var(--page-scroll-bg, var(--root-bg));
- color: var(--color-base-content);
- }
- :where(:root, [data-theme]) {
- --root-bg: var(--color-base-100);
- }
-}
-@keyframes rating {
- 0%, 40% {
- scale: 1.1;
- filter: brightness(1.05) contrast(1.05);
- }
-}
-@keyframes dropdown {
- 0% {
- opacity: 0;
- }
-}
-@keyframes radio {
- 0% {
- padding: 5px;
- }
- 50% {
- padding: 3px;
- }
-}
-@keyframes toast {
- 0% {
- scale: 0.9;
- opacity: 0;
- }
- 100% {
- scale: 1;
- opacity: 1;
- }
-}
-@keyframes rotator {
- 89.9999%, 100% {
- --first-item-position: 0 0%;
- }
- 90%, 99.9999% {
- --first-item-position: 0 calc(var(--items) * 100%);
- }
- 100% {
- translate: 0 -100%;
- }
-}
-@keyframes skeleton {
- 0% {
- background-position: 150%;
- }
- 100% {
- background-position: -50%;
- }
-}
-@keyframes menu {
- 0% {
- opacity: 0;
- }
-}
-@keyframes progress {
- 50% {
- background-position-x: -115%;
- }
-}
-@property --tw-space-y-reverse {
- syntax: "*";
- inherits: false;
- initial-value: 0;
-}
-@property --tw-space-x-reverse {
- syntax: "*";
- inherits: false;
- initial-value: 0;
-}
-@property --tw-border-style {
- syntax: "*";
- inherits: false;
- initial-value: solid;
-}
-@property --tw-font-weight {
- syntax: "*";
- inherits: false;
-}
-@property --tw-shadow {
- syntax: "*";
- inherits: false;
- initial-value: 0 0 #0000;
-}
-@property --tw-shadow-color {
- syntax: "*";
- inherits: false;
-}
-@property --tw-shadow-alpha {
- syntax: "";
- inherits: false;
- initial-value: 100%;
-}
-@property --tw-inset-shadow {
- syntax: "*";
- inherits: false;
- initial-value: 0 0 #0000;
-}
-@property --tw-inset-shadow-color {
- syntax: "*";
- inherits: false;
-}
-@property --tw-inset-shadow-alpha {
- syntax: "";
- inherits: false;
- initial-value: 100%;
-}
-@property --tw-ring-color {
- syntax: "*";
- inherits: false;
-}
-@property --tw-ring-shadow {
- syntax: "*";
- inherits: false;
- initial-value: 0 0 #0000;
-}
-@property --tw-inset-ring-color {
- syntax: "*";
- inherits: false;
-}
-@property --tw-inset-ring-shadow {
- syntax: "*";
- inherits: false;
- initial-value: 0 0 #0000;
-}
-@property --tw-ring-inset {
- syntax: "*";
- inherits: false;
-}
-@property --tw-ring-offset-width {
- syntax: "";
- inherits: false;
- initial-value: 0px;
-}
-@property --tw-ring-offset-color {
- syntax: "*";
- inherits: false;
- initial-value: #fff;
-}
-@property --tw-ring-offset-shadow {
- syntax: "*";
- inherits: false;
- initial-value: 0 0 #0000;
-}
-@property --tw-outline-style {
- syntax: "*";
- inherits: false;
- initial-value: solid;
-}
-@property --tw-blur {
- syntax: "*";
- inherits: false;
-}
-@property --tw-brightness {
- syntax: "*";
- inherits: false;
-}
-@property --tw-contrast {
- syntax: "*";
- inherits: false;
-}
-@property --tw-grayscale {
- syntax: "*";
- inherits: false;
-}
-@property --tw-hue-rotate {
- syntax: "*";
- inherits: false;
-}
-@property --tw-invert {
- syntax: "*";
- inherits: false;
-}
-@property --tw-opacity {
- syntax: "*";
- inherits: false;
-}
-@property --tw-saturate {
- syntax: "*";
- inherits: false;
-}
-@property --tw-sepia {
- syntax: "*";
- inherits: false;
-}
-@property --tw-drop-shadow {
- syntax: "*";
- inherits: false;
-}
-@property --tw-drop-shadow-color {
- syntax: "*";
- inherits: false;
-}
-@property --tw-drop-shadow-alpha {
- syntax: "";
- inherits: false;
- initial-value: 100%;
-}
-@property --tw-drop-shadow-size {
- syntax: "*";
- inherits: false;
-}
-@layer properties {
- @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
- *, ::before, ::after, ::backdrop {
- --tw-space-y-reverse: 0;
- --tw-space-x-reverse: 0;
- --tw-border-style: solid;
- --tw-font-weight: initial;
- --tw-shadow: 0 0 #0000;
- --tw-shadow-color: initial;
- --tw-shadow-alpha: 100%;
- --tw-inset-shadow: 0 0 #0000;
- --tw-inset-shadow-color: initial;
- --tw-inset-shadow-alpha: 100%;
- --tw-ring-color: initial;
- --tw-ring-shadow: 0 0 #0000;
- --tw-inset-ring-color: initial;
- --tw-inset-ring-shadow: 0 0 #0000;
- --tw-ring-inset: initial;
- --tw-ring-offset-width: 0px;
- --tw-ring-offset-color: #fff;
- --tw-ring-offset-shadow: 0 0 #0000;
- --tw-outline-style: solid;
- --tw-blur: initial;
- --tw-brightness: initial;
- --tw-contrast: initial;
- --tw-grayscale: initial;
- --tw-hue-rotate: initial;
- --tw-invert: initial;
- --tw-opacity: initial;
- --tw-saturate: initial;
- --tw-sepia: initial;
- --tw-drop-shadow: initial;
- --tw-drop-shadow-color: initial;
- --tw-drop-shadow-alpha: 100%;
- --tw-drop-shadow-size: initial;
- }
- }
-}