FactuGES_ERP/packages/rdx-ui/src/components/layout/app-sidebar.tsx

262 lines
4.6 KiB
TypeScript

import {
AudioWaveform,
Command,
FileCheckIcon,
Frame,
GalleryVerticalEnd,
HomeIcon,
MapIcon,
PieChart,
} from "lucide-react";
import {
BarChartIcon,
CameraIcon,
ClipboardListIcon,
DatabaseIcon,
FileCodeIcon,
FileIcon,
FileTextIcon,
FolderIcon,
HelpCircleIcon,
LayoutDashboardIcon,
ListIcon,
SettingsIcon,
UsersIcon,
} from "lucide-react";
import * as React from "react";
import {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarHeader,
SidebarRail,
} from "@repo/shadcn-ui/components";
import { NavMain } from "./nav-main.tsx";
import { NavSecondary } from "./nav-secondary.tsx";
import { NavUser } from "./nav-user.tsx";
import { SearchForm } from "./search-form.tsx";
import { TeamSwitcher } from "./team-switcher.tsx";
const data = {
user: {
name: "shadcn",
email: "m@example.com",
avatar: "/avatars/shadcn.jpg",
},
navMain: [
{
title: "Dashboard",
url: "#",
icon: LayoutDashboardIcon,
},
{
title: "Lifecycle",
url: "#",
icon: ListIcon,
},
{
title: "Analytics",
url: "#",
icon: BarChartIcon,
},
{
title: "Projects",
url: "#",
icon: FolderIcon,
},
{
title: "Team",
url: "#",
icon: UsersIcon,
},
],
navClouds: [
{
title: "Capture",
icon: CameraIcon,
isActive: true,
url: "#",
items: [
{
title: "Active Proposals",
url: "#",
},
{
title: "Archived",
url: "#",
},
],
},
{
title: "Proposal",
icon: FileTextIcon,
url: "#",
items: [
{
title: "Active Proposals",
url: "#",
},
{
title: "Archived",
url: "#",
},
],
},
{
title: "Prompts",
icon: FileCodeIcon,
url: "#",
items: [
{
title: "Active Proposals",
url: "#",
},
{
title: "Archived",
url: "#",
},
],
},
],
navSecondary: [
{
title: "Ajustes",
url: "#",
icon: SettingsIcon,
},
{
title: "Soporte",
url: "#",
icon: HelpCircleIcon,
},
],
documents: [
{
name: "Data Library",
url: "#",
icon: DatabaseIcon,
},
{
name: "Reports",
url: "#",
icon: ClipboardListIcon,
},
{
name: "Word Assistant",
url: "#",
icon: FileIcon,
},
],
};
// This is sample data.
const data2 = {
user: {
name: "shadcn",
email: "m@example.com",
avatar: "/avatars/shadcn.jpg",
},
teams: [
{
name: "Acme Inc",
logo: GalleryVerticalEnd,
plan: "Enterprise",
},
{
name: "Acme Corp.",
logo: AudioWaveform,
plan: "Startup",
},
{
name: "Evil Corp.",
logo: Command,
plan: "Free",
},
],
navMain: [
{
title: "Inicio",
url: "/",
icon: HomeIcon,
isActive: true,
},
{
title: "Clientes",
icon: UsersIcon,
isActive: true,
items: [
{
title: "Listado de clientes",
url: "/customers",
},
{
title: "Añadir un cliente",
url: "/customers/create",
},
],
},
{
title: "Facturas proforma",
icon: FileTextIcon,
items: [
{
title: "Listado de proformas",
url: "/customer-proforma",
},
{
title: "Enviar a Veri*Factu",
url: "#",
},
],
},
{
title: "Facturas de cliente",
icon: FileCheckIcon,
items: [
{
title: "Listado de facturas",
url: "/customer-invoices",
},
],
},
],
projects: [
{
name: "Design Engineering",
url: "#",
icon: Frame,
},
{
name: "Sales & Marketing",
url: "#",
icon: PieChart,
},
{
name: "Travel",
url: "#",
icon: MapIcon,
},
],
};
export function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {
return (
<Sidebar collapsible='icon' {...props}>
<SidebarHeader className='mb-3'>
<TeamSwitcher teams={data2.teams} />
<SearchForm />
</SidebarHeader>
<SidebarContent>
<NavMain items={data2.navMain} />
</SidebarContent>
<SidebarFooter>
<NavSecondary items={data.navSecondary} className='mt-auto' />
<NavUser user={data.user} />
</SidebarFooter>
<SidebarRail />
</Sidebar>
);
}