import * as React from 'react' import Block from '../Primitives/Block/Block' import PrimitiveText from '../Primitives/PrimitiveText/PrimitiveText' import { AccordionV2Chevron } from './AccordionV2Chevron' import { AccordionV2ChevronPosition } from './accordionV2.types' import { AccordionV2TokensType } from './accordionV2.tokens' import { addPxToValue } from '../../global-utils/GlobalUtils' type AccordionV2TriggerContentProps = { title: string subtext?: string leftSlot?: React.ReactNode rightSlot?: React.ReactNode subtextSlot?: React.ReactNode isDisabled: boolean isExpanded: boolean chevronPosition: AccordionV2ChevronPosition accordionTokens: AccordionV2TokensType isSmallScreen: boolean } const getAriaHidden = (slot: React.ReactNode): boolean | undefined => { if (!React.isValidElement(slot)) return true const props = slot.props as Record return props['aria-label'] ? undefined : true } const ChevronContainer: React.FC<{ position: 'left' | 'right' isExpanded: boolean isDisabled: boolean chevronPosition: AccordionV2ChevronPosition accordionTokens: AccordionV2TokensType }> = ({ position, isExpanded, isDisabled, chevronPosition, accordionTokens, }) => { const isLeft = position === 'left' const isRight = position === 'right' const shouldShow = (isLeft && chevronPosition === AccordionV2ChevronPosition.LEFT) || (isRight && chevronPosition === AccordionV2ChevronPosition.RIGHT) if (!shouldShow) return null return ( ) } const SlotContainer: React.FC<{ slot: React.ReactNode dataElement: string accordionTokens: AccordionV2TokensType }> = ({ slot, dataElement, accordionTokens }) => { if (!slot) return null return ( {slot} ) } export const AccordionV2TriggerContent: React.FC< AccordionV2TriggerContentProps > = ({ title, subtext, leftSlot, rightSlot, subtextSlot, isDisabled, isExpanded, chevronPosition, accordionTokens, isSmallScreen, }) => { const isChevronLeft = chevronPosition === AccordionV2ChevronPosition.LEFT const showLeftSlot = leftSlot && !isChevronLeft return ( {showLeftSlot && ( )} {title} {rightSlot && ( )} {(subtext || subtextSlot) && ( {subtext && !isSmallScreen && ( {subtext} )} {subtextSlot && ( {subtextSlot} )} )} ) }