diff --git a/dist/basecoat.css b/dist/basecoat.css index 6b0188c..e763d64 100644 --- a/dist/basecoat.css +++ b/dist/basecoat.css @@ -8,6 +8,7 @@ --color-red-500: oklch(63.7% 0.237 25.331); --color-amber-50: oklch(98.7% 0.022 95.277); --color-amber-100: oklch(96.2% 0.059 95.617); + --color-amber-500: oklch(76.9% 0.188 70.08); --color-amber-900: oklch(41.4% 0.112 45.904); --color-amber-950: oklch(27.9% 0.077 45.635); --color-green-50: oklch(98.2% 0.018 155.826); @@ -15,12 +16,14 @@ --color-green-600: oklch(62.7% 0.194 149.214); --color-green-900: oklch(39.3% 0.095 152.535); --color-green-950: oklch(26.6% 0.065 152.934); + --color-cyan-500: oklch(71.5% 0.143 215.221); --color-blue-50: oklch(97% 0.014 254.604); --color-blue-500: oklch(62.3% 0.214 259.815); --color-blue-600: oklch(54.6% 0.245 262.881); --color-blue-700: oklch(48.8% 0.243 264.376); --color-blue-900: oklch(37.9% 0.146 265.522); --color-blue-950: oklch(28.2% 0.091 267.935); + --color-fuchsia-500: oklch(66.7% 0.295 322.15); --color-black: #000; --color-white: #fff; --spacing: 0.25rem; @@ -64,6 +67,8 @@ --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25); --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); --animate-spin: spin 1s linear infinite; + --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; + --aspect-video: 16 / 9; --default-transition-duration: 150ms; --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); --default-font-family: var(--font-sans); @@ -92,7 +97,6 @@ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); } } @@ -277,24 +281,9 @@ .top-0 { top: calc(var(--spacing) * 0); } - .top-1\.5 { - top: calc(var(--spacing) * 1.5); - } .top-1\/2 { top: calc(1/2 * 100%); } - .top-3\.5 { - top: calc(var(--spacing) * 3.5); - } - .right-0 { - right: calc(var(--spacing) * 0); - } - .right-1 { - right: calc(var(--spacing) * 1); - } - .right-3 { - right: calc(var(--spacing) * 3); - } .left-0 { left: calc(var(--spacing) * 0); } @@ -307,24 +296,24 @@ .z-10 { z-index: 10; } - .z-20 { - z-index: 20; - } .z-50 { z-index: 50; } - .mx-2 { - margin-inline: calc(var(--spacing) * 2); - } - .mx-3\.5 { - margin-inline: calc(var(--spacing) * 3.5); + .col-span-2 { + grid-column: span 2 / span 2; } .mx-auto { margin-inline: auto; } + .mt-4 { + margin-top: calc(var(--spacing) * 4); + } .mr-auto { margin-right: auto; } + .mb-1 { + margin-bottom: calc(var(--spacing) * 1); + } .ml-\(--sidebar-width\) { margin-left: var(--sidebar-width); } @@ -340,6 +329,9 @@ .hidden { display: none; } + .inline-block { + display: inline-block; + } .inline-flex { display: inline-flex; } @@ -349,6 +341,9 @@ .aspect-square { aspect-ratio: 1 / 1; } + .aspect-video { + aspect-ratio: var(--aspect-video); + } .size-3\.5 { width: calc(var(--spacing) * 3.5); height: calc(var(--spacing) * 3.5); @@ -357,10 +352,6 @@ width: calc(var(--spacing) * 4); height: calc(var(--spacing) * 4); } - .size-7 { - width: calc(var(--spacing) * 7); - height: calc(var(--spacing) * 7); - } .size-8 { width: calc(var(--spacing) * 8); height: calc(var(--spacing) * 8); @@ -369,15 +360,17 @@ width: calc(var(--spacing) * 9); height: calc(var(--spacing) * 9); } + .size-10 { + width: calc(var(--spacing) * 10); + height: calc(var(--spacing) * 10); + } + .size-12 { + width: calc(var(--spacing) * 12); + height: calc(var(--spacing) * 12); + } .h-4 { height: calc(var(--spacing) * 4); } - .h-5 { - height: calc(var(--spacing) * 5); - } - .h-7 { - height: calc(var(--spacing) * 7); - } .h-8 { height: calc(var(--spacing) * 8); } @@ -387,44 +380,58 @@ .h-14 { height: calc(var(--spacing) * 14); } - .h-full { - height: 100%; - } .h-svh { height: 100svh; } + .max-h-64 { + max-height: calc(var(--spacing) * 64); + } .max-h-\[612px\] { max-height: 612px; } - .min-h-0 { - min-height: calc(var(--spacing) * 0); + .scrollbar { + scrollbar-width: thin; + scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track); + &::-webkit-scrollbar { + width: var(--scrollbar-width); + } + &::-webkit-scrollbar-track { + background: var(--scrollbar-track); + } + &::-webkit-scrollbar-thumb { + background: var(--scrollbar-thumb); + border-radius: var(--scrollbar-radius); + } } - .min-h-svh { - min-height: 100svh; + .w-1\/2 { + width: calc(1/2 * 100%); } - .w-\(--sidebar-width\) { - width: var(--sidebar-width); + .w-2\/3 { + width: calc(2/3 * 100%); } .w-4 { width: calc(var(--spacing) * 4); } - .w-5 { - width: calc(var(--spacing) * 5); + .w-72 { + width: calc(var(--spacing) * 72); + } + .w-80 { + width: calc(var(--spacing) * 80); + } + .w-\[100px\] { + width: 100px; + } + .w-\[150px\] { + width: 150px; } .w-\[var\(--sidebar-width\)\] { width: var(--sidebar-width); } - .w-auto { - width: auto; - } - .w-fit { - width: fit-content; - } .w-full { width: 100%; } - .max-w-\(--skeleton-width\) { - max-width: var(--skeleton-width); + .max-w-\[300px\] { + max-width: 300px; } .max-w-sm { max-width: var(--container-sm); @@ -432,9 +439,6 @@ .max-w-xl { max-width: var(--container-xl); } - .min-w-0 { - min-width: calc(var(--spacing) * 0); - } .min-w-5 { min-width: calc(var(--spacing) * 5); } @@ -444,27 +448,12 @@ .min-w-56 { min-width: calc(var(--spacing) * 56); } - .min-w-full { - min-width: 100%; - } .flex-1 { flex: 1; } .shrink-0 { flex-shrink: 0; } - .-translate-x-1\/2 { - --tw-translate-x: calc(calc(1/2 * 100%) * -1); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - .-translate-x-px { - --tw-translate-x: -1px; - translate: var(--tw-translate-x) var(--tw-translate-y); - } - .translate-x-px { - --tw-translate-x: 1px; - translate: var(--tw-translate-x) var(--tw-translate-y); - } .-translate-y-1\/2 { --tw-translate-y: calc(calc(1/2 * 100%) * -1); translate: var(--tw-translate-x) var(--tw-translate-y); @@ -473,12 +462,24 @@ --tw-translate-y: calc(var(--spacing) * 0.5); translate: var(--tw-translate-x) var(--tw-translate-y); } + .animate-pulse { + animation: var(--animate-pulse); + } .animate-spin { animation: var(--animate-spin); } + .cursor-pointer { + cursor: pointer; + } .scroll-mt-16 { scroll-margin-top: calc(var(--spacing) * 16); } + .list-decimal { + list-style-type: decimal; + } + .grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } .flex-col { flex-direction: column; } @@ -524,6 +525,9 @@ .gap-6 { gap: calc(var(--spacing) * 6); } + .gap-8 { + gap: calc(var(--spacing) * 8); + } .space-y-4 { :where(& > :not(:last-child)) { --tw-space-y-reverse: 0; @@ -534,6 +538,13 @@ .gap-x-2 { column-gap: calc(var(--spacing) * 2); } + .-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))); + } + } .gap-y-4 { row-gap: calc(var(--spacing) * 4); } @@ -548,12 +559,6 @@ text-overflow: ellipsis; white-space: nowrap; } - .overflow-auto { - overflow: auto; - } - .overflow-hidden { - overflow: hidden; - } .overflow-x-auto { overflow-x: auto; } @@ -581,36 +586,69 @@ border-bottom-style: var(--tw-border-style); border-bottom-width: 1px; } - .border-l { - border-left-style: var(--tw-border-style); - border-left-width: 1px; - } .border-amber-50 { border-color: var(--color-amber-50); } - .border-sidebar-border { - border-color: var(--color-sidebar-border); + .bg-accent { + background-color: var(--color-accent); } .bg-amber-50 { background-color: var(--color-amber-50); } + .bg-amber-500 { + background-color: var(--color-amber-500); + } .bg-background { background-color: var(--color-background); } + .bg-cyan-500 { + background-color: var(--color-cyan-500); + } + .bg-fuchsia-500 { + background-color: var(--color-fuchsia-500); + } + .bg-muted { + background-color: var(--color-muted); + } .bg-sidebar { background-color: var(--color-sidebar); } - .bg-sidebar-border { - background-color: var(--color-sidebar-border); - } .bg-sidebar-primary { background-color: var(--color-sidebar-primary); } - .bg-transparent { - background-color: transparent; + .bg-linear-to-bl { + --tw-gradient-position: to bottom left; + @supports (background-image: linear-gradient(in lab, red, red)) { + --tw-gradient-position: to bottom left in oklab; + } + background-image: linear-gradient(var(--tw-gradient-stops)); } - .p-0 { - padding: calc(var(--spacing) * 0); + .from-amber-500 { + --tw-gradient-from: var(--color-amber-500); + --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); + } + .from-cyan-500 { + --tw-gradient-from: var(--color-cyan-500); + --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); + } + .from-fuchsia-500 { + --tw-gradient-from: var(--color-fuchsia-500); + --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); + } + .to-amber-500 { + --tw-gradient-to: var(--color-amber-500); + --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); + } + .to-cyan-500 { + --tw-gradient-to: var(--color-cyan-500); + --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); + } + .to-fuchsia-500 { + --tw-gradient-to: var(--color-fuchsia-500); + --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); + } + .object-cover { + object-fit: cover; } .p-2 { padding: calc(var(--spacing) * 2); @@ -621,6 +659,9 @@ .p-4 { padding: calc(var(--spacing) * 4); } + .px-0 { + padding-inline: calc(var(--spacing) * 0); + } .px-1 { padding-inline: calc(var(--spacing) * 1); } @@ -648,12 +689,21 @@ .pb-4 { padding-bottom: calc(var(--spacing) * 4); } + .pl-6 { + padding-left: calc(var(--spacing) * 6); + } .pl-8 { padding-left: calc(var(--spacing) * 8); } + .text-center { + text-align: center; + } .text-left { text-align: left; } + .text-right { + text-align: right; + } .font-mono { font-family: var(--font-mono); } @@ -697,10 +747,6 @@ --tw-font-weight: var(--font-weight-normal); font-weight: var(--font-weight-normal); } - .font-semibold { - --tw-font-weight: var(--font-weight-semibold); - font-weight: var(--font-weight-semibold); - } .tracking-widest { --tw-tracking: var(--tracking-widest); letter-spacing: var(--tracking-widest); @@ -739,16 +785,15 @@ --tw-numeric-spacing: tabular-nums; font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,); } + .underline-offset-4 { + text-underline-offset: 4px; + } .opacity-50 { opacity: 50%; } .opacity-60 { opacity: 60%; } - .shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\] { - --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border))); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } .shadow-none { --tw-shadow: 0 0 #0000; box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); @@ -768,19 +813,8 @@ outline-offset: 2px; } } - .outline { - outline-style: var(--tw-outline-style); - outline-width: 1px; - } - .transition-\[left\,right\,width\] { - transition-property: left,right,width; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } - .transition-\[margin\,opacity\] { - transition-property: margin,opacity; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); + .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,); } .transition-\[margin-left\] { transition-property: margin-left; @@ -792,11 +826,6 @@ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); transition-duration: var(--tw-duration, var(--default-transition-duration)); } - .transition-\[width\] { - transition-property: width; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } .transition-all { transition-property: all; transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); @@ -816,18 +845,10 @@ --tw-duration: 200ms; transition-duration: 200ms; } - .duration-300 { - --tw-duration: 300ms; - transition-duration: 300ms; - } .ease-in-out { --tw-ease: var(--ease-in-out); transition-timing-function: var(--ease-in-out); } - .ease-linear { - --tw-ease: linear; - transition-timing-function: linear; - } .outline-none { --tw-outline-style: none; outline-style: none; @@ -841,214 +862,11 @@ rotate: 180deg; } } - .group-focus-within\/menu-item\:opacity-100 { - &:is(:where(.group\/menu-item):focus-within *) { - opacity: 100%; - } - } - .group-hover\/menu-item\:opacity-100 { - &:is(:where(.group\/menu-item):hover *) { - @media (hover: hover) { - opacity: 100%; - } - } - } - .group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8 { - &:is(:where(.group\/menu-item):has(*[data-sidebar="menu-action"]) *) { - padding-right: calc(var(--spacing) * 8); - } - } - .group-data-\[collapsible\=icon\]\:-mt-8 { - &:is(:where(.group)[data-collapsible="icon"] *) { - margin-top: calc(var(--spacing) * -8); - } - } - .group-data-\[collapsible\=icon\]\:hidden { - &:is(:where(.group)[data-collapsible="icon"] *) { - display: none; - } - } - .group-data-\[collapsible\=icon\]\:size-8\! { - &:is(:where(.group)[data-collapsible="icon"] *) { - width: calc(var(--spacing) * 8) !important; - height: calc(var(--spacing) * 8) !important; - } - } - .group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\) { - &:is(:where(.group)[data-collapsible="icon"] *) { - width: var(--sidebar-width-icon); - } - } - .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\] { - &:is(:where(.group)[data-collapsible="icon"] *) { - width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4))); - } - } - .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\] { - &:is(:where(.group)[data-collapsible="icon"] *) { - width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px); - } - } - .group-data-\[collapsible\=icon\]\:overflow-hidden { - &:is(:where(.group)[data-collapsible="icon"] *) { - overflow: hidden; - } - } - .group-data-\[collapsible\=icon\]\:p-0\! { - &:is(:where(.group)[data-collapsible="icon"] *) { - padding: calc(var(--spacing) * 0) !important; - } - } - .group-data-\[collapsible\=icon\]\:p-2\! { - &:is(:where(.group)[data-collapsible="icon"] *) { - padding: calc(var(--spacing) * 2) !important; - } - } - .group-data-\[collapsible\=icon\]\:opacity-0 { - &:is(:where(.group)[data-collapsible="icon"] *) { - opacity: 0%; - } - } - .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\] { - &:is(:where(.group)[data-collapsible="offcanvas"] *) { - right: calc(var(--sidebar-width) * -1); - } - } - .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\] { - &:is(:where(.group)[data-collapsible="offcanvas"] *) { - left: calc(var(--sidebar-width) * -1); - } - } - .group-data-\[collapsible\=offcanvas\]\:w-0 { - &:is(:where(.group)[data-collapsible="offcanvas"] *) { - width: calc(var(--spacing) * 0); - } - } - .group-data-\[collapsible\=offcanvas\]\:translate-x-0 { - &:is(:where(.group)[data-collapsible="offcanvas"] *) { - --tw-translate-x: calc(var(--spacing) * 0); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - } - .group-data-\[side\=left\]\:-right-4 { - &:is(:where(.group)[data-side="left"] *) { - right: calc(var(--spacing) * -4); - } - } - .group-data-\[side\=left\]\:border-r { - &:is(:where(.group)[data-side="left"] *) { - border-right-style: var(--tw-border-style); - border-right-width: 1px; - } - } - .group-data-\[side\=right\]\:left-0 { - &:is(:where(.group)[data-side="right"] *) { - left: calc(var(--spacing) * 0); - } - } - .group-data-\[side\=right\]\:rotate-180 { - &:is(:where(.group)[data-side="right"] *) { - rotate: 180deg; - } - } - .group-data-\[side\=right\]\:border-l { - &:is(:where(.group)[data-side="right"] *) { - border-left-style: var(--tw-border-style); - border-left-width: 1px; - } - } - .group-data-\[variant\=floating\]\:rounded-lg { - &:is(:where(.group)[data-variant="floating"] *) { - border-radius: var(--radius-lg); - } - } - .group-data-\[variant\=floating\]\:border { - &:is(:where(.group)[data-variant="floating"] *) { - border-style: var(--tw-border-style); - border-width: 1px; - } - } - .group-data-\[variant\=floating\]\:border-sidebar-border { - &:is(:where(.group)[data-variant="floating"] *) { - border-color: var(--color-sidebar-border); - } - } - .group-data-\[variant\=floating\]\:shadow-sm { - &:is(:where(.group)[data-variant="floating"] *) { - --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); - } - } - .peer-hover\/menu-button\:text-sidebar-accent-foreground { - &:is(:where(.peer\/menu-button):hover ~ *) { - @media (hover: hover) { - color: var(--color-sidebar-accent-foreground); - } - } - } .peer-aria-hidden\:ml-0 { &:is(:where(.peer)[aria-hidden="true"] ~ *) { margin-left: calc(var(--spacing) * 0); } } - .peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground { - &:is(:where(.peer\/menu-button)[data-active="true"] ~ *) { - color: var(--color-sidebar-accent-foreground); - } - } - .peer-data-\[size\=default\]\/menu-button\:top-1\.5 { - &:is(:where(.peer\/menu-button)[data-size="default"] ~ *) { - top: calc(var(--spacing) * 1.5); - } - } - .peer-data-\[size\=lg\]\/menu-button\:top-2\.5 { - &:is(:where(.peer\/menu-button)[data-size="lg"] ~ *) { - top: calc(var(--spacing) * 2.5); - } - } - .peer-data-\[size\=sm\]\/menu-button\:top-1 { - &:is(:where(.peer\/menu-button)[data-size="sm"] ~ *) { - top: calc(var(--spacing) * 1); - } - } - .after\:absolute { - &::after { - content: var(--tw-content); - position: absolute; - } - } - .after\:-inset-2 { - &::after { - content: var(--tw-content); - inset: calc(var(--spacing) * -2); - } - } - .after\:inset-y-0 { - &::after { - content: var(--tw-content); - inset-block: calc(var(--spacing) * 0); - } - } - .after\:left-1\/2 { - &::after { - content: var(--tw-content); - left: calc(1/2 * 100%); - } - } - .after\:w-\[2px\] { - &::after { - content: var(--tw-content); - width: 2px; - } - } - .group-data-\[collapsible\=offcanvas\]\:after\:left-full { - &:is(:where(.group)[data-collapsible="offcanvas"] *) { - &::after { - content: var(--tw-content); - left: 100%; - } - } - } .last\:border-b-0 { &:last-child { border-bottom-style: var(--tw-border-style); @@ -1075,6 +893,19 @@ background-color: var(--color-blue-600); } } + .checked\:bg-green-600 { + &:checked { + background-color: var(--color-green-600); + } + } + .checked\:before\:bg-background { + &:checked { + &::before { + content: var(--tw-content); + background-color: var(--color-background); + } + } + } .checked\:after\:bg-white { &:checked { &::after { @@ -1083,6 +914,17 @@ } } } + .hover\:space-x-1 { + &:hover { + @media (hover: hover) { + :where(& > :not(:last-child)) { + --tw-space-x-reverse: 0; + margin-inline-start: calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse)); + margin-inline-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse))); + } + } + } + } .hover\:bg-accent\/50 { &:hover { @media (hover: hover) { @@ -1131,33 +973,6 @@ } } } - .hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\] { - &:hover { - @media (hover: hover) { - --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-accent))); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - } - } - .hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar { - &:hover { - @media (hover: hover) { - &:is(:where(.group)[data-collapsible="offcanvas"] *) { - background-color: var(--color-sidebar); - } - } - } - } - .hover\:after\:bg-sidebar-border { - &:hover { - @media (hover: hover) { - &::after { - content: var(--tw-content); - background-color: var(--color-sidebar-border); - } - } - } - } .focus\:bg-destructive\/10 { &:focus { background-color: color-mix(in srgb, var(--destructive) 10%, transparent); @@ -1196,41 +1011,6 @@ } } } - .active\:bg-sidebar-accent { - &:active { - background-color: var(--color-sidebar-accent); - } - } - .active\:text-sidebar-accent-foreground { - &:active { - color: var(--color-sidebar-accent-foreground); - } - } - .disabled\:pointer-events-none { - &:disabled { - pointer-events: none; - } - } - .disabled\:opacity-50 { - &:disabled { - opacity: 50%; - } - } - .in-data-\[side\=left\]\:cursor-w-resize { - :where(*[data-side="left"]) & { - cursor: w-resize; - } - } - .in-data-\[side\=right\]\:cursor-e-resize { - :where(*[data-side="right"]) & { - cursor: e-resize; - } - } - .has-data-\[variant\=inset\]\:bg-sidebar { - &:has(*[data-variant="inset"]) { - background-color: var(--color-sidebar); - } - } .has-\[input\[type\=\'checkbox\'\]\:checked\]\:border-blue-600 { &:has(*:is(input[type='checkbox']:checked)) { border-color: var(--color-blue-600); @@ -1251,71 +1031,12 @@ background-color: var(--color-green-50); } } - .aria-disabled\:pointer-events-none { - &[aria-disabled="true"] { - pointer-events: none; - } - } - .aria-disabled\:opacity-50 { - &[aria-disabled="true"] { - opacity: 50%; - } - } - .aria-hidden\:w-0 { - &[aria-hidden="true"] { - width: calc(var(--spacing) * 0); - } - } .aria-\[hidden\=true\]\:-translate-x-full { &[aria-hidden="true"] { --tw-translate-x: -100%; translate: var(--tw-translate-x) var(--tw-translate-y); } } - .data-\[active\=true\]\:bg-sidebar-accent { - &[data-active="true"] { - background-color: var(--color-sidebar-accent); - } - } - .data-\[active\=true\]\:font-medium { - &[data-active="true"] { - --tw-font-weight: var(--font-weight-medium); - font-weight: var(--font-weight-medium); - } - } - .data-\[active\=true\]\:text-sidebar-accent-foreground { - &[data-active="true"] { - color: var(--color-sidebar-accent-foreground); - } - } - .data-\[state\=open\]\:opacity-100 { - &[data-state="open"] { - opacity: 100%; - } - } - .data-\[state\=open\]\:hover\:bg-sidebar-accent { - &[data-state="open"] { - &:hover { - @media (hover: hover) { - background-color: var(--color-sidebar-accent); - } - } - } - } - .data-\[state\=open\]\:hover\:text-sidebar-accent-foreground { - &[data-state="open"] { - &:hover { - @media (hover: hover) { - color: var(--color-sidebar-accent-foreground); - } - } - } - } - .sm\:flex { - @media (width >= 40rem) { - display: flex; - } - } .sm\:max-w-\[425px\] { @media (width >= 40rem) { max-width: 425px; @@ -1326,16 +1047,6 @@ gap: calc(var(--spacing) * 2.5); } } - .md\:block { - @media (width >= 48rem) { - display: block; - } - } - .md\:flex { - @media (width >= 48rem) { - display: flex; - } - } .md\:max-w-\[200px\] { @media (width >= 48rem) { max-width: 200px; @@ -1346,55 +1057,14 @@ flex-direction: row; } } - .md\:opacity-0 { - @media (width >= 48rem) { - opacity: 0%; + .\@md\:w-auto { + @container (width >= 28rem) { + width: auto; } } - .md\:peer-data-\[variant\=inset\]\:m-2 { - @media (width >= 48rem) { - &:is(:where(.peer)[data-variant="inset"] ~ *) { - margin: calc(var(--spacing) * 2); - } - } - } - .md\:peer-data-\[variant\=inset\]\:ml-0 { - @media (width >= 48rem) { - &:is(:where(.peer)[data-variant="inset"] ~ *) { - margin-left: calc(var(--spacing) * 0); - } - } - } - .md\:peer-data-\[variant\=inset\]\:rounded-xl { - @media (width >= 48rem) { - &:is(:where(.peer)[data-variant="inset"] ~ *) { - border-radius: var(--radius-xl); - } - } - } - .md\:peer-data-\[variant\=inset\]\:shadow-sm { - @media (width >= 48rem) { - &:is(:where(.peer)[data-variant="inset"] ~ *) { - --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); - } - } - } - .md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2 { - @media (width >= 48rem) { - &:is(:where(.peer)[data-variant="inset"] ~ *) { - &:is(:where(.peer)[data-state="collapsed"] ~ *) { - margin-left: calc(var(--spacing) * 2); - } - } - } - } - .md\:after\:hidden { - @media (width >= 48rem) { - &::after { - content: var(--tw-content); - display: none; - } + .\@md\:min-w-sm { + @container (width >= 28rem) { + min-width: var(--container-sm); } } .dark\:border-amber-950 { @@ -1433,6 +1103,26 @@ } } } + .dark\:checked\:bg-input\/30 { + &:is(.dark *) { + &:checked { + background-color: color-mix(in srgb, var(--input) 30%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-input) 30%, transparent); + } + } + } + } + .dark\:checked\:before\:bg-primary { + &:is(.dark *) { + &:checked { + &::before { + content: var(--tw-content); + background-color: var(--color-primary); + } + } + } + } .dark\:hover\:bg-destructive\/20 { &:is(.dark *) { &:hover { @@ -1483,21 +1173,81 @@ } } } + .\[\&_img\]\:size-8 { + & img { + width: calc(var(--spacing) * 8); + height: calc(var(--spacing) * 8); + } + } + .\[\&_img\]\:size-12 { + & img { + width: calc(var(--spacing) * 12); + height: calc(var(--spacing) * 12); + } + } + .\[\&_img\]\:shrink-0 { + & img { + flex-shrink: 0; + } + } + .\[\&_img\]\:rounded-full { + & img { + border-radius: calc(infinity * 1px); + } + } + .\[\&_img\]\:object-cover { + & img { + object-fit: cover; + } + } + .\[\&_img\]\:ring-2 { + & img { + --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + } + .\[\&_img\]\:ring-background { + & img { + --tw-ring-color: var(--color-background); + } + } + .\[\&_img\]\:grayscale { + & img { + --tw-grayscale: grayscale(100%); + 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,); + } + } + .\[\&_img\]\:transition-all { + & img { + transition-property: all; + transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); + transition-duration: var(--tw-duration, var(--default-transition-duration)); + } + } + .\[\&_img\]\:duration-300 { + & img { + --tw-duration: 300ms; + transition-duration: 300ms; + } + } + .\[\&_img\]\:ease-in-out { + & img { + --tw-ease: var(--ease-in-out); + transition-timing-function: var(--ease-in-out); + } + } .\[\&_svg\]\:\!text-destructive { & svg { color: var(--color-destructive) !important; } } - .\[\&\>button\]\:hidden { - &>button { - display: none; - } - } - .\[\&\>span\:last-child\]\:truncate { - &>span:last-child { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + .md\:\*\:\[\.card\]\:basis-1\/4 { + @media (width >= 48rem) { + :is(& > *) { + &:is(.card) { + flex-basis: calc(1/4 * 100%); + } + } } } .\[\&\>svg\]\:size-4 { @@ -1511,31 +1261,6 @@ flex-shrink: 0; } } - .\[\&\>svg\]\:text-sidebar-accent-foreground { - &>svg { - color: var(--color-sidebar-accent-foreground); - } - } - .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2 { - [data-side=left][data-collapsible=offcanvas] & { - right: calc(var(--spacing) * -2); - } - } - .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize { - [data-side=left][data-state=collapsed] & { - cursor: e-resize; - } - } - .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2 { - [data-side=right][data-collapsible=offcanvas] & { - left: calc(var(--spacing) * -2); - } - } - .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize { - [data-side=right][data-state=collapsed] & { - cursor: w-resize; - } - } } :root { --radius: 0.625rem; @@ -1635,20 +1360,6 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } - ::-webkit-scrollbar { - width: var(--scrollbar-width); - } - ::-webkit-scrollbar-track { - background: var(--scrollbar-track); - } - ::-webkit-scrollbar-thumb { - background: var(--scrollbar-thumb); - border-radius: var(--scrollbar-radius); - } - * { - scrollbar-width: thin; - scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track); - } } @layer utilities { [x-cloak] { @@ -2194,23 +1905,26 @@ details { &::details-content { block-size: 0; - transition-behavior: allow-discrete; display: block; opacity: 0%; transition-property: all; transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); transition-duration: var(--tw-duration, var(--default-transition-duration)); + transition-behavior: allow-discrete; + } + &[open]::details-content { + block-size: auto; + block-size: calc-size(auto, size); + opacity: 100%; + } + summary { + display: inline-flex; + cursor: pointer; + align-items: center; } } - details[open]::details-content { - block-size: auto; - block-size: calc-size(auto, size); - opacity: 100%; - } - details > summary { - display: inline-flex; - cursor: pointer; - align-items: center; + details > summary::-webkit-details-marker { + display: none; } } @layer components { @@ -2370,189 +2084,6 @@ } } } -@layer components { - .dropdown { - position: relative; - display: inline-flex; - [role='menu'], [role='listbox'] { - visibility: visible; - position: absolute; - z-index: 50; - width: max-content; - --tw-scale-x: 100%; - --tw-scale-y: 100%; - --tw-scale-z: 100%; - scale: var(--tw-scale-x) var(--tw-scale-y); - overflow-x: hidden; - overflow-y: auto; - border-radius: var(--radius-md); - border-style: var(--tw-border-style); - border-width: 1px; - background-color: var(--color-popover); - padding: calc(var(--spacing) * 1); - color: var(--color-popover-foreground); - opacity: 100%; - --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px 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); - transition-property: all; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - &[aria-hidden='true'] { - visibility: hidden; - --tw-scale-x: 95%; - --tw-scale-y: 95%; - --tw-scale-z: 95%; - scale: var(--tw-scale-x) var(--tw-scale-y); - opacity: 0%; - &:not([data-side]), &[data-side='bottom'] { - --tw-translate-y: calc(var(--spacing) * -2); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - &[data-side='top'] { - --tw-translate-y: calc(var(--spacing) * 2); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - &[data-side='left'] { - --tw-translate-x: calc(var(--spacing) * 2); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - &[data-side='right'] { - --tw-translate-x: calc(var(--spacing) * -2); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - } - &:not([data-side]), &[data-side='bottom'] { - top: 100%; - margin-top: calc(var(--spacing) * 1); - } - &[data-side='top'] { - bottom: 100%; - margin-bottom: calc(var(--spacing) * 1); - } - &[data-side='left'] { - right: 100%; - margin-right: calc(var(--spacing) * 1); - } - &[data-side='right'] { - left: 100%; - margin-left: calc(var(--spacing) * 1); - } - &:not([data-side]), &[data-side='bottom'], &[data-side='top'] { - &:not([data-align]), &[data-align='start'] { - left: calc(var(--spacing) * 0); - } - &[data-align='end'] { - right: calc(var(--spacing) * 0); - } - &[data-align='center'] { - left: calc(1/2 * 100%); - --tw-translate-x: calc(calc(1/2 * 100%) * -1); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - } - &[data-side='left'], &[data-side='right'] { - &:not([data-align]), &[data-align='start'] { - top: calc(var(--spacing) * 0); - } - &[data-align='end'] { - bottom: calc(var(--spacing) * 0); - } - &[data-align='center'] { - top: calc(1/2 * 100%); - --tw-translate-y: calc(calc(1/2 * 100%) * -1); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - } - [role='menuitem'], [role='option'] { - position: relative; - display: flex; - width: 100%; - cursor: default; - align-items: center; - gap: calc(var(--spacing) * 2); - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - border-radius: var(--radius-sm); - padding-inline: calc(var(--spacing) * 2); - padding-block: calc(var(--spacing) * 1.5); - font-size: var(--text-sm); - line-height: var(--tw-leading, var(--text-sm--line-height)); - --tw-outline-style: none; - outline-style: none; - @media (forced-colors: active) { - outline: 2px solid transparent; - outline-offset: 2px; - } - -webkit-user-select: none; - user-select: none; - &:hover { - @media (hover: hover) { - background-color: var(--color-accent); - } - } - &:hover { - @media (hover: hover) { - color: var(--color-accent-foreground); - } - } - &:focus { - background-color: var(--color-accent); - } - &:focus { - color: var(--color-accent-foreground); - } - &:disabled { - pointer-events: none; - } - &:disabled { - opacity: 50%; - } - & svg { - width: calc(var(--spacing) * 4); - height: calc(var(--spacing) * 4); - } - & svg { - flex-shrink: 0; - } - & svg { - color: var(--color-muted-foreground); - } - } - [role='option'] { - padding-right: calc(var(--spacing) * 7.5); - &[aria-selected='true'] { - background-image: var(--check-icon); - background-size: 0.875rem; - background-position: center right 0.5rem; - background-repeat: no-repeat; - } - } - [role='separator'] { - margin-inline: calc(var(--spacing) * -1); - margin-block: calc(var(--spacing) * 1); - border-color: var(--color-border); - } - } - [role='menu'] [role='heading'] { - display: flex; - padding-inline: calc(var(--spacing) * 2); - padding-block: calc(var(--spacing) * 1.5); - font-size: var(--text-sm); - line-height: var(--tw-leading, var(--text-sm--line-height)); - --tw-font-weight: var(--font-weight-medium); - font-weight: var(--font-weight-medium); - } - [role='listbox'] [role='heading'] { - display: flex; - padding-inline: calc(var(--spacing) * 2); - padding-block: calc(var(--spacing) * 1.5); - font-size: var(--text-xs); - line-height: var(--tw-leading, var(--text-xs--line-height)); - color: var(--color-muted-foreground); - } - } -} @layer components { .form input[type='text'], .form input[type='email'], .form input[type='password'], .form input[type='number'], .form input[type='file'], .form input[type='tel'], .form input[type='url'], .form input[type='search'], .form input[type='date'], .form input[type='datetime-local'], .form input[type='month'], .form input[type='week'], .form input[type='time'], .input[type='text'], .input[type='email'], .input[type='password'], .input[type='number'], .input[type='file'], .input[type='tel'], .input[type='url'], .input[type='search'], .input[type='date'], .input[type='datetime-local'], .input[type='month'], .input[type='week'], .input[type='time'] { display: flex; @@ -2696,6 +2227,260 @@ } } } +@layer components { + .popover { + position: relative; + display: inline-flex; + > [data-popover] { + visibility: visible; + position: absolute; + z-index: 50; + width: max-content; + min-width: 100%; + --tw-scale-x: 100%; + --tw-scale-y: 100%; + --tw-scale-z: 100%; + scale: var(--tw-scale-x) var(--tw-scale-y); + overflow-x: hidden; + overflow-y: auto; + border-radius: var(--radius-md); + border-style: var(--tw-border-style); + border-width: 1px; + background-color: var(--color-popover); + padding: calc(var(--spacing) * 1); + color: var(--color-popover-foreground); + opacity: 100%; + --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px 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); + transition-property: all; + transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); + transition-duration: var(--tw-duration, var(--default-transition-duration)); + &[aria-hidden='true'] { + visibility: hidden; + --tw-scale-x: 95%; + --tw-scale-y: 95%; + --tw-scale-z: 95%; + scale: var(--tw-scale-x) var(--tw-scale-y); + opacity: 0%; + &:not([data-side]), &[data-side='bottom'] { + --tw-translate-y: calc(var(--spacing) * -2); + translate: var(--tw-translate-x) var(--tw-translate-y); + } + &[data-side='top'] { + --tw-translate-y: calc(var(--spacing) * 2); + translate: var(--tw-translate-x) var(--tw-translate-y); + } + &[data-side='left'] { + --tw-translate-x: calc(var(--spacing) * 2); + translate: var(--tw-translate-x) var(--tw-translate-y); + } + &[data-side='right'] { + --tw-translate-x: calc(var(--spacing) * -2); + translate: var(--tw-translate-x) var(--tw-translate-y); + } + } + &:not([data-side]), &[data-side='bottom'] { + top: 100%; + margin-top: calc(var(--spacing) * 1); + } + &[data-side='top'] { + bottom: 100%; + margin-bottom: calc(var(--spacing) * 1); + } + &[data-side='left'] { + right: 100%; + margin-right: calc(var(--spacing) * 1); + } + &[data-side='right'] { + left: 100%; + margin-left: calc(var(--spacing) * 1); + } + &:not([data-side]), &[data-side='bottom'], &[data-side='top'] { + &:not([data-align]), &[data-align='start'] { + left: calc(var(--spacing) * 0); + } + &[data-align='end'] { + right: calc(var(--spacing) * 0); + } + &[data-align='center'] { + left: calc(1/2 * 100%); + --tw-translate-x: calc(calc(1/2 * 100%) * -1); + translate: var(--tw-translate-x) var(--tw-translate-y); + } + } + &[data-side='left'], &[data-side='right'] { + &:not([data-align]), &[data-align='start'] { + top: calc(var(--spacing) * 0); + } + &[data-align='end'] { + bottom: calc(var(--spacing) * 0); + } + &[data-align='center'] { + top: calc(1/2 * 100%); + --tw-translate-y: calc(calc(1/2 * 100%) * -1); + translate: var(--tw-translate-x) var(--tw-translate-y); + } + } + [role='menuitem'], [role='option'] { + position: relative; + display: flex; + width: 100%; + cursor: default; + align-items: center; + gap: calc(var(--spacing) * 2); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + border-radius: var(--radius-sm); + padding-inline: calc(var(--spacing) * 2); + padding-block: calc(var(--spacing) * 1.5); + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + --tw-outline-style: none; + outline-style: none; + @media (forced-colors: active) { + outline: 2px solid transparent; + outline-offset: 2px; + } + -webkit-user-select: none; + user-select: none; + &[aria-disabled="true"] { + pointer-events: none; + } + &[aria-disabled="true"] { + opacity: 50%; + } + &[aria-hidden="true"] { + display: none; + } + & svg { + width: calc(var(--spacing) * 4); + height: calc(var(--spacing) * 4); + } + & svg { + flex-shrink: 0; + } + & svg { + color: var(--color-muted-foreground); + } + } + [role='menuitem'] { + &:hover { + @media (hover: hover) { + background-color: var(--color-accent); + } + } + &:hover { + @media (hover: hover) { + color: var(--color-accent-foreground); + } + } + } + [role='option'] { + padding-right: calc(var(--spacing) * 7.5); + &[data-focus] { + background-color: var(--color-accent); + } + &[data-focus] { + color: var(--color-accent-foreground); + } + &[aria-selected='true'] { + background-image: var(--check-icon); + background-size: 0.875rem; + background-position: center right 0.5rem; + background-repeat: no-repeat; + } + } + [role='menu'] [role='heading'] { + display: flex; + padding-inline: calc(var(--spacing) * 2); + padding-block: calc(var(--spacing) * 1.5); + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + --tw-font-weight: var(--font-weight-medium); + font-weight: var(--font-weight-medium); + } + [role='listbox'] [role='heading'] { + display: flex; + padding-inline: calc(var(--spacing) * 2); + padding-block: calc(var(--spacing) * 1.5); + font-size: var(--text-xs); + line-height: var(--tw-leading, var(--text-xs--line-height)); + color: var(--color-muted-foreground); + } + [role='listbox'] [role='group']:not(:has([role='option']:not([aria-hidden='true']))) { + display: none; + } + [role='separator'] { + margin-inline: calc(var(--spacing) * -1); + margin-block: calc(var(--spacing) * 1); + border-color: var(--color-border); + } + > header { + margin-inline: calc(var(--spacing) * -1); + margin-top: calc(var(--spacing) * -1); + margin-bottom: calc(var(--spacing) * 1); + display: flex; + height: calc(var(--spacing) * 9); + align-items: center; + gap: calc(var(--spacing) * 2); + border-bottom-style: var(--tw-border-style); + border-bottom-width: 1px; + padding-inline: calc(var(--spacing) * 3); + svg { + width: calc(var(--spacing) * 4); + height: calc(var(--spacing) * 4); + flex-shrink: 0; + opacity: 50%; + } + input[role='combobox'] { + display: flex; + height: calc(var(--spacing) * 10); + width: 100%; + border-radius: var(--radius-md); + background-color: transparent; + padding-block: calc(var(--spacing) * 3); + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + --tw-outline-style: none; + outline-style: none; + @media (forced-colors: active) { + outline: 2px solid transparent; + outline-offset: 2px; + } + &::placeholder { + color: var(--color-muted-foreground); + } + &:disabled { + cursor: not-allowed; + } + &:disabled { + opacity: 50%; + } + } + } + [role='listbox']:not(:has([data-value]:not([aria-hidden='true'])))::before { + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding-block: calc(var(--spacing) * 6); + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + } + [role='listbox'][data-empty]:not(:has([data-value]:not([aria-hidden='true'])))::before { + --tw-content: attr(data-empty); + content: var(--tw-content); + } + [role='listbox']:not([data-empty]):not(:has([data-value]:not([aria-hidden='true'])))::before { + --tw-content: 'No results found'; + content: var(--tw-content); + } + } + } +} @layer components { .form input[type='radio'], .input[type='radio'] { position: relative; @@ -2780,7 +2565,26 @@ display: flex; appearance: none; align-items: center; + padding: calc(var(--spacing) * 0); + --tw-outline-style: none; + outline-style: none; + --slider-value: 20%; + &:hover, &:focus-visible { + &::-webkit-slider-thumb { + --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + &::-moz-range-thumb { + --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + &::-ms-thumb { + --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + } &::-webkit-slider-thumb { + margin-top: calc(var(--spacing) * -1.25); display: block; width: calc(var(--spacing) * 4); height: calc(var(--spacing) * 4); @@ -2797,51 +2601,73 @@ @supports (color: color-mix(in lab, red, red)) { --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent); } - transition-property: color,box-shadow; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - &:hover { - @media (hover: hover) { - --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - } - &:focus-visible { - --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - &:focus-visible { - --tw-outline-style: none; - outline-style: none; - @media (forced-colors: active) { - outline: 2px solid transparent; - outline-offset: 2px; - } - } - &:disabled { - pointer-events: none; - } - &:disabled { - opacity: 50%; - } - &:focus { - --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - --tw-ring-color: var(--color-primary); - --tw-ring-offset-width: 2px; - --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-offset-color: var(--color-background); - transition-property: all; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } } &::-webkit-slider-runnable-track { height: calc(var(--spacing) * 1.5); + width: 100%; appearance: none; + border-radius: calc(infinity * 1px); + background: linear-gradient(to right, var(--primary) var(--slider-value), var(--muted) var(--slider-value)); + } + &::-moz-range-thumb { + margin-top: calc(var(--spacing) * -1.25); + display: block; + width: calc(var(--spacing) * 4); + height: calc(var(--spacing) * 4); + flex-shrink: 0; + appearance: none; + border-radius: calc(infinity * 1px); + border-style: var(--tw-border-style); + border-width: 1px; + border-color: var(--color-primary); + background-color: var(--color-background); + --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); + --tw-ring-color: color-mix(in srgb, var(--ring) 50%, transparent); + @supports (color: color-mix(in lab, red, red)) { + --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent); + } + } + &::-moz-range-track { + height: calc(var(--spacing) * 1.5); + width: 100%; + appearance: none; + border-radius: calc(infinity * 1px); + background: linear-gradient(to right, var(--primary) var(--slider-value), var(--muted) var(--slider-value)); + } + &::-ms-thumb { + margin-top: calc(var(--spacing) * -1.25); + display: block; + width: calc(var(--spacing) * 4); + height: calc(var(--spacing) * 4); + flex-shrink: 0; + appearance: none; + border-radius: calc(infinity * 1px); + border-style: var(--tw-border-style); + border-width: 1px; + border-color: var(--color-primary); + background-color: var(--color-background); + --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); + --tw-ring-color: color-mix(in srgb, var(--ring) 50%, transparent); + @supports (color: color-mix(in lab, red, red)) { + --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent); + } + } + &::-ms-track { + height: calc(var(--spacing) * 1.5); + width: 100%; + appearance: none; + border-radius: calc(infinity * 1px); + } + &::-ms-fill-lower { border-radius: calc(infinity * 1px); background-color: var(--color-primary); } + &::-ms-fill-upper { + border-radius: calc(infinity * 1px); + background-color: var(--color-muted); + } } } @layer components { @@ -2863,8 +2689,6 @@ padding-left: calc(var(--spacing) * 3); font-size: var(--text-sm); line-height: var(--tw-leading, var(--text-sm--line-height)); - --tw-leading: 1; - line-height: 1; white-space: nowrap; --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05)); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); @@ -3444,43 +3268,155 @@ } } @layer components { - ul[role='tablist'] { - display: flex; - align-items: center; - border-bottom-style: var(--tw-border-style); - border-bottom-width: 1px; - border-color: var(--color-border); - } - ul[role='tablist'] li { - margin-bottom: calc(1px * -1); - display: flex; - align-items: center; - column-gap: calc(var(--spacing) * 2); - } - ul[role='tablist'] li [role='tab'] { - display: flex; - align-items: center; - column-gap: calc(var(--spacing) * 2); - border-bottom-style: var(--tw-border-style); - border-bottom-width: 2px; - border-color: transparent; - padding-inline: calc(var(--spacing) * 3); - padding-block: calc(var(--spacing) * 2.5); - --tw-font-weight: var(--font-weight-medium); - font-weight: var(--font-weight-medium); - color: var(--color-muted-foreground); - transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - &:hover { - @media (hover: hover) { + .tabs { + [role='tablist'] { + display: inline-flex; + height: calc(var(--spacing) * 9); + width: fit-content; + align-items: center; + justify-content: center; + border-radius: var(--radius-lg); + background-color: var(--color-muted); + padding: 3px; + color: var(--color-muted-foreground); + [role='tab'] { + display: inline-flex; + height: calc(100% - 1px); + flex: 1; + align-items: center; + justify-content: center; + gap: calc(var(--spacing) * 1.5); + border-radius: var(--radius-md); + border-style: var(--tw-border-style); + border-width: 1px; + border-color: transparent; + padding-inline: calc(var(--spacing) * 2); + padding-block: calc(var(--spacing) * 1); + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + --tw-font-weight: var(--font-weight-medium); + font-weight: var(--font-weight-medium); + white-space: nowrap; color: var(--color-foreground); + transition-property: color,box-shadow; + transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); + transition-duration: var(--tw-duration, var(--default-transition-duration)); + &:focus-visible { + border-color: var(--color-ring); + } + &:focus-visible { + --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + &:focus-visible { + --tw-ring-color: color-mix(in srgb, var(--ring) 50%, transparent); + @supports (color: color-mix(in lab, red, red)) { + --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent); + } + } + &:focus-visible { + outline-style: var(--tw-outline-style); + outline-width: 1px; + } + &:focus-visible { + outline-color: var(--color-ring); + } + &:disabled { + pointer-events: none; + } + &:disabled { + opacity: 50%; + } + &:is(.dark *) { + color: var(--color-muted-foreground); + } + & svg { + pointer-events: none; + } + & svg { + flex-shrink: 0; + } + & svg:not([class*='size-']) { + width: calc(var(--spacing) * 4); + height: calc(var(--spacing) * 4); + } + &[aria-selected='true'] { + background-color: var(--color-background); + --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); + &:is(.dark *) { + border-color: var(--color-input); + } + &:is(.dark *) { + background-color: color-mix(in srgb, var(--input) 30%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-input) 30%, transparent); + } + } + &:is(.dark *) { + color: var(--color-foreground); + } + } } } + [role='tabpanel'] { + flex: 1; + --tw-outline-style: none; + outline-style: none; + } } - ul[role='tablist'] li [role='tab'][aria-selected='true'] { - border-bottom-color: var(--color-primary); - color: var(--color-foreground); +} +@layer components { + .card { + display: flex; + flex-direction: column; + gap: calc(var(--spacing) * 6); + border-radius: var(--radius-xl); + border-style: var(--tw-border-style); + border-width: 1px; + background-color: var(--color-card); + padding-block: calc(var(--spacing) * 6); + color: var(--color-card-foreground); + --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); + > header { + container-type: inline-size; + container-name: card-header; + display: grid; + grid-auto-rows: min-content; + grid-template-rows: auto auto; + align-items: flex-start; + gap: calc(var(--spacing) * 1.5); + padding-inline: calc(var(--spacing) * 6); + &:has(*[data-slot="card-action"]) { + grid-template-columns: 1fr auto; + } + &:is(.border-b) { + padding-bottom: calc(var(--spacing) * 6); + } + h2 { + --tw-leading: 1; + line-height: 1; + --tw-font-weight: var(--font-weight-semibold); + font-weight: var(--font-weight-semibold); + } + p { + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + color: var(--color-muted-foreground); + } + } + > section { + padding-inline: calc(var(--spacing) * 6); + } + > footer { + display: flex; + align-items: center; + padding-inline: calc(var(--spacing) * 6); + &:is(.border-t) { + padding-top: calc(var(--spacing) * 6); + } + } } } @property --tw-translate-x { @@ -3503,11 +3439,58 @@ 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-gradient-position { + syntax: "*"; + inherits: false; +} +@property --tw-gradient-from { + syntax: ""; + inherits: false; + initial-value: #0000; +} +@property --tw-gradient-via { + syntax: ""; + inherits: false; + initial-value: #0000; +} +@property --tw-gradient-to { + syntax: ""; + inherits: false; + initial-value: #0000; +} +@property --tw-gradient-stops { + syntax: "*"; + inherits: false; +} +@property --tw-gradient-via-stops { + syntax: "*"; + inherits: false; +} +@property --tw-gradient-from-position { + syntax: ""; + inherits: false; + initial-value: 0%; +} +@property --tw-gradient-via-position { + syntax: ""; + inherits: false; + initial-value: 50%; +} +@property --tw-gradient-to-position { + syntax: ""; + inherits: false; + initial-value: 100%; +} @property --tw-leading { syntax: "*"; inherits: false; @@ -3605,10 +3588,58 @@ inherits: false; initial-value: 0 0 #0000; } -@property --tw-outline-style { +@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; - initial-value: solid; } @property --tw-duration { syntax: "*"; @@ -3638,11 +3669,21 @@ inherits: false; initial-value: 1; } +@property --tw-outline-style { + syntax: "*"; + inherits: false; + initial-value: solid; +} @keyframes spin { to { transform: rotate(360deg); } } +@keyframes pulse { + 50% { + opacity: 0.5; + } +} @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 { @@ -3650,7 +3691,17 @@ --tw-translate-y: 0; --tw-translate-z: 0; --tw-space-y-reverse: 0; + --tw-space-x-reverse: 0; --tw-border-style: solid; + --tw-gradient-position: initial; + --tw-gradient-from: #0000; + --tw-gradient-via: #0000; + --tw-gradient-to: #0000; + --tw-gradient-stops: initial; + --tw-gradient-via-stops: initial; + --tw-gradient-from-position: 0%; + --tw-gradient-via-position: 50%; + --tw-gradient-to-position: 100%; --tw-leading: initial; --tw-font-weight: initial; --tw-tracking: initial; @@ -3673,13 +3724,26 @@ --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; --tw-duration: initial; --tw-ease: initial; --tw-content: ""; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scale-z: 1; + --tw-outline-style: solid; } } } diff --git a/dist/basecoat.tailwind.css b/dist/basecoat.tailwind.css index d85b6ba..0e55950 100644 --- a/dist/basecoat.tailwind.css +++ b/dist/basecoat.tailwind.css @@ -136,20 +136,22 @@ body { @apply bg-background text-foreground overscroll-none antialiased; } - ::-webkit-scrollbar { +} + +@utility scrollbar { + scrollbar-width: thin; + scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track); + + &::-webkit-scrollbar { width: var(--scrollbar-width); } - ::-webkit-scrollbar-track { + &::-webkit-scrollbar-track { background: var(--scrollbar-track); } - ::-webkit-scrollbar-thumb { + &::-webkit-scrollbar-thumb { background: var(--scrollbar-thumb); border-radius: var(--scrollbar-radius); } - * { - scrollbar-width: thin; - scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track); - } } @layer utilities { @@ -375,17 +377,20 @@ details { &::details-content { block-size: 0; - transition-behavior: allow-discrete; - @apply block opacity-0 transition-all; + @apply block opacity-0 transition-discrete + transition-all; + } + &[open]::details-content { + block-size: auto; + block-size: calc-size(auto, size); + @apply opacity-100; + } + summary { + @apply inline-flex items-center cursor-pointer; } } - details[open]::details-content { - block-size: auto; - block-size: calc-size(auto, size); - @apply opacity-100; - } - details > summary { - @apply inline-flex items-center cursor-pointer; + details > summary::-webkit-details-marker { + display: none; } } @@ -429,97 +434,6 @@ } } -/* Dropdown */ -@layer components { - .dropdown { - @apply relative inline-flex; - - [role='menu'], - [role='listbox'] { - @apply absolute bg-popover text-popover-foreground overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md z-50 w-max visible opacity-100 scale-100 transition-all; - - &[aria-hidden='true'] { - @apply invisible opacity-0 scale-95; - - &:not([data-side]), - &[data-side='bottom'] { - @apply -translate-y-2; - } - &[data-side='top'] { - @apply translate-y-2; - } - &[data-side='left'] { - @apply translate-x-2; - } - &[data-side='right'] { - @apply -translate-x-2; - } - } - &:not([data-side]), - &[data-side='bottom'] { - @apply mt-1 top-full; - } - &[data-side='top'] { - @apply mb-1 bottom-full; - } - &[data-side='left'] { - @apply mr-1 right-full; - } - &[data-side='right'] { - @apply ml-1 left-full; - } - &:not([data-side]), - &[data-side='bottom'], - &[data-side='top'] { - &:not([data-align]), - &[data-align='start'] { - @apply left-0; - } - &[data-align='end'] { - @apply right-0; - } - &[data-align='center'] { - @apply left-1/2 -translate-x-1/2; - } - } - &[data-side='left'], - &[data-side='right'] { - &:not([data-align]), - &[data-align='start'] { - @apply top-0; - } - &[data-align='end'] { - @apply bottom-0; - } - &[data-align='center'] { - @apply top-1/2 -translate-y-1/2; - } - } - - [role='menuitem'], - [role='option'] { - @apply hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground [&_svg]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none [&_svg]:shrink-0 [&_svg]:size-4 disabled:opacity-50 disabled:pointer-events-none w-full truncate; - } - [role='option'] { - @apply pr-7.5; - - &[aria-selected='true'] { - @apply bg-[image:var(--check-icon)] bg-no-repeat bg-position-[center_right_0.5rem] bg-size-[0.875rem]; - } - } - [role='separator'] { - @apply border-border -mx-1 my-1; - } - } - [role='menu'] [role='heading'] { - @apply flex px-2 py-1.5 text-sm font-medium; - } - [role='listbox'] [role='heading'] { - @apply flex text-muted-foreground px-2 py-1.5 text-xs; - } - } -} - /* Input */ @layer components { .form input[type='text'], @@ -579,6 +493,123 @@ } } +/* Popover */ +@layer components { + .popover { + @apply relative inline-flex; + + > [data-popover] { + @apply absolute bg-popover text-popover-foreground overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md z-50 w-max visible opacity-100 scale-100 min-w-full w-max transition-all; + + &[aria-hidden='true'] { + @apply invisible opacity-0 scale-95; + + &:not([data-side]), + &[data-side='bottom'] { + @apply -translate-y-2; + } + &[data-side='top'] { + @apply translate-y-2; + } + &[data-side='left'] { + @apply translate-x-2; + } + &[data-side='right'] { + @apply -translate-x-2; + } + } + &:not([data-side]), + &[data-side='bottom'] { + @apply mt-1 top-full; + } + &[data-side='top'] { + @apply mb-1 bottom-full; + } + &[data-side='left'] { + @apply mr-1 right-full; + } + &[data-side='right'] { + @apply ml-1 left-full; + } + &:not([data-side]), + &[data-side='bottom'], + &[data-side='top'] { + &:not([data-align]), + &[data-align='start'] { + @apply left-0; + } + &[data-align='end'] { + @apply right-0; + } + &[data-align='center'] { + @apply left-1/2 -translate-x-1/2; + } + } + &[data-side='left'], + &[data-side='right'] { + &:not([data-align]), + &[data-align='start'] { + @apply top-0; + } + &[data-align='end'] { + @apply bottom-0; + } + &[data-align='center'] { + @apply top-1/2 -translate-y-1/2; + } + } + [role='menuitem'], + [role='option'] { + @apply aria-hidden:hidden [&_svg]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none [&_svg]:shrink-0 [&_svg]:size-4 aria-disabled:opacity-50 aria-disabled:pointer-events-none w-full truncate; + } + [role='menuitem'] { + @apply hover:bg-accent hover:text-accent-foreground; + } + [role='option'] { + @apply data-[focus]:bg-accent data-[focus]:text-accent-foreground pr-7.5; + + &[aria-selected='true'] { + @apply bg-[image:var(--check-icon)] bg-no-repeat bg-position-[center_right_0.5rem] bg-size-[0.875rem]; + } + } + [role='menu'] [role='heading'] { + @apply flex px-2 py-1.5 text-sm font-medium; + } + [role='listbox'] [role='heading'] { + @apply flex text-muted-foreground px-2 py-1.5 text-xs; + } + [role='listbox'] [role='group']:not(:has([role='option']:not([aria-hidden='true']))) { + @apply hidden; + } + [role='separator'] { + @apply border-border -mx-1 my-1; + } + > header { + @apply flex h-9 items-center gap-2 border-b px-3 -mx-1 -mt-1 mb-1; + + svg { + @apply size-4 shrink-0 opacity-50; + } + + input[role='combobox'] { + @apply placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50; + } + } + + /* Combobox */ + [role='listbox']:not(:has([data-value]:not([aria-hidden='true'])))::before { + @apply flex items-center justify-center py-6 text-sm truncate; + } + [role='listbox'][data-empty]:not(:has([data-value]:not([aria-hidden='true'])))::before { + @apply content-[attr(data-empty)]; + } + [role='listbox']:not([data-empty]):not(:has([data-value]:not([aria-hidden='true'])))::before { + @apply content-['No_results_found']; + } + } + } +} + /* Radio */ @layer components { .form input[type='radio'], @@ -595,49 +626,48 @@ @layer components { .form input[type='range'], .input[type='range'] { - @apply appearance-none flex items-center; + @apply appearance-none flex items-center p-0 outline-none; + --slider-value: 20%; - &::-webkit-slider-thumb { - @apply appearance-none border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50; - - &:focus { - @apply ring-2 ring-offset-2 ring-offset-background ring-primary transition-all; + &:hover, + &:focus-visible { + &::-webkit-slider-thumb { + @apply ring-4; + } + &::-moz-range-thumb { + @apply ring-4; + } + &::-ms-thumb { + @apply ring-4; } } + &::-webkit-slider-thumb { + @apply appearance-none border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm -mt-1.25; + } &::-webkit-slider-runnable-track { - @apply appearance-none bg-primary h-1.5 rounded-full; + @apply appearance-none rounded-full h-1.5 w-full; + background: linear-gradient(to right, var(--primary) var(--slider-value), var(--muted) var(--slider-value)); + } + &::-moz-range-thumb { + @apply appearance-none border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm -mt-1.25; } - /* .input[type="range"]:focus::-webkit-slider-thumb { - @apply ring-2 ring-offset-2 ring-offset-background ring-primary transition-all; + &::-moz-range-track { + @apply appearance-none rounded-full h-1.5 w-full; + background: linear-gradient(to right, var(--primary) var(--slider-value), var(--muted) var(--slider-value)); } - .input[type="range"]::-webkit-slider-runnable-track { - @apply bg-input h-2 rounded-full; + &::-ms-thumb { + @apply appearance-none border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm -mt-1.25; } - .input[type="range"]::-moz-range-thumb { - @apply outline-none appearance-none bg-primary w-6 h-6 rounded-full cursor-grab p-0 m-0 border-0 focus:ring-2 hover:bg-primary/90 transition-all; + &::-ms-track { + @apply appearance-none rounded-full h-1.5 w-full; } - .input[type="range"]:focus::-moz-range-thumb { - @apply ring-2 ring-offset-2 ring-offset-background ring-primary transition-all; - } - .input[type="range"]::-moz-range-track { - @apply bg-input h-2 rounded-full border-0; - } - .input[type="range"]::-ms-thumb { - @apply outline-none appearance-none bg-primary w-6 h-6 rounded-full cursor-grab p-0 m-0 border-0 focus:ring-2 hover:bg-primary/90 transition-all; - } - .input[type="range"]:focus::-ms-thumb { - @apply ring-2 ring-offset-2 ring-offset-background ring-primary transition-all; - } - .input[type="range"]::-ms-track { - @apply bg-input h-2 rounded-full border-0 text-transparent; - } - .input[type="range"]::-ms-fill-lower { + &::-ms-fill-lower { @apply bg-primary rounded-full; } - .input[type="range"]::-ms-fill-upper { - @apply bg-input rounded-full; - } */ + &::-ms-fill-upper { + @apply bg-muted rounded-full; + } } } @@ -645,7 +675,7 @@ @layer components { .form select, .select { - @apply appearance-none border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent pl-3 pr-9 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 h-9 leading-none; + @apply appearance-none border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent pl-3 pr-9 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 h-9; @apply bg-[image:var(--chevron-down-icon)] bg-no-repeat bg-position-[center_right_0.75rem] bg-size-[1rem]; } } @@ -776,16 +806,45 @@ /* Tabs */ @layer components { - ul[role='tablist'] { - @apply flex items-center border-b border-border; + .tabs { + [role='tablist'] { + @apply bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]; + + [role='tab'] { + @apply focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4; + + &[aria-selected='true'] { + @apply bg-background dark:text-foreground dark:border-input dark:bg-input/30 shadow-sm; + } + } + } + [role='tabpanel'] { + @apply flex-1 outline-none; + } } - ul[role='tablist'] li { - @apply flex items-center gap-x-2 -mb-[1px]; +} + +/* Card */ +@layer components { + .card { + @apply bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm; + + > header { + @apply @container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6; + + h2 { + @apply leading-none font-semibold; + } + p { + @apply text-muted-foreground text-sm; + } + } + > section { + @apply px-6; + } + > footer { + @apply flex items-center px-6 [.border-t]:pt-6; + } } - ul[role='tablist'] li [role='tab'] { - @apply flex items-center gap-x-2 font-medium text-muted-foreground px-3 py-2.5 hover:text-foreground transition-colors border-b-2 border-transparent; - } - ul[role='tablist'] li [role='tab'][aria-selected='true'] { - @apply text-foreground border-b-primary; - } -} \ No newline at end of file +} + diff --git a/docs/_components/dialog.njk b/docs/_components/dialog.njk index a604fc9..bf34b64 100644 --- a/docs/_components/dialog.njk +++ b/docs/_components/dialog.njk @@ -1,20 +1,19 @@ {% macro dialog( - id, - trigger=None, - title=None, - description=None, - footer=None, - main_attrs={}, - trigger_attrs={}, - content_attrs={}, - content_header_attrs={}, - content_body_attrs={}, - content_footer_attrs={}, - open=false, - close_button=true, - close_on_overlay_click=true - ) -%} + id, + trigger=None, + title=None, + description=None, + footer=None, + main_attrs={}, + trigger_attrs={}, + content_attrs={}, + content_header_attrs={}, + content_body_attrs={}, + content_footer_attrs={}, + open=false, + close_button=true, + close_on_overlay_click=true +) %} {% if registerComponent('dialog') %} +{% endif %} + +
+ {% if trigger %} + + {% endif %} + +
+{% endmacro %} diff --git a/docs/_components/select.njk b/docs/_components/select.njk index 5fce399..08f4e36 100644 --- a/docs/_components/select.njk +++ b/docs/_components/select.njk @@ -1,144 +1,224 @@ {% macro select( - id=None, - main_attrs=None, - trigger_attrs=None, - menu_attrs=None, - value=None, - input_name=None - ) -%} + id=None, + name=None, + selected=None, + main_attrs=None, + trigger_attrs=None, + content_attrs=None, + listbox_attrs=None, + is_combobox=False +) %} {% if registerComponent('select') %} {% endif %} {% endmacro %} \ No newline at end of file diff --git a/docs/_components/dropdown.njk b/docs/_components/tabs.njk similarity index 92% rename from docs/_components/dropdown.njk rename to docs/_components/tabs.njk index ee216b5..eb5a7e9 100644 --- a/docs/_components/dropdown.njk +++ b/docs/_components/tabs.njk @@ -1,15 +1,14 @@ -{% macro dropdown( - id=None, - trigger=None, +{% macro tabs( + tabs, main_attrs=None, trigger_attrs=None, - menu_attrs=None + content_attrs=None ) %} -{% if registerComponent('dropdown') %} +{% if registerComponent('toast') %} + +
+
+

Tabs

+
+
+
+
+
+ + +
+ +
+
+
+

Account

+

Make changes to your account here. Click save when you're done.

+
+
+
+
+ + +
+
+ + +
+
+
+
+ +
+
+
+ + +
+ +
+
+ + +
+
+ +
+
+ + +
+
+ +
+
+ + +
+
+
+
+
\ No newline at end of file diff --git a/docs/_includes/sidebar.njk b/docs/_includes/sidebar.njk index 9553233..6a7a080 100644 --- a/docs/_includes/sidebar.njk +++ b/docs/_includes/sidebar.njk @@ -9,11 +9,11 @@ {% lucide "chevrons-up-down", { "class": "ml-auto" } %} {% endset %} - {% call dropdown( - id="dropdown-checkboxes", + {% call popover( + id="demo-sidebar-dropdown-org", trigger=trigger, trigger_attrs={"class": "btn-ghost p-2 h-12 w-full justify-start"}, - menu_attrs={"data-side": "right"} + content_attrs={"data-side": "right"} ) %} Something {% endcall %} @@ -26,7 +26,7 @@ -
+
@@ -191,49 +109,51 @@
Ronan Berder
- hunvreus + hunvreus hunvreus@example.com

- -
- - - -
- + {% endset %} {% set trigger %} Ronan Berder
- hunvreus + hunvreus hunvreus@example.com
{% lucide "chevrons-up-down", { "class": "text-muted-foreground ml-auto" } %} {% endset %} - {% call dropdown( - id="dropdown-checkboxes", + {% call popover( + id="demo-sidebar-dropdown-account", trigger=trigger, trigger_attrs={"class": "btn-ghost h-12 justify-start p-2 w-full"}, - menu_attrs={"class": "min-w-56", "data-side": "right", "data-align": "end"} + content_attrs={"class": "min-w-56", "data-side": "right", "data-align": "end"} ) %} {{ profile_menu | safe }} {% endcall %} diff --git a/docs/index.njk b/docs/index.njk index 79b630d..14d8de7 100644 --- a/docs/index.njk +++ b/docs/index.njk @@ -48,14 +48,14 @@ {% from "./_components/dialog.njk" import dialog %} -{% from "./_components/dropdown.njk" import dropdown %} +{% from "./_components/popover.njk" import popover %} {% from "./_components/select.njk" import select %}
- {% lucide "panel-left-close" %} - {% lucide "panel-left-open" %} + {% lucide "panel-left" %} - @@ -109,21 +108,27 @@ {% include "./_includes/components/accordion.njk" %} {% include "./_includes/components/alert.njk" %} {% include "./_includes/components/alert-dialog.njk" %} + {% include "./_includes/components/avatar.njk" %} {% include "./_includes/components/badge.njk" %} {% include "./_includes/components/breadcrumb.njk" %} {% include "./_includes/components/button.njk" %} + {% include "./_includes/components/card.njk" %} {% include "./_includes/components/checkbox.njk" %} + {% include "./_includes/components/combobox.njk" %} {% include "./_includes/components/dialog.njk" %} - {% include "./_includes/components/dropdown.njk" %} + {% include "./_includes/components/dropdown-menu.njk" %} {% include "./_includes/components/form.njk" %} {% include "./_includes/components/input.njk" %} {% include "./_includes/components/label.njk" %} {% include "./_includes/components/pagination.njk" %} + {% include "./_includes/components/popover.njk" %} {% include "./_includes/components/radio-group.njk" %} {% include "./_includes/components/select.njk" %} - {# {% include "./_includes/components/slider.njk" %} #} + {% include "./_includes/components/skeleton.njk" %} + {% include "./_includes/components/slider.njk" %} {% include "./_includes/components/switch.njk" %} {% include "./_includes/components/table.njk" %} + {% include "./_includes/components/tabs.njk" %} {% include "./_includes/components/textarea.njk" %} {% include "./_includes/components/tooltip.njk" %}