import { HStack, Icon, VStack, Text, Divider, Spinner, AspectRatio, SkeletonText, } from "@chakra-ui/react"; import { RiFlaskLine } from "react-icons/ri"; import { formatTimePast } from "~/utils/dayjs"; import Link from "next/link"; import { useRouter } from "next/router"; import { BsPlusSquare } from "react-icons/bs"; import { api } from "~/utils/api"; import { useHandledAsyncCallback } from "~/utils/hooks"; type ExperimentData = { testScenarioCount: number; promptVariantCount: number; id: string; label: string; sortIndex: number; createdAt: Date; updatedAt: Date; }; export const ExperimentCard = ({ exp }: { exp: ExperimentData }) => { return ( {exp.label} Created {formatTimePast(exp.createdAt)} Updated {formatTimePast(exp.updatedAt)} ); }; const CountLabel = ({ label, count }: { label: string; count: number }) => { return ( {label} {count} ); }; export const NewExperimentCard = () => { const router = useRouter(); const createMutation = api.experiments.create.useMutation(); const [createExperiment, isLoading] = useHandledAsyncCallback(async () => { const newExperiment = await createMutation.mutateAsync({ label: "New Experiment" }); await router.push({ pathname: "/experiments/[id]", query: { id: newExperiment.id } }); }, [createMutation, router]); return ( New Experiment ); }; export const ExperimentCardSkeleton = () => ( );