temp (?) fix build

revert this if needed
This commit is contained in:
Eric Lewis 2024-02-26 11:56:51 -05:00
parent 0dfecd024d
commit 042aff2f87
46 changed files with 459 additions and 181 deletions

View File

@ -126,7 +126,8 @@ const DatePicker = ({
crossOrigin={undefined} crossOrigin={undefined}
/> />
</PopoverHandler> </PopoverHandler>
<PopoverContent> {/* TODO: Figure out what placeholder is for */}
<PopoverContent placeholder={''}>
{mode === 'single' && ( {mode === 'single' && (
<DayPicker <DayPicker
mode="single" mode="single"
@ -145,19 +146,23 @@ const DatePicker = ({
/> />
<HorizontalLine /> <HorizontalLine />
<div className="flex justify-end"> <div className="flex justify-end">
{/* TODO: Figure out what placeholder is for */}
<Button <Button
size="sm" size="sm"
className="rounded-full mr-2" className="rounded-full mr-2"
variant="outlined" variant="outlined"
onClick={() => setIsOpen(false)} onClick={() => setIsOpen(false)}
placeholder={''}
> >
Cancel Cancel
</Button> </Button>
{/* TODO: Figure out what placeholder is for */}
<Button <Button
size="sm" size="sm"
className="rounded-full" className="rounded-full"
color="gray" color="gray"
onClick={() => handleRangeSelect()} onClick={() => handleRangeSelect()}
placeholder={''}
> >
Select Select
</Button> </Button>

View File

@ -52,7 +52,7 @@ const Sidebar = () => {
<div>^</div> <div>^</div>
<div> <div>
<span>{organizations[index!]?.name}</span> <span>{organizations[index!]?.name}</span>
<Typography>Organization</Typography> <Typography placeholder={''}>Organization</Typography>
</div> </div>
</div> </div>
)} )}
@ -70,7 +70,7 @@ const Sidebar = () => {
to={`/${orgSlug}`} to={`/${orgSlug}`}
className={({ isActive }) => (isActive ? 'text-blue-500' : '')} className={({ isActive }) => (isActive ? 'text-blue-500' : '')}
> >
<Typography>Projects</Typography> <Typography placeholder={''}>Projects</Typography>
</NavLink> </NavLink>
</div> </div>
<div> <div>
@ -78,7 +78,7 @@ const Sidebar = () => {
to={`/${orgSlug}/settings`} to={`/${orgSlug}/settings`}
className={({ isActive }) => (isActive ? 'text-blue-500' : '')} className={({ isActive }) => (isActive ? 'text-blue-500' : '')}
> >
<Typography>Settings</Typography> <Typography placeholder={''}>Settings</Typography>
</NavLink> </NavLink>
</div> </div>
</div> </div>

View File

@ -21,11 +21,15 @@ const ProjectCard: React.FC<ProjectCardProps> = ({ project }) => {
return ( return (
<div className="bg-white border border-gray-200 rounded-lg shadow"> <div className="bg-white border border-gray-200 rounded-lg shadow">
<div className="flex gap-2 p-2 items-center"> <div className="flex gap-2 p-2 items-center">
<Avatar variant="rounded" src={project.icon || '/gray.png'} /> <Avatar
variant="rounded"
src={project.icon || '/gray.png'}
placeholder={''}
/>
<div className="grow"> <div className="grow">
<Link to={`projects/${project.id}`}> <Link to={`projects/${project.id}`}>
<Typography>{project.name}</Typography> <Typography placeholder={''}>{project.name}</Typography>
<Typography color="gray" variant="small"> <Typography color="gray" variant="small" placeholder={''}>
{project.deployments[0]?.domain?.name ?? {project.deployments[0]?.domain?.name ??
'No Production Deployment'} 'No Production Deployment'}
</Typography> </Typography>
@ -35,25 +39,27 @@ const ProjectCard: React.FC<ProjectCardProps> = ({ project }) => {
<MenuHandler> <MenuHandler>
<button>...</button> <button>...</button>
</MenuHandler> </MenuHandler>
<MenuList> <MenuList placeholder={''}>
<MenuItem>^ Project settings</MenuItem> <MenuItem placeholder={''}>^ Project settings</MenuItem>
<MenuItem className="text-red-500">^ Delete project</MenuItem> <MenuItem className="text-red-500" placeholder={''}>
^ Delete project
</MenuItem>
</MenuList> </MenuList>
</Menu> </Menu>
</div> </div>
<div className="border-t-2 border-solid p-4 bg-gray-50"> <div className="border-t-2 border-solid p-4 bg-gray-50">
{project.deployments.length > 0 ? ( {project.deployments.length > 0 ? (
<> <>
<Typography variant="small" color="gray"> <Typography variant="small" color="gray" placeholder={''}>
^ {project.deployments[0].commitMessage} ^ {project.deployments[0].commitMessage}
</Typography> </Typography>
<Typography variant="small" color="gray"> <Typography variant="small" color="gray" placeholder={''}>
{relativeTimeMs(project.deployments[0].createdAt)} on ^&nbsp; {relativeTimeMs(project.deployments[0].createdAt)} on ^&nbsp;
{project.deployments[0].branch} {project.deployments[0].branch}
</Typography> </Typography>
</> </>
) : ( ) : (
<Typography variant="small" color="gray"> <Typography variant="small" color="gray" placeholder={''}>
No Production deployment No Production deployment
</Typography> </Typography>
)} )}

View File

@ -71,12 +71,13 @@ const ProjectSearchBar = ({ onChange }: ProjectsSearchProps) => {
className={`absolute w-1/2 max-h-52 -mt-1 overflow-y-auto ${ className={`absolute w-1/2 max-h-52 -mt-1 overflow-y-auto ${
(!inputValue || !isOpen) && 'hidden' (!inputValue || !isOpen) && 'hidden'
}`} }`}
placeholder={''}
> >
<List {...getMenuProps()}> <List {...getMenuProps()}>
{items.length ? ( {items.length ? (
<> <>
<div className="p-3"> <div className="p-3">
<Typography variant="small" color="gray"> <Typography variant="small" color="gray" placeholder={''}>
Suggestions Suggestions
</Typography> </Typography>
</div> </div>
@ -84,19 +85,25 @@ const ProjectSearchBar = ({ onChange }: ProjectsSearchProps) => {
<ListItem <ListItem
selected={highlightedIndex === index || selectedItem === item} selected={highlightedIndex === index || selectedItem === item}
key={item.id} key={item.id}
placeholder={''}
{...getItemProps({ item, index })} {...getItemProps({ item, index })}
> >
<ListItemPrefix> <ListItemPrefix placeholder={''}>
<Avatar src={item.icon || '/gray.png'} variant="rounded" /> <Avatar
src={item.icon || '/gray.png'}
variant="rounded"
placeholder={''}
/>
</ListItemPrefix> </ListItemPrefix>
<div> <div>
<Typography variant="h6" color="blue-gray"> <Typography variant="h6" color="blue-gray" placeholder={''}>
{item.name} {item.name}
</Typography> </Typography>
<Typography <Typography
variant="small" variant="small"
color="gray" color="gray"
className="font-normal" className="font-normal"
placeholder={''}
> >
{item.organization.name} {item.organization.name}
</Typography> </Typography>
@ -106,7 +113,9 @@ const ProjectSearchBar = ({ onChange }: ProjectsSearchProps) => {
</> </>
) : ( ) : (
<div className="p-3"> <div className="p-3">
<Typography>^ No projects matching this name</Typography> <Typography placeholder={''}>
^ No projects matching this name
</Typography>
</div> </div>
)} )}
</List> </List>

View File

@ -46,9 +46,15 @@ const ConnectAccount = ({ onAuth: onToken }: ConnectAccountInterface) => {
width={1000} width={1000}
height={1000} height={1000}
> >
<Button className="rounded-full mx-2">Connect to Github</Button> {/* TODO: figure out what placeholder is for */}
<Button className="rounded-full mx-2" placeholder={''}>
Connect to Github
</Button>
</OauthPopup> </OauthPopup>
<Button className="rounded-full mx-2">Connect to Gitea</Button> {/* TODO: figure out what placeholder is for */}
<Button className="rounded-full mx-2" placeholder={''}>
Connect to Gitea
</Button>
</div> </div>
<ConnectAccountTabPanel /> <ConnectAccountTabPanel />
</div> </div>

View File

@ -5,11 +5,11 @@ import { Tabs, TabsHeader, Tab } from '@material-tailwind/react';
const ConnectAccountTabPanel = () => { const ConnectAccountTabPanel = () => {
return ( return (
<Tabs className="grid bg-white h-32 p-2 m-4 rounded-md" value="import"> <Tabs className="grid bg-white h-32 p-2 m-4 rounded-md" value="import">
<TabsHeader className="grid grid-cols-2"> <TabsHeader className="grid grid-cols-2" placeholder={''}>
<Tab className="row-span-1" value="import"> <Tab className="row-span-1" value="import" placeholder={''}>
Import a repository Import a repository
</Tab> </Tab>
<Tab className="row-span-2" value="template"> <Tab className="row-span-2" value="template" placeholder={''}>
Start with a template Start with a template
</Tab> </Tab>
</TabsHeader> </TabsHeader>

View File

@ -43,7 +43,12 @@ const Deploy = () => {
</div> </div>
</div> </div>
<div> <div>
<Button onClick={handleOpen} variant="outlined" size="sm"> <Button
onClick={handleOpen}
variant="outlined"
size="sm"
placeholder={''}
>
^ Cancel ^ Cancel
</Button> </Button>
</div> </div>
@ -55,7 +60,7 @@ const Deploy = () => {
handleConfirm={handleCancel} handleConfirm={handleCancel}
color="red" color="red"
> >
<Typography variant="small"> <Typography variant="small" placeholder={''}>
This will halt the deployment and you will have to start the process This will halt the deployment and you will have to start the process
from scratch. from scratch.
</Typography> </Typography>

View File

@ -62,7 +62,12 @@ const DeployStep = ({
<div className="p-2 text-sm text-gray-500 h-36 overflow-y-scroll"> <div className="p-2 text-sm text-gray-500 h-36 overflow-y-scroll">
{processLogs.map((log, key) => { {processLogs.map((log, key) => {
return ( return (
<Typography variant="small" color="gray" key={key}> <Typography
variant="small"
color="gray"
key={key}
placeholder={''}
>
{log} {log}
</Typography> </Typography>
); );
@ -75,6 +80,7 @@ const DeployStep = ({
toast.success('Logs copied'); toast.success('Logs copied');
}} }}
color="blue" color="blue"
placeholder={''}
> >
^ Copy log ^ Copy log
</Button> </Button>

View File

@ -66,7 +66,9 @@ const ProjectRepoCard: React.FC<ProjectRepoCardProps> = ({ repository }) => {
<Spinner className="h-4 w-4" /> <Spinner className="h-4 w-4" />
) : ( ) : (
<div className="hidden group-hover:block"> <div className="hidden group-hover:block">
<IconButton size="sm">{'>'}</IconButton> <IconButton size="sm" placeholder={''}>
{'>'}
</IconButton>
</div> </div>
)} )}
</div> </div>

View File

@ -136,11 +136,12 @@ const RepositoryList = ({ octokit }: RepositoryListProps) => {
) : ( ) : (
<div className="mt-4 p-6 flex items-center justify-center"> <div className="mt-4 p-6 flex items-center justify-center">
<div className="text-center"> <div className="text-center">
<Typography>No repository found</Typography> <Typography placeholder={''}>No repository found</Typography>
<Button <Button
className="rounded-full mt-5" className="rounded-full mt-5"
size="sm" size="sm"
onClick={handleResetFilters} onClick={handleResetFilters}
placeholder={''}
> >
^ Reset filters ^ Reset filters
</Button> </Button>

View File

@ -18,11 +18,15 @@ interface TemplateCardProps {
const CardDetails = ({ template }: { template: TemplateDetails }) => { const CardDetails = ({ template }: { template: TemplateDetails }) => {
return ( return (
<div className="h-14 group bg-gray-200 border-gray-200 rounded-lg shadow p-4 flex items-center justify-between"> <div className="h-14 group bg-gray-200 border-gray-200 rounded-lg shadow p-4 flex items-center justify-between">
<Typography className="grow"> <Typography className="grow" placeholder={''}>
{template.icon} {template.name} {template.icon} {template.name}
</Typography> </Typography>
<div> <div>
<IconButton size="sm" className="rounded-full hidden group-hover:block"> <IconButton
size="sm"
className="rounded-full hidden group-hover:block"
placeholder={''}
>
{'>'} {'>'}
</IconButton> </IconButton>
</div> </div>

View File

@ -13,20 +13,29 @@ const ActivityCard = ({ activity }: ActivityCardProps) => {
return ( return (
<div className="group flex gap-2 hover:bg-gray-200 rounded mt-1"> <div className="group flex gap-2 hover:bg-gray-200 rounded mt-1">
<div className="w-8"> <div className="w-8">
<Avatar src={activity.author?.avatar_url} variant="rounded" size="sm" /> <Avatar
src={activity.author?.avatar_url}
variant="rounded"
size="sm"
placeholder={''}
/>
</div> </div>
<div className="grow"> <div className="grow">
<Typography>{activity.commit.author?.name}</Typography> <Typography placeholder={''}>{activity.commit.author?.name}</Typography>
<Typography variant="small" color="gray"> <Typography variant="small" color="gray" placeholder={''}>
{relativeTimeISO(activity.commit.author!.date!)} ^{' '} {relativeTimeISO(activity.commit.author!.date!)} ^{' '}
{activity.branch.name} {activity.branch.name}
</Typography> </Typography>
<Typography variant="small" color="gray"> <Typography variant="small" color="gray" placeholder={''}>
{activity.commit.message} {activity.commit.message}
</Typography> </Typography>
</div> </div>
<div className="mr-2 self-center hidden group-hover:block"> <div className="mr-2 self-center hidden group-hover:block">
<IconButton size="sm" className="rounded-full bg-gray-600"> <IconButton
size="sm"
className="rounded-full bg-gray-600"
placeholder={''}
>
{'>'} {'>'}
</IconButton> </IconButton>
</div> </div>

View File

@ -17,9 +17,9 @@ interface AssignDomainProps {
const AssignDomainDialog = ({ open, handleOpen }: AssignDomainProps) => { const AssignDomainDialog = ({ open, handleOpen }: AssignDomainProps) => {
return ( return (
<Dialog open={open} handler={handleOpen}> <Dialog open={open} handler={handleOpen} placeholder={''}>
<DialogHeader>Assign Domain</DialogHeader> <DialogHeader placeholder={''}>Assign Domain</DialogHeader>
<DialogBody> <DialogBody placeholder={''}>
In order to assign a domain to your production deployments, configure it In order to assign a domain to your production deployments, configure it
in the{' '} in the{' '}
{/* TODO: Fix selection of project settings tab on navigation to domains */} {/* TODO: Fix selection of project settings tab on navigation to domains */}
@ -36,12 +36,13 @@ const AssignDomainDialog = ({ open, handleOpen }: AssignDomainProps) => {
theme={atomOneLight} theme={atomOneLight}
/> />
</DialogBody> </DialogBody>
<DialogFooter className="flex justify-start"> <DialogFooter className="flex justify-start" placeholder={''}>
<Button <Button
className="rounded-3xl" className="rounded-3xl"
variant="gradient" variant="gradient"
color="blue" color="blue"
onClick={handleOpen} onClick={handleOpen}
placeholder={''}
> >
<span>Okay</span> <span>Okay</span>
</Button> </Button>

View File

@ -93,10 +93,12 @@ const DeploymentDetailsCard = ({
<div className="col-span-3"> <div className="col-span-3">
<div className="flex"> <div className="flex">
{deployment.url && ( {deployment.url && (
<Typography className=" basis-3/4">{deployment.url}</Typography> <Typography className="basis-3/4" placeholder={''}>
{deployment.url}
</Typography>
)} )}
</div> </div>
<Typography color="gray"> <Typography color="gray" placeholder={''}>
{deployment.environment === Environment.Production {deployment.environment === Environment.Production
? `Production ${deployment.isCurrent ? '(Current)' : ''}` ? `Production ${deployment.isCurrent ? '(Current)' : ''}`
: 'Preview'} : 'Preview'}
@ -111,14 +113,16 @@ const DeploymentDetailsCard = ({
/> />
</div> </div>
<div className="col-span-2"> <div className="col-span-2">
<Typography color="gray">^ {deployment.branch}</Typography> <Typography color="gray" placeholder={''}>
<Typography color="gray"> ^ {deployment.branch}
</Typography>
<Typography color="gray" placeholder={''}>
^ {deployment.commitHash.substring(0, SHORT_COMMIT_HASH_LENGTH)}{' '} ^ {deployment.commitHash.substring(0, SHORT_COMMIT_HASH_LENGTH)}{' '}
{deployment.commitMessage} {deployment.commitMessage}
</Typography> </Typography>
</div> </div>
<div className="col-span-2 flex items-center"> <div className="col-span-2 flex items-center">
<Typography color="gray" className="grow"> <Typography color="gray" className="grow" placeholder={''}>
^ {relativeTimeMs(deployment.createdAt)} ^{' '} ^ {relativeTimeMs(deployment.createdAt)} ^{' '}
<Tooltip content={deployment.createdBy.name}> <Tooltip content={deployment.createdBy.name}>
{formatAddress(deployment.createdBy.name ?? '')} {formatAddress(deployment.createdBy.name ?? '')}
@ -128,18 +132,22 @@ const DeploymentDetailsCard = ({
<MenuHandler> <MenuHandler>
<button className="self-start">...</button> <button className="self-start">...</button>
</MenuHandler> </MenuHandler>
<MenuList> <MenuList placeholder={''}>
<a href={deployment.url} target="_blank" rel="noreferrer"> <a href={deployment.url} target="_blank" rel="noreferrer">
<MenuItem disabled={!Boolean(deployment.url)}>^ Visit</MenuItem> <MenuItem disabled={!Boolean(deployment.url)} placeholder={''}>
^ Visit
</MenuItem>
</a> </a>
<MenuItem <MenuItem
onClick={() => setAssignDomainDialog(!assignDomainDialog)} onClick={() => setAssignDomainDialog(!assignDomainDialog)}
placeholder={''}
> >
^ Assign domain ^ Assign domain
</MenuItem> </MenuItem>
<MenuItem <MenuItem
onClick={() => setChangeToProduction(!changeToProduction)} onClick={() => setChangeToProduction(!changeToProduction)}
disabled={!(deployment.environment !== Environment.Production)} disabled={!(deployment.environment !== Environment.Production)}
placeholder={''}
> >
^ Change to production ^ Change to production
</MenuItem> </MenuItem>
@ -152,6 +160,7 @@ const DeploymentDetailsCard = ({
deployment.isCurrent deployment.isCurrent
) )
} }
placeholder={''}
> >
^ Redeploy to production ^ Redeploy to production
</MenuItem> </MenuItem>
@ -162,6 +171,7 @@ const DeploymentDetailsCard = ({
deployment.environment !== Environment.Production || deployment.environment !== Environment.Production ||
!Boolean(currentDeployment) !Boolean(currentDeployment)
} }
placeholder={''}
> >
^ Rollback to this version ^ Rollback to this version
</MenuItem> </MenuItem>
@ -180,17 +190,22 @@ const DeploymentDetailsCard = ({
}} }}
> >
<div className="flex flex-col gap-2"> <div className="flex flex-col gap-2">
<Typography variant="small"> <Typography variant="small" placeholder={''}>
Upon confirmation, this deployment will be changed to production. Upon confirmation, this deployment will be changed to production.
</Typography> </Typography>
<DeploymentDialogBodyCard deployment={deployment} /> <DeploymentDialogBodyCard deployment={deployment} />
<Typography variant="small"> <Typography variant="small" placeholder={''}>
The new deployment will be associated with these domains: The new deployment will be associated with these domains:
</Typography> </Typography>
{prodBranchDomains.length > 0 && {prodBranchDomains.length > 0 &&
prodBranchDomains.map((value) => { prodBranchDomains.map((value) => {
return ( return (
<Typography variant="small" color="blue" key={value.id}> <Typography
variant="small"
color="blue"
key={value.id}
placeholder={''}
>
^ {value.name} ^ {value.name}
</Typography> </Typography>
); );
@ -209,16 +224,16 @@ const DeploymentDetailsCard = ({
}} }}
> >
<div className="flex flex-col gap-2"> <div className="flex flex-col gap-2">
<Typography variant="small"> <Typography variant="small" placeholder={''}>
Upon confirmation, new deployment will be created with the same Upon confirmation, new deployment will be created with the same
source code as current deployment. source code as current deployment.
</Typography> </Typography>
<DeploymentDialogBodyCard deployment={deployment} /> <DeploymentDialogBodyCard deployment={deployment} />
<Typography variant="small"> <Typography variant="small" placeholder={''}>
These domains will point to your new deployment: These domains will point to your new deployment:
</Typography> </Typography>
{deployment.domain?.name && ( {deployment.domain?.name && (
<Typography variant="small" color="blue"> <Typography variant="small" color="blue" placeholder={''}>
{deployment.domain?.name} {deployment.domain?.name}
</Typography> </Typography>
)} )}
@ -237,7 +252,7 @@ const DeploymentDetailsCard = ({
}} }}
> >
<div className="flex flex-col gap-2"> <div className="flex flex-col gap-2">
<Typography variant="small"> <Typography variant="small" placeholder={''}>
Upon confirmation, this deployment will replace your current Upon confirmation, this deployment will replace your current
deployment deployment
</Typography> </Typography>
@ -255,10 +270,10 @@ const DeploymentDetailsCard = ({
color: 'orange', color: 'orange',
}} }}
/> />
<Typography variant="small"> <Typography variant="small" placeholder={''}>
These domains will point to your new deployment: These domains will point to your new deployment:
</Typography> </Typography>
<Typography variant="small" color="blue"> <Typography variant="small" color="blue" placeholder={''}>
^ {currentDeployment.domain?.name} ^ {currentDeployment.domain?.name}
</Typography> </Typography>
</div> </div>

View File

@ -20,7 +20,7 @@ const DeploymentDialogBodyCard = ({
deployment, deployment,
}: DeploymentDialogBodyCardProps) => { }: DeploymentDialogBodyCardProps) => {
return ( return (
<Card className="p-2 shadow-none"> <Card className="p-2 shadow-none" placeholder={''}>
{chip && ( {chip && (
<Chip <Chip
className={`w-fit normal-case font-normal`} className={`w-fit normal-case font-normal`}
@ -30,16 +30,16 @@ const DeploymentDialogBodyCard = ({
/> />
)} )}
{deployment.url && ( {deployment.url && (
<Typography variant="small" className="text-black"> <Typography variant="small" className="text-black" placeholder={''}>
{deployment.url} {deployment.url}
</Typography> </Typography>
)} )}
<Typography variant="small"> <Typography variant="small" placeholder={''}>
^ {deployment.branch} ^{' '} ^ {deployment.branch} ^{' '}
{deployment.commitHash.substring(0, SHORT_COMMIT_HASH_LENGTH)}{' '} {deployment.commitHash.substring(0, SHORT_COMMIT_HASH_LENGTH)}{' '}
{deployment.commitMessage} {deployment.commitMessage}
</Typography> </Typography>
<Typography variant="small"> <Typography variant="small" placeholder={''}>
^ {relativeTimeMs(deployment.createdAt)} ^{' '} ^ {relativeTimeMs(deployment.createdAt)} ^{' '}
{formatAddress(deployment.createdBy.name ?? '')} {formatAddress(deployment.createdBy.name ?? '')}
</Typography> </Typography>

View File

@ -77,6 +77,7 @@ const FilterForm = ({ value, onChange }: FilterFormProps) => {
onClick={() => setSelectedStatus(StatusOptions.ALL_STATUS)} onClick={() => setSelectedStatus(StatusOptions.ALL_STATUS)}
className="rounded-full" className="rounded-full"
size="sm" size="sm"
placeholder={''}
> >
X X
</IconButton> </IconButton>

View File

@ -21,7 +21,9 @@ const AddEnvironmentVariableRow = ({
return ( return (
<div className="flex gap-1 p-2"> <div className="flex gap-1 p-2">
<div> <div>
<Typography variant="small">Key</Typography> <Typography variant="small" placeholder={''}>
Key
</Typography>
<Input <Input
crossOrigin={undefined} crossOrigin={undefined}
{...register(`variables.${index}.key`, { {...register(`variables.${index}.key`, {
@ -30,7 +32,9 @@ const AddEnvironmentVariableRow = ({
/> />
</div> </div>
<div> <div>
<Typography variant="small">Value</Typography> <Typography variant="small" placeholder={''}>
Value
</Typography>
<Input <Input
crossOrigin={undefined} crossOrigin={undefined}
{...register(`variables.${index}.value`, { {...register(`variables.${index}.value`, {
@ -43,6 +47,7 @@ const AddEnvironmentVariableRow = ({
size="sm" size="sm"
onClick={() => onDelete()} onClick={() => onDelete()}
disabled={isDeleteDisabled} disabled={isDeleteDisabled}
placeholder={''}
> >
{'>'} {'>'}
</IconButton> </IconButton>

View File

@ -61,23 +61,26 @@ const AddMemberDialog = ({
}, []); }, []);
return ( return (
<Dialog open={open} handler={handleOpen}> <Dialog open={open} handler={handleOpen} placeholder={''}>
<DialogHeader className="flex justify-between"> <DialogHeader className="flex justify-between" placeholder={''}>
<div>Add member</div> <div>Add member</div>
<Button <Button
variant="outlined" variant="outlined"
onClick={handleOpen} onClick={handleOpen}
className="mr-1 rounded-3xl" className="mr-1 rounded-3xl"
placeholder={''}
> >
X X
</Button> </Button>
</DialogHeader> </DialogHeader>
<form onSubmit={handleSubmit(submitHandler)}> <form onSubmit={handleSubmit(submitHandler)}>
<DialogBody className="flex flex-col gap-2 p-4"> <DialogBody className="flex flex-col gap-2 p-4" placeholder={''}>
<Typography variant="small"> <Typography variant="small" placeholder={''}>
We will send an invitation link to this email address. We will send an invitation link to this email address.
</Typography> </Typography>
<Typography variant="small">Email address</Typography> <Typography variant="small" placeholder={''}>
Email address
</Typography>
<Input <Input
type="email" type="email"
crossOrigin={undefined} crossOrigin={undefined}
@ -85,8 +88,10 @@ const AddMemberDialog = ({
required: 'email field cannot be empty', required: 'email field cannot be empty',
})} })}
/> />
<Typography variant="small">Permissions</Typography> <Typography variant="small" placeholder={''}>
<Typography variant="small"> Permissions
</Typography>
<Typography variant="small" placeholder={''}>
You can change this later if required. You can change this later if required.
</Typography> </Typography>
<Checkbox <Checkbox
@ -102,8 +107,13 @@ const AddMemberDialog = ({
color="blue" color="blue"
/> />
</DialogBody> </DialogBody>
<DialogFooter className="flex justify-start"> <DialogFooter className="flex justify-start" placeholder={''}>
<Button variant="outlined" onClick={handleOpen} className="mr-1"> <Button
variant="outlined"
onClick={handleOpen}
className="mr-1"
placeholder={''}
>
Cancel Cancel
</Button> </Button>
<Button <Button
@ -111,6 +121,7 @@ const AddMemberDialog = ({
color="blue" color="blue"
type="submit" type="submit"
disabled={!isValid} disabled={!isValid}
placeholder={''}
> >
Send invite Send invite
</Button> </Button>

View File

@ -53,20 +53,21 @@ const DeleteProjectDialog = ({
}, [client, project, handleOpen]); }, [client, project, handleOpen]);
return ( return (
<Dialog open={open} handler={handleOpen}> <Dialog open={open} handler={handleOpen} placeholder={''}>
<DialogHeader className="flex justify-between"> <DialogHeader className="flex justify-between" placeholder={''}>
<div>Delete project?</div> <div>Delete project?</div>
<Button <Button
variant="outlined" variant="outlined"
onClick={handleOpen} onClick={handleOpen}
className="mr-1 rounded-3xl" className="mr-1 rounded-3xl"
placeholder={''}
> >
X X
</Button> </Button>
</DialogHeader> </DialogHeader>
<form onSubmit={handleSubmit(deleteProjectHandler)}> <form onSubmit={handleSubmit(deleteProjectHandler)}>
<DialogBody className="flex flex-col gap-2"> <DialogBody className="flex flex-col gap-2" placeholder={''}>
<Typography variant="paragraph"> <Typography variant="paragraph" placeholder={''}>
Deleting your project is irreversible. Enter your projects Deleting your project is irreversible. Enter your projects
name&nbsp; name&nbsp;
<span className="bg-blue-100 text-blue-700">({project.name})</span> <span className="bg-blue-100 text-blue-700">({project.name})</span>
@ -80,12 +81,17 @@ const DeleteProjectDialog = ({
validate: (value) => value === project.name, validate: (value) => value === project.name,
})} })}
/> />
<Typography variant="small" color="red"> <Typography variant="small" color="red" placeholder={''}>
^ Deleting your project is irreversible. ^ Deleting your project is irreversible.
</Typography> </Typography>
</DialogBody> </DialogBody>
<DialogFooter className="flex justify-start"> <DialogFooter className="flex justify-start" placeholder={''}>
<Button variant="outlined" onClick={handleOpen} className="mr-1"> <Button
variant="outlined"
onClick={handleOpen}
className="mr-1"
placeholder={''}
>
Cancel Cancel
</Button> </Button>
<Button <Button
@ -93,6 +99,7 @@ const DeleteProjectDialog = ({
color="red" color="red"
type="submit" type="submit"
disabled={!isValid} disabled={!isValid}
placeholder={''}
> >
Yes, Delete project Yes, Delete project
</Button> </Button>

View File

@ -29,11 +29,11 @@ const DisplayEnvironmentVariables = ({
</div> </div>
<Collapse open={openCollapse}> <Collapse open={openCollapse}>
{variables.length === 0 ? ( {variables.length === 0 ? (
<Card className="bg-gray-300 flex items-center p-4"> <Card className="bg-gray-300 flex items-center p-4" placeholder={''}>
<Typography variant="small" className="text-black"> <Typography variant="small" className="text-black" placeholder={''}>
No environment variables added yet. No environment variables added yet.
</Typography> </Typography>
<Typography variant="small"> <Typography variant="small" placeholder={''}>
Once you add them, theyll show up here. Once you add them, theyll show up here.
</Typography> </Typography>
</Card> </Card>

View File

@ -68,7 +68,7 @@ const DomainCard = ({
<> <>
<div className="flex justify-between py-3"> <div className="flex justify-between py-3">
<div className="flex justify-start gap-1"> <div className="flex justify-start gap-1">
<Typography variant="h6"> <Typography variant="h6" placeholder={''}>
<i>^</i> {domain.name} <i>^</i> {domain.name}
</Typography> </Typography>
<Chip <Chip
@ -97,18 +97,20 @@ const DomainCard = ({
<MenuHandler> <MenuHandler>
<button className="border-2 rounded-full w-8 h-8">...</button> <button className="border-2 rounded-full w-8 h-8">...</button>
</MenuHandler> </MenuHandler>
<MenuList> <MenuList placeholder={''}>
<MenuItem <MenuItem
className="text-black" className="text-black"
onClick={() => { onClick={() => {
setEditDialogOpen((preVal) => !preVal); setEditDialogOpen((preVal) => !preVal);
}} }}
placeholder={''}
> >
^ Edit domain ^ Edit domain
</MenuItem> </MenuItem>
<MenuItem <MenuItem
className="text-red-500" className="text-red-500"
onClick={() => setDeleteDialogOpen((preVal) => !preVal)} onClick={() => setDeleteDialogOpen((preVal) => !preVal)}
placeholder={''}
> >
^ Delete domain ^ Delete domain
</MenuItem> </MenuItem>
@ -127,7 +129,7 @@ const DomainCard = ({
}} }}
color="red" color="red"
> >
<Typography variant="small"> <Typography variant="small" placeholder={''}>
Once deleted, the project{' '} Once deleted, the project{' '}
<span className="bg-blue-100 rounded-sm p-0.5 text-blue-700"> <span className="bg-blue-100 rounded-sm p-0.5 text-blue-700">
{project.name} {project.name}
@ -140,15 +142,21 @@ const DomainCard = ({
</ConfirmDialog> </ConfirmDialog>
</div> </div>
<Typography variant="small">Production</Typography> <Typography variant="small" placeholder={''}>
Production
</Typography>
{domain.status === DomainStatus.Pending && ( {domain.status === DomainStatus.Pending && (
<Card className="bg-gray-200 p-4 text-sm"> <Card className="bg-gray-200 p-4 text-sm" placeholder={''}>
{refreshStatus === RefreshStatus.IDLE ? ( {refreshStatus === RefreshStatus.IDLE ? (
<Typography variant="small"> <Typography variant="small" placeholder={''}>
^ Add these records to your domain and refresh to check ^ Add these records to your domain and refresh to check
</Typography> </Typography>
) : refreshStatus === RefreshStatus.CHECKING ? ( ) : refreshStatus === RefreshStatus.CHECKING ? (
<Typography variant="small" className="text-blue-500"> <Typography
variant="small"
className="text-blue-500"
placeholder={''}
>
^ Checking records for {domain.name} ^ Checking records for {domain.name}
</Typography> </Typography>
) : ( ) : (

View File

@ -122,27 +122,32 @@ const EditDomainDialog = ({
}, [domain]); }, [domain]);
return ( return (
<Dialog open={open} handler={handleOpen}> <Dialog open={open} handler={handleOpen} placeholder={''}>
<DialogHeader className="flex justify-between"> <DialogHeader className="flex justify-between" placeholder={''}>
<div>Edit domain</div> <div>Edit domain</div>
<Button <Button
variant="outlined" variant="outlined"
onClick={handleOpen} onClick={handleOpen}
className="mr-1 rounded-3xl" className="mr-1 rounded-3xl"
placeholder={''}
> >
X X
</Button> </Button>
</DialogHeader> </DialogHeader>
<form onSubmit={handleSubmit(updateDomainHandler)}> <form onSubmit={handleSubmit(updateDomainHandler)}>
<DialogBody className="flex flex-col gap-2 p-4"> <DialogBody className="flex flex-col gap-2 p-4" placeholder={''}>
<Typography variant="small">Domain name</Typography> <Typography variant="small" placeholder={''}>
Domain name
</Typography>
<Input crossOrigin={undefined} {...register('name')} /> <Input crossOrigin={undefined} {...register('name')} />
<Typography variant="small">Redirect to</Typography> <Typography variant="small" placeholder={''}>
Redirect to
</Typography>
<Controller <Controller
name="redirectedTo" name="redirectedTo"
control={control} control={control}
render={({ field }) => ( render={({ field }) => (
<Select {...field} disabled={isDisableDropdown}> <Select {...field} disabled={isDisableDropdown} placeholder={''}>
{redirectOptions.map((option, key) => ( {redirectOptions.map((option, key) => (
<Option key={key} value={option}> <Option key={key} value={option}>
^ {option} ^ {option}
@ -154,14 +159,16 @@ const EditDomainDialog = ({
{isDisableDropdown && ( {isDisableDropdown && (
<div className="flex p-2 gap-2 text-black bg-gray-300 rounded-lg"> <div className="flex p-2 gap-2 text-black bg-gray-300 rounded-lg">
<div>^</div> <div>^</div>
<Typography variant="small"> <Typography variant="small" placeholder={''}>
Domain {domainRedirectedFrom ? domainRedirectedFrom.name : ''} Domain {domainRedirectedFrom ? domainRedirectedFrom.name : ''}
redirects to this domain so you can not redirect this doman redirects to this domain so you can not redirect this doman
further. further.
</Typography> </Typography>
</div> </div>
)} )}
<Typography variant="small">Git branch</Typography> <Typography variant="small" placeholder={''}>
Git branch
</Typography>
<Input <Input
crossOrigin={undefined} crossOrigin={undefined}
{...register('branch', { {...register('branch', {
@ -174,13 +181,22 @@ const EditDomainDialog = ({
} }
/> />
{!isValid && ( {!isValid && (
<Typography variant="small" className="text-red-500"> <Typography
variant="small"
className="text-red-500"
placeholder={''}
>
We couldn&apos;t find this branch in the connected Git repository. We couldn&apos;t find this branch in the connected Git repository.
</Typography> </Typography>
)} )}
</DialogBody> </DialogBody>
<DialogFooter className="flex justify-start"> <DialogFooter className="flex justify-start" placeholder={''}>
<Button variant="outlined" onClick={handleOpen} className="mr-1"> <Button
variant="outlined"
onClick={handleOpen}
className="mr-1"
placeholder={''}
>
Cancel Cancel
</Button> </Button>
<Button <Button
@ -188,6 +204,7 @@ const EditDomainDialog = ({
color="blue" color="blue"
type="submit" type="submit"
disabled={!isDirty} disabled={!isDirty}
placeholder={''}
> >
Save changes Save changes
</Button> </Button>

View File

@ -84,7 +84,9 @@ const EditEnvironmentVariableRow = ({
<> <>
<div className="flex gap-1 p-2"> <div className="flex gap-1 p-2">
<div> <div>
<Typography variant="small">Key</Typography> <Typography variant="small" placeholder={''}>
Key
</Typography>
<Input <Input
crossOrigin={undefined} crossOrigin={undefined}
disabled={!edit} disabled={!edit}
@ -92,7 +94,9 @@ const EditEnvironmentVariableRow = ({
/> />
</div> </div>
<div> <div>
<Typography variant="small">Value</Typography> <Typography variant="small" placeholder={''}>
Value
</Typography>
<Input <Input
crossOrigin={undefined} crossOrigin={undefined}
disabled={!edit} disabled={!edit}
@ -114,6 +118,7 @@ const EditEnvironmentVariableRow = ({
<IconButton <IconButton
onClick={handleSubmit(updateEnvironmentVariableHandler)} onClick={handleSubmit(updateEnvironmentVariableHandler)}
size="sm" size="sm"
placeholder={''}
> >
{'S'} {'S'}
</IconButton> </IconButton>
@ -125,6 +130,7 @@ const EditEnvironmentVariableRow = ({
reset(); reset();
setEdit((preVal) => !preVal); setEdit((preVal) => !preVal);
}} }}
placeholder={''}
> >
{'C'} {'C'}
</IconButton> </IconButton>
@ -138,6 +144,7 @@ const EditEnvironmentVariableRow = ({
onClick={() => { onClick={() => {
setEdit((preVal) => !preVal); setEdit((preVal) => !preVal);
}} }}
placeholder={''}
> >
{'E'} {'E'}
</IconButton> </IconButton>
@ -146,6 +153,7 @@ const EditEnvironmentVariableRow = ({
<IconButton <IconButton
size="sm" size="sm"
onClick={() => setDeleteDialogOpen((preVal) => !preVal)} onClick={() => setDeleteDialogOpen((preVal) => !preVal)}
placeholder={''}
> >
{'D'} {'D'}
</IconButton> </IconButton>
@ -162,7 +170,7 @@ const EditEnvironmentVariableRow = ({
handleConfirm={removeEnvironmentVariableHandler} handleConfirm={removeEnvironmentVariableHandler}
color="red" color="red"
> >
<Typography variant="small"> <Typography variant="small" placeholder={''}>
Are you sure you want to delete the variable&nbsp; Are you sure you want to delete the variable&nbsp;
<span className="bg-blue-100">{variable.key}</span>? <span className="bg-blue-100">{variable.key}</span>?
</Typography> </Typography>

View File

@ -104,6 +104,7 @@ const MemberCard = ({
selected={(_, index) => ( selected={(_, index) => (
<span>{DROPDOWN_OPTIONS[index!]?.label}</span> <span>{DROPDOWN_OPTIONS[index!]?.label}</span>
)} )}
placeholder={''}
> >
{DROPDOWN_OPTIONS.map((permission, key) => ( {DROPDOWN_OPTIONS.map((permission, key) => (
<Option key={key} value={permission.value}> <Option key={key} value={permission.value}>
@ -132,6 +133,7 @@ const MemberCard = ({
onClick={() => { onClick={() => {
setRemoveMemberDialogOpen((prevVal) => !prevVal); setRemoveMemberDialogOpen((prevVal) => !prevVal);
}} }}
placeholder={''}
> >
D D
</IconButton> </IconButton>
@ -152,7 +154,7 @@ const MemberCard = ({
}} }}
color="red" color="red"
> >
<Typography variant="small"> <Typography variant="small" placeholder={''}>
Once removed, {formatAddress(member.name ?? '')} ( Once removed, {formatAddress(member.name ?? '')} (
{formatAddress(ethAddress)}@{emailDomain}) will not be able to access {formatAddress(ethAddress)}@{emailDomain}) will not be able to access
this project. this project.

View File

@ -17,14 +17,19 @@ const RepoConnectedSection = ({
<div className="flex gap-4"> <div className="flex gap-4">
<div>^</div> <div>^</div>
<div className="grow"> <div className="grow">
<Typography variant="small">{linkedRepo.full_name}</Typography> <Typography variant="small" placeholder={''}>
<Typography variant="small">Connected just now</Typography> {linkedRepo.full_name}
</Typography>
<Typography variant="small" placeholder={''}>
Connected just now
</Typography>
</div> </div>
<div> <div>
<Button <Button
onClick={() => setDisconnectRepoDialogOpen(true)} onClick={() => setDisconnectRepoDialogOpen(true)}
variant="outlined" variant="outlined"
size="sm" size="sm"
placeholder={''}
> >
^ Disconnect ^ Disconnect
</Button> </Button>
@ -39,7 +44,7 @@ const RepoConnectedSection = ({
}} }}
color="red" color="red"
> >
<Typography variant="small"> <Typography variant="small" placeholder={''}>
Any data tied to your Git project may become misconfigured. Are you Any data tied to your Git project may become misconfigured. Are you
sure you want to continue? sure you want to continue?
</Typography> </Typography>

View File

@ -54,14 +54,18 @@ const SetupDomain = () => {
className="flex flex-col gap-6 w-full" className="flex flex-col gap-6 w-full"
> >
<div> <div>
<Typography variant="h5">Setup domain name</Typography> <Typography variant="h5" placeholder={''}>
<Typography variant="small"> Setup domain name
</Typography>
<Typography variant="small" placeholder={''}>
Add your domain and setup redirects Add your domain and setup redirects
</Typography> </Typography>
</div> </div>
<div className="w-auto"> <div className="w-auto">
<Typography variant="small">Domain name</Typography> <Typography variant="small" placeholder={''}>
Domain name
</Typography>
<Input <Input
type="text" type="text"
variant="outlined" variant="outlined"
@ -76,7 +80,7 @@ const SetupDomain = () => {
{isValid && ( {isValid && (
<div> <div>
<Typography>Primary domain</Typography> <Typography placeholder={''}>Primary domain</Typography>
<div className="flex flex-col gap-3"> <div className="flex flex-col gap-3">
<Radio <Radio
label={domainStr} label={domainStr}
@ -108,6 +112,7 @@ const SetupDomain = () => {
className="w-fit" className="w-fit"
color={isValid ? 'blue' : 'gray'} color={isValid ? 'blue' : 'gray'}
type="submit" type="submit"
placeholder={''}
> >
<i>^</i> Next <i>^</i> Next
</Button> </Button>

View File

@ -23,6 +23,7 @@ const WebhookCard = ({ webhookUrl, onDelete }: WebhookCardProps) => {
navigator.clipboard.writeText(webhookUrl); navigator.clipboard.writeText(webhookUrl);
toast.success('Copied to clipboard'); toast.success('Copied to clipboard');
}} }}
placeholder={''}
> >
C C
</Button> </Button>
@ -32,6 +33,7 @@ const WebhookCard = ({ webhookUrl, onDelete }: WebhookCardProps) => {
onClick={() => { onClick={() => {
setDeleteDialogOpen(true); setDeleteDialogOpen(true);
}} }}
placeholder={''}
> >
X X
</Button> </Button>
@ -48,7 +50,7 @@ const WebhookCard = ({ webhookUrl, onDelete }: WebhookCardProps) => {
}} }}
color="red" color="red"
> >
<Typography variant="small"> <Typography variant="small" placeholder={''}>
Are you sure you want to delete the variable{' '} Are you sure you want to delete the variable{' '}
<span className="bg-blue-100 p-0.5 rounded-sm">{webhookUrl}</span>? <span className="bg-blue-100 p-0.5 rounded-sm">{webhookUrl}</span>?
</Typography> </Typography>

View File

@ -9,7 +9,7 @@ const AsyncSelect = React.forwardRef((props: SelectProps, ref: any) => {
useEffect(() => setKey((preVal) => preVal + 1), [props]); useEffect(() => setKey((preVal) => preVal + 1), [props]);
return <Select key={key} ref={ref} {...props} />; return <Select key={key} ref={ref} {...props} placeholder={''} />;
}); });
AsyncSelect.displayName = 'AsyncSelect'; AsyncSelect.displayName = 'AsyncSelect';

View File

@ -30,23 +30,31 @@ const ConfirmDialog = ({
color, color,
}: ConfirmDialogProp) => { }: ConfirmDialogProp) => {
return ( return (
<Dialog open={open} handler={handleOpen}> <Dialog open={open} handler={handleOpen} placeholder={''}>
<DialogHeader className="flex justify-between"> <DialogHeader className="flex justify-between" placeholder={''}>
<Typography variant="h6">{dialogTitle} </Typography> <Typography variant="h6" placeholder={''}>
{dialogTitle}{' '}
</Typography>
<Button <Button
variant="outlined" variant="outlined"
onClick={handleOpen} onClick={handleOpen}
className=" rounded-full" className=" rounded-full"
placeholder={''}
> >
X X
</Button> </Button>
</DialogHeader> </DialogHeader>
<DialogBody>{children}</DialogBody> <DialogBody placeholder={''}>{children}</DialogBody>
<DialogFooter className="flex justify-start gap-2"> <DialogFooter className="flex justify-start gap-2" placeholder={''}>
<Button variant="outlined" onClick={handleOpen}> <Button variant="outlined" onClick={handleOpen} placeholder={''}>
Cancel Cancel
</Button> </Button>
<Button variant="gradient" color={color} onClick={handleConfirm}> <Button
variant="gradient"
color={color}
onClick={handleConfirm}
placeholder={''}
>
{confirmButtonTitle} {confirmButtonTitle}
</Button> </Button>
</DialogFooter> </DialogFooter>

View File

@ -36,11 +36,17 @@ const ProjectSearch = () => {
}} }}
/> />
</div> </div>
<IconButton color="blue" className="rounded-full mr-2"> <IconButton
<Typography variant="h5">+</Typography> color="blue"
className="rounded-full mr-2"
placeholder={''}
>
<Typography variant="h5" placeholder={''}>
+
</Typography>
</IconButton> </IconButton>
<div className="mr-2 flex items-center"> <div className="mr-2 flex items-center">
<Typography>^</Typography> <Typography placeholder={''}>^</Typography>
</div> </div>
<div className="px-2 py-1 bg-blue-gray-50 rounded-lg flex items-center"> <div className="px-2 py-1 bg-blue-gray-50 rounded-lg flex items-center">
{user?.name && ( {user?.name && (

View File

@ -28,7 +28,9 @@ const Projects = () => {
<div className="flex p-5"> <div className="flex p-5">
<div className="grow"> <div className="grow">
<div className="flex gap-2 items-center"> <div className="flex gap-2 items-center">
<Typography variant="h4">Projects</Typography> <Typography variant="h4" placeholder={''}>
Projects
</Typography>
<Chip <Chip
className="bg-gray-300 rounded-full static" className="bg-gray-300 rounded-full static"
value={projects.length} value={projects.length}
@ -38,7 +40,7 @@ const Projects = () => {
</div> </div>
<div> <div>
<Link to="projects/create"> <Link to="projects/create">
<Button className="rounded-full" color="blue"> <Button className="rounded-full" color="blue" placeholder={''}>
Create project Create project
</Button> </Button>
</Link> </Link>

View File

@ -15,7 +15,11 @@ const CreateProject = () => {
</div> </div>
<div> <div>
<Link to={`/${orgSlug}`}> <Link to={`/${orgSlug}`}>
<IconButton className="rounded-full" variant="outlined"> <IconButton
className="rounded-full"
variant="outlined"
placeholder={''}
>
X X
</IconButton> </IconButton>
</Link> </Link>

View File

@ -74,18 +74,23 @@ const Id = () => {
variant="outlined" variant="outlined"
className="rounded-full" className="rounded-full"
onClick={() => navigate(-1)} onClick={() => navigate(-1)}
placeholder={''}
> >
{'<'} {'<'}
</Button> </Button>
<Typography variant="h3" className="grow"> <Typography variant="h3" className="grow" placeholder={''}>
{project?.name} {project?.name}
</Typography> </Typography>
<Link to={repoUrl} target="_blank"> <Link to={repoUrl} target="_blank">
<Button className="rounded-full" variant="outlined"> <Button
className="rounded-full"
variant="outlined"
placeholder={''}
>
Open Repo Open Repo
</Button> </Button>
</Link> </Link>
<Button className="rounded-full" color="blue"> <Button className="rounded-full" color="blue" placeholder={''}>
Go to app Go to app
</Button> </Button>
</div> </div>
@ -98,34 +103,55 @@ const Id = () => {
className: className:
'bg-transparent border-b-2 border-gray-900 shadow-none rounded-none', 'bg-transparent border-b-2 border-gray-900 shadow-none rounded-none',
}} }}
placeholder={''}
> >
<Link to=""> <Link to="">
<Tab value="" className={'p-2 cursor-pointer'}> <Tab
value=""
className={'p-2 cursor-pointer'}
placeholder={''}
>
Overview Overview
</Tab> </Tab>
</Link> </Link>
<Link to="deployments"> <Link to="deployments">
<Tab value="deployments" className={'p-2 cursor-pointer'}> <Tab
value="deployments"
className={'p-2 cursor-pointer'}
placeholder={''}
>
Deployments Deployments
</Tab> </Tab>
</Link> </Link>
<Link to="database"> <Link to="database">
<Tab value="database" className={'p-2 cursor-pointer'}> <Tab
value="database"
className={'p-2 cursor-pointer'}
placeholder={''}
>
Database Database
</Tab> </Tab>
</Link> </Link>
<Link to="integrations"> <Link to="integrations">
<Tab value="integrations" className={'p-2 cursor-pointer'}> <Tab
value="integrations"
className={'p-2 cursor-pointer'}
placeholder={''}
>
Integrations Integrations
</Tab> </Tab>
</Link> </Link>
<Link to="settings"> <Link to="settings">
<Tab value="settings" className={'p-2 cursor-pointer'}> <Tab
value="settings"
className={'p-2 cursor-pointer'}
placeholder={''}
>
Settings Settings
</Tab> </Tab>
</Link> </Link>
</TabsHeader> </TabsHeader>
<TabsBody> <TabsBody placeholder={''}>
<Outlet context={{ project, onUpdate }} /> <Outlet context={{ project, onUpdate }} />
</TabsBody> </TabsBody>
</Tabs> </Tabs>

View File

@ -46,7 +46,7 @@ const CreateWithTemplate = () => {
return ( return (
<div className="flex flex-col items-center"> <div className="flex flex-col items-center">
<div className="flex justify-between w-5/6 my-4 bg-gray-200 rounded-xl p-6 items-center"> <div className="flex justify-between w-5/6 my-4 bg-gray-200 rounded-xl p-6 items-center">
<Avatar variant="rounded" src="/gray.png" /> <Avatar variant="rounded" src="/gray.png" placeholder={''} />
<div className="grow px-2">{template?.name}</div> <div className="grow px-2">{template?.name}</div>
<div> <div>
<a href={GIT_TEMPLATE_LINK} target="_blank" rel="noreferrer"> <a href={GIT_TEMPLATE_LINK} target="_blank" rel="noreferrer">

View File

@ -39,7 +39,12 @@ const Id = () => {
custom domain. custom domain.
</p> </p>
<div className="my-2"> <div className="my-2">
<Button className="rounded-full" variant="outlined" size="sm"> <Button
className="rounded-full"
variant="outlined"
size="sm"
placeholder={''}
>
Setup domain Setup domain
</Button> </Button>
</div> </div>
@ -51,14 +56,23 @@ const Id = () => {
<div className="flex justify-center p-4 gap-2 my-5"> <div className="flex justify-center p-4 gap-2 my-5">
<div> <div>
<Link to="/"> <Link to="/">
<Button className="rounded-full" variant="outlined"> <Button
className="rounded-full"
variant="outlined"
placeholder={''}
>
^Back to projects ^Back to projects
</Button> </Button>
</Link> </Link>
</div> </div>
<div> <div>
<Link to={`/${orgSlug}/projects/${id}`}> <Link to={`/${orgSlug}/projects/${id}`}>
<Button className="rounded-full" variant="gradient" color="blue"> <Button
className="rounded-full"
variant="gradient"
color="blue"
placeholder={''}
>
View project View project
</Button> </Button>
</Link> </Link>

View File

@ -114,8 +114,10 @@ const CreateRepo = () => {
return ( return (
<form onSubmit={handleSubmit(submitRepoHandler)}> <form onSubmit={handleSubmit(submitRepoHandler)}>
<div className="mb-2"> <div className="mb-2">
<Typography variant="h6">Create a repository</Typography> <Typography variant="h6" placeholder={''}>
<Typography color="gray"> Create a repository
</Typography>
<Typography color="gray" placeholder={''}>
The project will be cloned into this repository The project will be cloned into this repository
</Typography> </Typography>
</div> </div>
@ -187,6 +189,7 @@ const CreateRepo = () => {
type="submit" type="submit"
disabled={isLoading} disabled={isLoading}
loading={isLoading} loading={isLoading}
placeholder={''}
> >
Deploy ^ Deploy ^
</Button> </Button>

View File

@ -115,14 +115,17 @@ const DeploymentsTabPanel = () => {
) : ( ) : (
<div className="h-[50vh] bg-gray-100 flex rounded items-center justify-center"> <div className="h-[50vh] bg-gray-100 flex rounded items-center justify-center">
<div className="text-center"> <div className="text-center">
<Typography variant="h5">No deployments found</Typography> <Typography variant="h5" placeholder={''}>
<Typography> No deployments found
</Typography>
<Typography placeholder={''}>
Please change your search query or filters Please change your search query or filters
</Typography> </Typography>
<Button <Button
className="rounded-full mt-5" className="rounded-full mt-5"
color="white" color="white"
onClick={handleResetFilters} onClick={handleResetFilters}
placeholder={''}
> >
^ Reset filters ^ Reset filters
</Button> </Button>

View File

@ -110,10 +110,14 @@ const OverviewTabPanel = () => {
<div className="grid grid-cols-5"> <div className="grid grid-cols-5">
<div className="col-span-3 p-2"> <div className="col-span-3 p-2">
<div className="flex items-center gap-2 p-2 "> <div className="flex items-center gap-2 p-2 ">
<Avatar src={project.icon || '/gray.png'} variant="rounded" /> <Avatar
src={project.icon || '/gray.png'}
variant="rounded"
placeholder={''}
/>
<div className="grow"> <div className="grow">
<Typography>{project.name}</Typography> <Typography placeholder={''}>{project.name}</Typography>
<Typography variant="small" color="gray"> <Typography variant="small" color="gray" placeholder={''}>
{project.subDomain} {project.subDomain}
</Typography> </Typography>
</div> </div>
@ -144,6 +148,7 @@ const OverviewTabPanel = () => {
onClick={() => { onClick={() => {
navigate('settings/domains'); navigate('settings/domains');
}} }}
placeholder={''}
> >
Setup Setup
</Button> </Button>
@ -176,7 +181,9 @@ const OverviewTabPanel = () => {
</div> </div>
<div className="col-span-2 p-2"> <div className="col-span-2 p-2">
<div className="flex justify-between"> <div className="flex justify-between">
<Typography variant="h6">Activity</Typography> <Typography variant="h6" placeholder={''}>
Activity
</Typography>
<button className="text-xs bg-gray-300 rounded-full p-2"> <button className="text-xs bg-gray-300 rounded-full p-2">
See all See all
</button> </button>

View File

@ -59,12 +59,14 @@ const SettingsTabPanel = () => {
indicatorProps={{ indicatorProps={{
className: 'bg-gray-900/10 shadow-none !text-gray-900', className: 'bg-gray-900/10 shadow-none !text-gray-900',
}} }}
placeholder={''}
> >
{tabsData.map(({ label, value, icon }) => ( {tabsData.map(({ label, value, icon }) => (
<Link key={value} to={value === 'general' ? '' : value}> <Link key={value} to={value === 'general' ? '' : value}>
<Tab <Tab
value={value === 'general' ? '' : `/${value}`} value={value === 'general' ? '' : `/${value}`}
className="flex justify-start" className="flex justify-start"
placeholder={''}
> >
<div className="flex gap-2"> <div className="flex gap-2">
<div>{icon}</div> <div>{icon}</div>
@ -74,7 +76,7 @@ const SettingsTabPanel = () => {
</Link> </Link>
))} ))}
</TabsHeader> </TabsHeader>
<TabsBody className="col-span-2"> <TabsBody className="col-span-2" placeholder={''}>
<Outlet context={{ project, onUpdate }} /> <Outlet context={{ project, onUpdate }} />
</TabsBody> </TabsBody>
</Tabs> </Tabs>

View File

@ -59,9 +59,16 @@ const Domains = () => {
return ( return (
<> <>
<div className="flex justify-between p-2"> <div className="flex justify-between p-2">
<Typography variant="h3">Domain</Typography> <Typography variant="h3" placeholder={''}>
Domain
</Typography>
<Link to="add"> <Link to="add">
<Button color="blue" variant="outlined" className="rounded-full"> <Button
color="blue"
variant="outlined"
className="rounded-full"
placeholder={''}
>
<i>^</i> Add domain <i>^</i> Add domain
</Button> </Button>
</Link> </Link>

View File

@ -133,8 +133,14 @@ export const EnvironmentVariablesTabPanel = () => {
return ( return (
<> <>
<Typography variant="h6">Environment variables</Typography> <Typography variant="h6" placeholder={''}>
<Typography variant="small" className="font-medium text-gray-800"> Environment variables
</Typography>
<Typography
variant="small"
className="font-medium text-gray-800"
placeholder={''}
>
A new deployment is required for your changes to take effect. A new deployment is required for your changes to take effect.
</Typography> </Typography>
<div className="bg-gray-300 rounded-lg p-2"> <div className="bg-gray-300 rounded-lg p-2">
@ -145,7 +151,7 @@ export const EnvironmentVariablesTabPanel = () => {
+ Create new variable + Create new variable
</div> </div>
<Collapse open={createNewVariable}> <Collapse open={createNewVariable}>
<Card className="bg-white p-2"> <Card className="bg-white p-2" placeholder={''}>
<form onSubmit={handleSubmit(createEnvironmentVariablesHandler)}> <form onSubmit={handleSubmit(createEnvironmentVariablesHandler)}>
{fields.map((field, index) => { {fields.map((field, index) => {
return ( return (
@ -168,11 +174,12 @@ export const EnvironmentVariablesTabPanel = () => {
value: '', value: '',
}) })
} }
placeholder={''}
> >
+ Add variable + Add variable
</Button> </Button>
{/* TODO: Implement import environment varible functionality */} {/* TODO: Implement import environment varible functionality */}
<Button variant="outlined" size="sm" disabled> <Button variant="outlined" size="sm" disabled placeholder={''}>
^ Import .env ^ Import .env
</Button> </Button>
</div> </div>
@ -205,7 +212,7 @@ export const EnvironmentVariablesTabPanel = () => {
/> />
</div> </div>
<div className="p-2"> <div className="p-2">
<Button size="lg" color="blue" type="submit"> <Button size="lg" color="blue" type="submit" placeholder={''}>
Save changes Save changes
</Button> </Button>
</div> </div>

View File

@ -121,8 +121,14 @@ const GeneralTabPanel = () => {
} }
})} })}
> >
<Typography variant="h6">Project info</Typography> <Typography variant="h6" placeholder={''}>
<Typography variant="small" className="font-medium text-gray-800"> Project info
</Typography>
<Typography
variant="small"
className="font-medium text-gray-800"
placeholder={''}
>
App name App name
</Typography> </Typography>
<Input <Input
@ -132,7 +138,11 @@ const GeneralTabPanel = () => {
size="md" size="md"
{...register('appName')} {...register('appName')}
/> />
<Typography variant="small" className="font-medium text-gray-800"> <Typography
variant="small"
className="font-medium text-gray-800"
placeholder={''}
>
Description (Optional) Description (Optional)
</Typography> </Typography>
<Input <Input
@ -141,7 +151,11 @@ const GeneralTabPanel = () => {
size="md" size="md"
{...register('description')} {...register('description')}
/> />
<Typography variant="small" className="font-medium text-gray-800"> <Typography
variant="small"
className="font-medium text-gray-800"
placeholder={''}
>
Project ID Project ID
</Typography> </Typography>
<Input <Input
@ -158,13 +172,16 @@ const GeneralTabPanel = () => {
size="sm" size="sm"
className="mt-1" className="mt-1"
disabled={!updateProjectFormState.isDirty} disabled={!updateProjectFormState.isDirty}
placeholder={''}
> >
Save Save
</Button> </Button>
</form> </form>
<div className="mb-1"> <div className="mb-1">
<Typography variant="h6">Transfer project</Typography> <Typography variant="h6" placeholder={''}>
<Typography variant="small"> Transfer project
</Typography>
<Typography variant="small" placeholder={''}>
Transfer this app to your personal account or a team you are a member Transfer this app to your personal account or a team you are a member
of. of.
<Link to="" className="text-blue-500"> <Link to="" className="text-blue-500">
@ -177,7 +194,11 @@ const GeneralTabPanel = () => {
setOpenTransferDialog(!openTransferDialog); setOpenTransferDialog(!openTransferDialog);
})} })}
> >
<Typography variant="small" className="font-medium text-gray-800"> <Typography
variant="small"
className="font-medium text-gray-800"
placeholder={''}
>
Choose team Choose team
</Typography> </Typography>
<Controller <Controller
@ -204,6 +225,7 @@ const GeneralTabPanel = () => {
className="mt-1" className="mt-1"
disabled={!formState.isValid} disabled={!formState.isValid}
type="submit" type="submit"
placeholder={''}
> >
Transfer Transfer
</Button> </Button>
@ -216,15 +238,17 @@ const GeneralTabPanel = () => {
handleConfirm={handleTransferProject} handleConfirm={handleTransferProject}
color="blue" color="blue"
> >
<Typography variant="small"> <Typography variant="small" placeholder={''}>
Upon confirmation, your project {project.name} will be transferred Upon confirmation, your project {project.name} will be transferred
from {project.organization.name} to {selectedUserOrgName}. from {project.organization.name} to {selectedUserOrgName}.
</Typography> </Typography>
</ConfirmDialog> </ConfirmDialog>
</div> </div>
<div className="mb-1"> <div className="mb-1">
<Typography variant="h6">Delete project</Typography> <Typography variant="h6" placeholder={''}>
<Typography variant="small"> Delete project
</Typography>
<Typography variant="small" placeholder={''}>
The project will be permanently deleted, including its deployments and The project will be permanently deleted, including its deployments and
domains. This action is irreversible and can not be undone. domains. This action is irreversible and can not be undone.
</Typography> </Typography>
@ -233,6 +257,7 @@ const GeneralTabPanel = () => {
size="sm" size="sm"
color="red" color="red"
onClick={handleDeleteProjectDialog} onClick={handleDeleteProjectDialog}
placeholder={''}
> >
^ Delete project ^ Delete project
</Button> </Button>

View File

@ -100,13 +100,15 @@ const GitTabPanel = () => {
return ( return (
<> <>
<div className="mb-2 p-2"> <div className="mb-2 p-2">
<Typography variant="h6" className="text-black"> <Typography variant="h6" className="text-black" placeholder={''}>
Git repository Git repository
</Typography> </Typography>
<div className="flex justify-between mt-4"> <div className="flex justify-between mt-4">
<div> <div>
<Typography variant="small">Pull request comments</Typography> <Typography variant="small" placeholder={''}>
Pull request comments
</Typography>
</div> </div>
<div> <div>
<Switch crossOrigin={undefined} defaultChecked /> <Switch crossOrigin={undefined} defaultChecked />
@ -115,7 +117,9 @@ const GitTabPanel = () => {
<div className="flex justify-between"> <div className="flex justify-between">
<div> <div>
<Typography variant="small">Commit comments</Typography> <Typography variant="small" placeholder={''}>
Commit comments
</Typography>
</div> </div>
<div> <div>
<Switch crossOrigin={undefined} /> <Switch crossOrigin={undefined} />
@ -125,21 +129,23 @@ const GitTabPanel = () => {
<form onSubmit={handleSubmitProdBranch(updateProdBranchHandler)}> <form onSubmit={handleSubmitProdBranch(updateProdBranchHandler)}>
<div className="mb-2 p-2"> <div className="mb-2 p-2">
<Typography variant="h6" className="text-black"> <Typography variant="h6" className="text-black" placeholder={''}>
Production branch Production branch
</Typography> </Typography>
<Typography variant="small"> <Typography variant="small" placeholder={''}>
By default, each commit pushed to the{' '} By default, each commit pushed to the{' '}
<span className="font-bold">{project.prodBranch}</span> branch <span className="font-bold">{project.prodBranch}</span> branch
initiates a production deployment. You can opt for a different initiates a production deployment. You can opt for a different
branch for deployment in the settings. branch for deployment in the settings.
</Typography> </Typography>
<Typography variant="small">Branch name</Typography> <Typography variant="small" placeholder={''}>
Branch name
</Typography>
<Input <Input
crossOrigin={undefined} crossOrigin={undefined}
{...registerProdBranch('prodBranch')} {...registerProdBranch('prodBranch')}
/> />
<Button size="sm" className="mt-1" type="submit"> <Button size="sm" className="mt-1" type="submit" placeholder={''}>
Save Save
</Button> </Button>
</div> </div>
@ -147,23 +153,25 @@ const GitTabPanel = () => {
<form onSubmit={handleSubmitWebhooks(updateWebhooksHandler)}> <form onSubmit={handleSubmitWebhooks(updateWebhooksHandler)}>
<div className="mb-2 p-2"> <div className="mb-2 p-2">
<Typography variant="h6" className="text-black"> <Typography variant="h6" className="text-black" placeholder={''}>
Deploy webhooks Deploy webhooks
</Typography> </Typography>
<Typography variant="small"> <Typography variant="small" placeholder={''}>
Webhooks configured to trigger when there is a change in a Webhooks configured to trigger when there is a change in a
project&apos;s build or deployment status. project&apos;s build or deployment status.
</Typography> </Typography>
<div className="flex gap-1"> <div className="flex gap-1">
<div className="grow"> <div className="grow">
<Typography variant="small">Webhook URL</Typography> <Typography variant="small" placeholder={''}>
Webhook URL
</Typography>
<Input <Input
crossOrigin={undefined} crossOrigin={undefined}
{...registerWebhooks('webhookUrl')} {...registerWebhooks('webhookUrl')}
/> />
</div> </div>
<div className="self-end"> <div className="self-end">
<Button size="sm" type="submit"> <Button size="sm" type="submit" placeholder={''}>
Save Save
</Button> </Button>
</div> </div>

View File

@ -75,7 +75,9 @@ const MembersTabPanel = () => {
<div className="p-2 mb-20"> <div className="p-2 mb-20">
<div className="flex justify-between mb-2"> <div className="flex justify-between mb-2">
<div className="flex"> <div className="flex">
<Typography variant="h6">Members</Typography> <Typography variant="h6" placeholder={''}>
Members
</Typography>
<div> <div>
<Chip <Chip
className="normal-case ml-3 font-normal" className="normal-case ml-3 font-normal"
@ -88,6 +90,7 @@ const MembersTabPanel = () => {
<Button <Button
size="sm" size="sm"
onClick={() => setAddMemberDialogOpen((preVal) => !preVal)} onClick={() => setAddMemberDialogOpen((preVal) => !preVal)}
placeholder={''}
> >
+ Add member + Add member
</Button> </Button>

View File

@ -39,8 +39,10 @@ const Config = () => {
return ( return (
<div className="flex flex-col gap-6 w-full"> <div className="flex flex-col gap-6 w-full">
<div> <div>
<Typography variant="h5">Configure DNS</Typography> <Typography variant="h5" placeholder={''}>
<Typography variant="small"> Configure DNS
</Typography>
<Typography variant="small" placeholder={''}>
Add the following records to your domain.&nbsp; Add the following records to your domain.&nbsp;
<a href="https://www.namecheap.com/" target="_blank" rel="noreferrer"> <a href="https://www.namecheap.com/" target="_blank" rel="noreferrer">
<span className="underline">Go to NameCheap</span> ^ <span className="underline">Go to NameCheap</span> ^
@ -72,7 +74,12 @@ const Config = () => {
<i>^</i>It can take up to 48 hours for these updates to reflect <i>^</i>It can take up to 48 hours for these updates to reflect
globally. globally.
</Alert> </Alert>
<Button className="w-fit" color="blue" onClick={handleSubmitDomain}> <Button
className="w-fit"
color="blue"
onClick={handleSubmitDomain}
placeholder={''}
>
Finish <i>{'>'}</i> Finish <i>{'>'}</i>
</Button> </Button>
</div> </div>

View File

@ -30,9 +30,15 @@ const AddDomain = () => {
return ( return (
<div className="p-4"> <div className="p-4">
<div className="flex justify-between"> <div className="flex justify-between">
<Typography variant="h3">Add Domain</Typography> <Typography variant="h3" placeholder={''}>
Add Domain
</Typography>
<Link to={`/${orgSlug}/projects/${id}`}> <Link to={`/${orgSlug}/projects/${id}`}>
<IconButton className="rounded-full" variant="outlined"> <IconButton
className="rounded-full"
variant="outlined"
placeholder={''}
>
X X
</IconButton> </IconButton>
</Link> </Link>
@ -42,7 +48,7 @@ const AddDomain = () => {
<div className="bg-blue-gray-50 rounded-lg mt-6 mb-10"> <div className="bg-blue-gray-50 rounded-lg mt-6 mb-10">
<div className="flex justify-start gap-3 p-5"> <div className="flex justify-start gap-3 p-5">
<i className="bg-gray-100 w-12 h-12 rounded-lg">^</i> <i className="bg-gray-100 w-12 h-12 rounded-lg">^</i>
<Typography className="my-auto w-1/3" variant="h5"> <Typography className="my-auto w-1/3" variant="h5" placeholder={''}>
Project Name Project Name
</Typography> </Typography>
</div> </div>