import { Button, type ButtonProps, HStack, Spinner, Icon } from "@chakra-ui/react"; import { BsPlus } from "react-icons/bs"; import { api } from "~/utils/api"; import { useExperiment, useExperimentAccess, useHandledAsyncCallback } from "~/utils/hooks"; // Extracted Button styling into reusable component const StyledButton = ({ children, onClick }: ButtonProps) => ( ); export default function NewScenarioButton() { const { canModify } = useExperimentAccess(); const experiment = useExperiment(); const mutation = api.scenarios.create.useMutation(); const utils = api.useContext(); const [onClick] = useHandledAsyncCallback(async () => { if (!experiment.data) return; await mutation.mutateAsync({ experimentId: experiment.data.id, }); await utils.scenarios.list.invalidate(); }, [mutation]); const [onAutogenerate, autogenerating] = useHandledAsyncCallback(async () => { if (!experiment.data) return; await mutation.mutateAsync({ experimentId: experiment.data.id, autogenerate: true, }); await utils.scenarios.list.invalidate(); }, [mutation]); if (!canModify) return null; return ( Add Scenario Autogenerate Scenario ); }