import { faPencil, faPlus, faX } from '@fortawesome/free-solid-svg-icons'; import { usePopUp } from '../../../hooks/usePopUp'; import Button from '../buttons/Button'; import { AddUpdateEnvironmentDialog } from '../dialog/AddUpdateEnvironmentDialog'; import DeleteActionModal from '../dialog/DeleteActionModal'; type Env = { name: string; slug: string }; type Props = { data: Env[]; onCreateEnv: (arg0: Env) => Promise; onUpdateEnv: (oldSlug: string, arg0: Env) => Promise; onDeleteEnv: (slug: string) => Promise; }; const EnvironmentTable = ({ data = [], onCreateEnv, onDeleteEnv, onUpdateEnv, }: Props) => { const { popUp, handlePopUpOpen, handlePopUpClose } = usePopUp([ 'createUpdateEnv', 'deleteEnv', ] as const); const onEnvCreateCB = async (env: Env) => { try { await onCreateEnv(env); handlePopUpClose('createUpdateEnv'); } catch (error) { console.error(error); } }; const onEnvUpdateCB = async (env: Env) => { try { await onUpdateEnv( (popUp.createUpdateEnv?.data as Pick)?.slug, env ); handlePopUpClose('createUpdateEnv'); } catch (error) { console.error(error); } }; const onEnvDeleteCB = async () => { try { await onDeleteEnv( (popUp.deleteEnv?.data as Pick)?.slug ); handlePopUpClose('deleteEnv'); } catch (error) { console.error(error); } }; return ( <>

Project Environments

Choose which environments will show up in your dashboard like development, staging, production

Note: the text in slugs shows how these environmant should be accessed in CLI.

{data?.length > 0 ? ( data.map(({ name, slug }) => { return ( ); }) ) : ( )}
Name Slug
{name} {slug}
No environmants found
handlePopUpClose('deleteEnv')} onSubmit={onEnvDeleteCB} /> handlePopUpClose('createUpdateEnv')} onCreateSubmit={onEnvCreateCB} onEditSubmit={onEnvUpdateCB} />
); }; export default EnvironmentTable;