-
+
+
- ShadcnStore
- Admin Dashboard
+ İşletmem
+ {company.name}
@@ -230,14 +147,13 @@ export function AppSidebar({ ...props }: React.ComponentProps
) {
- {data.navGroups.map((group) => (
+ {navGroups.map((group) => (
))}
-
-
+
- )
+ );
}
diff --git a/src/components/layouts/base-layout.tsx b/src/components/layouts/base-layout.tsx
deleted file mode 100644
index 4d42209..0000000
--- a/src/components/layouts/base-layout.tsx
+++ /dev/null
@@ -1,105 +0,0 @@
-"use client"
-
-import * as React from "react"
-import { AppSidebar } from "@/components/app-sidebar"
-import { SiteHeader } from "@/components/site-header"
-import { SiteFooter } from "@/components/site-footer"
-import { ThemeCustomizer, ThemeCustomizerTrigger } from "@/components/theme-customizer"
-import { UpgradeToProButton } from "@/components/upgrade-to-pro-button"
-import { useSidebarConfig } from "@/hooks/use-sidebar-config"
-import {
- SidebarInset,
- SidebarProvider,
-} from "@/components/ui/sidebar"
-
-interface BaseLayoutProps {
- children: React.ReactNode
- title?: string
- description?: string
-}
-
-export function BaseLayout({ children, title, description }: BaseLayoutProps) {
- const [themeCustomizerOpen, setThemeCustomizerOpen] = React.useState(false)
- const { config } = useSidebarConfig()
-
- return (
-
- {config.side === "left" ? (
- <>
-
-
-
-
-
-
- {title && (
-
-
-
{title}
- {description && (
-
{description}
- )}
-
-
- )}
- {children}
-
-
-
-
-
- >
- ) : (
- <>
-
-
-
-
-
- {title && (
-
-
-
{title}
- {description && (
-
{description}
- )}
-
-
- )}
- {children}
-
-
-
-
-
-
- >
- )}
-
- {/* Theme Customizer */}
- setThemeCustomizerOpen(true)} />
-
-
-
- )
-}
diff --git a/src/components/nav-user.tsx b/src/components/nav-user.tsx
index 7be4dae..e3e7ccf 100644
--- a/src/components/nav-user.tsx
+++ b/src/components/nav-user.tsx
@@ -1,15 +1,15 @@
-"use client"
+"use client";
+import { useTransition } from "react";
import {
+ BellDot,
+ CircleUser,
CreditCard,
EllipsisVertical,
LogOut,
- BellDot,
- CircleUser,
-} from "lucide-react"
-import Link from "next/link"
+} from "lucide-react";
+import Link from "next/link";
-import { Logo } from "@/components/logo"
import {
DropdownMenu,
DropdownMenuContent,
@@ -18,24 +18,33 @@ import {
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuTrigger,
-} from "@/components/ui/dropdown-menu"
+} from "@/components/ui/dropdown-menu";
import {
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
useSidebar,
-} from "@/components/ui/sidebar"
+} from "@/components/ui/sidebar";
+import { signOutAction } from "@/lib/appwrite/auth-actions";
+
+function initials(name: string) {
+ const parts = name.trim().split(/\s+/).slice(0, 2);
+ return parts.map((p) => p[0]?.toUpperCase() ?? "").join("") || "?";
+}
export function NavUser({
user,
}: {
- user: {
- name: string
- email: string
- avatar: string
- }
+ user: { name: string; email: string };
}) {
- const { isMobile } = useSidebar()
+ const { isMobile } = useSidebar();
+ const [isPending, startTransition] = useTransition();
+
+ const handleSignOut = () => {
+ startTransition(async () => {
+ await signOutAction();
+ });
+ };
return (
@@ -46,14 +55,12 @@ export function NavUser({
size="lg"
className="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground cursor-pointer"
>
-
- < Logo size={28} />
+
+ {initials(user.name)}
{user.name}
-
- {user.email}
-
+ {user.email}
@@ -66,14 +73,12 @@ export function NavUser({
>
-
- < Logo size={28} />
+
+ {initials(user.name)}
{user.name}
-
- {user.email}
-
+ {user.email}
@@ -82,32 +87,34 @@ export function NavUser({
- Account
+ Profil
- Billing
+ Plan & Faturalama
- Notifications
+ Bildirimler
-
-
-
- Log out
-
+
+
+ {isPending ? "Çıkış yapılıyor..." : "Çıkış yap"}
- )
+ );
}
diff --git a/src/components/site-header.tsx b/src/components/site-header.tsx
index e0a3362..f8e8ddb 100644
--- a/src/components/site-header.tsx
+++ b/src/components/site-header.tsx
@@ -1,26 +1,29 @@
-"use client"
+"use client";
-import * as React from "react"
-import { Button } from "@/components/ui/button"
-import { Separator } from "@/components/ui/separator"
-import { SidebarTrigger } from "@/components/ui/sidebar"
-import { CommandSearch, SearchTrigger } from "@/components/command-search"
-import { ModeToggle } from "@/components/mode-toggle"
+import * as React from "react";
+import { Building2 } from "lucide-react";
-export function SiteHeader() {
- const [searchOpen, setSearchOpen] = React.useState(false)
+import { CommandSearch, SearchTrigger } from "@/components/command-search";
+import { ModeToggle } from "@/components/mode-toggle";
+import { Separator } from "@/components/ui/separator";
+import { SidebarTrigger } from "@/components/ui/sidebar";
+
+import type { ShellCompany } from "@/app/(dashboard)/dashboard-shell";
+
+export function SiteHeader({ company }: { company?: ShellCompany }) {
+ const [searchOpen, setSearchOpen] = React.useState(false);
React.useEffect(() => {
const down = (e: KeyboardEvent) => {
if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
- e.preventDefault()
- setSearchOpen((open) => !open)
+ e.preventDefault();
+ setSearchOpen((open) => !open);
}
- }
+ };
- document.addEventListener("keydown", down)
- return () => document.removeEventListener("keydown", down)
- }, [])
+ document.addEventListener("keydown", down);
+ return () => document.removeEventListener("keydown", down);
+ }, []);
return (
<>
@@ -31,45 +34,23 @@ export function SiteHeader() {
orientation="vertical"
className="mx-2 data-[orientation=vertical]:h-4"
/>
-
- setSearchOpen(true)} />
-
+
+ {company && (
+
+
+ {company.name}
+
+ )}
+
>
- )
+ );
}