@hummingbirdui/hummingbird
Version:
An open-source system designed for rapid development, without sacrificing the granular control of utility-first CSS.
87 lines (82 loc) • 3.37 kB
CSS
@utility accordion {
@layer base {
--accordion-color: var(--text-color-default);
--accordion-bg: var(--background-color-default);
--accordion-border-color: var(--border-color-base);
--accordion-border-width: 0;
--accordion-border-radius: var(--radius-lg);
--accordion-btn-padding-x: --spacing(6);
--accordion-btn-padding-y: --spacing(6);
--accordion-btn-font-size: var(--text-base);
--accordion-btn-color: var(--text-color-default);
--accordion-btn-bg: transparent;
--accordion-btn-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%231B2124' stroke-linecap='round' stroke-linejoin='round'><path d='m2 5 6 6 6-6'/></svg>");
--accordion-btn-icon-width: 1rem;
--accordion-btn-icon-transform: rotate(-180deg);
--accordion-btn-icon-transition: transform 0.2s ease-in-out;
--accordion-btn-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%231B2124' stroke-linecap='round' stroke-linejoin='round'><path d='m2 5 6 6 6-6'/></svg>");
--accordion-body-padding-x: --spacing(6);
--accordion-body-padding-y: --spacing(6);
--accordion-hover-color: var(--text-color-default);
--accordion-hover-bg: var(--background-color-subtle);
@variant dark {
--accordion-btn-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23EBF2F5' stroke-linecap='round' stroke-linejoin='round'><path d='m2 5 6 6 6-6'/></svg>");
--accordion-btn-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23EBF2F5' stroke-linecap='round' stroke-linejoin='round'><path d='m2 5 6 6 6-6'/></svg>");
}
}
}
@utility accordion-button {
@layer base {
@apply relative flex items-center w-full cursor-pointer
px-[var(--accordion-btn-padding-x)]
py-[var(--accordion-btn-padding-y)]
text-[length:var(--accordion-btn-font-size)]
text-[var(--accordion-btn-color)]
bg-[var(--accordion-btn-bg)]
rounded-[var(--accordion-border-radius)]
text-left font-semibold;
overflow-anchor: none;
&:not(.collapsed) {
&::after {
@apply bg-[image:var(--accordion-btn-active-icon)]
transform-[var(--accordion-btn-icon-transform)];
}
}
&::after {
@apply shrink-0
w-[var(--accordion-btn-icon-width)]
h-[var(--accordion-btn-icon-width)]
ml-auto
content-['']
bg-[image:var(--accordion-btn-icon)]
bg-no-repeat
bg-size-[var(--accordion-btn-icon-width)]
transition-[var(--accordion-btn-icon-transition)];
}
@variant focus {
@apply outline-0 bg-[var(--accordion-hover-bg)];
}
}
}
@utility accordion-header {
@layer base {
@apply mb-0;
}
}
@utility accordion-item {
@layer base {
@apply text-[var(--accordion-color)]
bg-[var(--accordion-bg)]
border-[length:var(--accordion-border-width)]
border-[var(--accordion-border-color)]
rounded-[var(--accordion-border-radius)];
@variant hover {
@apply text-[var(--accordion-hover-color)] bg-[var(--accordion-hover-bg)];
}
}
}
@utility accordion-body {
@layer base {
@apply px-[var(--accordion-body-padding-x)] pb-[var(--accordion-body-padding-y)];
}
}