mirror of
https://github.com/temetro/temetro.git
synced 2026-08-21 15:36:47 +00:00
97bf9ed8cc
- Linear-inspired dark theme (app/globals.css), forced dark in layout
- Clinical sidebar (components/sidebar-02) with temetro brand
- AI chat UI (components/chat): Cursor-style input, UI-only mock replies
- Settings page (components/settings): Polar-style tabs/sections, UI only
- Route-group app shell: app/(app)/{layout,page,settings}
- shadcn (Base UI) + ai-elements component libraries
- CLAUDE.md: architecture notes + per-folder commit policy
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
"use client";
|
|
|
|
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
|
|
import { Button } from "@/components/ui/button";
|
|
import {
|
|
DropdownMenu,
|
|
DropdownMenuContent,
|
|
DropdownMenuItem,
|
|
DropdownMenuLabel,
|
|
DropdownMenuSeparator,
|
|
DropdownMenuTrigger,
|
|
} from "@/components/ui/dropdown-menu";
|
|
import { BellIcon } from "lucide-react";
|
|
|
|
type Notification = {
|
|
id: string;
|
|
avatar: string;
|
|
fallback: string;
|
|
text: string;
|
|
time: string;
|
|
};
|
|
|
|
export function NotificationsPopover({
|
|
notifications,
|
|
}: {
|
|
notifications: Notification[];
|
|
}) {
|
|
return (
|
|
<DropdownMenu>
|
|
<DropdownMenuTrigger render={<Button variant="ghost" size="icon" className="rounded-full" aria-label="Open notifications" />}><BellIcon className="size-5" /></DropdownMenuTrigger>
|
|
<DropdownMenuContent side="right" className="w-80 my-6">
|
|
<DropdownMenuLabel>Notifications</DropdownMenuLabel>
|
|
<DropdownMenuSeparator />
|
|
{notifications.map(({ id, avatar, fallback, text, time }) => (
|
|
<DropdownMenuItem key={id} className="flex items-start gap-3">
|
|
<Avatar className="size-8">
|
|
<AvatarImage src={avatar} alt="Avatar" />
|
|
<AvatarFallback>{fallback}</AvatarFallback>
|
|
</Avatar>
|
|
<div className="flex flex-col">
|
|
<span className="text-sm font-medium">{text}</span>
|
|
<span className="text-xs text-muted-foreground">{time}</span>
|
|
</div>
|
|
</DropdownMenuItem>
|
|
))}
|
|
<DropdownMenuSeparator />
|
|
<DropdownMenuItem className="justify-center text-sm text-muted-foreground hover:text-primary">
|
|
View all notifications
|
|
</DropdownMenuItem>
|
|
</DropdownMenuContent>
|
|
</DropdownMenu>
|
|
);
|
|
}
|