Spaces:
Sleeping
Sleeping
File size: 4,552 Bytes
760b33c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
import React from 'react';
import { Tabs, TabsContent, TabsList, TabsTrigger } from './ui/tabs';
import { LearningModeSelector } from './LearningModeSelector';
import { UserGuide } from './UserGuide';
import { RadioGroup, RadioGroupItem } from './ui/radio-group';
import { Label } from './ui/label';
import { Button } from './ui/button';
import { RotateCcw, Settings, User, Users } from 'lucide-react';
import { Separator } from './ui/separator';
import { GroupMembers } from './GroupMembers';
import type { LearningMode, Language, SpaceType, GroupMember } from '../App';
interface LeftSidebarProps {
learningMode: LearningMode;
language: Language;
onLearningModeChange: (mode: LearningMode) => void;
onLanguageChange: (lang: Language) => void;
spaceType: SpaceType;
onSpaceTypeChange: (type: SpaceType) => void;
groupMembers: GroupMember[];
}
export function LeftSidebar({
learningMode,
language,
onLearningModeChange,
onLanguageChange,
spaceType,
onSpaceTypeChange,
groupMembers,
}: LeftSidebarProps) {
return (
<div className="flex-1 overflow-auto">
{/* Space Selector */}
<div className="p-4 border-b border-border space-y-3">
<Label>Workspace</Label>
<RadioGroup value={spaceType} onValueChange={(value) => onSpaceTypeChange(value as SpaceType)}>
<div className="flex items-center space-x-2 p-2 rounded-lg hover:bg-muted/50 transition-colors">
<RadioGroupItem value="individual" id="individual" />
<Label htmlFor="individual" className="cursor-pointer flex items-center gap-2 flex-1">
<User className="h-4 w-4" />
Individual Space
</Label>
</div>
<div className="flex items-center space-x-2 p-2 rounded-lg hover:bg-muted/50 transition-colors">
<RadioGroupItem value="group" id="group" />
<Label htmlFor="group" className="cursor-pointer flex items-center gap-2 flex-1">
<Users className="h-4 w-4" />
Group Space
</Label>
</div>
</RadioGroup>
</div>
{/* Group Members - Only show in group mode */}
{spaceType === 'group' && (
<div className="p-4 border-b border-border">
<GroupMembers members={groupMembers} />
</div>
)}
<Tabs defaultValue="settings" className="h-full flex flex-col">
<div className="px-4 pt-4">
<TabsList className="grid w-full grid-cols-2">
<TabsTrigger value="settings">Settings</TabsTrigger>
<TabsTrigger value="guide">Guide</TabsTrigger>
</TabsList>
</div>
<TabsContent value="settings" className="flex-1 mt-0 p-4 space-y-6">
<div className="space-y-4">
<div>
<h3>Model Settings</h3>
</div>
<div className="space-y-2">
<Label>Model</Label>
<div className="px-3 py-2 bg-muted rounded-md">
<code className="text-sm">gpt-4.1-mini</code>
</div>
</div>
<div className="space-y-2">
<Label>Language</Label>
<RadioGroup value={language} onValueChange={(value) => onLanguageChange(value as Language)}>
<div className="flex items-center space-x-2">
<RadioGroupItem value="auto" id="auto" />
<Label htmlFor="auto" className="cursor-pointer">Auto</Label>
</div>
<div className="flex items-center space-x-2">
<RadioGroupItem value="en" id="en" />
<Label htmlFor="en" className="cursor-pointer">English</Label>
</div>
<div className="flex items-center space-x-2">
<RadioGroupItem value="zh" id="zh" />
<Label htmlFor="zh" className="cursor-pointer">简体中文</Label>
</div>
</RadioGroup>
</div>
</div>
<Separator />
<div className="space-y-3">
<Button variant="outline" className="w-full gap-2" disabled>
<Settings className="h-4 w-4" />
System Settings
</Button>
<p className="text-xs text-muted-foreground text-center">
© 2025 Clare AI Teaching Assistant
</p>
</div>
</TabsContent>
<TabsContent value="guide" className="flex-1 mt-0 p-4">
<UserGuide />
</TabsContent>
</Tabs>
</div>
);
} |