feat: changes to variants and styling
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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" />}
|
||||||
|
|||||||
@@ -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",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user