Compare commits

..
Author SHA1 Message Date
Wahyu Kurniawan 7b7beefe37 🎨 style: adjust template card name and arrow also responsive of the list of template 2024-02-28 16:20:05 +07:00
Zachery Ng f3a7f4dea5 refactor: update wavy border svg 2024-02-28 16:59:32 +08:00
Wahyu Kurniawan 6dbfdafe2a Merge branch 'main' of https://github.com/snowball-tools/snowballtools-base into ayungavis/T-4910-create-project-template-card 2024-02-28 14:57:34 +07:00
Wahyu Kurniawan 366c2b54c5 ️ feat: add wavy border gradient and line svg assets 2024-02-28 14:51:59 +07:00
Wahyu Kurniawan 88f3aae26d 🎨 style: update layout shadow and add new shadow for the template card 2024-02-28 14:47:46 +07:00
Wahyu Kurniawan f0d1dcc7a8 🎨 style: update button medium size padding 2024-02-28 14:47:15 +07:00
Wahyu Kurniawan 7dbfe03555 ♻️ refactor: WavyBorder component and update CreateProjectLayout 2024-02-28 14:46:17 +07:00
Wahyu Kurniawan 392377d6ae ️ feat: Add isComingSoon property to templates and handle click event in TemplateCard component 2024-02-28 14:45:27 +07:00
Wahyu Kurniawan 102d87d9dd ️ feat: use h2 for layout title 2024-02-28 13:21:45 +07:00
Wahyu Kurniawan bfb2735143 ️ feat: create template icon component 2024-02-28 13:21:45 +07:00
Wahyu Kurniawan 01a752d1db ️ feat: restyling template card 2024-02-28 13:21:45 +07:00
Wahyu Kurniawan 39725c2be3 ♻️ refactor: remove unused style 2024-02-28 13:21:44 +07:00
Wahyu Kurniawan d6306e1b1e ♻️ refactor: create project layout and restyling it 2024-02-28 13:21:44 +07:00
Wahyu Kurniawan ff3b66e395 ♻️ refactor: org slug dashboard layout 2024-02-28 13:21:44 +07:00
Wahyu Kurniawan d71e544194 ♻️ refactor: change sidebar to use nav 2024-02-28 13:21:44 +07:00
Wahyu Kurniawan d5e21fa872 🎨 style: adjust wavy border and add layout wavy border 2024-02-28 13:21:44 +07:00
3 changed files with 12 additions and 33 deletions
@@ -8,7 +8,6 @@ export const projectCardTheme = tv({
'rounded-2xl',
'flex',
'flex-col',
'group',
],
upperContent: ['px-4', 'py-4', 'flex', 'items-start', 'gap-3', 'relative'],
content: ['flex', 'flex-col', 'gap-1', 'flex-1'],
@@ -21,15 +20,13 @@ export const projectCardTheme = tv({
description: ['text-xs', 'text-elements-low-em'],
icons: ['flex', 'items-center', 'gap-1'],
lowerContent: [
'transition-colors',
'duration-150',
'bg-surface-card-hovered',
'px-4',
'py-4',
'flex',
'flex-col',
'gap-2',
'rounded-b-2xl',
'group-hover:bg-surface-card-hovered',
],
latestDeployment: ['flex', 'items-center', 'gap-2'],
deploymentStatusContainer: [
@@ -49,12 +46,6 @@ export const projectCardTheme = tv({
'items-center',
'gap-2',
],
wavyBorder: [
'bg-surface-card',
'transition-colors',
'duration-150',
'group-hover:bg-surface-card-hovered',
],
},
variants: {
status: {
@@ -1,8 +1,4 @@
import React, {
ComponentPropsWithoutRef,
MouseEvent,
useCallback,
} from 'react';
import React, { ComponentPropsWithoutRef, MouseEvent } from 'react';
import { ProjectCardTheme, projectCardTheme } from './ProjectCard.theme';
import { Project } from 'gql-client';
import { Button } from 'components/shared/Button';
@@ -15,7 +11,7 @@ import {
WarningDiamondIcon,
} from 'components/shared/CustomIcon';
import { relativeTimeMs } from 'utils/time';
import { useNavigate } from 'react-router-dom';
import { Link } from 'react-router-dom';
import { Avatar } from 'components/shared/Avatar';
import { getInitials } from 'utils/geInitials';
import {
@@ -31,8 +27,6 @@ export interface ProjectCardProps
project: Project;
}
// TODO: Update the whole component to use `Link` from `react-router-dom` and remove the `useNavigate` hook,
// currently it's not possible to use `Link` because the dot menu is not a direct child of the `Link` component
export const ProjectCard = ({
className,
project,
@@ -44,24 +38,14 @@ export const ProjectCard = ({
// TODO: Update this to use the actual status from the API
const hasError = status === 'failure';
const navigate = useNavigate();
const handleOptionsClick = (
e: MouseEvent<HTMLButtonElement, globalThis.MouseEvent>,
) => {
e.stopPropagation();
};
const handleClick = useCallback(() => {
navigate(`projects/${project.id}`);
}, [project.id, navigate]);
return (
<div
{...props}
className={theme.wrapper({ className })}
onClick={handleClick}
>
<div {...props} className={theme.wrapper({ className })}>
{/* Upper content */}
<div className={theme.upperContent()}>
{/* Icon container */}
@@ -70,13 +54,14 @@ export const ProjectCard = ({
imageSrc={project.icon}
initials={getInitials(project.name)}
/>
{/* </div> */}
{/* Title and website */}
<div className={theme.content()}>
<Link to={`projects/${project.id}`} className={theme.content()}>
<p className={theme.title()}>{project.name}</p>
<p className={theme.description()}>
{project.deployments[0]?.domain?.name ?? 'No domain'}
</p>
</div>
</Link>
{/* Icons */}
<div className={theme.icons()}>
{hasError && <WarningDiamondIcon className="text-elements-danger" />}
@@ -102,7 +87,10 @@ export const ProjectCard = ({
</div>
</div>
{/* Wave */}
<WavyBorder variant="stroke-and-fill" className={theme.wavyBorder()} />
<WavyBorder
variant="stroke-and-fill"
className="bg-surface-card-hovered"
/>
{/* Lower content */}
<div className={theme.lowerContent()}>
{/* Latest deployment */}
@@ -1,7 +1,7 @@
import React from 'react';
import templates from 'assets/templates';
import RepositoryList from 'components/projects/create/RepositoryList';
import { RepositoryList } from 'components/projects/create/RepositoryList';
import ConnectAccount from 'components/projects/create/ConnectAccount';
import { useOctokit } from 'context/OctokitContext';
import { Heading } from 'components/shared/Heading';