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

View File

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

View File

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

View File

@@ -4,10 +4,11 @@
.accordion.card { .accordion.card {
border-radius: var(--Corner-radius-Medium); border-radius: var(--Corner-radius-Medium);
background-color: var(--Base-Surface-Primary-light-Normal);
background-color: white;
} }
.accordion.faq { .accordion.light {
background-color: var(--Base-Background-Primary-Normal); 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({ export default function Accordion({
children, children,
className, className,
theme,
variant, variant,
}: AccordionProps) { }: AccordionProps) {
return ( return (
<ul className={accordionVariants({ className, variant })}> <ul className={accordionVariants({ className, variant, theme })}>
{Children.map(children, (child) => { {Children.map(children, (child) => {
if (isValidElement<AccordionItemProps>(child)) { if (isValidElement<AccordionItemProps>(child)) {
return cloneElement(child, { variant }) return cloneElement(child, { variant, theme })
} else { } else {
return child return child
} }

View File

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