task-managment / src / app / dashboard / stock / _components / StockList.tsx
StockList.tsx
Raw
"use client";


import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { cn } from "@/lib/utils";
import { lazy, Suspense, useState } from "react";
import { DialogCreateTools } from "./DialogCreateTool";
import { DialogCreateMaterials } from "./DialogCreateMaterial";
import { trpc } from "@/app/_trpc/client";
import { BrickWall, Hammer } from "lucide-react";
import Loading from "@/components/Loading";
import ErrorBoundary from "@/components/ErrorBoundary";
const MaterialList = lazy(()=>import("./MaterialsList"))
const DataTableTools = lazy(()=>import("./ToolList"))


const StockList = ({ searchParams }:{searchParams:Record<string,any>}) => {
  const [tab, setTab] = useState("materials");
 
  return (
    <div>

      <div className="">
        <Tabs defaultValue="materials" className=" w-full mt-10 ">
          <TabsList className=" w-full bg-transparent" asChild>
            <div className="flex  justify-between">
              <div>
                <TabsTrigger
                  value="materials"
                  name="materials"
                  className={cn(
                    "space-x-1 ",
                    tab === "materials" && "border-b-primary"
                  )}
                >
                  <BrickWall />
                   <span>Materiales</span>
                </TabsTrigger>
                <TabsTrigger
                  value="tools"
                  name="areas"
                  className={cn(
                    "space-x-1",
                    tab === "areas" && "border-b-primary"
                  )}
                >
                   <Hammer/>

                  <span>Herramientas</span>
                </TabsTrigger>
              </div>
            
            </div>
          </TabsList>
          <TabsContent
            value="materials"
            className="ml-1 w-full min-h-screen"
          >
            <div className="">
              <div className="flex justify-between items-center">
                
                  <h2 className="text-base md:text-xl font-bold capitalize pt-5 mb-5">
                    materiales
                  </h2>
                  <div>
                    <DialogCreateMaterials/>
                  </div>
              
              </div>

              <div>
                <ErrorBoundary>
                <Suspense fallback={<div className="grid place-content-center min-h-[50vh]"><Loading/></div>}>
                <MaterialList searchParams={searchParams}/>
                </Suspense>
                </ErrorBoundary>

              </div>
            </div>
          </TabsContent>
          <TabsContent
            value="tools"
            className="ml-1 w-full min-h-screen pt-5 space-y-10"
          >
            <div className=" justify-between items-center">
              <div className="flex justify-between">
                <div>
                  <h2 className="text-xl font-bold">Herramientas</h2>
                </div>
                <div>
                  <DialogCreateTools />
                </div>
              </div>
              <div>
              <ErrorBoundary>
              <Suspense fallback={<div className="grid place-content-center min-h-[50vh]"><Loading/></div>}>
              <DataTableTools  />
                </Suspense>
                </ErrorBoundary>
              </div>
            </div>
          </TabsContent>
        </Tabs>
      </div>
    </div>
  );
};

export default StockList;