diff --git a/front/src/AppNavbar.tsx b/front/src/AppNavbar.tsx
index 976d689e5..34436bc2f 100644
--- a/front/src/AppNavbar.tsx
+++ b/front/src/AppNavbar.tsx
@@ -57,7 +57,6 @@ export function AppNavbar() {
active={currentPath === '/tasks'}
icon={}
/>
-
>;
+ if (!favorites || favorites.length === 0) return <>>;
return (
-
- {favorites &&
- favorites.map(
- ({ id, person, company }) =>
- (person && (
-
- }
- to={`/person/${person.id}`}
- />
- )) ||
- (company && (
-
- }
- to={`/companies/${company.id}`}
- />
- )),
- )}
-
+
+
+ {favorites.map(
+ ({ id, person, company }) =>
+ (person && (
+
+ }
+ to={`/person/${person.id}`}
+ />
+ )) ||
+ (company && (
+
+ }
+ to={`/companies/${company.id}`}
+ />
+ )),
+ )}
+
);
}
diff --git a/front/src/modules/ui/button/components/IconButton.tsx b/front/src/modules/ui/button/components/IconButton.tsx
index c09971589..c5a02d6f1 100644
--- a/front/src/modules/ui/button/components/IconButton.tsx
+++ b/front/src/modules/ui/button/components/IconButton.tsx
@@ -5,20 +5,21 @@ export type IconButtonVariant = 'transparent' | 'border' | 'shadow' | 'white';
export type IconButtonSize = 'large' | 'medium' | 'small';
-export type IconButtonFontColor = 'primary' | 'secondary' | 'tertiary';
-
-export type IconButtonAccent = 'regular' | 'red';
+export type IconButtonFontColor =
+ | 'primary'
+ | 'secondary'
+ | 'tertiary'
+ | 'danger';
export type ButtonProps = {
icon?: React.ReactNode;
variant?: IconButtonVariant;
size?: IconButtonSize;
textColor?: IconButtonFontColor;
- accent?: IconButtonAccent;
} & React.ComponentProps<'button'>;
const StyledIconButton = styled.button<
- Pick
+ Pick
>`
align-items: center;
background: ${({ theme, variant }) => {
@@ -69,13 +70,13 @@ const StyledIconButton = styled.button<
return 'none';
}
}};
- color: ${({ theme, disabled, textColor, accent }) => {
+ color: ${({ theme, disabled, textColor }) => {
if (disabled) {
return theme.font.color.extraLight;
}
- return accent
- ? theme.color[accent]
+ return textColor === 'danger'
+ ? theme.color.red
: theme.font.color[textColor ?? 'secondary'];
}};
cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};
@@ -126,7 +127,6 @@ export function IconButton({
size = 'medium',
textColor = 'tertiary',
disabled = false,
- accent = 'regular',
...props
}: ButtonProps) {
return (
@@ -135,7 +135,6 @@ export function IconButton({
size={size}
disabled={disabled}
textColor={textColor}
- accent={accent}
{...props}
>
{icon}
diff --git a/front/src/modules/ui/layout/components/WithTopBarContainer.tsx b/front/src/modules/ui/layout/components/WithTopBarContainer.tsx
index df01c384a..52f6d526d 100644
--- a/front/src/modules/ui/layout/components/WithTopBarContainer.tsx
+++ b/front/src/modules/ui/layout/components/WithTopBarContainer.tsx
@@ -13,7 +13,7 @@ type OwnProps = {
isFavorite?: boolean;
icon: ReactNode;
onAddButtonClick?: () => void;
- onFavouriteButtonClick?: () => void;
+ onFavoriteButtonClick?: () => void;
};
const StyledContainer = styled.div`
@@ -29,7 +29,7 @@ export function WithTopBarContainer({
isFavorite,
icon,
onAddButtonClick,
- onFavouriteButtonClick,
+ onFavoriteButtonClick,
}: OwnProps) {
return (
@@ -40,7 +40,7 @@ export function WithTopBarContainer({
isFavorite={isFavorite}
icon={icon}
onAddButtonClick={onAddButtonClick}
- onFavouriteButtonClick={onFavouriteButtonClick}
+ onFavoriteButtonClick={onFavoriteButtonClick}
/>
{children}
diff --git a/front/src/modules/ui/layout/page-bar/components/PageBar.tsx b/front/src/modules/ui/layout/page-bar/components/PageBar.tsx
index 774d3514a..8048ba1e0 100644
--- a/front/src/modules/ui/layout/page-bar/components/PageBar.tsx
+++ b/front/src/modules/ui/layout/page-bar/components/PageBar.tsx
@@ -69,7 +69,7 @@ type OwnProps = {
isFavorite?: boolean;
icon: ReactNode;
onAddButtonClick?: () => void;
- onFavouriteButtonClick?: () => void;
+ onFavoriteButtonClick?: () => void;
};
export function PageBar({
@@ -78,7 +78,7 @@ export function PageBar({
isFavorite,
icon,
onAddButtonClick,
- onFavouriteButtonClick,
+ onFavoriteButtonClick,
}: OwnProps) {
const navigate = useNavigate();
const navigateBack = useCallback(() => navigate(-1), [navigate]);
@@ -114,13 +114,13 @@ export function PageBar({
- {onFavouriteButtonClick && (
+ {onFavoriteButtonClick && (
}
size="large"
data-testid="add-button"
- accent={isFavorite ? 'red' : 'regular'}
- onClick={onFavouriteButtonClick}
+ textColor={isFavorite ? 'danger' : 'secondary'}
+ onClick={onFavoriteButtonClick}
variant="border"
/>
)}
diff --git a/front/src/pages/companies/CompanyShow.tsx b/front/src/pages/companies/CompanyShow.tsx
index e11a5d0bf..f3396118a 100644
--- a/front/src/pages/companies/CompanyShow.tsx
+++ b/front/src/pages/companies/CompanyShow.tsx
@@ -45,7 +45,7 @@ export function CompanyShow() {
hasBackButton
isFavorite={isFavorite}
icon={}
- onFavouriteButtonClick={handleFavoriteButtonClick}
+ onFavoriteButtonClick={handleFavoriteButtonClick}
>
diff --git a/front/src/pages/people/PersonShow.tsx b/front/src/pages/people/PersonShow.tsx
index 3dc1a1aef..710a70c9a 100644
--- a/front/src/pages/people/PersonShow.tsx
+++ b/front/src/pages/people/PersonShow.tsx
@@ -55,7 +55,7 @@ export function PersonShow() {
icon={}
hasBackButton
isFavorite={isFavorite}
- onFavouriteButtonClick={handleFavoriteButtonClick}
+ onFavoriteButtonClick={handleFavoriteButtonClick}
>
diff --git a/server/src/database/migrations/20230810222531_add_favorites/migration.sql b/server/src/database/migrations/20230810222531_add_favorites/migration.sql
new file mode 100644
index 000000000..874c23506
--- /dev/null
+++ b/server/src/database/migrations/20230810222531_add_favorites/migration.sql
@@ -0,0 +1,19 @@
+-- CreateTable
+CREATE TABLE "favorites" (
+ "id" TEXT NOT NULL,
+ "workspaceId" TEXT,
+ "personId" TEXT,
+ "companyId" TEXT,
+ "workspaceMemberId" TEXT,
+
+ CONSTRAINT "favorites_pkey" PRIMARY KEY ("id")
+);
+
+-- AddForeignKey
+ALTER TABLE "favorites" ADD CONSTRAINT "favorites_personId_fkey" FOREIGN KEY ("personId") REFERENCES "people"("id") ON DELETE SET NULL ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "favorites" ADD CONSTRAINT "favorites_companyId_fkey" FOREIGN KEY ("companyId") REFERENCES "companies"("id") ON DELETE SET NULL ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "favorites" ADD CONSTRAINT "favorites_workspaceMemberId_fkey" FOREIGN KEY ("workspaceMemberId") REFERENCES "workspace_members"("id") ON DELETE SET NULL ON UPDATE CASCADE;