142 lines
4.9 KiB
TypeScript
142 lines
4.9 KiB
TypeScript
"use client"
|
|
|
|
import { useState } from "react"
|
|
import { Button } from "@/components/ui/button"
|
|
import { Switch } from "@/components/ui/switch"
|
|
import { Label } from "@/components/ui/label"
|
|
import { Separator } from "@/components/ui/separator"
|
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
|
|
import {
|
|
Select,
|
|
SelectContent,
|
|
SelectItem,
|
|
SelectTrigger,
|
|
SelectValue,
|
|
} from "@/components/ui/select"
|
|
import { Bell, Shield, Eye, Database } from "lucide-react"
|
|
|
|
export function SettingsCard() {
|
|
const [notifications, setNotifications] = useState(true)
|
|
const [auditLogs, setAuditLogs] = useState(true)
|
|
const [dataRetention, setDataRetention] = useState(false)
|
|
|
|
return (
|
|
<Card className="max-w-xl">
|
|
<CardHeader>
|
|
<CardTitle className="font-serif text-xl">System Configuration</CardTitle>
|
|
<CardDescription className="font-sans">
|
|
Configure your contained AI deployment. All settings remain within your environment.
|
|
</CardDescription>
|
|
</CardHeader>
|
|
<CardContent className="space-y-6">
|
|
{/* Notifications */}
|
|
<div className="flex items-center justify-between">
|
|
<div className="flex items-center gap-3">
|
|
<div className="flex h-9 w-9 items-center justify-center rounded-md bg-muted">
|
|
<Bell className="h-4 w-4 text-muted-foreground" />
|
|
</div>
|
|
<div>
|
|
<Label htmlFor="notifications" className="font-sans text-sm font-medium">
|
|
System Notifications
|
|
</Label>
|
|
<p className="font-sans text-xs text-muted-foreground">
|
|
Receive alerts for system events and anomalies
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<Switch
|
|
id="notifications"
|
|
checked={notifications}
|
|
onCheckedChange={setNotifications}
|
|
/>
|
|
</div>
|
|
|
|
<Separator />
|
|
|
|
{/* Audit Logs */}
|
|
<div className="flex items-center justify-between">
|
|
<div className="flex items-center gap-3">
|
|
<div className="flex h-9 w-9 items-center justify-center rounded-md bg-muted">
|
|
<Eye className="h-4 w-4 text-muted-foreground" />
|
|
</div>
|
|
<div>
|
|
<Label htmlFor="audit-logs" className="font-sans text-sm font-medium">
|
|
Audit Logging
|
|
</Label>
|
|
<p className="font-sans text-xs text-muted-foreground">
|
|
Record all system actions for compliance
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<Switch
|
|
id="audit-logs"
|
|
checked={auditLogs}
|
|
onCheckedChange={setAuditLogs}
|
|
/>
|
|
</div>
|
|
|
|
<Separator />
|
|
|
|
{/* Data Retention */}
|
|
<div className="flex items-center justify-between">
|
|
<div className="flex items-center gap-3">
|
|
<div className="flex h-9 w-9 items-center justify-center rounded-md bg-muted">
|
|
<Database className="h-4 w-4 text-muted-foreground" />
|
|
</div>
|
|
<div>
|
|
<Label htmlFor="data-retention" className="font-sans text-sm font-medium">
|
|
Extended Retention
|
|
</Label>
|
|
<p className="font-sans text-xs text-muted-foreground">
|
|
Keep processed data beyond 30 days
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<Switch
|
|
id="data-retention"
|
|
checked={dataRetention}
|
|
onCheckedChange={setDataRetention}
|
|
/>
|
|
</div>
|
|
|
|
<Separator />
|
|
|
|
{/* Security Level */}
|
|
<div className="flex items-center justify-between">
|
|
<div className="flex items-center gap-3">
|
|
<div className="flex h-9 w-9 items-center justify-center rounded-md bg-muted">
|
|
<Shield className="h-4 w-4 text-muted-foreground" />
|
|
</div>
|
|
<div>
|
|
<Label htmlFor="security-level" className="font-sans text-sm font-medium">
|
|
Security Profile
|
|
</Label>
|
|
<p className="font-sans text-xs text-muted-foreground">
|
|
Isolation and access control level
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<Select defaultValue="strict">
|
|
<SelectTrigger id="security-level" className="w-32">
|
|
<SelectValue />
|
|
</SelectTrigger>
|
|
<SelectContent>
|
|
<SelectItem value="standard">Standard</SelectItem>
|
|
<SelectItem value="strict">Strict</SelectItem>
|
|
<SelectItem value="airgapped">Air-gapped</SelectItem>
|
|
</SelectContent>
|
|
</Select>
|
|
</div>
|
|
|
|
<Separator />
|
|
|
|
{/* Actions */}
|
|
<div className="flex gap-3 pt-2">
|
|
<Button>Save Changes</Button>
|
|
<Button variant="outline">Reset to Defaults</Button>
|
|
</div>
|
|
</CardContent>
|
|
</Card>
|
|
)
|
|
}
|