import { CircleQuestionMark, Code2, FileText, X } from 'lucide-react' import PipelineSelector from './PipelineSelector' import ModelSelector from './ModelSelector' import ModelInfo from './ModelInfo' import { useModel } from '../contexts/ModelContext' import TextGenerationConfig from './pipelines/TextGenerationConfig' import FeatureExtractionConfig from './pipelines/FeatureExtractionConfig' import ZeroShotClassificationConfig from './pipelines/ZeroShotClassificationConfig' import ImageClassificationConfig from './pipelines/ImageClassificationConfig' import TextClassificationConfig from './pipelines/TextClassificationConfig' import TextToSpeechConfig from './pipelines/TextToSpeechConfig' import { Button } from '@/components/ui/button' import Tooltip from './Tooltip' interface SidebarProps { isOpen: boolean onClose: () => void setIsModalOpen: (isOpen: boolean) => void setIsCodeModalOpen: (isOpen: boolean) => void } const Sidebar = ({ isOpen, onClose, setIsModalOpen, setIsCodeModalOpen }: SidebarProps) => { const { pipeline, setPipeline, modelInfo } = useModel() return ( <> {/* Overlay */} {isOpen && (
)} {/* Sidebar */}
{/* Header */}

Configuration

{/* Content */}
{/* Pipeline Selection */}

Choose a Pipeline

{(pipeline === 'feature-extraction' || pipeline === 'image-classification') && ( WebGPU disabled{' '} )}
{/* Model Selection */}

Select Model

{/* Model Info */}
{/* Model README Button */}

{pipeline === 'text-generation' && } {pipeline === 'feature-extraction' && } {pipeline === 'zero-shot-classification' && ( )} {pipeline === 'image-classification' && ( )} {pipeline === 'text-classification' && } {pipeline === 'text-to-speech' && }
) } export default Sidebar