feat: changes to variants and styling

This commit is contained in:
Erik Tiekstra
2024-07-04 11:23:32 +02:00
parent 37d91a2354
commit d0f4d07a0a
6 changed files with 42 additions and 19 deletions

View File

@@ -6,6 +6,13 @@
padding: var(--Spacing-x1);
}
.accordionItem.light {
background-color: var(--Base-Surface-Primary-Normal);
}
.accordionItem.subtle {
background-color: var(--Base-Background-Normal);
}
.summary {
position: relative;
display: flex;
@@ -19,16 +26,22 @@
transition: background-color 0.3s;
}
.summary:hover,
.summary:focus {
background-color: var(--Base-Surface-Primary-light-Hover);
.accordionItem details[open] .summary {
background-color: var(--Base-Surface-Primary-light-Hover-alt, #f2ece6);
}
.accordionItem.light .summary:hover,
.accordionItem.light details[open] .summary {
background-color: var(--Base-Surface-Primary-light-Hover, #f9f6f4);
}
.accordionItem.subtle .summary:hover,
.accordionItem.subtle details[open] .summary {
background-color: var(--Base-Surface-Primary-Normal);
}
.accordionItem.card .summary {
padding: var(--Spacing-x1) var(--Spacing-x-one-and-half);
border-radius: var(--Corner-radius-Medium);
}
.accordionItem.faq .summary {
padding: var(--Spacing-x2) 0;
}
.title {
flex-grow: 1;
@@ -40,9 +53,6 @@
max-height: 0;
transition: max-height 0.3s;
}
.accordionItem.faq .content {
padding: 0;
}
.chevron {
transition: transform 0.3s;

View File

@@ -14,6 +14,7 @@ export default function AccordionItem({
children,
icon,
title,
theme,
variant,
}: AccordionItemProps) {
const contentRef = useRef<HTMLDivElement>(null)
@@ -42,7 +43,7 @@ export default function AccordionItem({
}
return (
<li className={accordionItemVariants({ variant })}>
<li className={accordionItemVariants({ variant, theme })}>
<details ref={detailsRef} onToggle={toggleAccordion}>
<summary className={styles.summary}>
{IconComp && <IconComp className={styles.icon} color="burgundy" />}

View File

@@ -6,10 +6,15 @@ export const accordionItemVariants = cva(styles.accordionItem, {
variants: {
variant: {
card: styles.card,
faq: styles.faq,
},
theme: {
default: styles.default,
light: styles.light,
subtle: styles.subtle,
},
},
defaultVariants: {
variant: "faq",
variant: "card",
theme: "default",
},
})

View File

@@ -4,10 +4,11 @@
.accordion.card {
border-radius: var(--Corner-radius-Medium);
background-color: var(--Base-Surface-Primary-light-Normal);
background-color: white;
}
.accordion.faq {
background-color: var(--Base-Background-Primary-Normal);
.accordion.light {
background-color: var(--Base-Surface-Primary-Normal);
}
.accordion.subtle {
background-color: var(--Base-Background-Normal);
}

View File

@@ -7,13 +7,14 @@ import { accordionVariants } from "./variants"
export default function Accordion({
children,
className,
theme,
variant,
}: AccordionProps) {
return (
<ul className={accordionVariants({ className, variant })}>
<ul className={accordionVariants({ className, variant, theme })}>
{Children.map(children, (child) => {
if (isValidElement<AccordionItemProps>(child)) {
return cloneElement(child, { variant })
return cloneElement(child, { variant, theme })
} else {
return child
}

View File

@@ -6,10 +6,15 @@ export const accordionVariants = cva(styles.accordion, {
variants: {
variant: {
card: styles.card,
faq: styles.faq,
},
theme: {
default: styles.default,
light: styles.light,
subtle: styles.subtle,
},
},
defaultVariants: {
variant: "faq",
variant: "card",
theme: "default",
},
})