import { DangerButton, DarkButton, LightButton, PrimaryButton, SecondaryButton, SuccessButton, TertiaryButton, WarningButton } from "$/component/button"; import InfoButton from "$/component/button/InfoButton"; import MoltenButton from "$/component/button/MoltenButton"; import { MattrixwvTabGroup } from "$/component/tab"; import type { ButtonProps, ButtonSize } from "$/types/ButtonTypes"; import type { TabGroupContent } from "$/types/TabTypes"; import { createFileRoute } from "@tanstack/react-router"; import { useState, type JSX } from "react"; import { BsBag } from "react-icons/bs"; export const Route = createFileRoute("/buttons/")({ component: ButtonPage }); function ButtonPage(){ const [ clickCount, setClickCount ] = useState(0); const tabs: TabGroupContent[] = [ { tab: "Primary", content: generateTabContent(PrimaryButton, () => setClickCount(clickCount + 1)) }, { tab: "Secondary", content: generateTabContent(SecondaryButton, () => setClickCount(clickCount + 1)) }, { tab: "Tertiary", content: generateTabContent(TertiaryButton, () => setClickCount(clickCount + 1)) }, { tab: "Info", content: generateTabContent(InfoButton, () => setClickCount(clickCount + 1)) }, { tab: "Success", content: generateTabContent(SuccessButton, () => setClickCount(clickCount + 1)) }, { tab: "Warning", content: generateTabContent(WarningButton, () => setClickCount(clickCount + 1)) }, { tab: "Danger", content: generateTabContent(DangerButton, () => setClickCount(clickCount + 1)) }, { tab: "Molten", content: generateTabContent(MoltenButton, () => setClickCount(clickCount + 1)) }, { tab: "Dark", content: generateTabContent(DarkButton, () => setClickCount(clickCount + 1)) }, { tab: "Light", content: generateTabContent(LightButton, () => setClickCount(clickCount + 1)) } ]; return (

Count {clickCount}

); } function generateTabContent(Fn: (props: ButtonProps) => JSX.Element, onClick: () => void): React.ReactNode{ const sizes: { size: ButtonSize; title: string; }[] = [ { size: "xl", title: "X-Large" }, { size: "lg", title: "Large" }, { size: "md", title: "Medium" }, { size: "sm", title: "Small" }, { size: "xs", title: "X-Small" }, ]; return (
{sizes.map((size) => ({size.title}))} Disabled {sizes.map((size) => ())} None Small Medium Large Full {sizes.map((size) => ({size.title}))} Disabled {sizes.map((size) => ({size.title}))} Disabled {sizes.map((size) => ({size.title}))} Disabled {sizes.map((size) => ({}))}
); } function ButtonDisplay({ title, children }: Readonly<{ title: React.ReactNode; children: React.ReactNode; }>){ return (

{title}

{children}
); }