"use client" import React from 'react' import { cn } from '../../utils/cn' import { Button } from '../ui/button' import { StatusBadge } from '../ui/status-badge' export interface SectionItem { id: string title: string subtitle?: string description?: string number?: string disabled?: boolean leftIcon?: React.ReactNode badge?: { text: string variant?: 'card' | 'button' colorScheme?: 'cyan' | 'pink' | 'yellow' | 'green' | 'purple' | 'default' } screenshots?: { src: string alt: string position: 'left' | 'center' | 'right' }[] } export interface SectionSelectorProps { sections: SectionItem[] activeSection: string onSectionChange: (sectionId: string) => void disabled?: boolean className?: string buttonClassName?: string activeButtonClassName?: string layout?: 'vertical' | 'wrap' buttonWidth?: 'auto' | 'full' | 'responsive' minHeight?: string showDescription?: boolean } // Button component for consistency const SectionButton: React.FC<{ section: SectionItem isActive: boolean disabled: boolean onClick: () => void layout: 'vertical' | 'wrap' widthClasses: string buttonClassName?: string activeButtonClassName?: string minHeight?: string showDescription?: boolean }> = ({ section, isActive, disabled, onClick, layout, widthClasses, buttonClassName, activeButtonClassName, minHeight = layout === 'vertical' ? '96px' : '76px', showDescription = true }) => { const titleClasses = "text-ods-text-primary" const subtitleClasses = "text-ods-text-secondary" const numberClasses = "text-ods-accent" const isDisabled = section.disabled || disabled; return ( {layout === 'vertical' ? ( // Vertical layout with optional number prefix and leftIcon {section.leftIcon && ( {section.leftIcon} )} {section.number && ( {section.number} )} {section.title} {section.badge && ( )} {section.description && showDescription && ( {section.description} )} ) : ( // Wrap layout with title, subtitle, and optional leftIcon {section.leftIcon && ( {section.leftIcon} )} {section.title} {section.badge && ( )} {section.subtitle && ( {section.subtitle} )} )} ) } export const SectionSelector: React.FC = ({ sections, activeSection, onSectionChange, disabled = false, className, buttonClassName, activeButtonClassName, layout = 'vertical', buttonWidth = 'auto', minHeight, showDescription = true }) => { const containerClasses = cn( layout === 'wrap' ? 'flex flex-wrap gap-2 md:gap-4 lg:gap-6' : 'flex flex-col gap-2', className ) const getButtonWidthClasses = () => { switch (buttonWidth) { case 'full': return 'w-full' case 'responsive': return 'w-full md:w-[calc(50%-8px)] lg:w-auto' default: return '' } } const widthClasses = getButtonWidthClasses() return ( {sections.map((section) => ( onSectionChange(section.id)} layout={layout} widthClasses={widthClasses} buttonClassName={buttonClassName} activeButtonClassName={activeButtonClassName} minHeight={minHeight} showDescription={showDescription} /> ))} ) } export default SectionSelector
{section.title}
{section.description}