# Demostack dashboard

A shadcn/ui block from the [@watermelon](https://ui.watermelon.sh) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/watermelon/demostack-dashboard).

- Page, with a live preview: https://shadcn.exchange/r/watermelon/demostack-dashboard
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/watermelon/demostack-dashboard-light-5579a06741e77222.png
- Registry item: https://registry.watermelon.sh/r/demostack-dashboard.json
- Listed: 2026-10-13, source last changed 2026-10-13

## Install

```bash
npx shadcn@latest add https://registry.watermelon.sh/r/demostack-dashboard.json
```

Run it in a project that has shadcn/ui set up. It adds the files below and installs what they depend on.

## Dependencies

- npm packages: `lucide-react`
- Registry items: `avatar`, `button`, `dropdown-menu`, `input-group`, `sidebar`, `tabs`, `tooltip`, `utils`

## Files

### `src/components/dashboards/demostack-dashboard/components/demostack/dashboard-content.tsx`

```tsx
"use client";

import { useRef, useState } from "react";
import { ArrowUpRight, ChevronRight, X } from "lucide-react";
import {
  BgFolderVector,
  DashboardFolderPlusIcon,
  DashboardImagesIcon,
  DashboardVideoIcon,
  FigGraduationIcon,
  FigLightbulbIcon,
  FigPlayIcon,
  FigSparkleIcon,
  InspireFourIcon,
  InspireOneIcon,
  InspireThreeIcon,
  InspireTwoIcon,
} from "./icons";
import { Button } from "@/components/ui/button";

const dashboardActions = [
  {
    title: "Create a Demostack",
    description: "Record an example Demostack in under 2 minutes",
    image: "https://assets.watermelon.sh/components/bg-element-wave.webp",
    icon: DashboardFolderPlusIcon,
  },
  {
    title: "Interactive Tutorial",
    description: "Get a high-level platform overview in a few clicks",
    image: "https://assets.watermelon.sh/components/bg-element-neon.webp",
    icon: DashboardVideoIcon,
  },
  {
    title: "Explore Gallery",
    description: "Get inspired with examples and use cases",
    image: "https://assets.watermelon.sh/components/bg-element-sky.webp",
    icon: DashboardImagesIcon,
  },
] as const;

const dashboardTips = [
  {
    title: "Use case tips from the CEO",
    description: "Our high-level recommendation",
    image: "https://assets.watermelon.sh/components/demostack-tip-1.webp",
  },
  {
    title: "Personalized outbound",
    description: "Use variables to send personalized demos at scale",
    image: "https://assets.watermelon.sh/components/demostack-tip-2.webp",
  },
  {
    title: "Tradeshow and expo demos",
    description: "Include in email sequences or follow-ups",
    image: "https://assets.watermelon.sh/components/demostack-tip-3.webp",
  },
  {
    title: "Modular onboarding emails",
    description: "Include in email sequences or follow-ups",
    image: "https://assets.watermelon.sh/components/demostack-tip-4.webp",
  },
] as const;

const inspiredDemos = [
  { title: "Mobile App Demo", icon: InspireOneIcon },
  { title: "Payment Flow Demo", icon: InspireTwoIcon },
  { title: "Team Workspace Demo", icon: InspireThreeIcon },
  { title: "Analytics Platform Demo", icon: InspireFourIcon },
] as const;

const dashboardResources = [
  { label: "Learning Academy", icon: FigGraduationIcon },
  { label: "Knowledge Base", icon: FigLightbulbIcon },
  { label: "How we use Demostack", icon: FigPlayIcon },
  { label: "Product Updates", icon: FigSparkleIcon },
] as const;

export function DashboardContent() {
  return (
    <div className="mx-auto w-full max-w-6xl space-y-10.5 px-4 py-6 md:px-7 md:py-8">
      <section className="grid grid-cols-1 gap-4 md:grid-cols-3">
        {dashboardActions.map((action) => (
          <DashboardActionCard key={action.title} action={action} />
        ))}
      </section>

      <DashboardTips />

      <div className="flex flex-col gap-8 lg:flex-row">
        <ResourcesSection />
        <InspirationList />
      </div>
    </div>
  );
}

function DashboardActionCard({
  action,
}: {
  action: (typeof dashboardActions)[number];
}) {
  const Icon = action.icon;

  return (
    <div className="flex w-full flex-col items-start gap-8 rounded-2xl border px-4 pt-4 pb-3.5 transition-colors hover:bg-secondary">
      <div className="relative flex size-11 items-center justify-center overflow-hidden rounded-lg">
        <img
          src={action.image}
          alt=""
          width={44}
          height={44}
          className="absolute inset-0 size-full object-cover"
        />
        <Icon className="text-primary-foreground relative z-10 size-6" />
      </div>

      <div className="flex w-full flex-col gap-1">
        <p className="font-medium">{action.title}</p>
        <p className="text-muted-foreground text-sm leading-4.5">
          {action.description}
        </p>
      </div>
    </div>
  );
}

function DashboardTips() {
  const [visible, setVisible] = useState(true);
  const scrollRef = useRef<HTMLDivElement>(null);

  if (!visible) {
    return null;
  }

  function scrollRight() {
    if (scrollRef.current) {
      scrollRef.current.scrollBy({
        left: scrollRef.current.clientWidth,
        behavior: "smooth",
      });
    }
  }

  return (
    <section className="flex flex-col gap-8">
      <div className="flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between">
        <div className="min-w-0 flex-1">
          <h2 className="text-lg font-semibold">Demostack Tips</h2>
          <p className="text-muted-foreground mt-2 max-w-prose">
            Drive successful outcomes across multiple departments and
            interactive demos
          </p>
        </div>

        <Button
          variant="secondary"
          onClick={() => setVisible(false)}
          className="h-auto shrink-0 self-start rounded-full px-5 py-3"
          aria-label="Close tips"
        >
          Close Tips
          <X className="size-4.5" />
        </Button>
      </div>

      <div className="relative overflow-hidden">
        <div
          ref={scrollRef}
          className="flex gap-6 overflow-x-auto scroll-smooth pb-2"
        >
          {dashboardTips.map((tip) => (
            <article
              key={tip.title}
              className="group flex w-64 shrink-0 flex-col items-start gap-4"
            >
              <div className="relative aspect-[3/2] w-64 overflow-hidden rounded-2xl">
                <img
                  src={tip.image}
                  alt=""
                  width={256}
                  height={176}
                  className="size-full object-cover motion-safe:transition-transform motion-safe:duration-300 motion-safe:ease-out motion-safe:group-hover:scale-105"
                />
              </div>

              <div className="flex w-full flex-col gap-1">
                <h3 className="font-medium">{tip.title}</h3>
                <p className="text-muted-foreground text-sm">
                  {tip.description}
                </p>
              </div>
            </article>
          ))}
        </div>

        <div className="from-background via-background/70 absolute top-0 right-0 h-64 w-16 bg-gradient-to-l to-transparent md:w-36" />

        <Button
          variant="outline"
          size="icon-lg"
          onClick={scrollRight}
          className="bg-secondary absolute top-28 right-0 z-10 flex rounded-full border-0"
          aria-label="Show more tips"
        >
          <ChevronRight className="size-5" />
        </Button>
      </div>
    </section>
  );
}
function ResourcesSection() {
  return (
    <section className="flex flex-1 flex-col items-start gap-8 lg:max-w-lg">
      <h2 className="text-lg font-semibold">Resources</h2>
      <div className="grid w-full grid-cols-2 gap-4">
        {dashboardResources.map((resource) => {
          const Icon = resource.icon;

          return (
            <div
              key={resource.label}
              className="group flex flex-col items-start gap-3 cursor-pointer"
            >
              <div className="bg-secondary flex h-32 w-full items-center justify-center overflow-hidden rounded-xl">
                <div className="relative flex size-20 items-center justify-center transition-transform duration-200 ease-out group-hover:-translate-y-1 group-hover:rotate-1">
                  <BgFolderVector className="absolute inset-0 size-full" />
                  <Icon className="relative z-10 mt-4 size-6 transition-transform duration-200 ease-out group-hover:scale-110" />
                </div>
              </div>
              <h3 className="font-medium">{resource.label}</h3>
            </div>
          );
        })}
      </div>
    </section>
  );
}

function InspirationList() {
  return (
    <section className="flex flex-1 flex-col items-start gap-8">
      <h2 className="text-lg font-semibold">Get Inspired</h2>
      <div className="flex w-full flex-col gap-2">
        {inspiredDemos.map((item) => {
          const Icon = item.icon;

          return (
            <div
              key={item.title}
              className="bg-secondary group flex h-18 w-full items-center justify-between rounded-2xl py-4 pr-8 pl-6 cursor-pointer"
            >
              <div className="flex items-center gap-4">
                <div className="flex size-8 shrink-0 items-center justify-center">
                  <Icon className="max-h-7 max-w-7 transition-transform duration-200 ease-out group-hover:scale-105" />
                </div>
                <h3 className="font-medium">{item.title}</h3>
              </div>
              <ArrowUpRight className="text-muted-foreground size-6 transition-transform duration-200 ease-out group-hover:translate-x-1 group-hover:-translate-y-1" />
            </div>
          );
        })}
      </div>
    </section>
  );
}
```

### `src/components/dashboards/demostack-dashboard/components/demostack/demostacks-content.tsx`

```tsx
"use client";

import { useMemo, useState, type ReactNode } from "react";
import {
  Archive,
  ArrowDownWideNarrow,
  Copy,
  EllipsisVertical,
  ExternalLink,
  Filter,
  FolderInput,
  FolderPlus,
  Grid2X2,
  Info,
  List,
  Pencil,
  Plus,
  Trash2,
  UserRound,
  Users,
} from "lucide-react";
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
import { Button, buttonVariants } from "@/components/ui/button";
import {
  DropdownMenu,
  DropdownMenuCheckboxItem,
  DropdownMenuContent,
  DropdownMenuGroup,
  DropdownMenuItem,
  DropdownMenuLabel,
  DropdownMenuRadioGroup,
  DropdownMenuRadioItem,
  DropdownMenuSeparator,
  DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import {
  Tooltip,
  TooltipContent,
  TooltipTrigger,
} from "@/components/ui/tooltip";
import { cn } from "@/lib/utils";
import { demostacks, type Demostack } from "../../data";

const demostackAuthors = [
  ...new Set(demostacks.map((demostack) => demostack.author)),
];

const sortLabels = {
  recent: "Recent",
  ascending: "Title A-Z",
  descending: "Title Z-A",
} as const;

type SortMode = keyof typeof sortLabels;
type ViewMode = "grid" | "list";

function getInitials(name: string) {
  return name
    .trim()
    .split(/\s+/)
    .map((part) => part[0])
    .join("")
    .toUpperCase()
    .slice(0, 2);
}

export function DemostacksContent() {
  const [sort, setSort] = useState<SortMode>("recent");
  const [selectedAuthors, setSelectedAuthors] = useState<string[]>([]);
  const [view, setView] = useState<ViewMode>("grid");

  const visibleDemostacks = useMemo(() => {
    const filtered = selectedAuthors.length
      ? demostacks.filter((demostack) =>
          selectedAuthors.includes(demostack.author),
        )
      : demostacks;

    if (sort === "ascending") {
      return [...filtered].sort((a, b) => a.title.localeCompare(b.title));
    }
    if (sort === "descending") {
      return [...filtered].sort((a, b) => b.title.localeCompare(a.title));
    }
    return filtered;
  }, [selectedAuthors, sort]);

  return (
    <Tabs defaultValue="demostacks">
      <main className="mx-auto w-full max-w-6xl px-4 py-6 md:px-7 md:py-8">
        <div className="flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between sm:gap-5">
          <div className="flex items-center gap-2">
            <h2 className="text-2xl font-semibold">Team Demostacks</h2>
            <Tooltip>
              <TooltipTrigger>
                <Info className="size-4.5" />
              </TooltipTrigger>
              <TooltipContent>
                Demostacks shared with everyone in your workspace
              </TooltipContent>
            </Tooltip>
          </div>

          <div className="flex w-full min-w-0 items-center gap-2 sm:ml-auto sm:w-auto sm:gap-4">
            <TabsList className="bg-secondary h-auto w-full min-w-0 flex-1 gap-1 rounded-[14px] p-1 group-data-horizontal/tabs:h-auto sm:w-auto sm:flex-none sm:gap-3">
              <TabCapsule value="demostacks">Demostacks</TabCapsule>
              <TabCapsule value="screenshots">Screenshots</TabCapsule>
            </TabsList>
            <DropdownMenu>
              <DropdownMenuTrigger
                type="button"
                className={buttonVariants({
                  className:
                    "h-11 shrink-0 gap-1 rounded-xl px-3 text-base sm:px-4",
                })}
              >
                Create <Plus />
              </DropdownMenuTrigger>
              <DropdownMenuContent align="end" className="w-48">
                <DropdownMenuItem>
                  <Plus />
                  New Demostack
                </DropdownMenuItem>
                <DropdownMenuItem>
                  <Plus />
                  New Screenshot
                </DropdownMenuItem>
              </DropdownMenuContent>
            </DropdownMenu>
          </div>
        </div>

        <TabsContent value="demostacks">
          <Tabs
            defaultValue="shared"
            className="mt-6 gap-4 md:mt-10.5! md:gap-8"
          >
            <DemostacksToolbar
              sort={sort}
              setSort={setSort}
              selectedAuthors={selectedAuthors}
              setSelectedAuthors={setSelectedAuthors}
              view={view}
              setView={setView}
            />
            <TabsContent value="shared">
              <DemostackCollection demos={visibleDemostacks} view={view} />
            </TabsContent>
            <TabsContent value="personal">
              <EmptyState
                title="No personal Demostacks yet"
                description="Demostacks visible only to you will appear here."
              />
            </TabsContent>
            <TabsContent value="archive">
              <EmptyState
                title="Archive is empty"
                description="Archived Demostacks will appear here."
              />
            </TabsContent>
          </Tabs>
        </TabsContent>
        <TabsContent value="screenshots">
          <EmptyState
            title="No screenshots yet"
            description="Create a screenshot to see it in this workspace."
            className="mt-10"
          />
        </TabsContent>
      </main>
    </Tabs>
  );
}

function TabCapsule({
  value,
  children,
}: {
  value: string;
  children: ReactNode;
}) {
  return (
    <TabsTrigger
      value={value}
      className="data-active:bg-primary/10 data-active:text-primary h-9 min-w-0 flex-1 gap-2 rounded-[10px] px-3 py-2.5 text-sm sm:flex-none sm:px-6 sm:py-3 sm:text-base"
    >
      {children}
    </TabsTrigger>
  );
}

type DemostacksToolbarProps = {
  sort: SortMode;
  setSort: (sort: SortMode) => void;
  selectedAuthors: string[];
  setSelectedAuthors: (authors: string[]) => void;
  view: ViewMode;
  setView: (view: ViewMode) => void;
};

function DemostacksToolbar({
  sort,
  setSort,
  selectedAuthors,
  setSelectedAuthors,
  view,
  setView,
}: DemostacksToolbarProps) {
  function toggleAuthor(author: string, checked: boolean) {
    setSelectedAuthors(
      checked
        ? [...selectedAuthors, author]
        : selectedAuthors.filter((item) => item !== author),
    );
  }

  return (
    <div className="flex flex-col gap-4 border-b lg:flex-row lg:items-end lg:justify-between">
      <TabsList
        variant="line"
        className="h-11 w-full max-w-full gap-0 rounded-none bg-transparent p-0 group-data-horizontal/tabs:h-11 sm:w-auto"
      >
        <WorkspaceTab value="shared" icon={Users}>
          <span className="sm:hidden">Team</span>
          <span className="hidden sm:inline">Shared with Team</span>
        </WorkspaceTab>
        <WorkspaceTab value="personal" icon={UserRound}>
          Personal
        </WorkspaceTab>
        <WorkspaceTab value="archive" icon={Archive}>
          Archive
        </WorkspaceTab>
      </TabsList>

      <div className="flex w-full flex-wrap items-center gap-2 pb-3 lg:w-auto lg:gap-3 lg:pb-2">
        <DropdownMenu>
          <DropdownMenuTrigger
            type="button"
            className={buttonVariants({
              variant: "outline",
              className:
                "text-muted-foreground mr-auto h-11 gap-1 rounded-xl px-4 py-3",
            })}
          >
            <ArrowDownWideNarrow className="size-5" />
            {sortLabels[sort]}
          </DropdownMenuTrigger>
          <DropdownMenuContent align="start" className="w-48">
            <DropdownMenuRadioGroup
              value={sort}
              onValueChange={(value) => setSort(value as SortMode)}
            >
              <DropdownMenuLabel>Sort by</DropdownMenuLabel>
              {Object.entries(sortLabels).map(([value, label]) => (
                <DropdownMenuRadioItem key={value} value={value}>
                  {label}
                </DropdownMenuRadioItem>
              ))}
            </DropdownMenuRadioGroup>
          </DropdownMenuContent>
        </DropdownMenu>

        <DropdownMenu>
          <DropdownMenuTrigger
            type="button"
            className={buttonVariants({
              variant: "outline",
              className: cn(
                "text-muted-foreground h-11 gap-1 rounded-xl px-4 py-3",
                selectedAuthors.length && "bg-muted",
              ),
            })}
            aria-label="Filter by creator"
          >
            <Filter className="size-5" />
            <span className="hidden sm:inline">Filter</span>
            {selectedAuthors.length > 0 && (
              <span className="bg-primary text-primary-foreground flex size-5 items-center justify-center rounded-full text-xs">
                {selectedAuthors.length}
              </span>
            )}
          </DropdownMenuTrigger>
          <DropdownMenuContent align="end" className="w-52">
            <DropdownMenuGroup>
              <DropdownMenuLabel>Filter by creator</DropdownMenuLabel>
              {demostackAuthors.map((author) => (
                <DropdownMenuCheckboxItem
                  key={author}
                  checked={selectedAuthors.includes(author)}
                  onCheckedChange={(checked) => toggleAuthor(author, checked)}
                >
                  {author}
                </DropdownMenuCheckboxItem>
              ))}
            </DropdownMenuGroup>
            {selectedAuthors.length > 0 && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem onClick={() => setSelectedAuthors([])}>
                  Clear filters
                </DropdownMenuItem>
              </>
            )}
          </DropdownMenuContent>
        </DropdownMenu>

        <DropdownMenu>
          <DropdownMenuTrigger
            type="button"
            className={buttonVariants({
              variant: "outline",
              className: "text-muted-foreground size-11 rounded-xl",
            })}
            aria-label="Folder options"
          >
            <FolderPlus className="size-5" />
          </DropdownMenuTrigger>
          <DropdownMenuContent align="end" className="w-44">
            <DropdownMenuItem>
              <FolderPlus />
              New folder
            </DropdownMenuItem>
            <DropdownMenuItem>
              <FolderInput />
              Manage folders
            </DropdownMenuItem>
          </DropdownMenuContent>
        </DropdownMenu>

        <Button
          variant="outline"
          className={cn(
            "text-muted-foreground size-11 rounded-xl",
            view === "list" && "bg-muted",
          )}
          aria-label={view === "grid" ? "Use list view" : "Use grid view"}
          onClick={() => setView(view === "grid" ? "list" : "grid")}
        >
          {view === "grid" ? (
            <List className="size-5" />
          ) : (
            <Grid2X2 className="size-5" />
          )}
        </Button>
      </div>
    </div>
  );
}

function WorkspaceTab({
  value,
  icon: Icon,
  children,
}: {
  value: string;
  icon: typeof Users;
  children: ReactNode;
}) {
  return (
    <TabsTrigger
      value={value}
      className="data-active:text-primary data-active:after:bg-primary h-11 min-w-0 flex-1 justify-center gap-1.5 rounded-none px-2 py-2 text-sm sm:flex-none sm:justify-start sm:gap-2 sm:pr-6 sm:pl-4 sm:text-base group-data-horizontal/tabs:after:-bottom-px"
    >
      <Icon className="size-5" />
      {children}
    </TabsTrigger>
  );
}

function DemostackCollection({
  demos,
  view,
}: {
  demos: Demostack[];
  view: ViewMode;
}) {
  if (!demos.length) {
    return (
      <EmptyState
        title="No matching Demostacks"
        description="Clear or change the active creator filters."
      />
    );
  }

  return (
    <section
      className={cn(
        view === "grid"
          ? "grid grid-cols-1 gap-6 sm:grid-cols-2 xl:grid-cols-4"
          : "space-y-3",
      )}
    >
      {demos.map((demostack) => (
        <article
          key={demostack.id}
          className={cn(
            "group cursor-pointer",
            view === "list" &&
              "hover:bg-muted/40 flex w-full max-w-full items-center gap-3 overflow-hidden rounded-2xl border p-3 transition sm:gap-4",
          )}
        >
          <div
            className={cn(
              "relative aspect-[3/2] overflow-hidden rounded-2xl border",
              view === "list" && "w-2/5 max-w-44 shrink-0",
            )}
          >
            <img
              src={demostack.image}
              alt=""
              width={1200}
              height={800}
              className="size-full object-cover motion-safe:transition-transform motion-safe:duration-300 motion-safe:ease-out motion-safe:group-hover:scale-105"
            />
          </div>

          <div className={cn("space-y-2", view === "grid" ? "mt-4" : "flex-1")}>
            <div className="flex items-center justify-between gap-3">
              <div className="flex-1">
                <h3 className="group-hover:text-primary truncate font-medium transition-colors">
                  {demostack.title}
                </h3>
              </div>
              <CardMenu title={demostack.title} />
            </div>
            <div className="text-muted-foreground flex items-center gap-2 text-xs">
              <Avatar size="sm" className="shrink-0">
                <AvatarImage src={demostack.avatar} alt={demostack.author} />
                <AvatarFallback>{getInitials(demostack.author)}</AvatarFallback>
              </Avatar>
              <span className="truncate">{demostack.author}</span>
              <span aria-hidden>·</span>
              <time className="shrink-0" dateTime="2026-03-02">
                Mar 02
              </time>
            </div>
          </div>
        </article>
      ))}
    </section>
  );
}

function CardMenu({ title }: { title: string }) {
  return (
    <DropdownMenu>
      <DropdownMenuTrigger
        className={buttonVariants({
          variant: "ghost",
          size: "icon-xs",
          className: "text-muted-foreground rounded-full",
        })}
        aria-label={`More options for ${title}`}
      >
        <EllipsisVertical className="size-4" />
      </DropdownMenuTrigger>
      <DropdownMenuContent align="end" className="w-44">
        <DropdownMenuItem>
          <ExternalLink />
          Open
        </DropdownMenuItem>
        <DropdownMenuItem>
          <Pencil />
          Rename
        </DropdownMenuItem>
        <DropdownMenuItem>
          <Copy />
          Duplicate
        </DropdownMenuItem>
        <DropdownMenuItem>
          <FolderInput />
          Move to folder
        </DropdownMenuItem>
        <DropdownMenuSeparator />
        <DropdownMenuItem>
          <Archive />
          Archive
        </DropdownMenuItem>
        <DropdownMenuItem variant="destructive">
          <Trash2 />
          Delete
        </DropdownMenuItem>
      </DropdownMenuContent>
    </DropdownMenu>
  );
}

function EmptyState({
  title,
  description,
  className,
}: {
  title: string;
  description: string;
  className?: string;
}) {
  return (
    <div
      className={cn(
        "bg-muted/40 flex min-h-64 flex-col items-center justify-center gap-2 rounded-2xl border border-dashed px-6 text-center",
        className,
      )}
    >
      <p className="font-medium">{title}</p>
      <p className="text-muted-foreground text-sm">{description}</p>
    </div>
  );
}
```

### `src/components/dashboards/demostack-dashboard/components/demostack/icons.tsx`

```tsx
export function BgFolderVector({
  className,
  fill0 = "#4338CB",
}: {
  className?: string;
  fill0?: string;
}) {
  return (
    <svg
      className={className}
      preserveAspectRatio="none"
      viewBox="0 0 79.2157 80"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M0 76.8627C0 78.5954 1.4046 80 3.13726 80H76.0784C77.8111 80 79.2157 78.5954 79.2157 76.8627V42.3529C79.2157 42.3529 66.6667 57.2549 39.0293 68.2353C23.2366 74.5098 0 74.5098 0 74.5098V76.8627Z"
        fill={fill0}
      />
      <path
        d="M48.0858 25.098C46.965 25.098 45.9293 24.5001 45.3689 23.5294L40.8406 15.6863C39.7198 13.7449 37.6484 12.549 35.4067 12.549H5.4902C2.45805 12.549 0 15.0071 0 18.0392V74.5098C0 74.5098 23.2366 74.5098 39.0293 68.2353C66.6667 57.2549 79.2157 42.3529 79.2157 42.3529V30.5882C79.2157 27.5561 76.7576 25.098 73.7255 25.098H48.0858Z"
        fill="#6255FD"
      />
      <path
        d="M35.4067 12.549C37.6484 12.549 39.7198 13.7449 40.8406 15.6863L45.3689 23.5294C45.9293 24.5001 46.965 25.098 48.0858 25.098H73.7255V19.6078H50.2882C49.2493 19.6078 48.2778 19.0936 47.6937 18.2345L40.8968 8.23696C39.7286 6.51873 37.7856 5.4902 35.7079 5.4902H7.05882C6.19249 5.4902 5.4902 6.19249 5.4902 7.05882V12.549H35.4067Z"
        fill="#847AFA"
        fillOpacity={0.5}
      />
      <path
        d="M35.7079 5.4902C37.7856 5.4902 39.7286 6.51873 40.8968 8.23696L47.6937 18.2345C48.2778 19.0936 49.2493 19.6078 50.2882 19.6078H73.7255V3.13725C73.7255 1.4046 72.3209 0 70.5882 0H10.1961C8.46342 0 7.05882 1.4046 7.05882 3.13725V5.4902H35.7079Z"
        fill="#D0CDF7"
        fillOpacity={0.5}
      />
    </svg>
  );
}

export function BuildingIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      width="14"
      height="14"
      viewBox="0 0 14 14"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <g id="BuildingOffice">
        <path
          id="Vector"
          d="M13.5625 11.375H12.6875V5.25C12.8035 5.25 12.9148 5.20391 12.9969 5.12186C13.0789 5.03981 13.125 4.92853 13.125 4.8125C13.125 4.69647 13.0789 4.58519 12.9969 4.50314C12.9148 4.42109 12.8035 4.375 12.6875 4.375H10.0625V2.625C10.1785 2.625 10.2898 2.57891 10.3719 2.49686C10.4539 2.41481 10.5 2.30353 10.5 2.1875C10.5 2.07147 10.4539 1.96019 10.3719 1.87814C10.2898 1.79609 10.1785 1.75 10.0625 1.75H2.1875C2.07147 1.75 1.96019 1.79609 1.87814 1.87814C1.79609 1.96019 1.75 2.07147 1.75 2.1875C1.75 2.30353 1.79609 2.41481 1.87814 2.49686C1.96019 2.57891 2.07147 2.625 2.1875 2.625V11.375H1.3125C1.19647 11.375 1.08519 11.4211 1.00314 11.5031C0.921094 11.5852 0.875 11.6965 0.875 11.8125C0.875 11.6965 13.9539 11.5852 13.8719 11.5031C13.7898 11.4211 13.6785 11.375 13.5625 11.375ZM11.8125 5.25V11.375H10.0625V5.25H11.8125ZM3.0625 2.625H9.1875V11.375H7.875V8.75C7.875 8.63397 7.82891 8.52269 7.74686 8.44064C7.66481 8.35859 7.55353 8.3125 7.4375 8.3125H4.8125C4.69647 8.3125 4.58519 8.35859 4.50314 8.44064C4.42109 8.52269 4.375 8.63397 4.375 8.75V11.375H3.0625V2.625ZM7 11.375H5.25V9.1875H7V11.375ZM3.9375 4.375C3.9375 4.25897 3.98359 4.14769 4.06564 4.06564C4.14769 3.98359 4.25897 3.9375 4.375 3.9375H5.25C5.36603 3.9375 5.47731 3.98359 5.55936 4.06564C5.64141 4.14769 5.6875 4.25897 5.6875 4.375C5.6875 4.49103 5.64141 4.60231 5.55936 4.68436C5.47731 4.76641 5.36603 4.8125 5.25 4.8125H4.375C4.25897 4.8125 4.14769 4.76641 4.06564 4.68436C3.98359 4.60231 3.9375 4.49103 3.9375 4.375ZM6.5625 4.375C6.5625 4.25897 6.60859 4.14769 6.69064 4.06564C6.77269 3.98359 6.88397 3.9375 7 3.9375H7.875C7.99103 3.9375 8.10231 3.98359 8.18436 4.06564C8.26641 4.14769 8.3125 4.25897 8.3125 4.375C8.3125 4.49103 8.26641 4.60231 8.18436 4.68436C8.10231 4.76641 7.99103 4.8125 7.875 4.8125H7C6.88397 4.8125 6.77269 4.76641 6.69064 4.68436C6.60859 4.60231 6.5625 4.49103 6.5625 4.375ZM3.9375 6.5625C3.9375 6.44647 3.98359 6.33519 4.06564 6.25314C4.14769 6.17109 4.25897 6.125 4.375 6.125H5.25C5.36603 6.125 5.47731 6.17109 5.55936 6.25314C5.64141 6.33519 5.6875 6.44647 5.6875 6.5625C5.6875 6.67853 5.64141 6.78981 5.55936 6.87186C5.47731 6.95391 5.36603 7 5.25 7H4.375C4.25897 7 4.14769 6.95391 4.06564 6.87186C3.98359 6.78981 3.9375 6.67853 3.9375 6.5625ZM6.5625 6.5625C6.5625 6.44647 6.60859 6.33519 6.69064 6.25314C6.77269 6.17109 6.88397 6.125 7 6.125H7.875C7.99103 6.125 8.10231 6.17109 8.18436 6.25314C8.26641 6.33519 8.3125 6.44647 8.3125 6.5625C8.3125 6.67853 8.26641 6.78981 8.18436 6.87186C8.10231 6.95391 7.99103 7 7.875 7H7C6.88397 7 6.77269 6.95391 6.69064 6.87186C6.60859 6.78981 6.5625 6.67853 6.5625 6.5625Z"
          fill="white"
        />
      </g>
    </svg>
  );
}

export function CaretUpDownIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      width="18"
      height="18"
      viewBox="0 0 18 18"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <g id="CaretUpDown">
        <path
          id="Vector"
          d="M12.7733 11.9771C12.8256 12.0293 12.8671 12.0914 12.8954 12.1597C12.9237 12.228 12.9383 12.3012 12.9383 12.3751C12.9383 12.449 12.9237 12.5222 12.8954 12.5905C12.8671 12.6588 12.8256 12.7208 12.7733 12.773L9.39828 16.148C9.34604 16.2003 9.284 16.2418 9.21572 16.2701C9.14743 16.2984 9.07423 16.313 9.00031 16.313C8.92639 16.313 8.8532 16.2984 8.78491 16.2701C8.71662 16.2418 8.65458 16.2003 8.60234 16.148L5.22734 12.773C5.1218 12.6675 5.0625 12.5243 5.0625 12.3751C5.0625 12.2258 5.1218 12.0827 5.22734 11.9771C5.33289 11.8716 5.47605 11.8123 5.62531 11.8123C5.77458 11.8123 5.91773 11.8716 6.02328 11.9771L9.00031 14.9548L11.9773 11.9771C12.0296 11.9248 12.0916 11.8833 12.1599 11.855C12.2282 11.8267 12.3014 11.8121 12.3753 11.8121C12.4492 11.8121 12.5224 11.8267 12.5907 11.855C12.659 11.8833 12.721 11.9248 12.7733 11.9771ZM6.02328 6.02305L9.00031 3.04531L11.9773 6.02305C12.0829 6.12859 12.226 6.18789 12.3753 6.18789C12.5246 6.18789 12.6677 6.12859 12.7733 6.02305C12.8788 5.9175 12.9381 5.77434 12.9381 5.62508C12.9381 5.47581 12.8788 5.33266 12.7733 5.22711L9.39828 1.85211C9.34604 1.79981 9.284 1.75832 9.21572 1.73001C9.14743 1.7017 9.07423 1.68713 9.00031 1.68713C8.92639 1.68713 8.8532 1.7017 8.78491 1.73001C8.71662 1.75832 8.65458 1.79981 8.60234 1.85211L5.22734 5.22711C5.1218 5.33266 5.0625 5.47581 5.0625 5.62508C5.0625 5.77434 5.1218 5.9175 5.22734 6.02304C5.33289 6.12859 5.47605 6.18789 5.62531 6.18789C5.77458 6.18789 5.91773 6.12859 6.02328 6.02305Z"
          fill="#4d5265"
        />
      </g>
    </svg>
  );
}

export function DashboardFolderPlusIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      viewBox="0 0 24 24"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M20.25 6.75H12.3103L9.75 4.18969C9.61122 4.04979 9.44601 3.93888 9.26398 3.8634C9.08196 3.78792 8.88674 3.74937 8.68969 3.75H3.75C3.35218 3.75 2.97064 3.90804 2.68934 4.18934C2.40804 4.47064 2.25 4.85218 2.25 5.25V18.8081C2.2505 19.1904 2.40257 19.5568 2.67286 19.8271C2.94316 20.0974 3.30962 20.2495 3.69188 20.25H20.3334C20.709 20.2495 21.069 20.1001 21.3346 19.8346C21.6001 19.569 21.7495 19.209 21.75 18.8334V8.25C21.75 7.85218 21.592 7.47064 21.3107 7.18934C21.0294 6.90804 20.6478 6.75 20.25 6.75ZM8.68969 5.25L10.1897 6.75H3.75V5.25H8.68969ZM20.25 18.75H3.75V8.25H20.25V18.75ZM12 10.5C12.1989 10.5 12.3897 10.579 12.5303 10.7197C12.671 10.8603 12.75 11.0511 12.75 11.25V12.75H14.25C14.4489 12.75 14.6397 12.829 14.7803 12.9697C14.921 13.1103 15 13.3011 15 13.5C15 13.6989 14.921 13.8897 14.7803 14.0303C14.6397 14.171 14.4489 14.25 14.25 14.25H12.75V15.75C12.75 15.9489 12.671 16.1397 12.5303 16.2803C12.3897 16.421 12.1989 16.5 12 16.5C11.8011 16.5 11.6103 16.421 11.4697 16.2803C11.329 16.1397 11.25 15.9489 11.25 15.75V14.25H9.75C9.55109 14.25 9.36032 14.171 9.21967 14.0303C9.07902 13.8897 9 13.6989 9 13.5C9 13.3011 9.07902 13.1103 9.21967 12.9697C9.36032 12.829 9.55109 12.75 9.75 12.75H11.25V11.25C11.25 11.0511 11.329 10.8603 11.4697 10.7197C11.6103 10.579 11.8011 10.5 12 10.5Z"
        fill="currentColor"
      />
    </svg>
  );
}

export function DashboardImagesIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      viewBox="0 0 24 24"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M20.25 3.75H6.75C6.35218 3.75 5.97064 3.90804 5.68934 4.18934C5.40804 4.47064 5.25 4.85218 5.25 5.25V6.75H3.75C3.35218 6.75 2.97064 6.90804 2.68934 7.18934C2.40804 7.47064 2.25 7.85218 2.25 8.25V18.75C2.25 19.1478 2.40804 19.5294 2.68934 19.8107C2.97064 20.092 3.35218 20.25 3.75 20.25H17.25C17.6478 20.25 18.0294 20.092 18.3107 19.8107C18.592 19.5294 18.75 19.1478 18.75 18.75V17.25H20.25C20.6478 17.25 21.0294 17.092 21.3107 16.8107C21.592 16.5294 21.75 16.1478 21.75 15.75V5.25C21.75 4.85218 21.592 4.47064 21.3107 4.18934C21.0294 3.90804 20.6478 3.75 20.25 3.75ZM6.75 5.25H20.25V11.1328L19.3059 10.1897C19.1666 10.0504 19.0013 9.93984 18.8193 9.86444C18.6373 9.78904 18.4422 9.75023 18.2452 9.75023C18.0481 9.75023 17.8531 9.78904 17.6711 9.86444C17.489 9.93984 17.3237 10.0504 17.1844 10.1897L15.3094 12.0647L11.1844 7.93969C10.9031 7.6586 10.5217 7.5007 10.1241 7.5007C9.72641 7.5007 9.34503 7.6586 9.06375 7.93969L6.75 10.2534V5.25ZM17.25 18.75H3.75V8.25H5.25V15.75C5.25 16.1478 5.40804 16.5294 5.68934 16.8107C5.97064 17.092 6.35218 17.25 6.75 17.25H17.25V18.75ZM20.25 15.75H6.75V12.375L10.125 9L14.7806 13.6556C14.9213 13.7962 15.112 13.8751 15.3108 13.8751C15.5096 13.8751 15.7003 13.7962 15.8409 13.6556L18.2466 11.25L20.25 13.2544V15.75ZM15 7.875C15 7.6525 15.066 7.43499 15.1896 7.24998C15.3132 7.06498 15.4889 6.92078 15.6945 6.83564C15.9 6.75049 16.1262 6.72821 16.3445 6.77162C16.5627 6.81502 16.7632 6.92217 16.9205 7.0795C17.0778 7.23684 17.185 7.43729 17.2284 7.65552C17.2718 7.87375 17.2495 8.09995 17.1644 8.30552C17.0792 8.51109 16.935 8.68679 16.75 8.8104C16.565 8.93402 16.3475 9 16.125 9C15.8266 9 15.5405 8.88147 15.3295 8.6705C15.1185 8.45952 15 8.17337 15 7.875Z"
        fill="currentColor"
      />
    </svg>
  );
}

export function DashboardVideoIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      viewBox="0 0 24 24"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M15.4163 9.87562L10.9163 6.87562C10.8033 6.80025 10.6719 6.75696 10.5363 6.75039C10.4006 6.74382 10.2657 6.77421 10.146 6.83831C10.0263 6.90241 9.92619 6.99782 9.85645 7.11436C9.7867 7.2309 9.74991 7.36419 9.75 7.5V13.5C9.74991 13.6358 9.7867 13.7691 9.85645 13.8856C9.92619 14.0022 10.0263 14.0976 10.146 14.1617C10.2657 14.2258 10.4006 14.2562 10.5363 14.2496C10.6719 14.243 10.8033 14.1998 10.9163 14.1244L15.4163 11.1244C15.5191 11.0559 15.6035 10.9631 15.6618 10.8542C15.7202 10.7452 15.7507 10.6236 15.7507 10.5C15.7507 10.3764 15.7202 10.2548 15.6618 10.1458C15.6035 10.0369 15.5191 9.94409 15.4163 9.87562ZM11.25 12.0984V8.90625L13.6481 10.5L11.25 12.0984ZM20.25 3.75H3.75C3.35218 3.75 2.97064 3.90804 2.68934 4.18934C2.40804 4.47064 2.25 4.85218 2.25 5.25V15.75C2.25 16.1478 2.40804 16.5294 2.68934 16.8107C2.97064 17.092 3.35218 17.25 3.75 17.25H20.25C20.6478 17.25 21.0294 17.092 21.3107 16.8107C21.592 16.5294 21.75 16.1478 21.75 15.75V5.25C21.75 4.85218 21.592 4.47064 21.3107 4.18934C21.0294 3.90804 20.6478 3.75 20.25 3.75ZM20.25 15.75H3.75V5.25H20.25V15.75ZM21.75 19.5C21.75 19.6989 21.671 19.8897 21.5303 20.0303C21.3897 20.171 21.1989 20.25 21 20.25H3C2.80109 20.25 2.61032 20.171 2.46967 20.0303C2.32902 19.8897 2.25 19.6989 2.25 19.5C2.25 19.3011 2.32902 19.1103 2.46967 18.9697C2.61032 18.829 2.80109 18.75 3 18.75H21C21.1989 18.75 21.3897 18.829 21.5303 18.9697C21.671 19.1103 21.75 19.3011 21.75 19.5Z"
        fill="currentColor"
      />
    </svg>
  );
}

export function FigGraduationIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      viewBox="0 0 24 24"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M16.5 19.4288C17.0174 19.2249 17.5188 18.9827 18 18.7041V22.5C18 22.6989 17.921 22.8897 17.7803 23.0303C17.6397 23.171 17.4489 23.25 17.25 23.25C17.0511 23.25 16.8603 23.171 16.7197 23.0303C16.579 22.8897 16.5 22.6989 16.5 22.5V19.4288ZM17.6025 11.1384L12.3525 8.33813C12.1773 8.24866 11.974 8.23158 11.7864 8.29057C11.5988 8.34956 11.4418 8.47989 11.3494 8.65349C11.2569 8.82709 11.2364 9.03006 11.2921 9.21868C11.3479 9.4073 11.4755 9.56646 11.6475 9.66188L16.0312 12L17.625 11.1506L17.6025 11.1384ZM23.6025 8.33813L12.3525 2.33813C12.244 2.28035 12.1229 2.25012 12 2.25012C11.8771 2.25012 11.756 2.28035 11.6475 2.33813L0.3975 8.33813C0.277504 8.40208 0.177151 8.49744 0.107175 8.61403C0.0371993 8.73061 0.000234297 8.86403 0.000234297 9C0.000234297 9.13597 0.0371993 9.26939 0.107175 9.38597C0.177151 9.50256 0.277504 9.59793 0.3975 9.66188L3 11.0503V15.5897C2.99922 15.9581 3.1348 16.3137 3.38063 16.5881C4.60875 17.9559 7.36031 20.25 12 20.25C13.5384 20.2627 15.0653 19.9841 16.5 19.4288V12.2503L16.0312 12L12 14.1497L4.10906 9.9375L2.34375 9L12 3.85031L21.6562 9L19.8956 9.9375H19.89L17.625 11.1506C17.739 11.2165 17.8337 11.3112 17.8996 11.4252C17.9654 11.5393 18 11.6686 18 11.8003V18.7041C18.978 18.1395 19.8618 17.4256 20.6194 16.5881C20.8652 16.3137 21.0008 15.9581 21 15.5897V11.0503L23.6025 9.66188C23.7225 9.59793 23.8228 9.50256 23.8928 9.38597C23.9628 9.26939 23.9998 9.13597 23.9998 9C23.9998 8.86403 23.9628 8.73061 23.8928 8.61403C23.8228 8.49744 23.7225 8.40208 23.6025 8.33813Z"
        fill="white"
      />
    </svg>
  );
}

export function FigLightbulbIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      viewBox="0 0 24 24"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M16.5 21.75C16.5 21.9489 16.421 22.1397 16.2803 22.2803C16.1397 22.421 15.9489 22.5 15.75 22.5H8.25C8.05109 22.5 7.86032 22.421 7.71967 22.2803C7.57902 22.1397 7.5 21.9489 7.5 21.75C7.5 21.5511 7.57902 21.3603 7.71967 21.2197C7.86032 21.079 8.05109 21 8.25 21H15.75C15.9489 21 16.1397 21.079 16.2803 21.2197C16.421 21.3603 16.5 21.5511 16.5 21.75ZM20.25 9.75C20.2532 11.0003 19.9708 12.2348 19.4242 13.3593C18.8776 14.4838 18.0814 15.4686 17.0963 16.2384C16.912 16.3796 16.7626 16.5611 16.6592 16.7689C16.5559 16.9767 16.5014 17.2054 16.5 17.4375V18C16.5 18.3978 16.342 18.7794 16.0607 19.0607C15.7794 19.342 15.3978 19.5 15 19.5H9C8.60218 19.5 8.22064 19.342 7.93934 19.0607C7.65804 18.7794 7.5 18.3978 7.5 18V17.4375C7.49985 17.2082 7.44712 16.982 7.34587 16.7762C7.24462 16.5705 7.09754 16.3907 6.91594 16.2506C5.93325 15.4853 5.13754 14.5064 4.58904 13.3882C4.04054 12.2699 3.75362 11.0415 3.75 9.79594C3.72563 5.32781 7.33688 1.60688 11.8013 1.5C12.9013 1.47349 13.9955 1.6673 15.0195 2.07002C16.0434 2.47273 16.9765 3.07622 17.7638 3.84496C18.5511 4.6137 19.1766 5.53216 19.6035 6.54627C20.0305 7.56039 20.2503 8.64967 20.25 9.75ZM17.2397 8.87438C17.0452 7.78809 16.5226 6.78747 15.7603 9.12563C15.79 9.3003 15.8806 9.45883 16.0159 9.57312C16.1513 9.68741 16.3228 9.75007 16.5 9.75C16.5424 9.74975 16.5847 9.7463 16.6266 9.73969C16.8226 9.70622 16.9973 9.59626 17.1123 9.43399C17.2273 9.27172 17.2731 9.07043 17.2397 8.87438Z"
        fill="white"
      />
    </svg>
  );
}

export function FigPlayIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      viewBox="0 0 24 24"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M21.75 19.5C21.75 19.6989 21.671 19.8897 21.5303 20.0303C21.3897 20.171 21.1989 20.25 21 20.25H3C2.80109 20.25 2.61032 20.171 2.46967 20.0303C2.32902 19.8897 2.25 19.6989 2.25 19.5C2.25 19.3011 2.32902 19.1103 2.46967 18.9697C2.61032 18.829 2.80109 18.75 3 18.75H21C21.1989 18.75 21.3897 18.829 21.5303 18.9697C21.671 19.1103 21.75 19.3011 21.75 19.5ZM21.75 5.25V15.75C21.75 16.1478 21.592 16.5294 21.3107 16.8107C21.0294 17.092 20.6478 17.25 20.25 17.25H3.75C3.35218 17.25 2.97064 17.092 2.68934 16.8107C2.40804 16.5294 2.25 16.1478 2.25 15.75V5.25C2.25 4.85218 2.40804 4.47064 2.68934 4.18934C2.97064 3.90804 3.35218 3.75 3.75 3.75H20.25C20.6478 3.75 21.0294 3.90804 21.3107 4.18934C21.592 4.47064 21.75 4.85218 21.75 5.25ZM15.375 10.5C15.375 10.3795 15.3459 10.2608 15.2902 10.1539C15.2346 10.047 15.154 9.95508 15.0553 9.88594L11.3053 7.26094C11.1929 7.18222 11.0611 7.13583 10.9242 7.12683C10.7873 7.11782 10.6506 7.14654 10.5289 7.20987C10.4071 7.27319 10.3051 7.36869 10.2339 7.48596C10.1627 7.60324 10.125 7.7378 10.125 7.875V13.125C10.125 13.2622 10.1627 13.3968 10.2339 13.514C10.3051 13.6313 10.4071 13.7268 10.5289 13.7901C10.6506 13.8535 10.7873 13.8822 10.9242 13.8732C11.0611 13.8642 11.1929 13.8178 11.3053 13.7391L15.0553 11.1141C15.154 11.0449 15.2346 10.953 15.2902 10.8461C15.3459 10.7392 15.375 10.6205 15.375 10.5Z"
        fill="white"
      />
    </svg>
  );
}

export function FigSparkleIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      viewBox="0 0 24 24"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M19.5 13.5C19.5019 13.8058 19.409 14.1047 19.2341 14.3555C19.0591 14.6063 18.8107 14.7968 18.5231 14.9006L13.6875 16.6875L11.9063 21.5269C11.8008 21.8134 11.6099 22.0608 11.3595 22.2355C11.109 22.4101 10.811 22.5038 10.5056 22.5038C10.2003 22.5038 9.90225 22.4101 9.65179 22.2355C9.40133 22.0608 9.21048 21.8134 9.105 21.5269L7.3125 16.6875L2.47312 14.9062C2.18656 14.8008 1.93924 14.6099 1.76455 14.3595C1.58985 14.109 1.49619 13.811 1.49619 13.5056C1.49619 13.2003 1.58985 12.9022 1.76455 12.6518C1.93924 12.4013 2.18656 12.2105 2.47312 12.105L7.3125 10.3125L9.09375 5.47313C9.19923 5.18656 9.39008 4.93924 9.64054 4.76455C9.891 4.58985 10.189 4.49619 10.4944 4.49619C10.7997 4.49619 11.0978 4.58985 11.3482 4.76455C11.5987 4.93924 11.7895 5.18656 11.895 5.47313L13.6875 10.3125L18.5269 12.0938C18.8147 12.1986 19.0629 12.3901 19.2372 12.642C19.4115 12.8939 19.5033 13.1937 19.5 13.5ZM14.25 4.5H15.75V6C15.75 6.19891 15.829 6.38968 15.9697 6.53033C16.1103 6.67098 16.3011 6.75 16.5 6.75C16.6989 6.75 16.8897 6.67098 17.0303 6.53033C17.171 6.38968 17.25 6.19891 17.25 6V4.5H18.75C18.9489 4.5 19.1397 4.42098 19.2803 4.28033C19.421 4.13968 19.5 3.94891 19.5 3.75C19.5 3.55109 19.421 3.36032 19.2803 3.21967C19.1397 3.07902 18.9489 3 18.75 3H17.25V1.5C17.25 1.30109 17.171 1.11032 17.0303 0.96967C16.8897 0.829018 16.6989 0.75 16.5 0.75C16.3011 0.75 16.1103 0.829018 15.9697 0.96967C15.829 1.11032 15.75 1.30109 15.75 1.5V3H14.25C14.0511 3 13.8603 3.07902 13.7197 3.21967C13.579 3.36032 13.5 3.55109 13.5 3.75C13.5 3.94891 13.579 4.13968 13.7197 4.28033C13.8603 4.42098 14.0511 4.5 14.25 4.5ZM22.5 7.5H21.75V6.75C21.75 6.55109 21.671 6.36032 21.5303 6.21967C21.3897 6.07902 21.1989 6 21 6C20.8011 6 20.6103 6.07902 20.4697 6.21967C20.329 6.36032 20.25 6.55109 20.25 6.75V7.5H19.5C19.3011 7.5 19.1103 7.57902 18.9697 7.71967C18.829 7.86032 18.75 8.05109 18.75 8.25C18.75 8.44891 18.829 8.63968 18.9697 8.78033C19.1103 8.92098 19.3011 9 19.5 9H20.25V9.75C20.25 9.94891 20.329 10.1397 20.4697 10.2803C20.6103 10.421 20.8011 10.5 21 10.5C21.1989 10.5 21.3897 10.421 21.5303 10.2803C21.671 10.1397 21.75 9.94891 21.75 9.75V9H22.5C22.6989 9 22.8897 8.92098 23.0303 8.78033C23.171 8.63968 23.25 8.44891 23.25 8.25C23.25 8.05109 23.171 7.86032 23.0303 7.71967C22.8897 7.57902 22.6989 7.5 22.5 7.5Z"
        fill="white"
      />
    </svg>
  );
}

export function GroupGenericIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      width="15.8667"
      height="15.8667"
      viewBox="0 0 15.8667 15.8667"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <g id="Group">
        <path
          id="Vector"
          d="M14.5301 10.2167V14.9335H9.81237V10.2167H14.5301ZM5.65026 10.2167V14.9335H0.933464V10.2167H5.65026ZM12.1708 0.933464C12.9032 0.933464 13.6059 1.22428 14.1239 1.74206C14.6418 2.25999 14.9334 2.96272 14.9335 3.69518C14.9335 4.42775 14.6419 5.1303 14.1239 5.64831C13.6059 6.16629 12.9033 6.45788 12.1708 6.45788C11.4383 6.45777 10.7356 6.16622 10.2176 5.64831C9.69986 5.13034 9.40905 4.42758 9.40905 3.69518C9.40913 2.96275 9.69974 2.25999 10.2176 1.74206C10.7356 1.22415 11.4383 0.93357 12.1708 0.933464ZM5.65026 1.33678V6.05358H0.933464V1.33678H5.65026Z"
          stroke="currentColor"
          strokeWidth="0.933333"
        />
        <path
          id="Vector_2"
          d="M0.466667 0.87027H6.11712V6.52072H0.466667V0.87027ZM9.34595 9.74955H14.9964V15.4H9.34595V9.74955ZM0.466667 9.74955H6.11712V15.4H0.466667V9.74955ZM15.4 3.6955C15.4 4.55183 15.0598 5.3731 14.4543 5.97862C13.8488 6.58415 13.0275 6.92432 12.1712 6.92432C11.3148 6.92432 10.4936 6.58415 9.88804 5.97862C9.28252 5.3731 8.94234 4.55183 8.94234 3.6955C8.94234 2.83916 9.28252 2.01789 9.88804 1.41237C10.4936 0.806846 11.3148 0.466667 12.1712 0.466667C13.0275 0.466667 13.8488 0.806846 14.4543 1.41237C15.0598 2.01789 15.4 2.83916 15.4 3.6955Z"
          stroke="currentColor"
          strokeWidth="0.933333"
        />
      </g>
    </svg>
  );
}

export function HomeIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      width="22.4"
      height="22.4"
      viewBox="0 0 22.4 22.4"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <g id="Frame 58">
        <path
          id="Vector"
          d="M10.3158 15.8421C10.3158 16.5853 10.0954 17.3119 9.68247 17.9299C9.26955 18.5479 8.68264 19.0295 7.99598 19.3139C7.30931 19.5984 6.55373 19.6728 5.82477 19.5278C5.09581 19.3828 4.42621 19.0249 3.90066 18.4993C3.37511 17.9738 3.01721 17.3042 2.87221 16.5752C2.72721 15.8463 2.80163 15.0907 3.08605 14.404C3.37048 13.7174 3.85214 13.1305 4.47012 12.7175C5.0881 12.3046 5.81465 12.0842 6.5579 12.0842H10.3158V15.8421ZM15.8421 12.0842C16.5853 12.0842 17.3119 12.3046 17.9299 12.7175C18.5479 13.1305 19.0295 13.7174 19.3139 14.404C19.5984 15.0907 19.6728 15.8463 19.5278 16.5752C19.3828 17.3042 19.0249 17.9738 18.4993 18.4993C17.9738 19.0249 17.3042 19.3828 16.5752 19.5278C15.8463 19.6728 15.0907 19.5984 14.404 19.3139C13.7174 19.0295 13.1305 18.5479 12.7175 17.9299C12.3046 17.3119 12.0842 16.5853 12.0842 15.8421V12.0842H15.8421ZM6.5579 13.8526C6.16441 13.8526 5.77977 13.9693 5.4526 14.1879C5.12544 14.4065 4.87044 14.7172 4.71986 15.0808C4.56928 15.4443 4.52989 15.8443 4.60665 16.2302C4.68341 16.6162 4.87289 16.9706 5.15113 17.2489C5.42936 17.5271 5.78385 17.7166 6.16977 17.7933C6.55569 17.8701 6.95571 17.8307 7.31923 17.6801C7.68276 17.5296 7.99348 17.2746 8.21208 16.9474C8.43069 16.6202 8.54737 16.2356 8.54737 15.8421V13.8526H6.5579ZM13.8526 15.8421C13.8526 16.2356 13.9693 16.6202 14.1879 16.9474C14.4065 17.2746 14.7172 17.5296 15.0808 17.6801C15.4443 17.8307 15.8443 17.8701 16.2302 17.7933C16.6162 17.7166 16.9706 17.5271 17.2489 17.2489C17.5271 16.9706 17.7166 16.6162 17.7933 16.2302C17.8701 15.8443 17.8307 15.4443 17.6801 15.0808C17.5296 14.7172 17.2746 14.4065 16.9474 14.1879C16.6202 13.9693 16.2356 13.8526 15.8421 13.8526H13.8526V15.8421ZM6.5579 2.8C7.05139 2.8 7.54005 2.8972 7.99598 3.08605C8.45191 3.2749 8.86618 3.55171 9.21513 3.90066C9.56408 4.24961 9.84088 4.66388 10.0297 5.11981C10.2186 5.57574 10.3158 6.0644 10.3158 6.55789V10.3158H6.5579C5.56124 10.3158 4.60541 9.91987 3.90066 9.21513C3.19592 8.51039 2.8 7.55455 2.8 6.55789C2.8 5.56124 3.19592 4.6054 3.90066 3.90066C4.60541 3.19592 5.56124 2.8 6.5579 2.8ZM15.4 3.10063C15.4352 3.01209 15.4961 2.93615 15.5749 2.88265C15.6538 2.82914 15.7468 2.80054 15.8421 2.80054C15.9374 2.80054 16.0304 2.82914 16.1093 2.88265C16.1881 2.93615 16.249 3.01209 16.2842 3.10063L16.5229 3.6736C16.922 4.64543 17.6787 5.42714 18.6371 5.8576L19.3109 6.15823C19.3971 6.19812 19.4701 6.26186 19.5213 6.34193C19.5725 6.42199 19.5997 6.51503 19.5997 6.61006C19.5997 6.70509 19.5725 6.79813 19.5213 6.8782C19.4701 6.95826 19.3971 7.02201 19.3109 7.06189L18.5964 7.37933C17.6623 7.79898 17.919 8.55277 16.5123 9.49259L16.2807 10.0231C16.1109 10.4122 15.5733 10.4122 15.4035 10.0231L15.1719 9.49259C14.7653 8.55277 14.0219 7.79898 13.0878 7.37933L12.3733 7.06189C12.2871 7.02201 12.2141 6.95826 12.1629 6.8782C12.1117 6.79813 12.0845 6.70509 12.0845 6.61006C12.0845 6.51503 12.1117 6.42199 12.1629 6.34193C12.2141 6.26186 12.2871 6.19812 12.3733 6.15823L13.0471 5.8576C14.0055 5.42714 14.7622 4.64543 15.1613 3.6736L15.4 3.10063ZM6.5579 4.56842C6.03025 4.56842 5.52422 4.77803 5.15113 5.15112C4.77803 5.52422 4.56842 6.03025 4.56842 6.55789C4.56842 7.08554 4.77803 7.59157 5.15113 7.96466C5.52422 8.33776 6.03025 8.54737 6.5579 8.54737H8.54737V6.55789C8.54737 6.03025 8.33776 5.52422 7.96467 5.15112C7.59157 4.77803 7.08554 4.56842 6.5579 4.56842Z"
          fill="currentColor"
        />
      </g>
    </svg>
  );
}

export function NavCmdIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      width="10.363"
      height="10.363"
      viewBox="0 0 10.3632 10.3632"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        id="Vector"
        fillRule="evenodd"
        clipRule="evenodd"
        d="M2.15899 0C1.58639 0 1.03724 0.227464 0.632354 0.632354C0.227464 1.03724 0 1.58639 0 2.15899C0 2.73159 0.227464 3.28074 0.632354 3.68563C1.03724 4.09052 1.58639 4.31798 2.15899 4.31798H3.02259C3.13711 4.31798 3.24694 4.36347 3.32791 4.44445C3.40889 4.52543 3.45438 4.63526 3.45438 4.74978V5.61337C3.45438 5.72789 3.40889 5.83772 3.32791 5.9187C3.24694 5.99968 3.13711 6.04517 3.02259 6.04517H2.15899C1.58639 6.04517 1.03724 6.27264 0.632354 6.67753C0.227464 7.08241 0 7.63156 0 8.20416C0 8.77676 0.227464 9.32591 0.632354 9.7308C1.03724 10.1357 1.58639 10.3632 2.15899 10.3632C2.44251 10.3632 2.72326 10.3073 2.9852 10.1988C3.24714 10.0903 3.24714 10.0903 3.24714 10.0903C3.48515 9.93128 3.68563 9.7308 3.88563 9.7308C3.88611 9.53032 4.04514 9.29231 4.15364 9.03037C4.26214 8.76843 4.31798 8.48768 4.31798 8.20416V7.34057C4.31798 7.22605 4.36347 7.11622 4.44445 7.03524C4.52543 6.95426 4.63526 6.90877 4.74978 6.90877H5.61337C5.72789 6.90877 5.83772 6.95426 5.9187 7.03524C5.99968 7.11622 6.04517 7.22605 6.04517 7.34057V8.20416C6.04517 8.77676 6.27264 9.32591 6.67753 9.7308C7.08241 10.1357 7.63156 10.3632 8.20416 10.3632C8.77676 10.3632 9.32591 10.1357 9.7308 9.7308C10.1357 9.32591 10.3632 8.77676 10.3632 8.20416C10.3632 7.63156 10.1357 7.08241 9.7308 6.67753C9.32591 6.27264 8.77676 6.04517 8.20416 6.04517H7.34057C7.22605 6.04517 7.11622 5.99968 7.03524 5.9187C6.95426 5.83772 6.90877 5.72789 6.90877 5.61337V4.74978C6.90877 4.63526 6.95426 4.52543 7.03524 4.44445C7.11622 4.36347 7.22605 4.31798 7.34057 4.31798H8.20416C8.77676 4.31798 9.32591 4.09052 9.7308 3.68563C10.1357 3.28074 10.3632 2.73159 10.3632 2.15899C10.3632 1.58639 10.1357 1.03724 9.7308 0.632354C9.32591 0.227464 8.77676 0 8.20416 0C7.63156 0 7.08241 0.227464 6.67753 0.632354C6.27264 1.03724 6.04517 1.58639 6.04517 2.15899V3.02259C6.04517 3.13711 5.99968 3.24694 5.9187 3.32791C5.83772 3.40889 5.72789 3.45438 5.61337 3.45438H4.74978C4.63526 3.45438 4.52543 3.40889 4.44445 3.32791C4.36347 3.24694 4.31798 3.13711 4.31798 3.02259V2.15899C4.31798 1.87547 4.26214 1.59472 4.15364 1.33278C4.04514 1.07084 3.88611 0.832834 3.68563 0.632354C3.48515 0.431873 3.24714 0.272843 2.9852 0.164343C2.72326 0.0558439 2.44251 0 2.15899 0ZM6.04517 4.74978C6.04517 4.63526 5.99968 4.52543 5.9187 4.44445C5.83772 4.36347 5.72789 4.31798 5.61337 4.31798H4.74978C4.63526 4.31798 4.52543 4.36347 4.44445 4.44445C4.36347 4.52543 4.31798 4.63526 4.31798 4.74978V5.61337C4.31798 5.72789 4.36347 5.83772 4.44445 5.9187C4.52543 5.99968 4.63526 6.04517 4.74978 6.04517H5.61337C5.72789 6.04517 5.83772 5.99968 5.9187 5.9187C5.99968 5.83772 6.04517 5.72789 6.04517 5.61337V4.74978ZM3.45438 2.15899V3.02259C3.45438 3.13711 3.40889 3.24694 3.32791 3.32791C3.24694 3.40889 3.13711 3.45438 3.02259 3.45438H2.15899C1.90279 3.45438 1.65233 3.37841 1.43931 3.23607C1.22628 3.09373 1.06025 2.89142 0.962202 2.65472C0.864157 2.41801 0.838504 2.15755 0.888487 1.90627C0.93847 1.65499 1.06184 1.42417 1.24301 1.24301C1.42417 1.06184 1.65499 0.93847 1.90627 0.888487C2.15755 0.838504 2.41801 0.864157 2.65472 0.962202C2.89142 1.06025 3.09373 1.22628 3.23607 1.43931C3.37841 1.65233 3.45438 1.90279 3.45438 2.15899ZM8.20416 3.45438H7.34057C7.22605 3.45438 7.11622 3.40889 7.03524 3.32791C6.95426 3.24694 6.90877 3.13711 6.90877 3.02259V2.15899C6.90877 1.90279 6.98474 1.65233 7.12708 1.43931C7.26942 1.22628 7.47173 1.06025 7.70844 0.962202C7.94514 0.864157 8.2056 0.838504 8.45688 0.888487C8.70816 0.93847 8.93898 1.06184 9.12014 1.24301C9.30131 1.42417 9.42468 1.65499 9.47467 1.90627C9.52465 2.15755 9.499 2.41801 9.40095 2.65472C9.3029 2.89142 9.13687 3.09373 8.92384 3.23607C8.71082 3.37841 8.46037 3.45438 8.20416 3.45438ZM3.45438 8.20416V7.34057C3.45438 7.22605 3.40889 7.11622 3.32791 7.03524C3.24694 6.95426 3.13711 6.90877 3.02259 6.90877H2.15899C1.90279 6.90877 1.65233 6.98474 1.43931 7.12708C1.22628 7.26942 1.06025 7.47173 0.962202 7.70844C0.864157 7.94514 0.838504 8.2056 0.888487 8.45688C0.93847 8.70816 1.06184 8.93898 1.24301 9.12014C1.42417 9.30131 1.65499 9.42468 1.90627 9.47467C2.15755 9.52465 2.41801 9.499 2.65472 9.40095C2.89142 9.3029 3.09373 9.13687 3.23607 8.92384C3.37841 8.71082 3.45438 8.46037 3.45438 8.20416ZM8.20416 6.90877H7.34057C7.22605 6.90877 7.11622 6.95426 7.03524 7.03524C6.95426 7.11622 6.90877 7.22605 6.90877 7.34057V8.20416C6.90877 8.46037 6.98474 8.71082 7.12708 8.92384C7.26942 9.13687 7.47173 9.3029 7.70844 9.40095C7.94514 9.499 8.2056 9.52465 8.45688 9.47467C8.70816 9.42468 8.93898 9.30131 9.12014 9.12014C9.30131 8.93898 9.42468 8.70816 9.47467 8.45688C9.52465 8.2056 9.499 7.94514 9.40095 7.70844C9.3029 7.47173 9.13687 7.26942 8.92384 7.12708C8.71082 6.98474 8.46037 6.90877 8.20416 6.90877Z"
        fill="#B6B6B6"
      />
    </svg>
  );
}

export function NavSearchIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      width="12.762"
      height="12.762"
      viewBox="0 0 14.1294 14.1294"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        id="Vector"
        d="M10.0061 10.0061C10.5132 9.49904 10.9155 8.89703 11.1899 8.23448C11.4644 7.57192 11.6056 6.8618 11.6056 6.14465C11.6056 5.42751 11.4644 4.71739 11.1899 4.05483C10.9155 3.39227 10.5132 2.79026 10.0061 2.28316C9.49904 1.77607 8.89703 1.37381 8.23448 1.09937C7.57192 0.824934 6.8618 0.683682 6.14465 0.683682C5.42751 0.683682 4.71739 0.824934 4.05483 1.09937C3.39227 1.37381 2.79026 1.77607 2.28316 2.28316C1.25903 3.30729 0.683682 4.69631 0.683682 6.14465C0.683682 7.59299 1.25903 8.98201 2.28316 10.0061C3.30729 11.0303 4.69631 11.6056 6.14465 11.6056C7.59299 11.6056 8.98201 11.0303 10.0061 10.0061ZM10.0061 10.0061L13.4457 13.4457"
        stroke="currentColor"
        strokeWidth="1.36736"
        strokeLinecap="round"
        strokeLinejoin="round"
      />
    </svg>
  );
}

export function NavTitleIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      width="14.5852"
      height="14.5852"
      viewBox="0 0 14.5852 14.5852"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        id="Vector"
        d="M6.52495 11.3227C6.52495 11.968 6.33361 12.5987 5.97512 13.1352C5.61664 13.6717 5.10711 14.0899 4.51097 14.3368C3.91483 14.5838 3.25886 14.6484 2.626 14.5225C1.99314 14.3966 1.41182 14.0859 0.955558 13.6296C0.499293 13.1734 0.188572 12.592 0.062689 11.9592C-0.0631943 11.3263 0.00141358 10.6703 0.248342 10.0742C0.495271 9.47807 0.913431 8.96854 1.44994 8.61005C1.98645 8.25157 2.61722 8.06023 3.26247 8.06023H6.52495V11.3227ZM11.3227 8.06023C11.968 8.06023 12.5987 8.25157 13.1352 8.61005C13.6717 8.96854 14.0899 9.47807 14.3368 10.0742C14.5838 10.6703 14.6484 11.3263 14.5225 11.9592C14.3966 12.592 14.0859 13.1734 13.6296 13.6296C13.1734 14.0859 12.592 14.3966 11.9592 14.5225C11.3263 14.6484 10.6703 14.5838 10.0742 14.3368C9.47807 14.0899 8.96854 13.6717 8.61006 13.1352C8.25157 12.5987 8.06023 11.968 8.06023 11.3227V8.06023H11.3227ZM3.26247 9.59551C2.92087 9.59551 2.58693 9.69681 2.3029 9.88659C2.01886 10.0764 1.79748 10.3461 1.66676 10.6617C1.53603 10.9773 1.50183 11.3246 1.56847 11.6597C1.63511 11.9947 1.79961 12.3025 2.04117 12.544C2.28272 12.7856 2.59047 12.9501 2.92552 13.0167C3.26056 13.0833 3.60784 13.0491 3.92344 12.9184C4.23905 12.7877 4.5088 12.5663 4.69858 12.2823C4.88837 11.9982 4.98967 11.6643 4.98967 11.3227V9.59551H3.26247ZM9.59551 11.3227C9.59551 11.6643 9.69681 11.9982 9.8866 12.2823C10.0764 12.5663 10.3461 12.7877 10.6617 12.9184C10.9773 13.0491 11.3246 13.0833 11.6597 13.0167C11.9947 12.9501 12.3025 12.7856 12.544 12.544C12.7856 12.3025 12.9501 11.9947 13.0167 11.6597C13.0834 11.3246 13.0491 10.9773 12.9184 10.6617C12.7877 10.3461 12.5663 10.0764 12.2823 9.88659C11.9982 9.69681 11.6643 9.59551 11.3227 9.59551H9.59551V11.3227ZM3.26247 0C3.69091 0 4.11515 0.0843864 4.51097 0.248341C4.90679 0.412296 5.26644 0.652608 5.56939 0.955556C5.87234 1.25851 6.11265 1.61816 6.27661 2.01398C6.44056 2.4098 6.52495 2.83404 6.52495 3.26247V6.52495H3.26247C2.39721 6.52495 1.56739 6.18122 0.955558 5.56939C0.343725 4.95756 1.39566e-06 4.12773 1.39566e-06 3.26247C1.39566e-06 2.39721 0.343725 1.56739 0.955558 0.955556C1.56739 0.343724 2.39721 0 3.26247 0ZM10.9389 0.260998C10.9694 0.184131 11.0223 0.118202 11.0908 0.0717502C11.1592 0.0252986 11.24 0.000464504 11.3227 0.000464504C11.4054 0.000464504 11.4862 0.0252986 11.5546 0.0717502C11.6231 0.118202 11.676 0.184131 11.7065 0.260998L11.9138 0.758429C12.2603 1.60214 12.9172 2.28079 13.7492 2.6545L14.3342 2.9155C14.409 2.95013 14.4724 3.00547 14.5169 3.07498C14.5613 3.14449 14.5849 3.22526 14.5849 3.30776C14.5849 3.39026 14.5613 3.47104 14.5169 3.54055C14.4724 3.61006 14.409 3.6654 14.3342 3.70003L13.7139 3.97561C12.903 4.33994 12.2576 4.99435 11.9046 5.81027L11.7035 6.27086C11.5561 6.60862 11.0893 6.60862 10.942 6.27086L10.7408 5.81027C10.3878 4.99435 9.74244 4.33994 8.9315 3.97561L8.31125 3.70003C8.23637 3.6654 8.17296 3.61006 8.12853 3.54055C8.08409 3.47104 8.06048 3.39026 8.06048 3.30776C8.06048 3.22526 8.08409 3.14449 8.12853 3.07498C8.17296 3.00547 8.23637 2.95013 8.31125 2.9155L8.89619 2.6545C9.7282 2.28079 10.3851 1.60214 10.7316 0.758429L10.9389 0.260998ZM3.26247 1.53528C2.8044 1.53528 2.36508 1.71725 2.04117 2.04116C1.71725 2.36508 1.53528 2.80439 1.53528 3.26247C1.53528 3.72055 1.71725 4.15987 2.04117 4.48378C2.36508 4.80769 2.8044 4.98967 3.26247 4.98967H4.98967V3.26247C4.98967 2.80439 4.80769 2.36508 4.48378 2.04116C4.15987 1.71725 3.72055 1.53528 3.26247 1.53528Z"
        fill="#242424"
      />
    </svg>
  );
}

export function ShowcasesIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M3 6.5 10 2.5l7 4-7 4-7-4Z"
        stroke="currentColor"
        strokeWidth="1.6"
        strokeLinecap="round"
        strokeLinejoin="round"
      />
      <path
        d="m3 10.25 7 4 7-4M3 14l7 4 7-4"
        stroke="currentColor"
        strokeWidth="1.6"
        strokeLinecap="round"
        strokeLinejoin="round"
      />
    </svg>
  );
}

export function DemostacksIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      width="14.6533"
      height="16.3213"
      viewBox="0 0 14.6533 16.3213"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <g id="Group">
        <path
          id="Vector_2"
          d="M7.32667 8.16067L13.6733 4.80067M7.32667 8.16067V15.254M7.32667 8.16067L0.98 4.80067M7.32667 0.694002L14.0467 4.42734V11.894L7.32667 15.6273L0.606667 11.894V4.42734L7.32667 0.694002Z"
          stroke="currentColor"
          strokeWidth="1.21333"
        />
      </g>
    </svg>
  );
}

export function VideosIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M10 2.5c.47 4.25 2.75 6.53 7 7-4.25.47-6.53 2.75-7 7-.47-4.25-2.75-6.53-7-7 4.25-.47 6.53-2.75 7-7Z"
        stroke="currentColor"
        strokeWidth="1.6"
        strokeLinecap="round"
        strokeLinejoin="round"
      />
    </svg>
  );
}

export function InspireOneIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      viewBox="0 0 49 48"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M2.98438 29.2901C2.98438 27.0301 3.4295 24.7921 4.2944 22.7042C5.15932 20.6161 6.42698 18.7189 8.02509 17.1208C9.62321 15.5227 11.5204 14.255 13.6084 13.3901C15.6965 12.5253 17.9344 12.0801 20.1945 12.0801V29.2901H2.98438Z"
        fill="#442781"
      />
      <path
        d="M2.98438 29.29C2.98438 31.5501 3.4295 33.788 4.2944 35.8761C5.15932 37.9641 6.42698 39.8613 8.02509 41.4594C9.62321 43.0575 11.5204 44.3252 13.6084 45.1901C15.6965 46.055 17.9344 46.5001 20.1945 46.5001V29.29H2.98438Z"
        fill="#61459C"
      />
      <path
        d="M37.4051 29.29C37.4051 31.5501 36.9603 33.788 36.0955 35.8761C35.2306 37.9641 33.963 39.8613 32.3646 41.4594C30.7665 43.0575 28.8693 44.3252 26.7812 45.1901C24.6933 46.055 22.4553 46.5001 20.1953 46.5001V29.29H37.4051Z"
        fill="#A992DB"
      />
      <path
        d="M48.0159 14.422C48.0159 21.5586 42.2303 27.344 35.0938 27.344H22.1719V14.422C22.1719 7.2854 27.9573 1.5 35.0938 1.5C42.2303 1.5 48.0159 7.2854 48.0159 14.422Z"
        fill="#FF7917"
      />
    </svg>
  );
}

export function InspireTwoIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      viewBox="0 0 40 40"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M18.9523 11.0726C18.5586 7.69873 18.1429 4.13644 18.1429 0H21.8571C21.8571 4.08998 21.4434 7.64774 21.0502 11.0254C20.7299 13.778 20.4235 16.411 20.3666 19.115C22.2316 17.1697 23.863 15.107 25.572 12.9463C27.6791 10.2823 29.9043 7.46945 32.829 4.54464L35.4554 7.17104C32.5633 10.0631 29.7547 12.2861 27.0884 14.3966L27.0859 14.3985C24.9141 16.1178 22.8365 17.7624 20.885 19.6334C23.579 19.5765 26.1911 19.2717 28.9272 18.9524C32.3011 18.5586 35.8636 18.1429 40 18.1429V21.8571C35.9102 21.8571 32.3524 21.4432 28.9749 21.0502L28.9724 21.05C26.2204 20.7298 23.5882 20.4236 20.885 20.3666C22.829 22.2302 24.8906 23.8609 27.0499 25.5687L27.0533 25.5716C29.7174 27.6789 32.5304 29.9039 35.4554 32.829L32.829 35.4554C29.9369 32.5634 27.714 29.755 25.6038 27.0889L25.5988 27.082L25.5946 27.0765C23.8775 24.9081 22.2349 22.8338 20.3666 20.885C20.4235 23.589 20.7299 26.222 21.0502 28.9746C21.4434 32.3523 21.8571 35.91 21.8571 40H18.1429C18.1429 35.8636 18.5586 32.3013 18.9523 28.9274L18.9531 28.9219C19.272 26.1877 19.5765 23.5772 19.6334 20.885C17.7651 22.8338 16.1225 24.9081 14.4054 27.0765L14.4012 27.082L14.3962 27.0889C12.286 29.755 10.0631 32.5634 7.17104 35.4554L4.54464 32.829C7.46959 29.9039 10.2826 27.6789 12.9467 25.5716L12.9501 25.5687C15.1094 23.8609 17.171 22.2302 19.115 20.3666C16.411 20.4237 13.7779 20.73 11.0251 21.0502C7.6476 21.4432 4.08984 21.8571 0 21.8571V18.1429C4.13644 18.1429 7.69894 18.5586 11.0728 18.9524C13.8089 19.2717 16.421 19.5765 19.115 19.6334C17.1627 17.7617 15.0843 16.1166 12.9116 14.3966C10.2453 12.2861 7.43666 10.0631 4.54464 7.17104L7.17104 4.54464C10.0957 7.46945 12.3209 10.2823 14.428 12.9463C16.137 15.1069 17.7684 17.1696 19.6334 19.1148C19.5765 16.4227 19.272 13.8123 18.9531 11.0781L18.9523 11.0726Z"
        fill="#FFA589"
      />
    </svg>
  );
}

export function InspireThreeIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      viewBox="0 0 40 40"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M39.9446 21.5H32.8C26.5591 21.5 21.5 26.5592 21.5 32.8V39.9446C31.3499 39.2142 39.2142 31.3499 39.9446 21.5Z"
        fill="#775732"
      />
      <path
        d="M18.5013 39.9446V32.8C18.5013 26.5592 13.4421 21.5 7.20124 21.5H0.0566406C0.786975 31.3499 8.65134 39.2142 18.5013 39.9446Z"
        fill="#775732"
      />
      <path
        d="M39.9446 18.4998C39.2142 8.64987 31.3499 0.78551 21.5 0.0551758V7.19977C21.5 13.4406 26.5591 18.4998 32.8 18.4998H39.9446Z"
        fill="#775732"
      />
      <path
        d="M18.5013 0.0551758C8.65134 0.78551 0.786975 8.64987 0.0566406 18.4998H7.20124C13.4421 18.4998 18.5013 13.4406 18.5013 7.19977V0.0551758Z"
        fill="#775732"
      />
      <path
        d="M13.582 19.9998C16.3545 18.6145 18.614 16.355 19.9992 13.5825C21.3845 16.355 23.6439 18.6145 26.4165 19.9998C23.6439 21.385 21.3845 23.6445 19.9992 26.417C18.614 23.6445 16.3545 21.385 13.582 19.9998Z"
        fill="#CA9352"
      />
    </svg>
  );
}

export function InspireFourIcon({ className }: { className?: string }) {
  return (
    <svg
      className={className}
      viewBox="0 0 36 41"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        fillRule="evenodd"
        clipRule="evenodd"
        d="M5.88822 2.95639V0.521606H0.322998V2.95639V8.17378V17.2173V22.7825V22.9564C0.322998 32.6574 8.18721 40.5216 17.8882 40.5216C27.5892 40.5216 35.4534 32.6574 35.4534 22.9564V22.7825V17.2173V8.17378V2.95639V0.521606H29.8882V2.95639H20.4969V2.60856V0.521606H14.9317V2.60856V2.95639H5.88822ZM14.9317 34.5894C9.78296 33.2849 5.96086 28.652 5.88924 23.1147C6.48236 23.2584 7.06484 23.4481 7.63125 23.6827C9.06606 24.277 10.3698 25.1481 11.4679 26.2463C12.5661 27.3444 13.4372 28.6481 14.0315 30.0829C14.6234 31.5118 14.9292 33.0429 14.9317 34.5894ZM15.4031 22.3111C16.2746 23.1825 17.0488 24.142 17.7143 25.1723C18.3798 24.142 19.154 23.1825 20.0255 22.3111C20.8969 21.4396 21.8564 20.6654 22.8867 19.9999C21.8564 19.3344 20.8969 18.5601 20.0255 17.6887C19.154 16.8172 18.3798 15.8578 17.7143 14.8275C17.0488 15.8578 16.2746 16.8172 15.4031 17.6887C14.5317 18.5601 13.5722 19.3344 12.5419 19.9999C13.5722 20.6654 14.5317 21.4396 15.4031 22.3111ZM29.888 23.0359C29.851 28.7322 25.8451 33.4865 20.4969 34.672V34.6086C20.4969 33.0555 20.8028 31.5177 21.3971 30.0829C21.9914 28.6481 22.8625 27.3444 23.9607 26.2463C25.0588 25.1481 26.3625 24.277 27.7974 23.6827C28.4744 23.4023 29.1743 23.186 29.888 23.0359ZM14.5098 8.52161C14.3799 8.99519 14.2202 9.4612 14.0315 9.91682C13.4372 11.3516 12.5661 12.6553 11.4679 13.7535C10.3698 14.8516 9.06606 15.7227 7.63125 16.3171C7.06451 16.5518 6.48169 16.7416 5.88822 16.8852V8.52161H14.5098ZM29.8882 16.9639V8.52161H20.9188C21.0488 8.99519 21.2084 9.4612 21.3971 9.91682C21.9914 11.3516 22.8625 12.6553 23.9607 13.7535C25.0588 14.8516 26.3625 15.7227 27.7974 16.3171C28.4744 16.5975 29.1745 16.8137 29.8882 16.9639Z"
        fill="#09C382"
      />
    </svg>
  );
}
```

### `src/components/dashboards/demostack-dashboard/components/demostack/logo.tsx`

```tsx
import type { SVGProps } from "react";

export const DemostackLogo = (props: SVGProps<SVGSVGElement>) => (
  <svg
    width={132}
    height={21}
    viewBox="0 0 132 21"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
    {...props}
  >
    <path
      d="M6.11 20.072c-3.172 0-6.11-2.34-6.11-6.526 0-3.848 2.808-6.474 6.136-6.474 1.274 0 2.262.364 3.042 1.014v-4.16c0-1.196-1.3-1.274-1.3-1.924v-.078c0-.26.208-.494.546-.598L11.83.286c.702-.234 1.014-.078 1.014.52v16.51c0 1.092 1.04 1.352 1.04 1.976v.078c0 .286-.208.442-.52.442H10.14c-.364 0-.598-.234-.598-.572l-.052-.572c-.78.91-2.054 1.404-3.38 1.404m-2.392-8.06c-.104 2.86 1.092 6.864 3.25 6.942 1.066 0 2.21-.936 2.21-2.782v-4.576c0-1.664-1.3-3.406-2.834-3.406-1.586 0-2.574 1.404-2.626 3.822m17.758 8.06c-3.64 0-6.292-2.6-6.292-6.604 0-3.77 2.886-6.396 6.292-6.396 3.38 0 4.914 1.976 4.914 3.692 0 .884-.468 1.404-1.17 1.716l-5.746 2.626c.676 1.43 1.872 2.262 3.406 2.262 1.378 0 2.47-.702 2.964-1.508.338-.39.936-.26.91.286-.156 1.508-1.924 3.926-5.278 3.926m-2.704-8.398c0 .806.078 1.56.26 2.236l3.38-1.69c.442-.234.676-.676.676-1.222 0-.936-.702-2.782-2.106-2.782-1.352 0-2.21 1.482-2.21 3.458m26.888 8.164c-.338 0-.572-.156-.572-.442v-.104c0-.65.988-.858.91-1.976l-.26-4.758c-.13-2.938-.884-4.004-2.262-4.004-1.274 0-2.08 1.196-2.106 2.834.052.364.078.728.078 1.118v4.81c0 1.118.936 1.326.936 1.976v.104c0 .286-.234.442-.598.442h-4.472c-.338 0-.598-.156-.598-.442v-.104c0-.65.936-.858.936-1.976v-5.07c0-2.418-.936-3.692-2.262-3.692-1.43 0-2.236 1.248-2.236 2.886v5.876c0 1.118 1.092 1.326 1.092 1.976v.104c0 .286-.208.442-.572.442h-4.836c-.338 0-.598-.156-.598-.442v-.104c0-.65 1.092-.858 1.092-1.976v-6.058c0-1.144-1.248-1.274-1.248-1.924V9.23c0-.26.234-.39.546-.546l3.276-1.508c.598-.312.91.052.91.546v1.222c.754-1.144 2.054-1.872 3.588-1.872 1.846 0 3.432.806 4.316 2.366.702-1.508 2.21-2.366 3.952-2.366 2.366 0 4.524 1.352 4.836 5.59l.312 4.628c.078 1.144.936 1.352.936 2.002v.104c0 .286-.234.442-.572.442zm13.337.234c-4.212 0-7.124-2.964-7.124-6.578 0-3.77 3.094-6.422 6.733-6.422 4.005 0 6.994 2.86 6.994 6.552s-2.833 6.448-6.603 6.448m-3.303-8.06c0 2.652 1.404 6.916 3.77 6.916 1.404 0 2.236-1.378 2.236-3.77 0-2.834-1.404-6.942-3.64-6.942-1.534 0-2.366 1.326-2.366 3.796m16.877 8.034c-3.354 0-5.59-1.404-5.59-3.016 0-.988.676-1.43 1.586-1.43 2.262 0 1.404 3.432 4.004 3.432 1.066 0 1.898-.546 1.898-1.716 0-3.458-7.254-1.3-7.254-6.422 0-2.21 2.184-3.822 5.304-3.822 3.276 0 5.33 1.508 5.33 3.12 0 .754-.65 1.352-1.456 1.352-2.184 0-1.404-3.406-3.666-3.406-1.04 0-1.716.806-1.716 1.742 0 3.562 7.124 1.482 7.124 6.448 0 2.106-2.08 3.718-5.564 3.718m12.255.026c-2.366 0-3.952-1.534-3.952-4.498V8.84h-1.222c-.312 0-.52-.208-.52-.52v-.468c0-.312.182-.52.52-.52h.65c1.456 0 2.496-1.04 2.756-2.574.078-.39.312-.624.624-.624h.494c.364 0 .598.234.598.624v2.574h2.99c.286 0 .52.234.52.52v.468c0 .312-.234.52-.52.52h-2.99v6.786c0 1.04.572 1.664 1.352 1.664 1.04 0 1.56-.572 1.768-1.17.286-.442.91-.338.91.156 0 1.872-1.404 3.796-3.978 3.796m15.516-.104c-1.456 0-2.132-.286-2.314-1.378-.572.858-1.664 1.482-3.432 1.482-2.808 0-4.888-1.326-4.888-3.926-.026-2.6 2.158-3.952 4.706-3.952 1.17 0 2.132.286 2.808.754l-.026-.286c-.286-3.042-.702-4.498-2.288-4.498-2.106 0-1.482 3.328-3.458 3.328-.936 0-1.534-.572-1.534-1.456 0-1.872 2.288-2.964 4.992-2.964 3.38 0 5.642 2.054 6.032 5.33l.546 4.81c.208 1.794 1.378 1.3 1.378 2.002 0 .598-1.248.754-2.522.754m-6.786-4.42c0 1.794.832 3.38 2.184 3.38 1.092 0 1.82-1.014 1.846-2.106l-.104-1.144c-.13-1.534-.962-2.314-2.028-2.314-1.118 0-1.898.858-1.898 2.184m16.594 4.524c-3.952 0-6.734-3.016-6.734-6.526 0-4.004 3.042-6.448 6.578-6.474 2.99-.026 5.382 1.612 5.382 3.64 0 .676-.442 1.352-1.612 1.3-2.262-.13-2.106-3.822-4.368-3.796-1.456 0-2.392 1.534-2.392 3.458 0 3.458 1.742 5.72 4.42 5.72 1.586 0 2.574-.884 3.12-1.82.286-.416.962-.312.91.26-.182 2.132-1.924 4.238-5.304 4.238m15.723-.26c-.312 0-.52-.182-.52-.468v-.052c0-.65.962-.806.52-1.43l-2.808-3.952-1.534 1.43v1.976c0 1.092 1.118 1.3 1.118 1.95v.104c0 .26-.26.442-.598.442h-4.784c-.364 0-.598-.182-.598-.442v-.104c0-.65 1.014-.858 1.014-1.95V4.524c0-1.17-1.17-1.43-1.17-1.976v-.104c0-.26.182-.39.494-.52l3.458-1.612c.65-.312 1.066.026 1.066.468v12.558l4.082-3.536c.78-.65-.624-1.3-.624-1.924v-.104c0-.286.208-.442.546-.442h3.718c.312 0 .52.156.52.416v.104c0 .65-1.274 1.066-2.236 1.924l-2.106 1.95 4.394 6.136c.416.598 1.404.806 1.404 1.43v.078c0 .286-.208.442-.546.442z"
      fill="#000"
    />
  </svg>
);
```

### `src/components/dashboards/demostack-dashboard/components/demostack/navigation.tsx`

```tsx
import {
  createContext,
  useContext,
  useMemo,
  useState,
  type AnchorHTMLAttributes,
  type MouseEvent,
  type ReactNode,
} from "react";

type DashboardNavigation = {
  pathname: string;
  navigate: (pathname: string) => void;
};

const DashboardNavigationContext = createContext<DashboardNavigation | null>(
  null,
);

export function DashboardNavigationProvider({
  children,
}: {
  children: ReactNode;
}) {
  const [pathname, setPathname] = useState("/");
  const value = useMemo(
    () => ({ pathname, navigate: setPathname }),
    [pathname],
  );

  return (
    <DashboardNavigationContext.Provider value={value}>
      {children}
    </DashboardNavigationContext.Provider>
  );
}

export function useDashboardNavigation() {
  const context = useContext(DashboardNavigationContext);

  if (!context) {
    throw new Error(
      "useDashboardNavigation must be used within DashboardNavigationProvider",
    );
  }

  return context;
}

export function DashboardLink({
  href,
  onClick,
  ...props
}: AnchorHTMLAttributes<HTMLAnchorElement> & { href: string }) {
  const { navigate } = useDashboardNavigation();

  function handleClick(event: MouseEvent<HTMLAnchorElement>) {
    onClick?.(event);

    if (
      event.defaultPrevented ||
      event.button !== 0 ||
      event.metaKey ||
      event.ctrlKey ||
      event.shiftKey ||
      event.altKey
    ) {
      return;
    }

    event.preventDefault();
    navigate(href);
  }

  return <a href={href} onClick={handleClick} {...props} />;
}
```

### `src/components/dashboards/demostack-dashboard/components/demostack/sidebar.tsx`

```tsx
"use client";

import { useState } from "react";
import { LogOut, Moon, Settings, Sun, User } from "lucide-react";
import { BuildingIcon, CaretUpDownIcon } from "./icons";
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
import {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuGroup,
  DropdownMenuItem,
  DropdownMenuLabel,
  DropdownMenuRadioGroup,
  DropdownMenuRadioItem,
  DropdownMenuSeparator,
  DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import {
  Sidebar,
  SidebarContent,
  SidebarFooter,
  SidebarGroup,
  SidebarGroupContent,
  SidebarGroupLabel,
  SidebarHeader,
  SidebarMenu,
  SidebarMenuButton,
  SidebarMenuItem,
  SidebarTrigger,
  useSidebar,
} from "@/components/ui/sidebar";
import {
  adminNavigation,
  companies,
  currentUser,
  workspaceNavigation,
} from "../../data";
import { DemostackLogo } from "./logo";
import { DashboardLink, useDashboardNavigation } from "./navigation";
import { useTheme } from "./theme-provider";

export function DashboardSidebar() {
  const { theme, toggleTheme } = useTheme();
  const { pathname } = useDashboardNavigation();
  const { isMobile, setOpenMobile, state } = useSidebar();
  const collapsed = !isMobile && state === "collapsed";
  const [selectedCompany, setSelectedCompany] = useState<
    (typeof companies)[number]
  >(companies[0]);

  return (
    <Sidebar
      collapsible="icon"
      className="demostack-dashboard border-none p-1.5"
    >
      <SidebarHeader className="p-0">
        <div className="border rounded-2xl p-3 pt-3.5 group-data-[collapsible=icon]:p-2.5!">
          <div className="flex items-center justify-between mb-6 group-data-[collapsible=icon]:mb-2 group-data-[collapsible=icon]:justify-center">
            <DemostackLogo className="h-6 w-auto group-data-[collapsible=icon]:hidden" />
            <SidebarTrigger className="size-10! [&_svg]:size-5! group-data-[collapsible=icon]:size-12!" />
          </div>

          <DropdownMenu>
            <DropdownMenuTrigger
              type="button"
              className="bg-secondary w-full p-2 pr-2.5 rounded-xl flex items-center gap-2 group-data-[collapsible=icon]:size-12! group-data-[collapsible=icon]:justify-center group-data-[collapsible=icon]:gap-0 group-data-[collapsible=icon]:p-2!"
            >
              <div className="size-7.5 bg-foreground dark:bg-background rounded-full flex items-center justify-center text-background dark:text-foreground">
                <BuildingIcon className="size-3.5" />
              </div>
              <div className="flex items-start flex-col group-data-[collapsible=icon]:hidden">
                <p className="font-medium text-xs">{selectedCompany.name}</p>
                <p className="text-xxs text-muted-foreground">
                  {selectedCompany.role}
                </p>
              </div>

              <CaretUpDownIcon className="size-4.5 ml-auto group-data-[collapsible=icon]:hidden" />
            </DropdownMenuTrigger>

            <DropdownMenuContent align="start" className="w-56">
              <DropdownMenuGroup>
                <DropdownMenuLabel>Select organization</DropdownMenuLabel>
              </DropdownMenuGroup>
              <DropdownMenuSeparator />
              <DropdownMenuRadioGroup
                value={selectedCompany.name}
                onValueChange={(companyName) => {
                  const company = companies.find(
                    ({ name }) => name === companyName,
                  );

                  if (company) setSelectedCompany(company);
                }}
              >
                {companies.map((company) => (
                  <DropdownMenuRadioItem
                    key={company.name}
                    value={company.name}
                    className="group/org p-2"
                  >
                    <div className="flex flex-col text-muted-foreground group-data-[state=checked]/org:font-medium group-data-[state=checked]/org:text-foreground">
                      <p className="text-xs">{company.name}</p>
                      <p className="text-xxs">{company.role}</p>
                    </div>
                  </DropdownMenuRadioItem>
                ))}
              </DropdownMenuRadioGroup>
              {collapsed && (
                <DropdownMenuGroup className="mt-2">
                  <DropdownMenuLabel>
                    MEMBERS [{selectedCompany.members.length}]
                  </DropdownMenuLabel>
                  <div className="flex flex-wrap gap-1.5 px-2 pb-2">
                    {selectedCompany.members.map((member) => (
                      <Avatar key={member.name} className="size-8">
                        <AvatarImage src={member.avatar} alt={member.name} />
                        <AvatarFallback>{member.initials}</AvatarFallback>
                      </Avatar>
                    ))}
                  </div>
                </DropdownMenuGroup>
              )}
            </DropdownMenuContent>
          </DropdownMenu>

          <div className="mt-3 group-data-[collapsible=icon]:hidden">
            <p className="text-sm text-muted-foreground">
              MEMBERS [{selectedCompany.members.length}]
            </p>
            <div className="flex flex-wrap mt-1.5 gap-1.5">
              {selectedCompany.members.map((member) => (
                <Avatar key={member.name} className="size-8">
                  <AvatarImage src={member.avatar} alt={member.name} />
                  <AvatarFallback>{member.initials}</AvatarFallback>
                </Avatar>
              ))}
            </div>
          </div>
        </div>
      </SidebarHeader>

      <SidebarContent className="pt-6 pb-3 px-2.75 group-data-[collapsible=icon]:overflow-x-hidden! group-data-[collapsible=icon]:overflow-y-auto!">
        {[
          { label: "Workspace", items: workspaceNavigation },
          { label: "Admin", items: adminNavigation },
        ].map((group) => (
          <SidebarGroup key={group.label}>
            <SidebarGroupLabel className="text-sm mb-3">
              {group.label}
            </SidebarGroupLabel>
            <SidebarGroupContent>
              <SidebarMenu className="gap-2">
                {group.items.map((item) => {
                  const active =
                    item.href === "/"
                      ? pathname === item.href
                      : pathname === item.href ||
                        pathname.startsWith(`${item.href}/`);

                  return (
                    <SidebarMenuItem key={item.href}>
                      <SidebarMenuButton
                        asChild
                        isActive={active}
                        className="h-auto [&_svg]:size-5 group-data-[collapsible=icon]:size-12! group-data-[collapsible=icon]:justify-center! group-data-[collapsible=icon]:gap-0! group-data-[collapsible=icon]:p-0! group-data-[collapsible=icon]:[&>span]:hidden"
                      >
                        <DashboardLink
                          href={item.href}
                          aria-current={active ? "page" : undefined}
                          className="flex items-center gap-2.5 rounded-xl border border-transparent p-3 text-muted-foreground aria-[current=page]:border-border aria-[current=page]:bg-sidebar-accent aria-[current=page]:font-medium aria-[current=page]:text-foreground"
                          onClick={() => {
                            if (isMobile) setOpenMobile(false);
                          }}
                        >
                          <item.icon className="size-5" />
                          <span className="text-base">{item.name}</span>
                          {item.badge && (
                            <span className="rounded bg-primary/10 px-2 py-1 text-xs font-medium leading-none text-primary">
                              {item.badge}
                            </span>
                          )}
                        </DashboardLink>
                      </SidebarMenuButton>
                    </SidebarMenuItem>
                  );
                })}
              </SidebarMenu>
            </SidebarGroupContent>
          </SidebarGroup>
        ))}
      </SidebarContent>

      <SidebarFooter className="p-0">
        <div className="p-3 group-data-[collapsible=icon]:p-2.5!">
          <DropdownMenu>
            <DropdownMenuTrigger
              type="button"
              className="w-full flex items-center gap-2 text-left border-none outline-none group-data-[collapsible=icon]:size-12! group-data-[collapsible=icon]:justify-center group-data-[collapsible=icon]:gap-0"
            >
              <Avatar className="size-10 after:border-[2.5px] after:border-border/50">
                <AvatarImage src={currentUser.avatar} alt={currentUser.name} />
                <AvatarFallback>{currentUser.initials}</AvatarFallback>
              </Avatar>
              <div className="group-data-[collapsible=icon]:hidden">
                <p className="font-medium text-foreground truncate">
                  {currentUser.name}
                </p>
                <p className="text-sm text-muted-foreground truncate">
                  {currentUser.email}
                </p>
              </div>
            </DropdownMenuTrigger>

            <DropdownMenuContent align="start" className="w-56">
              <DropdownMenuGroup>
                <DropdownMenuLabel className="font-normal">
                  <p className="font-medium text-foreground">
                    {currentUser.name}
                  </p>
                  <p className="text-xs text-muted-foreground">
                    {currentUser.email}
                  </p>
                </DropdownMenuLabel>
              </DropdownMenuGroup>
              <DropdownMenuSeparator />
              <DropdownMenuItem>
                <User />
                Profile Settings
              </DropdownMenuItem>
              <DropdownMenuItem>
                <Settings />
                Account Settings
              </DropdownMenuItem>
              <DropdownMenuItem onClick={toggleTheme}>
                {theme === "dark" ? <Sun /> : <Moon />}
                {theme === "dark" ? "Light mode" : "Dark mode"}
              </DropdownMenuItem>
              <DropdownMenuSeparator />
              <DropdownMenuItem variant="destructive">
                <LogOut />
                Log out
              </DropdownMenuItem>
            </DropdownMenuContent>
          </DropdownMenu>
        </div>
      </SidebarFooter>
    </Sidebar>
  );
}
```

### `src/components/dashboards/demostack-dashboard/components/demostack/theme-provider.tsx`

```tsx
import {
  createContext,
  useCallback,
  useContext,
  useEffect,
  useMemo,
  useState,
  type ReactNode,
} from "react";

type Theme = "light" | "dark";

type ThemeProviderProps = {
  children: ReactNode;
  defaultTheme?: Theme;
  storageKey?: string;
};

type ThemeProviderState = {
  theme: Theme;
  setTheme: (theme: Theme) => void;
  toggleTheme: () => void;
};

const ThemeProviderContext = createContext<ThemeProviderState | null>(null);

export function ThemeProvider({
  children,
  defaultTheme = "light",
  storageKey = "theme",
}: ThemeProviderProps) {
  const [theme, setThemeState] = useState<Theme>(() => {
    if (typeof window === "undefined") return defaultTheme;

    const storedTheme = localStorage.getItem(storageKey);
    if (storedTheme === "light" || storedTheme === "dark") {
      return storedTheme;
    }

    return window.matchMedia("(prefers-color-scheme: dark)").matches
      ? "dark"
      : defaultTheme;
  });

  useEffect(() => {
    document.documentElement.classList.toggle("dark", theme === "dark");
  }, [theme]);

  const setTheme = useCallback(
    (nextTheme: Theme) => {
      localStorage.setItem(storageKey, nextTheme);
      setThemeState(nextTheme);
    },
    [storageKey],
  );

  const toggleTheme = useCallback(() => {
    setThemeState((currentTheme) => {
      const nextTheme = currentTheme === "dark" ? "light" : "dark";
      localStorage.setItem(storageKey, nextTheme);
      return nextTheme;
    });
  }, [storageKey]);

  const value = useMemo(
    () => ({ theme, setTheme, toggleTheme }),
    [setTheme, theme, toggleTheme],
  );

  return (
    <ThemeProviderContext.Provider value={value}>
      {children}
    </ThemeProviderContext.Provider>
  );
}

export function useTheme() {
  const context = useContext(ThemeProviderContext);

  if (!context) {
    throw new Error("useTheme must be used within a ThemeProvider.");
  }

  return context;
}
```

### `src/components/dashboards/demostack-dashboard/components/demostack/topbar.tsx`

```tsx
"use client";

import { useEffect, useRef, useState } from "react";
import { Button, buttonVariants } from "@/components/ui/button";
import {
  InputGroup,
  InputGroupAddon,
  InputGroupInput,
} from "@/components/ui/input-group";
import {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuGroup,
  DropdownMenuItem,
  DropdownMenuLabel,
  DropdownMenuSeparator,
  DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import { Bell, Blocks, Search, X } from "lucide-react";
import { NavCmdIcon, NavSearchIcon } from "./icons";
import {
  adminNavigation,
  notifications,
  workspaceNavigation,
} from "../../data";
import { useDashboardNavigation } from "./navigation";
import { SidebarTrigger } from "@/components/ui/sidebar";

const navigationItems = [...workspaceNavigation, ...adminNavigation];

export function DashboardTopbar() {
  const { pathname } = useDashboardNavigation();
  const [searchQuery, setSearchQuery] = useState("");
  const [isMobileSearchOpen, setIsMobileSearchOpen] = useState(false);
  const searchInputRef = useRef<HTMLInputElement>(null);
  const mobileSearchInputRef = useRef<HTMLInputElement>(null);

  const currentPage =
    navigationItems.find(({ href }) =>
      href === "/"
        ? pathname === href
        : pathname === href || pathname.startsWith(`${href}/`),
    ) ?? navigationItems[0];

  const TitleIcon = currentPage.icon;

  const openMobileSearch = () => {
    setIsMobileSearchOpen(true);

    requestAnimationFrame(() => {
      mobileSearchInputRef.current?.focus();
    });
  };

  const closeMobileSearch = () => {
    setIsMobileSearchOpen(false);
  };

  useEffect(() => {
    const handleKeyDown = (event: KeyboardEvent) => {
      if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === "k") {
        event.preventDefault();

        if (window.matchMedia("(max-width: 767px)").matches) {
          setIsMobileSearchOpen(true);

          requestAnimationFrame(() => {
            mobileSearchInputRef.current?.focus();
          });

          return;
        }

        requestAnimationFrame(() => {
          searchInputRef.current?.focus();
        });
      }

      if (event.key === "Escape") {
        setIsMobileSearchOpen(false);
      }
    };

    window.addEventListener("keydown", handleKeyDown);

    return () => {
      window.removeEventListener("keydown", handleKeyDown);
    };
  }, []);

  return (
    <header className="flex h-16.5 items-center justify-between md:rounded-t-2xl border px-4 md:px-7">
      {isMobileSearchOpen ? (
        <div className="flex w-full items-center gap-2.5 md:hidden">
          <InputGroup className="h-8.5 flex-1 border-none bg-secondary p-1 pl-2.5">
            <InputGroupAddon className="pl-0">
              <span aria-hidden="true" className="flex items-center">
                <NavSearchIcon className="size-3.5 text-input-addon-foreground" />
              </span>
            </InputGroupAddon>

            <InputGroupInput
              ref={mobileSearchInputRef}
              className="h-full p-0 px-1.5!"
              aria-label="Quick search"
              placeholder="Quick search for demo"
              value={searchQuery}
              onChange={(event) => setSearchQuery(event.target.value)}
            />
          </InputGroup>

          <Button
            type="button"
            variant="outline"
            size="icon-lg"
            className="size-8.5 shrink-0 rounded-full"
            aria-label="Close search"
            onClick={closeMobileSearch}
          >
            <X aria-hidden="true" className="size-4.5" />
          </Button>
        </div>
      ) : (
        <>
          <div className="flex items-center md:gap-4.5">
            <SidebarTrigger className="size-8.5 shrink-0 md:hidden [&_svg]:size-5!" />

            <div className="hidden shrink-0 items-center gap-1.5 md:flex">
              <TitleIcon aria-hidden="true" className="size-4" />

              <h1 className="text-lg leading-none font-medium">
                {currentPage.name}
              </h1>
            </div>

            <InputGroup className="hidden h-8.5 border-none bg-secondary p-1 pl-2.5 md:flex md:w-75">
              <InputGroupAddon className="pl-0">
                <span aria-hidden="true" className="flex items-center">
                  <NavSearchIcon className="size-3.5 text-input-addon-foreground" />
                </span>
              </InputGroupAddon>

              <InputGroupInput
                ref={searchInputRef}
                className="h-full p-0 px-1.5!"
                aria-label="Quick search"
                placeholder="Quick search for demo"
                value={searchQuery}
                onChange={(event) => setSearchQuery(event.target.value)}
              />

              {searchQuery === "" && (
                <InputGroupAddon
                  align="inline-end"
                  className="pr-0 text-input-addon-foreground"
                >
                  <div className="flex items-center gap-1 rounded-sm bg-background px-1.75 py-1.25">
                    <NavCmdIcon className="size-2.5" />

                    <span className="text-xs leading-none">K</span>
                  </div>
                </InputGroupAddon>
              )}
            </InputGroup>
          </div>

          <div className="flex shrink-0 items-center gap-2.5">
            <Button
              type="button"
              variant="secondary"
              size="lg"
              className="hidden lg:flex h-8.5 gap-3 rounded-full px-3 py-2 pl-4"
            >
              <Blocks aria-hidden="true" className="size-4.5" />
              <span className="text-xs leading-none">Add Extension</span>
            </Button>

            <Button
              type="button"
              variant="outline"
              size="icon-lg"
              className="size-8.5 rounded-full lg:hidden"
              aria-label="Add Extension"
            >
              <Blocks aria-hidden="true" className="size-4.5" />
            </Button>

            <Button
              type="button"
              variant="outline"
              size="icon-lg"
              className="size-8.5 rounded-full md:hidden"
              aria-label="Open search"
              onClick={openMobileSearch}
            >
              <Search aria-hidden="true" className="size-4.5" />
            </Button>

            <DropdownMenu>
              <DropdownMenuTrigger
                type="button"
                className={buttonVariants({
                  variant: "outline",
                  size: "icon-lg",
                  className: "size-8.5 rounded-full",
                })}
                aria-label="Notifications"
              >
                <Bell aria-hidden="true" className="size-4.5" />
              </DropdownMenuTrigger>
              <DropdownMenuContent align="end" className="w-72">
                <DropdownMenuGroup>
                  <DropdownMenuLabel>Notifications</DropdownMenuLabel>
                  <DropdownMenuSeparator />
                  {notifications.map((notification) => (
                    <DropdownMenuItem
                      key={notification.id}
                      className="items-start py-2"
                    >
                      <div>
                        <p className="font-medium">{notification.title}</p>
                        <p className="text-muted-foreground text-xs">
                          {notification.description}
                        </p>
                        <p className="text-muted-foreground mt-1 text-xs">
                          {notification.time}
                        </p>
                      </div>
                    </DropdownMenuItem>
                  ))}
                </DropdownMenuGroup>
                <DropdownMenuSeparator />
                <DropdownMenuItem className="justify-center focus:bg-transparent hover:underline">
                  View all notifications
                </DropdownMenuItem>
              </DropdownMenuContent>
            </DropdownMenu>
          </div>
        </>
      )}
    </header>
  );
}
```

### `src/components/dashboards/demostack-dashboard/dashboard-layout.tsx`

```tsx
import type { CSSProperties, ReactNode } from "react";
import { DashboardSidebar } from "./components/demostack/sidebar";
import { DashboardTopbar } from "./components/demostack/topbar";
import { SidebarProvider } from "@/components/ui/sidebar";
import "./dashboard.css";

type DashboardLayoutProps = {
  children: ReactNode;
};

export default function DashboardLayout({ children }: DashboardLayoutProps) {
  return (
    <SidebarProvider
      className="demostack-dashboard h-svh gap-6 overflow-hidden no-scrollbar"
      style={
        {
          "--sidebar-width": "16.25rem",
          "--sidebar-width-icon": "5.125rem",
        } as CSSProperties
      }
    >
      <DashboardSidebar />

      <main className="flex min-w-0 flex-1 flex-col overflow-hidden md:p-1.5 md:pl-0">
        <div className="bg-background sticky top-0 z-50 w-full shrink-0">
          <DashboardTopbar />
        </div>

        <div className="flex-1 overflow-y-auto">
          <div className="min-h-full border-x border-b md:rounded-b-2xl">
            {children}
          </div>
        </div>
      </main>
    </SidebarProvider>
  );
}
```

### `src/components/dashboards/demostack-dashboard/dashboard.css`

```css
.demostack-dashboard,
body:has(.demostack-dashboard) [data-mobile="true"][data-sidebar="sidebar"],
body:has(.demostack-dashboard) [data-slot="dropdown-menu-content"],
body:has(.demostack-dashboard) [data-slot="sheet-content"],
body:has(.demostack-dashboard) [data-slot="tooltip-content"] {
  --radius: 0.625rem;
  --background: oklch(1 0 0);
  --foreground: oklch(0.145 0 0);
  --card: oklch(1 0 0);
  --card-foreground: oklch(0.145 0 0);
  --popover: oklch(1 0 0);
  --popover-foreground: oklch(0.145 0 0);
  --primary: oklch(0.458 0.216 276.933);
  --primary-foreground: oklch(0.985 0 0);
  --secondary: oklch(0.976 0 0);
  --secondary-foreground: oklch(0.205 0 0);
  --muted: oklch(0.97 0 0);
  --muted-foreground: oklch(0.442 0.032 273.476);
  --accent: oklch(0.97 0 0);
  --accent-foreground: oklch(0.205 0 0);
  --destructive: oklch(0.577 0.245 27.325);
  --border: rgb(230 230 230 / 50%);
  --input: oklch(0.922 0 0);
  --input-addon-foreground: oklch(0.777 0 0);
  --ring: oklch(0.708 0 0);
  --chart-1: oklch(0.646 0.222 41.116);
  --chart-2: oklch(0.6 0.118 184.704);
  --chart-3: oklch(0.398 0.07 227.392);
  --chart-4: oklch(0.828 0.189 84.429);
  --chart-5: oklch(0.769 0.188 70.08);
  --sidebar: var(--background);
  --sidebar-foreground: oklch(0.145 0 0);
  --sidebar-primary: oklch(0.205 0 0);
  --sidebar-primary-foreground: oklch(0.985 0 0);
  --sidebar-accent: oklch(0.967 0.003 264.542);
  --sidebar-accent-foreground: oklch(0.205 0 0);
  --sidebar-border: oklch(0.922 0 0);
  --sidebar-ring: oklch(0.708 0 0);

  background-color: var(--background);
  color: var(--foreground);
}

.demostack-dashboard.dark,
.dark .demostack-dashboard,
.dark
  body:has(.demostack-dashboard)
  [data-mobile="true"][data-sidebar="sidebar"],
.dark body:has(.demostack-dashboard) [data-slot="dropdown-menu-content"],
.dark body:has(.demostack-dashboard) [data-slot="sheet-content"],
.dark body:has(.demostack-dashboard) [data-slot="tooltip-content"] {
  --background: oklch(0.145 0 0);
  --foreground: oklch(0.985 0 0);
  --card: oklch(0.205 0 0);
  --card-foreground: oklch(0.985 0 0);
  --popover: oklch(0.205 0 0);
  --popover-foreground: oklch(0.985 0 0);
  --primary: oklch(0.68 0.158 276.935);
  --primary-foreground: oklch(0.205 0 0);
  --secondary: oklch(0.269 0 0);
  --secondary-foreground: oklch(0.985 0 0);
  --muted: oklch(0.269 0 0);
  --muted-foreground: oklch(0.694 0.032 273.476);
  --accent: oklch(0.269 0 0);
  --accent-foreground: oklch(0.985 0 0);
  --destructive: oklch(0.704 0.191 22.216);
  --border: rgb(230 230 230 / 15%);
  --input: oklch(1 0 0 / 15%);
  --input-addon-foreground: oklch(0.777 0 0);
  --ring: oklch(0.556 0 0);
  --chart-1: oklch(0.488 0.243 264.376);
  --chart-2: oklch(0.696 0.17 162.48);
  --chart-3: oklch(0.769 0.188 70.08);
  --chart-4: oklch(0.627 0.265 303.9);
  --chart-5: oklch(0.645 0.246 16.439);
  --sidebar: var(--background);
  --sidebar-foreground: oklch(0.985 0 0);
  --sidebar-primary: oklch(0.488 0.243 264.376);
  --sidebar-primary-foreground: oklch(0.985 0 0);
  --sidebar-accent: oklch(0.278 0.03 256.848);
  --sidebar-accent-foreground: oklch(0.985 0 0);
  --sidebar-border: oklch(1 0 0 / 10%);
  --sidebar-ring: oklch(0.556 0 0);
}

body:has(.demostack-dashboard) [data-slot="tooltip-content"] {
  background-color: var(--foreground) !important;
  color: var(--background) !important;
}

body:has(.demostack-dashboard) [data-slot="tooltip-content"] > svg {
  background-color: var(--foreground) !important;
  fill: var(--foreground) !important;
}

/* custom classes */
.no-scrollbar,
.no-scrollbar * {
  -ms-overflow-style: none;
  scrollbar-width: none;
}

.no-scrollbar::-webkit-scrollbar,
.no-scrollbar *::-webkit-scrollbar {
  display: none;
}

.text-input-addon-foreground {
  color: var(--input-addon-foreground);
}

.text-xxs {
  font-size: 0.625rem;
}

body:has(.demostack-dashboard)
  [data-slot="dropdown-menu-content"]
  [data-slot="dropdown-menu-item"],
body:has(.demostack-dashboard)
  [data-slot="dropdown-menu-content"]
  [data-slot="dropdown-menu-sub-trigger"] {
  padding-inline: 0.625rem;
  padding-block: 0.625rem;
}

body:has(.demostack-dashboard)
  [data-slot="dropdown-menu-content"]
  [data-slot="dropdown-menu-checkbox-item"],
body:has(.demostack-dashboard)
  [data-slot="dropdown-menu-content"]
  [data-slot="dropdown-menu-radio-item"] {
  padding-block: 0.625rem;
  padding-left: 0.625rem;
  padding-right: 2rem;
}
```

### `src/components/dashboards/demostack-dashboard/data.ts`

```ts
import type { ComponentType, SVGProps } from "react";
import { ChartNoAxesCombined, Palette, Plug, Settings } from "lucide-react";
import {
  DemostacksIcon,
  GroupGenericIcon,
  HomeIcon,
  NavTitleIcon,
  ShowcasesIcon,
  VideosIcon,
} from "./components/demostack/icons";

export type Demostack = {
  id: string;
  title: string;
  author: string;
  avatar: string;
  image: string;
};

export const demostacks: Demostack[] = [
  {
    id: "monitor-demo-performance",
    title: "Stockroom Inventory Onboarding",
    author: "Abiola Ahmed",
    avatar:
      "https://images.unsplash.com/photo-1527980965255-d3b416303d12?auto=format&fit=crop&q=80&w=96&h=96",
    image: "https://assets.watermelon.sh/components/stockroom-tour-3x2.png",
  },
  {
    id: "introduction-to-app",
    title: "Gridwise Platform Tour",
    author: "Vansh P.",
    avatar:
      "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?auto=format&fit=crop&q=80&w=96&h=96",
    image: "https://assets.watermelon.sh/components/gridwise-tour-3x2.png",
  },
  {
    id: "monitor-detail-performance",
    title: "Resolve a Support Request",
    author: "Ava C",
    avatar:
      "https://images.unsplash.com/photo-1494790108377-be9c29b29330?auto=format&fit=crop&q=80&w=96&h=96",
    image:
      "https://assets.watermelon.sh/components/support-request-tour-3x2.png",
  },
  {
    id: "revenue-overview-tour",
    title: "Northpeak Revenue Overview",
    author: "Maya R.",
    avatar:
      "https://images.unsplash.com/photo-1534528741775-53994a69daeb?auto=format&fit=crop&q=80&w=96&h=96",
    image:
      "https://assets.watermelon.sh/components/analytics-dashboard-3x2.png",
  },
];

export type SvgIcon = ComponentType<SVGProps<SVGSVGElement>>;

export type NavigationItem = {
  name: string;
  href: string;
  icon: SvgIcon;
  badge?: string;
};

export const companies = [
  {
    name: "My Company",
    role: "Admin",
    members: [
      {
        name: "Maya",
        avatar:
          "https://images.unsplash.com/photo-1534528741775-53994a69daeb?auto=format&fit=crop&q=80&w=256&h=256",
        initials: "M",
      },
    ],
  },
  {
    name: "Acme Corporation",
    role: "Member",
    members: [
      {
        name: "Abiola Ahmed",
        avatar:
          "https://images.unsplash.com/photo-1527980965255-d3b416303d12?auto=format&fit=crop&q=80&w=256&h=256",
        initials: "AA",
      },
      {
        name: "Ava C",
        avatar:
          "https://images.unsplash.com/photo-1494790108377-be9c29b29330?auto=format&fit=crop&q=80&w=256&h=256",
        initials: "AC",
      },
    ],
  },
  {
    name: "Tiktok Inc",
    role: "Admin",
    members: [
      {
        name: "Vansh Patel",
        avatar:
          "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?auto=format&fit=crop&q=80&w=256&h=256",
        initials: "VP",
      },
    ],
  },
] as const;

export const currentUser = {
  name: "Vansh Patel",
  email: "vanshpatel@gmail.com",
  avatar: "https://api.dicebear.com/10.x/notionists/svg",
  initials: "VP",
} as const;

export const notifications = [
  {
    id: "demostack-shared",
    title: "New Demostack shared",
    description: "Abiola Ahmed shared a Demostack with you.",
    time: "2 min ago",
  },
  {
    id: "showcase-published",
    title: "Showcase published",
    description: "Your latest showcase is now live.",
    time: "1 hour ago",
  },
  {
    id: "workspace-invitation",
    title: "Workspace invitation",
    description: "You were invited to join Acme Corporation.",
    time: "Yesterday",
  },
] as const;

export const workspaceNavigation: NavigationItem[] = [
  { name: "Home", href: "/", icon: HomeIcon },
  { name: "Demostacks", href: "/demostacks", icon: DemostacksIcon },
  { name: "Showcases", href: "/showcases", icon: ShowcasesIcon },
  { name: "Videos", href: "/videos", icon: VideosIcon, badge: "Beta" },
  { name: "Demo Hub", href: "/demo-hub", icon: GroupGenericIcon },
];

export const adminNavigation: NavigationItem[] = [
  { name: "Analytics", href: "/analytics", icon: ChartNoAxesCombined },
  { name: "Theme", href: "/theme", icon: Palette },
  { name: "Integration", href: "/integration", icon: Plug },
  { name: "Settings", href: "/settings", icon: Settings },
];

export const pageDetails = {
  "/": { title: "Home", icon: NavTitleIcon },
  "/demostacks": { title: "Demostacks", icon: DemostacksIcon },
  "/showcases": { title: "Showcases", icon: ShowcasesIcon },
  "/videos": { title: "Videos", icon: VideosIcon },
  "/demo-hub": { title: "Demo Hub", icon: GroupGenericIcon },
  "/analytics": { title: "Analytics", icon: ChartNoAxesCombined },
  "/theme": { title: "Theme", icon: Palette },
  "/integration": { title: "Integration", icon: Plug },
  "/settings": { title: "Settings", icon: Settings },
} as const;
```

### `src/components/dashboards/demostack-dashboard/demo.tsx`

```tsx
import DashboardLayout from "./dashboard-layout";
import { DashboardContent } from "./components/demostack/dashboard-content";
import { DemostacksContent } from "./components/demostack/demostacks-content";
import {
  DashboardNavigationProvider,
  useDashboardNavigation,
} from "./components/demostack/navigation";
import { ThemeProvider } from "./components/demostack/theme-provider";

function DashboardRoute() {
  const { pathname } = useDashboardNavigation();

  return (
    <DashboardLayout>
      {pathname === "/demostacks" ? (
        <DemostacksContent />
      ) : (
        <DashboardContent />
      )}
    </DashboardLayout>
  );
}

export default function DemostackDashboardDemo() {
  return (
    <ThemeProvider>
      <DashboardNavigationProvider>
        <DashboardRoute />
      </DashboardNavigationProvider>
    </ThemeProvider>
  );
}
```
