diff --git a/package.json b/package.json index 188d543..78b8ec7 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,6 @@ "date-fns": "^4.1.0", "geist": "^1.3.0", "input-otp": "^1.4.2", - "lucide-react": "^0.525.0", "next": "^15.5.18", "next-themes": "^0.4.4", "postgres": "^3.4.4", @@ -40,6 +39,7 @@ "react-dom": "^18.3.1", "react-error-boundary": "^6.1.0", "react-hook-form": "^7.55.0", + "react-icons": "^5.7.0", "server-only": "^0.0.1", "shadcn": "^4.2.0", "sonner": "^2.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b2a7d41..11dc93d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,9 +59,6 @@ importers: input-otp: specifier: ^1.4.2 version: 1.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - lucide-react: - specifier: ^0.525.0 - version: 0.525.0(react@18.3.1) next: specifier: ^15.5.18 version: 15.5.18(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -89,6 +86,9 @@ importers: react-hook-form: specifier: ^7.55.0 version: 7.55.0(react@18.3.1) + react-icons: + specifier: ^5.7.0 + version: 5.7.0(react@18.3.1) server-only: specifier: ^0.0.1 version: 0.0.1 @@ -2638,11 +2638,6 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lucide-react@0.525.0: - resolution: {integrity: sha512-Tm1txJ2OkymCGkvwoHt33Y2JpN5xucVq1slHcgE6Lk0WjDfjgKWor5CdVER8U6DvcfMwh4M8XxmpTiyzfmfDYQ==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -2993,6 +2988,11 @@ packages: peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 + react-icons@5.7.0: + resolution: {integrity: sha512-LBLy340Rzqy6+/yVhZKT3B/QpP1BZaesGqasf09HPOBzRarcDIFH0WwXlXQfE7q7ipxK4MSiC5DIBWURCny6fw==} + peerDependencies: + react: '*' + react-remove-scroll-bar@2.3.8: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} @@ -5826,10 +5826,6 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react@0.525.0(react@18.3.1): - dependencies: - react: 18.3.1 - math-intrinsics@1.1.0: {} media-typer@1.1.0: {} @@ -6192,6 +6188,10 @@ snapshots: dependencies: react: 18.3.1 + react-icons@5.7.0(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar@2.3.8(@types/react@18.3.18)(react@18.3.1): dependencies: react: 18.3.1 diff --git a/src/app/(auth)/login/can-i-access.tsx b/src/app/(auth)/login/can-i-access.tsx index c95bc4c..00fd427 100644 --- a/src/app/(auth)/login/can-i-access.tsx +++ b/src/app/(auth)/login/can-i-access.tsx @@ -1,5 +1,5 @@ -import { Award, Building, Gem, Lock, ShieldUser, Star } from "lucide-react" import Image from "next/image" +import { FiAward, FiBriefcase, FiHexagon, FiLock, FiShield, FiStar } from "react-icons/fi" import loginSvg1 from "@/assets/svg/login-1.svg" import loginSvg2 from "@/assets/svg/login-2.svg" import loginSvg3 from "@/assets/svg/login-3.svg" @@ -10,16 +10,16 @@ export function CanIAccess() { return (
- +

How can I access?

You can access this dashboard if you have at least one of this role:

- - - - - + + + + +

When you have checked that you are eligible, these are the steps to access:

diff --git a/src/app/(auth)/login/login-button.tsx b/src/app/(auth)/login/login-button.tsx index 51c6226..748d318 100644 --- a/src/app/(auth)/login/login-button.tsx +++ b/src/app/(auth)/login/login-button.tsx @@ -1,6 +1,6 @@ "use client" -import { LogInIcon } from "lucide-react" import Link from "next/link" +import { FiLogIn } from "react-icons/fi" import { Card, CardContent } from "@/components/ui/card" export function LoginButton() { @@ -9,7 +9,7 @@ export function LoginButton() {
- +

Enter your reserved area

diff --git a/src/app/(auth)/login/login-form.tsx b/src/app/(auth)/login/login-form.tsx index e7ccd37..c810324 100644 --- a/src/app/(auth)/login/login-form.tsx +++ b/src/app/(auth)/login/login-form.tsx @@ -1,8 +1,8 @@ "use client" -import { Key, Loader2, Mail } from "lucide-react" import { useRouter } from "next/navigation" import { useState } from "react" +import { FiKey, FiLoader, FiMail } from "react-icons/fi" import { toast } from "sonner" import { Button } from "@/components/ui/button" import { FieldSeparator } from "@/components/ui/field" @@ -101,10 +101,10 @@ function EmailCard({
@@ -189,7 +189,7 @@ function OTPCard({ email }: { email: string }) { ) diff --git a/src/app/(auth)/login/what-is.tsx b/src/app/(auth)/login/what-is.tsx index c9f34e5..29344d8 100644 --- a/src/app/(auth)/login/what-is.tsx +++ b/src/app/(auth)/login/what-is.tsx @@ -1,23 +1,23 @@ +import type { IconType } from "react-icons" import { - BookOpen, - Bot, - CircleEllipsis, - ClipboardList, - Gavel, - HelpCircle, - LayoutTemplate, - type LucideIcon, - PencilLine, - ShieldCheck, - Users, -} from "lucide-react" + FiBookOpen, + FiCheckSquare, + FiClipboard, + FiCpu, + FiEdit3, + FiHelpCircle, + FiLayout, + FiMoreHorizontal, + FiShield, + FiUsers, +} from "react-icons/fi" import { Card } from "@/components/ui/card" export function WhatIs() { return (
- +

What is this?

@@ -26,15 +26,15 @@ export function WhatIs() {

What actions you can perform depends on your role, but some remarkable ones are:

- - - - - - - - - + + + + + + + + +

It's clear that you'll have access to different features depending on your role(s). @@ -43,7 +43,7 @@ export function WhatIs() { ) } -export function FeatureBox({ icon: Icon, feature }: { icon: LucideIcon; feature: string }) { +export function FeatureBox({ icon: Icon, feature }: { icon: IconType; feature: string }) { return (

diff --git a/src/app/(auth)/onboarding/link/telegram.tsx b/src/app/(auth)/onboarding/link/telegram.tsx index 86d5e0a..d6dd6bd 100644 --- a/src/app/(auth)/onboarding/link/telegram.tsx +++ b/src/app/(auth)/onboarding/link/telegram.tsx @@ -1,8 +1,8 @@ "use client" import { APIError } from "better-auth/api" -import { CircleCheckBig, ClockAlertIcon } from "lucide-react" import { useRouter } from "next/navigation" import { useCallback, useEffect, useState } from "react" +import { FiCheckCircle, FiClock } from "react-icons/fi" import { toast } from "sonner" import { Code } from "@/components/code" import { InputWithPrefix } from "@/components/input-prefix" @@ -104,7 +104,7 @@ export function TelegramLink({ botUsername }: { botUsername: string }) { if (success) return (
- +

Linked successfully!

Redirecting you in 5s...

@@ -113,7 +113,7 @@ export function TelegramLink({ botUsername }: { botUsername: string }) { if (expired) return (
- +

Code Expired!

diff --git a/src/app/dashboard/(active)/account/delete-passkey.tsx b/src/app/dashboard/(active)/account/delete-passkey.tsx index 0047e80..56a1435 100644 --- a/src/app/dashboard/(active)/account/delete-passkey.tsx +++ b/src/app/dashboard/(active)/account/delete-passkey.tsx @@ -1,7 +1,7 @@ "use client" -import { Trash2Icon } from "lucide-react" import { useRouter } from "next/navigation" +import { FiTrash2 } from "react-icons/fi" import { toast } from "sonner" import { AlertDialog, @@ -34,7 +34,7 @@ export function DeletePasskey({ id }: { id: string }) { - + Remove passkey Are you sure you want to delete this passkey? diff --git a/src/app/dashboard/(active)/account/page.tsx b/src/app/dashboard/(active)/account/page.tsx index 0ac592a..8267448 100644 --- a/src/app/dashboard/(active)/account/page.tsx +++ b/src/app/dashboard/(active)/account/page.tsx @@ -1,5 +1,5 @@ -import { Calendar, CircleAlert, KeyIcon } from "lucide-react" import { headers } from "next/headers" +import { FiAlertCircle, FiCalendar, FiKey } from "react-icons/fi" import { auth } from "@/lib/auth" import { getServerSession } from "@/server/auth" import { DeletePasskey } from "./delete-passkey" @@ -28,7 +28,7 @@ export default async function Account() {
- {!user.name && } + {!user.name && } Name: {user.name ?

{user.name}

: }
@@ -48,12 +48,12 @@ export default async function Account() { {passkeys?.map((p) => (
- +

{p.name}

- + Created on {p.createdAt.toLocaleDateString()}

diff --git a/src/app/dashboard/(active)/account/profile-pic.tsx b/src/app/dashboard/(active)/account/profile-pic.tsx index 43d17dc..bfdf238 100644 --- a/src/app/dashboard/(active)/account/profile-pic.tsx +++ b/src/app/dashboard/(active)/account/profile-pic.tsx @@ -1,9 +1,9 @@ "use client" import type { User } from "better-auth" -import { Pencil, Upload, UserIcon, X } from "lucide-react" import { useRouter } from "next/navigation" import { forwardRef, useRef } from "react" +import { FiEdit2, FiUpload, FiUser, FiX } from "react-icons/fi" import { toast } from "sonner" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu" @@ -42,15 +42,15 @@ export function ProfilePic({ user }: Props) {
- +
uploadRef.current?.click()}> - Upload + Upload - Remove + Remove
@@ -59,7 +59,7 @@ export function ProfilePic({ user }: Props) { - {user.name ? getInitials(user.name) : } + {user.name ? getInitials(user.name) : }

Max 1MB

diff --git a/src/app/dashboard/(active)/azure/groups/groups-list.tsx b/src/app/dashboard/(active)/azure/groups/groups-list.tsx index 41909c7..2bf11d5 100644 --- a/src/app/dashboard/(active)/azure/groups/groups-list.tsx +++ b/src/app/dashboard/(active)/azure/groups/groups-list.tsx @@ -1,8 +1,8 @@ "use client" -import { ChevronDown, Info, LoaderCircle, Mail, UserMinus, UserPlus } from "lucide-react" import { useRouter } from "next/navigation" import { useMemo, useState } from "react" +import { FiChevronDown, FiInfo, FiLoader, FiMail, FiUserMinus, FiUserPlus } from "react-icons/fi" import { toast } from "sonner" import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert" import { Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount } from "@/components/ui/avatar" @@ -63,7 +63,7 @@ export function GroupsList({ groups, directoryMembers }: { groups: AzureGroup[];
- + Looking for groups with 0-1 member(s)? Groups with max one member are collected in a collapsed section at the bottom of the page. @@ -86,7 +86,7 @@ export function GroupsList({ groups, directoryMembers }: { groups: AzureGroup[]; {multiMemberGroups.length} {singleMemberGroups.length === 1 ? "group" : "groups"} - + } /> @@ -116,7 +116,7 @@ export function GroupsList({ groups, directoryMembers }: { groups: AzureGroup[]; {singleMemberGroups.length} {singleMemberGroups.length === 1 ? "group" : "groups"} - + } /> @@ -148,7 +148,7 @@ function GroupRow({ group, directoryMembers }: { group: AzureGroup; directoryMem

{group.displayName}

{group.mailAddress && (
- + {group.mailAddress}
)} @@ -263,7 +263,7 @@ function AddMemberDialog({ group, directoryMembers }: { group: AzureGroup; direc /> } > - + Add member @@ -310,9 +310,9 @@ function AddMemberDialog({ group, directoryMembers }: { group: AzureGroup; direc /> @@ -381,7 +381,7 @@ function RemoveMemberDialog({ group, directoryMembers }: { group: AzureGroup; di /> } > - + Remove member @@ -430,9 +430,9 @@ function RemoveMemberDialog({ group, directoryMembers }: { group: AzureGroup; di /> diff --git a/src/app/dashboard/(active)/complete-profile.tsx b/src/app/dashboard/(active)/complete-profile.tsx index 89fc4ac..10c0eb4 100644 --- a/src/app/dashboard/(active)/complete-profile.tsx +++ b/src/app/dashboard/(active)/complete-profile.tsx @@ -1,7 +1,7 @@ "use client" -import { UserRoundPenIcon } from "lucide-react" import Link from "next/link" +import { FiEdit3 } from "react-icons/fi" import { Button } from "@/components/ui/button" import { useSession } from "@/lib/auth" @@ -13,7 +13,7 @@ export function CompleteProfile() { return ( !data.user.name && (
- +

Your profile is incomplete, please enter the missing information.

diff --git a/src/app/dashboard/(active)/page.tsx b/src/app/dashboard/(active)/page.tsx index a0cb34b..b22e159 100644 --- a/src/app/dashboard/(active)/page.tsx +++ b/src/app/dashboard/(active)/page.tsx @@ -1,4 +1,4 @@ -import { InfoIcon } from "lucide-react" +import { FiInfo } from "react-icons/fi" import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert" import { CompleteProfile } from "./complete-profile" @@ -7,7 +7,7 @@ export default function AdminHome() {
- + Page under construction Use the sidebar to access the sections diff --git a/src/app/dashboard/(active)/telegram/grants/delete-grant.tsx b/src/app/dashboard/(active)/telegram/grants/delete-grant.tsx index c12558b..2eb277b 100644 --- a/src/app/dashboard/(active)/telegram/grants/delete-grant.tsx +++ b/src/app/dashboard/(active)/telegram/grants/delete-grant.tsx @@ -1,8 +1,8 @@ "use client" -import { OctagonX } from "lucide-react" import { useRouter } from "next/navigation" import { useState } from "react" +import { FiAlertOctagon } from "react-icons/fi" import { toast } from "sonner" import { AlertDialog, @@ -58,7 +58,7 @@ export function DeleteGrant({ - + Interrupt } @@ -66,7 +66,7 @@ export function DeleteGrant({ - + Interrupt Grant Are you sure you want to interrupt the grant? diff --git a/src/app/dashboard/(active)/telegram/grants/new-grant.tsx b/src/app/dashboard/(active)/telegram/grants/new-grant.tsx index 3f839aa..7c709c1 100644 --- a/src/app/dashboard/(active)/telegram/grants/new-grant.tsx +++ b/src/app/dashboard/(active)/telegram/grants/new-grant.tsx @@ -1,9 +1,9 @@ "use client" import { format } from "date-fns" -import { ChevronDownIcon, Plus } from "lucide-react" import { useRouter } from "next/navigation" import { useCallback, useEffect, useState } from "react" +import { FiChevronDown, FiPlus } from "react-icons/fi" import { toast } from "sonner" import { Button } from "@/components/ui/button" import { Calendar } from "@/components/ui/calendar" @@ -99,7 +99,7 @@ export function NewGrant() { - New Grant + New Grant } /> @@ -184,7 +184,7 @@ function DatePicker({ onSelect }: { onSelect: (date: Date, startTime: number, du render={ } /> diff --git a/src/app/dashboard/(active)/telegram/groups/group-row.tsx b/src/app/dashboard/(active)/telegram/groups/group-row.tsx index bfb8006..e17328d 100644 --- a/src/app/dashboard/(active)/telegram/groups/group-row.tsx +++ b/src/app/dashboard/(active)/telegram/groups/group-row.tsx @@ -1,6 +1,6 @@ "use client" -import { Copy } from "lucide-react" import { useRouter } from "next/navigation" +import { FiCopy } from "react-icons/fi" import { toast } from "sonner" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" @@ -54,7 +54,7 @@ export function GroupRow({ row: r }: { row: TgGroup }) { } }} > - +
diff --git a/src/app/dashboard/(active)/telegram/groups/leave-chat.tsx b/src/app/dashboard/(active)/telegram/groups/leave-chat.tsx index 8a8a284..221564b 100644 --- a/src/app/dashboard/(active)/telegram/groups/leave-chat.tsx +++ b/src/app/dashboard/(active)/telegram/groups/leave-chat.tsx @@ -1,8 +1,8 @@ "use client" -import { OctagonX, Trash2 } from "lucide-react" import { useRouter } from "next/navigation" import { useState } from "react" +import { FiAlertOctagon, FiTrash2 } from "react-icons/fi" import { toast } from "sonner" import { Spinner } from "@/components/spinner" import { @@ -57,7 +57,7 @@ export function LeaveChat({ chatId }: { chatId: number }) { - + Leave } @@ -65,7 +65,7 @@ export function LeaveChat({ chatId }: { chatId: number }) { - + Leave chat diff --git a/src/app/dashboard/(active)/telegram/users/[id]/add-role.tsx b/src/app/dashboard/(active)/telegram/users/[id]/add-role.tsx index 361ddc1..c702ab1 100644 --- a/src/app/dashboard/(active)/telegram/users/[id]/add-role.tsx +++ b/src/app/dashboard/(active)/telegram/users/[id]/add-role.tsx @@ -1,8 +1,8 @@ "use client" import { USER_ROLE } from "@polinetwork/backend" -import { Plus } from "lucide-react" import { useRouter } from "next/navigation" import { useState } from "react" +import { FiPlus } from "react-icons/fi" import { toast } from "sonner" import { Spinner } from "@/components/spinner" import { Badge } from "@/components/ui/badge" @@ -89,7 +89,7 @@ export function AddRole({ - Add Role + Add Role } /> diff --git a/src/app/dashboard/(active)/telegram/users/[id]/card-message.tsx b/src/app/dashboard/(active)/telegram/users/[id]/card-message.tsx index 46603cc..4f60cda 100644 --- a/src/app/dashboard/(active)/telegram/users/[id]/card-message.tsx +++ b/src/app/dashboard/(active)/telegram/users/[id]/card-message.tsx @@ -1,4 +1,4 @@ -import { ExternalLinkIcon } from "lucide-react" +import { FiExternalLink } from "react-icons/fi" import { Button } from "@/components/ui/button" import { Card, CardContent, CardFooter } from "@/components/ui/card" import { stripChatId } from "@/lib/utils/telegram" @@ -30,7 +30,7 @@ export function MessageCard({ message: m }: { message: Message }) { {m.group?.inviteLink && ( )} @@ -41,7 +41,7 @@ export function MessageCard({ message: m }: { message: Message }) { aria-label="Open message in chat" > diff --git a/src/app/dashboard/(active)/telegram/users/[id]/card-user-grant.tsx b/src/app/dashboard/(active)/telegram/users/[id]/card-user-grant.tsx index 7dbeb37..8e8de0e 100644 --- a/src/app/dashboard/(active)/telegram/users/[id]/card-user-grant.tsx +++ b/src/app/dashboard/(active)/telegram/users/[id]/card-user-grant.tsx @@ -1,6 +1,6 @@ "use client" import { format } from "date-fns" -import { Sparkle } from "lucide-react" +import { FiZap } from "react-icons/fi" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import type { TgGrant, TgUser } from "@/server/trpc/types" import { DeleteGrant } from "../../grants/delete-grant" @@ -18,7 +18,7 @@ export function UserGrantCard({ - Ongoing Grant + Ongoing Grant This user has an ongoing grant diff --git a/src/app/dashboard/(active)/telegram/users/[id]/card-user-info.tsx b/src/app/dashboard/(active)/telegram/users/[id]/card-user-info.tsx index 52741df..8a44e6b 100644 --- a/src/app/dashboard/(active)/telegram/users/[id]/card-user-info.tsx +++ b/src/app/dashboard/(active)/telegram/users/[id]/card-user-info.tsx @@ -1,5 +1,5 @@ "use client" -import { Star } from "lucide-react" +import { FiStar } from "react-icons/fi" import { Badge } from "@/components/ui/badge" import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { useSession } from "@/lib/auth" @@ -30,7 +30,7 @@ export function UserInfoCard({ # User ID: {user.id}{" "} {isSelf && ( - You + You )} diff --git a/src/app/dashboard/(active)/telegram/users/[id]/delete-group-admin.tsx b/src/app/dashboard/(active)/telegram/users/[id]/delete-group-admin.tsx index 25b0b36..cfcd50b 100644 --- a/src/app/dashboard/(active)/telegram/users/[id]/delete-group-admin.tsx +++ b/src/app/dashboard/(active)/telegram/users/[id]/delete-group-admin.tsx @@ -1,8 +1,8 @@ "use client" -import { Trash2, Trash2Icon } from "lucide-react" import { useRouter } from "next/navigation" import { useState } from "react" +import { FiTrash2 } from "react-icons/fi" import { toast } from "sonner" import { Spinner } from "@/components/spinner" import { @@ -63,7 +63,7 @@ export function DeleteGroupAdmin({ - + Delete } @@ -71,7 +71,7 @@ export function DeleteGroupAdmin({ - + Remove Group Admin Are you sure you want to remove the group admin? diff --git a/src/app/dashboard/(active)/telegram/users/[id]/new-group-admin.tsx b/src/app/dashboard/(active)/telegram/users/[id]/new-group-admin.tsx index 840e20d..fc7f5e5 100644 --- a/src/app/dashboard/(active)/telegram/users/[id]/new-group-admin.tsx +++ b/src/app/dashboard/(active)/telegram/users/[id]/new-group-admin.tsx @@ -1,7 +1,7 @@ "use client" -import { Plus, Search, X } from "lucide-react" import { useRouter } from "next/navigation" import { useState } from "react" +import { FiPlus, FiSearch, FiX } from "react-icons/fi" import { toast } from "sonner" import { Button } from "@/components/ui/button" import { @@ -84,7 +84,7 @@ export function NewGroupAdmin({ - New + New } /> @@ -119,12 +119,12 @@ export function NewGroupAdmin({ value={groupQuery} />
{groups.length > 0 && ( )} diff --git a/src/app/dashboard/(active)/telegram/users/[id]/page.tsx b/src/app/dashboard/(active)/telegram/users/[id]/page.tsx index bc83ede..ec6649e 100644 --- a/src/app/dashboard/(active)/telegram/users/[id]/page.tsx +++ b/src/app/dashboard/(active)/telegram/users/[id]/page.tsx @@ -10,8 +10,8 @@ import { NewGroupAdmin } from "./new-group-admin" export default async function TgUserDetails({ params }: { params: Promise<{ id: string }> }) { const { id } = await params - const parsedInt = parseInt(id, 10) - if (isNaN(parsedInt)) notFound() + const parsedInt = Number(id) + if (!Number.isInteger(parsedInt) || !Number.isSafeInteger(parsedInt)) notFound() const data = await getUserDetails(parsedInt) if (!data) notFound() diff --git a/src/app/dashboard/(active)/telegram/users/[id]/remove-role.tsx b/src/app/dashboard/(active)/telegram/users/[id]/remove-role.tsx index 82ddde0..261a6b4 100644 --- a/src/app/dashboard/(active)/telegram/users/[id]/remove-role.tsx +++ b/src/app/dashboard/(active)/telegram/users/[id]/remove-role.tsx @@ -1,8 +1,8 @@ "use client" import { USER_ROLE } from "@polinetwork/backend" -import { Minus } from "lucide-react" import { useRouter } from "next/navigation" import { useState } from "react" +import { FiMinus } from "react-icons/fi" import { toast } from "sonner" import { Spinner } from "@/components/spinner" import { Badge } from "@/components/ui/badge" @@ -93,7 +93,7 @@ export function RemoveRole({ - Remove Role + Remove Role } /> diff --git a/src/app/dashboard/(active)/telegram/users/page.tsx b/src/app/dashboard/(active)/telegram/users/page.tsx index 5a52f6d..79d7a71 100644 --- a/src/app/dashboard/(active)/telegram/users/page.tsx +++ b/src/app/dashboard/(active)/telegram/users/page.tsx @@ -1,5 +1,5 @@ -import { Eye } from "lucide-react" import Link from "next/link" +import { FiEye } from "react-icons/fi" import { SearchInput } from "@/components/search-input" import { Button } from "@/components/ui/button" import { trpc } from "@/server/trpc" @@ -47,7 +47,7 @@ function UserRow({ row: r }: { row: Users[number] }) {
diff --git a/src/app/dashboard/(active)/web/guide/create-guide.tsx b/src/app/dashboard/(active)/web/guide/create-guide.tsx index 6799ad0..5845298 100644 --- a/src/app/dashboard/(active)/web/guide/create-guide.tsx +++ b/src/app/dashboard/(active)/web/guide/create-guide.tsx @@ -1,8 +1,8 @@ "use client" import { format } from "date-fns" -import { ChevronDownIcon, Plus, Upload } from "lucide-react" import { useState } from "react" +import { FiChevronDown, FiPlus, FiUpload } from "react-icons/fi" import { toast } from "sonner" import { Button } from "@/components/ui/button" import { Calendar } from "@/components/ui/calendar" @@ -84,7 +84,7 @@ export function CreateGuide({ - Add Guide + Add Guide } /> @@ -116,7 +116,7 @@ export function CreateGuide({ render={ } /> @@ -142,7 +142,7 @@ export function CreateGuide({ htmlFor="file" className="flex h-8 w-full cursor-pointer items-center gap-2 rounded-lg border border-input bg-transparent px-2.5 text-sm transition-colors hover:bg-accent/50" > - + {file ? file.name : "Choose a PDF file..."} diff --git a/src/app/dashboard/(active)/web/guide/delete-guide.tsx b/src/app/dashboard/(active)/web/guide/delete-guide.tsx index 9d88482..9597629 100644 --- a/src/app/dashboard/(active)/web/guide/delete-guide.tsx +++ b/src/app/dashboard/(active)/web/guide/delete-guide.tsx @@ -1,7 +1,7 @@ "use client" -import { OctagonX, Trash } from "lucide-react" import { useState } from "react" +import { FiAlertOctagon, FiTrash } from "react-icons/fi" import { toast } from "sonner" import { AlertDialog, @@ -52,14 +52,14 @@ export function DeleteGuide({ - + } /> - + Delete Guide diff --git a/src/components/dashboard-sidebar/data.tsx b/src/components/dashboard-sidebar/data.tsx index a50c731..0fa52ae 100644 --- a/src/components/dashboard-sidebar/data.tsx +++ b/src/components/dashboard-sidebar/data.tsx @@ -1,5 +1,5 @@ -import { BookOpen, Globe, MessageCircleMoreIcon, Sparkle, Users, UsersRound } from "lucide-react" import Image from "next/image" +import { FiBookOpen, FiGlobe, FiMessageSquare, FiUsers, FiZap } from "react-icons/fi" import azureSvg from "@/assets/svg/azure.svg" import telegramSvg from "@/assets/svg/telegram.svg" @@ -9,23 +9,23 @@ export const DSData = { title: "Telegram", icon: telegram logo, items: [ - { title: "Grants", url: "/dashboard/telegram/grants", icon: }, - { title: "Groups", url: "/dashboard/telegram/groups", icon: }, - { title: "Users", url: "/dashboard/telegram/users", icon: }, + { title: "Grants", url: "/dashboard/telegram/grants", icon: }, + { title: "Groups", url: "/dashboard/telegram/groups", icon: }, + { title: "Users", url: "/dashboard/telegram/users", icon: }, ], }, { title: "Azure", icon: azure logo, items: [ - { title: "Groups", url: "/dashboard/azure/groups", icon: }, - { title: "Members", url: "/dashboard/azure/members", icon: }, + { title: "Groups", url: "/dashboard/azure/groups", icon: }, + { title: "Members", url: "/dashboard/azure/members", icon: }, ], }, { title: "Web", - icon: , - items: [{ title: "Guide", url: "/dashboard/web/guide", icon: }], + icon: , + items: [{ title: "Guide", url: "/dashboard/web/guide", icon: }], }, ], } diff --git a/src/components/dashboard-sidebar/main-nav.tsx b/src/components/dashboard-sidebar/main-nav.tsx index 7b7acf5..b61f719 100644 --- a/src/components/dashboard-sidebar/main-nav.tsx +++ b/src/components/dashboard-sidebar/main-nav.tsx @@ -1,8 +1,8 @@ "use client" -import { ChevronRight } from "lucide-react" import Link from "next/link" import { usePathname } from "next/navigation" import { useState } from "react" +import { FiChevronRight } from "react-icons/fi" import { COOKIES } from "@/constants" import { useCookieStorage } from "@/hooks/use-cookie-storage" import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../ui/collapsible" @@ -67,7 +67,7 @@ function DSMenuCategory({ {category.icon} {category.title} - + } /> diff --git a/src/components/dashboard-sidebar/user-nav.tsx b/src/components/dashboard-sidebar/user-nav.tsx index 40ceabe..ca07cdc 100644 --- a/src/components/dashboard-sidebar/user-nav.tsx +++ b/src/components/dashboard-sidebar/user-nav.tsx @@ -1,8 +1,8 @@ "use client" -import { Bell, ChevronsUpDown, LogOut, UserIcon } from "lucide-react" import Link from "next/link" import { useRouter } from "next/navigation" +import { FiBell, FiChevronsDown, FiLogOut, FiUser } from "react-icons/fi" import { toast } from "sonner" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { @@ -40,13 +40,13 @@ export function DSUserNav() { > - {user.name ? getInitials(user.name) : } + {user.name ? getInitials(user.name) : }
{user.name} {user.email}
- + } /> @@ -61,7 +61,7 @@ export function DSUserNav() {
- {user.name ? getInitials(user.name) : } + {user.name ? getInitials(user.name) : }
{user.name} @@ -74,12 +74,12 @@ export function DSUserNav() { - + Account - + Notifications @@ -97,7 +97,7 @@ export function DSUserNav() { }) } > - + Log out diff --git a/src/components/header-login-button.tsx b/src/components/header-login-button.tsx index ed3dd14..62057da 100644 --- a/src/components/header-login-button.tsx +++ b/src/components/header-login-button.tsx @@ -1,7 +1,7 @@ "use client" -import { LogIn, LogOut } from "lucide-react" import Link from "next/link" import { usePathname, useRouter } from "next/navigation" +import { FiLogIn, FiLogOut } from "react-icons/fi" import { useIsMobile } from "@/hooks/use-mobile" import { auth, useSession } from "@/lib/auth" import { Button } from "./ui/button" @@ -24,7 +24,7 @@ export function HeaderLoginButton() { router.refresh() }} > - Logout + Logout ) @@ -36,7 +36,7 @@ export function HeaderLoginButton() { className="rounded-lg" size={isMobile ? "icon" : "default"} > - + Login diff --git a/src/components/header.tsx b/src/components/header.tsx index 55c341e..d007f74 100644 --- a/src/components/header.tsx +++ b/src/components/header.tsx @@ -1,5 +1,5 @@ -import { GlobeIcon } from "lucide-react" import Link from "next/link" +import { FiGlobe } from "react-icons/fi" import { ThemeButton } from "@/components/theme-button" import { HeaderLoginButton } from "./header-login-button" import { Logo } from "./logo" @@ -22,7 +22,7 @@ export async function Header() { diff --git a/src/components/logout-button.tsx b/src/components/logout-button.tsx index 1a6a958..de99534 100644 --- a/src/components/logout-button.tsx +++ b/src/components/logout-button.tsx @@ -1,5 +1,5 @@ -import { LogOut } from "lucide-react" import { redirect } from "next/navigation" +import { FiLogOut } from "react-icons/fi" import { Button } from "@/components/ui/button" import { signOut } from "@/lib/auth" @@ -13,7 +13,7 @@ export function LogoutButton() { variant="destructive" type="submit" > - + Logout ) diff --git a/src/components/navigate-back.tsx b/src/components/navigate-back.tsx index 463f442..febb551 100644 --- a/src/components/navigate-back.tsx +++ b/src/components/navigate-back.tsx @@ -1,7 +1,7 @@ "use client" -import { ArrowLeft } from "lucide-react" import { useRouter } from "next/navigation" +import { FiArrowLeft } from "react-icons/fi" import { Button } from "./ui/button" export function NavigateBack() { @@ -15,7 +15,7 @@ export function NavigateBack() { router.back() }} > - + ) } diff --git a/src/components/search-input.tsx b/src/components/search-input.tsx index e0e5a9e..43b9009 100644 --- a/src/components/search-input.tsx +++ b/src/components/search-input.tsx @@ -1,8 +1,8 @@ "use client" -import { RefreshCcw, Search } from "lucide-react" import { useRouter, useSearchParams } from "next/navigation" import { useEffect, useState } from "react" +import { FiRefreshCcw, FiSearch } from "react-icons/fi" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" @@ -35,11 +35,11 @@ export function SearchInput({ disabled }: { disabled?: boolean }) { placeholder="Search..." />
diff --git a/src/components/theme-button.tsx b/src/components/theme-button.tsx index cbaa0ad..2ddc817 100644 --- a/src/components/theme-button.tsx +++ b/src/components/theme-button.tsx @@ -1,6 +1,6 @@ "use client" -import { MoonIcon, SunIcon } from "lucide-react" import { useTheme } from "next-themes" +import { FiMoon, FiSun } from "react-icons/fi" import { Button } from "./ui/button" export function ThemeButton() { @@ -9,8 +9,8 @@ export function ThemeButton() { // TODO: remove disabled when light theme is ready return ( ) } diff --git a/src/components/ui/breadcrumb.tsx b/src/components/ui/breadcrumb.tsx index e0deed4..28b736e 100644 --- a/src/components/ui/breadcrumb.tsx +++ b/src/components/ui/breadcrumb.tsx @@ -3,7 +3,7 @@ import { mergeProps } from "@base-ui/react/merge-props" import { useRender } from "@base-ui/react/use-render" import { cn } from "@/lib/utils/shadcn" -import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react" +import { FiChevronRight, FiMoreHorizontal } from "react-icons/fi" function Breadcrumb({ className, ...props }: React.ComponentProps<"nav">) { return ( @@ -86,7 +86,7 @@ function BreadcrumbSeparator({ {...props} > {children ?? ( - + )} ) @@ -107,8 +107,7 @@ function BreadcrumbEllipsis({ )} {...props} > - + More ) diff --git a/src/components/ui/calendar.tsx b/src/components/ui/calendar.tsx index 686626b..a39b65e 100644 --- a/src/components/ui/calendar.tsx +++ b/src/components/ui/calendar.tsx @@ -10,7 +10,7 @@ import { import { cn } from "@/lib/utils/shadcn" import { Button, buttonVariants } from "@/components/ui/button" -import { ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon } from "lucide-react" +import { FiChevronLeft, FiChevronRight, FiChevronDown } from "react-icons/fi" function Calendar({ className, @@ -147,18 +147,18 @@ function Calendar({ Chevron: ({ className, orientation, ...props }) => { if (orientation === "left") { return ( - + ) } if (orientation === "right") { return ( - + ) } return ( - + ) }, DayButton: ({ ...props }) => ( diff --git a/src/components/ui/command.tsx b/src/components/ui/command.tsx index b57a702..7b8b0ef 100644 --- a/src/components/ui/command.tsx +++ b/src/components/ui/command.tsx @@ -15,7 +15,7 @@ import { InputGroup, InputGroupAddon, } from "@/components/ui/input-group" -import { SearchIcon, CheckIcon } from "lucide-react" +import { FiSearch, FiCheck } from "react-icons/fi" function Command({ className, @@ -82,7 +82,7 @@ function CommandInput({ {...props} /> - +
@@ -162,7 +162,7 @@ function CommandItem({ {...props} > {children} - + ) } diff --git a/src/components/ui/dialog.tsx b/src/components/ui/dialog.tsx index 9bb1f25..c3f389e 100644 --- a/src/components/ui/dialog.tsx +++ b/src/components/ui/dialog.tsx @@ -5,7 +5,7 @@ import { Dialog as DialogPrimitive } from "@base-ui/react/dialog" import { cn } from "@/lib/utils/shadcn" import { Button } from "@/components/ui/button" -import { XIcon } from "lucide-react" +import { FiX } from "react-icons/fi" function Dialog({ ...props }: DialogPrimitive.Root.Props) { return @@ -61,7 +61,6 @@ function DialogContent({ {children} {showCloseButton && ( } > - + Close )} diff --git a/src/components/ui/dropdown-menu.tsx b/src/components/ui/dropdown-menu.tsx index d1c45d7..385ff9f 100644 --- a/src/components/ui/dropdown-menu.tsx +++ b/src/components/ui/dropdown-menu.tsx @@ -4,7 +4,7 @@ import * as React from "react" import { Menu as MenuPrimitive } from "@base-ui/react/menu" import { cn } from "@/lib/utils/shadcn" -import { ChevronRightIcon, CheckIcon } from "lucide-react" +import { FiChevronRight, FiCheck } from "react-icons/fi" function DropdownMenu({ ...props }: MenuPrimitive.Root.Props) { return @@ -119,7 +119,7 @@ function DropdownMenuSubTrigger({ {...props} > {children} - + ) } @@ -170,8 +170,7 @@ function DropdownMenuCheckboxItem({ data-slot="dropdown-menu-checkbox-item-indicator" > - + {children} @@ -211,8 +210,7 @@ function DropdownMenuRadioItem({ data-slot="dropdown-menu-radio-item-indicator" > - + {children} diff --git a/src/components/ui/input-otp.tsx b/src/components/ui/input-otp.tsx index dcbc966..baca16a 100644 --- a/src/components/ui/input-otp.tsx +++ b/src/components/ui/input-otp.tsx @@ -4,7 +4,7 @@ import * as React from "react" import { OTPInput, OTPInputContext } from "input-otp" import { cn } from "@/lib/utils/shadcn" -import { MinusIcon } from "lucide-react" +import { FiMinus } from "react-icons/fi" function InputOTP({ className, @@ -78,8 +78,7 @@ function InputOTPSeparator({ ...props }: React.ComponentProps<"div">) { role="separator" {...props} > - +
) } diff --git a/src/components/ui/select.tsx b/src/components/ui/select.tsx index bef549b..efd2cb8 100644 --- a/src/components/ui/select.tsx +++ b/src/components/ui/select.tsx @@ -4,7 +4,7 @@ import * as React from "react" import { Select as SelectPrimitive } from "@base-ui/react/select" import { cn } from "@/lib/utils/shadcn" -import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from "lucide-react" +import { FiChevronDown, FiCheck, FiChevronUp } from "react-icons/fi" const Select = SelectPrimitive.Root @@ -49,7 +49,7 @@ function SelectTrigger({ {children} + } /> @@ -130,7 +130,7 @@ function SelectItem({ } > - + ) @@ -162,8 +162,7 @@ function SelectScrollUpButton({ )} {...props} > - + ) } @@ -181,8 +180,7 @@ function SelectScrollDownButton({ )} {...props} > - + ) } diff --git a/src/components/ui/sheet.tsx b/src/components/ui/sheet.tsx index 308776c..a3bf29e 100644 --- a/src/components/ui/sheet.tsx +++ b/src/components/ui/sheet.tsx @@ -5,7 +5,7 @@ import { Dialog as SheetPrimitive } from "@base-ui/react/dialog" import { cn } from "@/lib/utils/shadcn" import { Button } from "@/components/ui/button" -import { XIcon } from "lucide-react" +import { FiX } from "react-icons/fi" function Sheet({ ...props }: SheetPrimitive.Root.Props) { return @@ -70,8 +70,7 @@ function SheetContent({ /> } > - + Close )} diff --git a/src/components/ui/sidebar.tsx b/src/components/ui/sidebar.tsx index 3205f8a..a984eb5 100644 --- a/src/components/ui/sidebar.tsx +++ b/src/components/ui/sidebar.tsx @@ -23,7 +23,7 @@ import { TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip" -import { PanelLeftIcon } from "lucide-react" +import { FiSidebar } from "react-icons/fi" import { useCookieStorage } from "@/hooks/use-cookie-storage" import { COOKIES } from "@/constants" @@ -275,7 +275,7 @@ function SidebarTrigger({ }} {...props} > - + Toggle Sidebar ) diff --git a/src/components/ui/sonner.tsx b/src/components/ui/sonner.tsx index 9280ee5..ddee39b 100644 --- a/src/components/ui/sonner.tsx +++ b/src/components/ui/sonner.tsx @@ -2,7 +2,7 @@ import { useTheme } from "next-themes" import { Toaster as Sonner, type ToasterProps } from "sonner" -import { CircleCheckIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon, Loader2Icon } from "lucide-react" +import { FiCheckCircle, FiInfo, FiAlertTriangle, FiAlertOctagon, FiLoader } from "react-icons/fi" const Toaster = ({ ...props }: ToasterProps) => { const { theme = "system" } = useTheme() @@ -13,19 +13,19 @@ const Toaster = ({ ...props }: ToasterProps) => { className="toaster group" icons={{ success: ( - + ), info: ( - + ), warning: ( - + ), error: ( - + ), loading: ( - + ), }} style={ diff --git a/src/components/user-select.tsx b/src/components/user-select.tsx index 68b2a14..bcb03bd 100644 --- a/src/components/user-select.tsx +++ b/src/components/user-select.tsx @@ -1,7 +1,7 @@ "use client" -import { Search, X } from "lucide-react" import { useState } from "react" +import { FiSearch, FiX } from "react-icons/fi" import { toast } from "sonner" import { fmtUser } from "@/lib/utils/telegram" import { getUserInfo, searchUserInfo } from "@/server/actions/users" @@ -98,11 +98,11 @@ export function UserSelect({ onUser, onReset }: Props) { {user ? ( ) : ( )}