Options
diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/page.tsx b/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/page.tsx
index c5a338ce6..ff1be8da3 100644
--- a/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/page.tsx
+++ b/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/page.tsx
@@ -1,6 +1,6 @@
import EmptyState from "@/components/common/empty-state";
+import { Icon } from "@/components/ui/icon";
import { api } from "@/trpc/server";
-import { RiTerminalBoxFill } from "@remixicon/react";
import type { Metadata } from "next";
import Link from "next/link";
import { Fragment } from "react";
@@ -20,7 +20,7 @@ const AccessTokenPage = async () => {
{data.accessTokens.length === 0 ? (
}
+ icon={}
title="Access tokens"
subtitle={
diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/team/add-team-member-dropdown-menu.tsx b/src/app/(authenticated)/(dashboard)/[publicId]/settings/team/add-team-member-dropdown-menu.tsx
index c6fdd653b..413e61907 100644
--- a/src/app/(authenticated)/(dashboard)/[publicId]/settings/team/add-team-member-dropdown-menu.tsx
+++ b/src/app/(authenticated)/(dashboard)/[publicId]/settings/team/add-team-member-dropdown-menu.tsx
@@ -8,8 +8,8 @@ import {
DropdownMenuContent,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
+import { Icon } from "@/components/ui/icon";
import type { RouterOutputs } from "@/trpc/shared";
-import { RiAccountCircleFill, RiAddLine } from "@remixicon/react";
type Roles = RouterOutputs["rbac"]["listRoles"]["rolesList"];
@@ -24,7 +24,7 @@ export const AddTeamMemberDropdownMenu = ({
@@ -51,7 +51,7 @@ export const AddTeamMemberDropdownMenu = ({
}}
>
<>
-
+
Invite a team member
>
diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/create-share-class-button.tsx b/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/create-share-class-button.tsx
index 0aa333903..9afa093ed 100644
--- a/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/create-share-class-button.tsx
+++ b/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/create-share-class-button.tsx
@@ -3,8 +3,8 @@
import Tldr from "@/components/common/tldr";
import { pushModal } from "@/components/modals";
import { Button } from "@/components/ui/button";
+import { Icon } from "@/components/ui/icon";
import type { ShareClassMutationType } from "@/trpc/routers/share-class/schema";
-import { RiAddFill } from "@remixicon/react";
type CreateShareClassButtonProps = {
shareClasses: ShareClassMutationType[];
@@ -34,7 +34,7 @@ export const CreateShareButton = ({
});
}}
>
-
+
Create a share class
);
diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/edit-share-class-button.tsx b/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/edit-share-class-button.tsx
index 597166dbc..2f417e539 100644
--- a/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/edit-share-class-button.tsx
+++ b/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/edit-share-class-button.tsx
@@ -2,8 +2,8 @@
import Tldr from "@/components/common/tldr";
import { pushModal } from "@/components/modals";
+import { Icon } from "@/components/ui/icon";
import type { ShareClassMutationType } from "@/trpc/routers/share-class/schema";
-import { RiEqualizer2Line } from "@remixicon/react";
type EditShareClassButtonProps = {
shareClasses?: ShareClassMutationType[];
@@ -15,26 +15,29 @@ export const EditShareClassButton = ({
shareClass,
}: EditShareClassButtonProps) => {
return (
- {
- pushModal("ShareClassModal", {
- shouldClientFetch: false,
- type: "update",
- title: "Update share class",
- shareClass,
- shareClasses,
- subtitle: (
-
- ),
- });
- }}
- />
+
);
};
diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/page.tsx b/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/page.tsx
index 31af92980..4fd149ec6 100644
--- a/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/page.tsx
+++ b/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/page.tsx
@@ -1,9 +1,9 @@
import EmptyState from "@/components/common/empty-state";
import { Card } from "@/components/ui/card";
+import { Icon } from "@/components/ui/icon";
import { withServerComponentSession } from "@/server/auth";
import { db } from "@/server/db";
import type { ShareClassMutationType } from "@/trpc/routers/share-class/schema";
-import { RiPieChart2Line } from "@remixicon/react";
import type { Metadata } from "next";
import { CreateShareButton } from "./create-share-class-button";
import ShareClassTable from "./table";
@@ -32,7 +32,7 @@ const SharesPage = async () => {
if (shareClasses.length === 0) {
return (
}
+ icon={}
title="You do not have any share classes!"
subtitle="Please click the button below to create a new share class."
>
diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/stakeholders/page.tsx b/src/app/(authenticated)/(dashboard)/[publicId]/stakeholders/page.tsx
index e2d358d57..867e814ee 100644
--- a/src/app/(authenticated)/(dashboard)/[publicId]/stakeholders/page.tsx
+++ b/src/app/(authenticated)/(dashboard)/[publicId]/stakeholders/page.tsx
@@ -2,10 +2,10 @@ import EmptyState from "@/components/common/empty-state";
import StakeholderDropdown from "@/components/stakeholder/stakeholder-dropdown";
import StakeholderTable from "@/components/stakeholder/stakeholder-table";
import { Card } from "@/components/ui/card";
+import { Icon } from "@/components/ui/icon";
import { UnAuthorizedState } from "@/components/ui/un-authorized-state";
import { serverAccessControl } from "@/lib/rbac/access-control";
import { api } from "@/trpc/server";
-import { RiGroup2Fill } from "@remixicon/react";
import type { Metadata } from "next";
export const metadata: Metadata = {
@@ -32,7 +32,11 @@ const StakeholdersPage = async () => {
if (stakeholders.length === 0) {
return (
}
+ icon={
+
+
+
+ }
title="You do not have any stakeholders!"
subtitle="Please click the button below to add or import stakeholders."
>
diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/updates/page.tsx b/src/app/(authenticated)/(dashboard)/[publicId]/updates/page.tsx
index 982e28c3e..36bc07ee3 100644
--- a/src/app/(authenticated)/(dashboard)/[publicId]/updates/page.tsx
+++ b/src/app/(authenticated)/(dashboard)/[publicId]/updates/page.tsx
@@ -1,9 +1,9 @@
import EmptyState from "@/components/common/empty-state";
import { Button } from "@/components/ui/button";
import { Card } from "@/components/ui/card";
+import { Icon } from "@/components/ui/icon";
import UpdateTable from "@/components/update/update-table";
import { api } from "@/trpc/server";
-import { RiAddFill, RiMailSendLine } from "@remixicon/react";
import type { Metadata } from "next";
import Link from "next/link";
@@ -21,13 +21,13 @@ const UpdatesPage = async ({
if (updates.data.length === 0) {
return (
}
+ icon={}
title="You have not sent any updates."
subtitle="Please click the button below to send an update to your stakeholders."
>
@@ -48,7 +48,7 @@ const UpdatesPage = async ({
diff --git a/src/app/(documents)/data-rooms/[publicId]/[bucketId]/page.tsx b/src/app/(documents)/data-rooms/[publicId]/[bucketId]/page.tsx
index be48f2381..4b4094fa7 100644
--- a/src/app/(documents)/data-rooms/[publicId]/[bucketId]/page.tsx
+++ b/src/app/(documents)/data-rooms/[publicId]/[bucketId]/page.tsx
@@ -2,10 +2,10 @@
import FilePreview from "@/components/file/preview";
import { SharePageLayout } from "@/components/share/page-layout";
+import { Icon } from "@/components/ui/icon";
import { type JWTVerifyResult, decode } from "@/lib/jwt";
import { db } from "@/server/db";
import { getPresignedGetUrl } from "@/server/file-uploads";
-import { RiFolder3Fill as FolderIcon } from "@remixicon/react";
import Link from "next/link";
import { notFound } from "next/navigation";
@@ -24,7 +24,11 @@ const DataRoomPage = async ({
return notFound();
}
- const { companyId, dataRoomId, recipientId } = decodedToken?.payload;
+ if (!decodedToken?.payload) {
+ return notFound();
+ }
+
+ const { companyId, dataRoomId, recipientId } = decodedToken.payload;
if (!companyId || !recipientId || !dataRoomId) {
return notFound();
}
@@ -93,7 +97,8 @@ const DataRoomPage = async ({
}}
title={
-
diff --git a/src/app/(documents)/data-rooms/[publicId]/page.tsx b/src/app/(documents)/data-rooms/[publicId]/page.tsx
index 5135c4c6f..8d6319850 100644
--- a/src/app/(documents)/data-rooms/[publicId]/page.tsx
+++ b/src/app/(documents)/data-rooms/[publicId]/page.tsx
@@ -2,9 +2,9 @@
import DataRoomFileExplorer from "@/components/documents/data-room/explorer";
import { SharePageLayout } from "@/components/share/page-layout";
+import { Icon } from "@/components/ui/icon";
import { type JWTVerifyResult, decode } from "@/lib/jwt";
import { db } from "@/server/db";
-import { RiFolder3Fill as FolderIcon } from "@remixicon/react";
import { notFound } from "next/navigation";
const DataRoomPage = async ({
@@ -22,7 +22,12 @@ const DataRoomPage = async ({
return notFound();
}
- const { companyId, dataRoomId, recipientId } = decodedToken?.payload;
+ if (!decodedToken?.payload) {
+ return notFound();
+ }
+
+ const { companyId, dataRoomId, recipientId } = decodedToken.payload;
+
if (!companyId || !recipientId || !dataRoomId) {
return notFound();
}
@@ -77,9 +82,9 @@ const DataRoomPage = async ({
}}
title={
-
diff --git a/src/app/(unauthenticated)/new/components/LoginWithGoogle.tsx b/src/app/(unauthenticated)/new/components/LoginWithGoogle.tsx
index d9f5f2ec6..0e7f19e77 100644
--- a/src/app/(unauthenticated)/new/components/LoginWithGoogle.tsx
+++ b/src/app/(unauthenticated)/new/components/LoginWithGoogle.tsx
@@ -1,7 +1,7 @@
"use client";
import { Button } from "@/components/ui/button";
-import { RiGoogleFill as GoogleIcon } from "@remixicon/react";
+import { Icon } from "@/components/ui/icon";
import { signIn } from "next-auth/react";
async function signInWithGoogle() {
@@ -16,7 +16,7 @@ const LoginWithGoogle = () => {
onClick={signInWithGoogle}
className="rounded-xl"
>
-
+
Continue with Google
diff --git a/src/app/(unauthenticated)/new/page.tsx b/src/app/(unauthenticated)/new/page.tsx
index 81f3438ab..98aea458a 100644
--- a/src/app/(unauthenticated)/new/page.tsx
+++ b/src/app/(unauthenticated)/new/page.tsx
@@ -1,6 +1,6 @@
+import { Icon } from "@/components/ui/icon";
import { env } from "@/env";
import { getServerComponentAuthSession } from "@/server/auth";
-import { RiCheckboxCircleFill as CheckIcon } from "@remixicon/react";
import { redirect } from "next/navigation";
import { notFound } from "next/navigation";
@@ -25,21 +25,33 @@ export default async function CapPage() {
-
-
+
Manage your Cap table, issue options
-
-
+
Collaborate with investors with Data rooms
-
-
+
eSign NDAs, SAFEs and other documents
-
-
+
Delight your investors by sending updates
diff --git a/src/app/(unauthenticated)/password-updated/page.tsx b/src/app/(unauthenticated)/password-updated/page.tsx
index 179a02d03..5024c2431 100644
--- a/src/app/(unauthenticated)/password-updated/page.tsx
+++ b/src/app/(unauthenticated)/password-updated/page.tsx
@@ -1,5 +1,5 @@
import { Button } from "@/components/ui/button";
-import { RiCheckboxCircleLine } from "@remixicon/react";
+import { Icon } from "@/components/ui/icon";
import type { Metadata } from "next";
import Link from "next/link";
@@ -12,7 +12,7 @@ export default function PasswordUpdated() {
-
+
Password Updated
diff --git a/src/app/updates/[publicId]/page.tsx b/src/app/updates/[publicId]/page.tsx
index 61a8e9f06..766a0f383 100644
--- a/src/app/updates/[publicId]/page.tsx
+++ b/src/app/updates/[publicId]/page.tsx
@@ -3,12 +3,12 @@
import { dayjsExt } from "@/common/dayjs";
import { SharePageLayout } from "@/components/share/page-layout";
import { Avatar, AvatarImage } from "@/components/ui/avatar";
+import { Icon } from "@/components/ui/icon";
import UpdateRenderer from "@/components/update/renderer";
import { type JWTVerifyResult, decode } from "@/lib/jwt";
import { UpdateStatusEnum } from "@/prisma/enums";
import { db } from "@/server/db";
import { renderAsync } from "@react-email/components";
-import { RiLock2Line } from "@remixicon/react";
import { notFound } from "next/navigation";
import { Fragment } from "react";
@@ -78,7 +78,7 @@ const PublicUpdatePage = async ({
return (
-
+
Public access denied
diff --git a/src/components/common/file-icon.tsx b/src/components/common/file-icon.tsx
index ce67104be..0e8d72b68 100644
--- a/src/components/common/file-icon.tsx
+++ b/src/components/common/file-icon.tsx
@@ -1,16 +1,7 @@
"use client";
import { fileType } from "@/lib/mime";
-import {
- RiFileCloudFill,
- RiFileExcelFill,
- RiFileImageFill,
- RiFileMusicFill,
- RiFilePdf2Fill,
- RiFilePptFill,
- RiFileVideoFill,
- RiFileWordFill,
-} from "@remixicon/react";
+import { Icon } from "@/components/ui/icon";
type FileIconProps = {
type: string;
@@ -23,56 +14,56 @@ const FileIcon = ({ type }: FileIconProps) => {
case "image":
return (
-
+
);
case "audio":
return (
-
+
);
case "video":
return (
-
+
);
case "powerpoint":
return (
-
+
);
case "doc":
return (
-
+
);
case "excel":
return (
-
+
);
case "pdf":
return (
-
+
);
default:
return (
-
+
);
}
diff --git a/src/components/common/share-modal.tsx b/src/components/common/share-modal.tsx
index f765484d8..e53a9cee0 100644
--- a/src/components/common/share-modal.tsx
+++ b/src/components/common/share-modal.tsx
@@ -6,13 +6,9 @@ import { Avatar, AvatarImage } from "@/components/ui/avatar";
import { Button } from "@/components/ui/button";
import MultipleSelector, { type Option } from "@/components/ui/multi-selector";
+import { Icon } from "@/components/ui/icon";
import type { ShareContactType } from "@/schema/contacts";
import type { DataRoomRecipient, UpdateRecipient } from "@prisma/client";
-import {
- RiCheckLine as CheckIcon,
- RiDeleteBin2Line as DeleteIcon,
- RiLink as LinkIcon,
-} from "@remixicon/react";
import { Fragment, useState } from "react";
import { useCopyToClipboard } from "usehooks-ts";
import { popModal } from "../modals";
@@ -145,7 +141,7 @@ const Share = ({
}
}}
>
-
+
Remove