+ {/* Upper content */}
+
+ {/* Icon container */}
+
+ {/*
*/}
+ {/* Title and website */}
+
+
{project.name}
+
+ {project.deployments[0]?.domain?.name ?? 'No domain'}
+
+
+ {/* Icons */}
+
+ {hasError && }
+
+
+
+ {/* Wave */}
+
+ {/* Latest deployment */}
+
+ {/* Dot icon */}
+
+
+ {hasDeployment
+ ? project.deployments[0]?.commitMessage
+ : 'No production deployment'}
+
+
+ {/* Deployment and branch name */}
+
+ {hasDeployment ? (
+ <>
+
+ {relativeTimeMs(project.deployments[0].createdAt)} on
+
+ {project.deployments[0].branch}
+ >
+ ) : (
+ <>
+
+ Created {relativeTimeMs(project.createdAt)}
+ >
+ )}
+
+
+
+ );
+};
diff --git a/packages/frontend/src/components/projects/ProjectCard/index.ts b/packages/frontend/src/components/projects/ProjectCard/index.ts
new file mode 100644
index 00000000..c9169b8b
--- /dev/null
+++ b/packages/frontend/src/components/projects/ProjectCard/index.ts
@@ -0,0 +1 @@
+export * from './ProjectCard';
diff --git a/packages/frontend/src/components/shared/Avatar/Avatar.theme.ts b/packages/frontend/src/components/shared/Avatar/Avatar.theme.ts
index bc594274..b7522cfe 100644
--- a/packages/frontend/src/components/shared/Avatar/Avatar.theme.ts
+++ b/packages/frontend/src/components/shared/Avatar/Avatar.theme.ts
@@ -58,6 +58,9 @@ export const avatarTheme = tv(
44: {
base: ['rounded-xl', 'h-[44px]', 'w-[44px]', 'text-sm'],
},
+ 48: {
+ base: ['rounded-xl', 'h-[48px]', 'w-[48px]', 'text-sm'],
+ },
},
},
defaultVariants: {
diff --git a/packages/frontend/src/components/shared/Button/Button.theme.ts b/packages/frontend/src/components/shared/Button/Button.theme.ts
index 194c6550..a2cc19ca 100644
--- a/packages/frontend/src/components/shared/Button/Button.theme.ts
+++ b/packages/frontend/src/components/shared/Button/Button.theme.ts
@@ -26,7 +26,7 @@ export const buttonTheme = tv(
true: 'w-full',
},
shape: {
- default: '',
+ default: 'rounded-lg',
rounded: 'rounded-full',
},
iconOnly: {
diff --git a/packages/frontend/src/components/shared/CustomIcon/BranchIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/BranchIcon.tsx
new file mode 100644
index 00000000..aa1f71b0
--- /dev/null
+++ b/packages/frontend/src/components/shared/CustomIcon/BranchIcon.tsx
@@ -0,0 +1,19 @@
+import React from 'react';
+import { CustomIcon, CustomIconProps } from './CustomIcon';
+
+export const BranchIcon = (props: CustomIconProps) => {
+ return (
+