@@ -30,6 +30,10 @@ export function Accordion({ children }: AccordionProps) {
3030
3131export interface AccordionItemProps {
3232 title : string ;
33+ /**
34+ * An extra interactive element to be displayed next to the header
35+ */
36+ titleExtra ?: ReactNode ;
3337 /**
3438 * A unique id for this part of the UI. Necessary for ally
3539 */
@@ -39,10 +43,26 @@ export interface AccordionItemProps {
3943}
4044
4145export function AccordionItem ( props : AccordionItemProps ) {
42- const { title, id, defaultIsOpen = true , children } = props ;
46+ const { title, titleExtra , id, defaultIsOpen = true , children } = props ;
4347 const [ isOpen , setIsOpen ] = useState ( defaultIsOpen ) ;
4448 const contentId = `${ id } -content` ,
4549 headerId = `${ id } -heading` ;
50+
51+ // Display the titleExtra inline
52+ const titleEl = titleExtra ? (
53+ < div
54+ css = { css `
55+ display : flex;
56+ flex-direction : row;
57+ ` }
58+ >
59+ < Text textSize = "large" > { title } </ Text >
60+ { titleExtra }
61+ </ div >
62+ ) : (
63+ < Text textSize = "large" > { title } </ Text >
64+ ) ;
65+
4666 return (
4767 < div
4868 className = { classNames ( 'ac-accordion-item' , {
@@ -85,7 +105,7 @@ export function AccordionItem(props: AccordionItemProps) {
85105 aria-controls = { contentId }
86106 aria-expanded = { isOpen }
87107 >
88- < Text textSize = "large" > { title } </ Text >
108+ { titleEl }
89109 < Icon
90110 svg = { < ArrowIosDownwardOutline /> }
91111 className = "ac-accordion-itemIndicator"
0 commit comments