"use client" import { Sidebar } from "@/components/sidebar/sidebar" import { SidebarSwitcher } from "@/components/sidebar/sidebar-switcher" import { Button } from "@/components/ui/button" import { Tabs } from "@/components/ui/tabs" import useHotkey from "@/lib/hooks/use-hotkey" import { cn } from "@/lib/utils" import { ContentType } from "@/types" import { IconChevronCompactRight } from "@tabler/icons-react" import { usePathname, useRouter, useSearchParams } from "next/navigation" import { FC, useState } from "react" import { useSelectFileHandler } from "../chat/chat-hooks/use-select-file-handler" import { CommandK } from "../utility/command-k" import { useTranslation } from 'react-i18next' export const SIDEBAR_WIDTH = 350 interface DashboardProps { children: React.ReactNode } export const Dashboard: FC = ({ children }) => { const { t } = useTranslation() useHotkey("s", () => setShowSidebar(prevState => !prevState)) const pathname = usePathname() const router = useRouter() const searchParams = useSearchParams() const tabValue = searchParams.get("tab") || "chats" const { handleSelectDeviceFile } = useSelectFileHandler() const [contentType, setContentType] = useState( tabValue as ContentType ) const [showSidebar, setShowSidebar] = useState( localStorage.getItem("showSidebar") === "true" ) const [isDragging, setIsDragging] = useState(false) const onFileDrop = (event: React.DragEvent) => { event.preventDefault() const files = event.dataTransfer.files const file = files[0] handleSelectDeviceFile(file) setIsDragging(false) } const handleDragEnter = (event: React.DragEvent) => { event.preventDefault() setIsDragging(true) } const handleDragLeave = (event: React.DragEvent) => { event.preventDefault() setIsDragging(false) } const onDragOver = (event: React.DragEvent) => { event.preventDefault() } const handleToggleSidebar = () => { setShowSidebar(prevState => !prevState) localStorage.setItem("showSidebar", String(!showSidebar)) } return (
{showSidebar && ( { setContentType(tabValue as ContentType) router.replace(`${pathname}?tab=${tabValue}`) }} > )}
{isDragging ? (
{t("side.dropFileHere")}
) : ( children )}
) }