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