From 6169e25ee290a51096bf20625c4a789569cbe475 Mon Sep 17 00:00:00 2001 From: Manceraider24 Date: Fri, 29 May 2026 18:56:51 +0000 Subject: [PATCH] feat: replace lucide-react with inline SVG icon components --- apps/web/app/create-event/page.tsx | 2 +- apps/web/app/events/create/page.tsx | 2 +- .../help/[category]/[slug]/client-sidebar.tsx | 2 +- apps/web/components/events/TicketModal.tsx | 2 +- apps/web/components/ui/icons.tsx | 112 ++++++++++++++++++ apps/web/package.json | 1 - 6 files changed, 116 insertions(+), 5 deletions(-) create mode 100644 apps/web/components/ui/icons.tsx diff --git a/apps/web/app/create-event/page.tsx b/apps/web/app/create-event/page.tsx index cb145d8c..d0418e2d 100644 --- a/apps/web/app/create-event/page.tsx +++ b/apps/web/app/create-event/page.tsx @@ -7,7 +7,7 @@ import { motion } from "framer-motion"; import { Navbar } from "@/components/layout/navbar"; import { Footer } from "@/components/layout/footer"; import { Button } from "@/components/ui/button"; -import { CheckCircle2, Home, ExternalLink } from "lucide-react"; +import { CheckCircle2, Home, ExternalLink } from "@/components/ui/icons"; import { toast } from "sonner"; export default function CreateEventPage() { diff --git a/apps/web/app/events/create/page.tsx b/apps/web/app/events/create/page.tsx index 653c53b9..d2ca1997 100644 --- a/apps/web/app/events/create/page.tsx +++ b/apps/web/app/events/create/page.tsx @@ -1,5 +1,5 @@ import CreateEventForm from "@/components/events/create-event-form"; -import { Camera } from "lucide-react"; +import { Camera } from "@/components/ui/icons"; export default function CreateEventPage() { return ( diff --git a/apps/web/app/help/[category]/[slug]/client-sidebar.tsx b/apps/web/app/help/[category]/[slug]/client-sidebar.tsx index 62b53f18..fe73cb5b 100644 --- a/apps/web/app/help/[category]/[slug]/client-sidebar.tsx +++ b/apps/web/app/help/[category]/[slug]/client-sidebar.tsx @@ -2,7 +2,7 @@ import { useState } from "react"; import Link from "next/link"; -import { ChevronDown, ChevronUp } from "lucide-react"; +import { ChevronDown, ChevronUp } from "@/components/ui/icons"; import type { Article } from "../../data"; interface ClientSidebarProps { diff --git a/apps/web/components/events/TicketModal.tsx b/apps/web/components/events/TicketModal.tsx index ec5242a9..96629e64 100644 --- a/apps/web/components/events/TicketModal.tsx +++ b/apps/web/components/events/TicketModal.tsx @@ -4,7 +4,7 @@ import React, { useState } from "react"; import { motion, AnimatePresence } from "framer-motion"; import { QRCodeSVG } from "qrcode.react"; import { toast } from "sonner"; -import { X, Minus, Plus, Ticket, ArrowRight, CheckCircle2, Gift } from "lucide-react"; +import { X, Minus, Plus, Ticket, ArrowRight, CheckCircle2, Gift } from "@/components/ui/icons"; import Image from "next/image"; import { Button } from "@/components/ui/button"; diff --git a/apps/web/components/ui/icons.tsx b/apps/web/components/ui/icons.tsx new file mode 100644 index 00000000..0be68210 --- /dev/null +++ b/apps/web/components/ui/icons.tsx @@ -0,0 +1,112 @@ +interface IconProps { + size?: number; + className?: string; +} + +const base = (size = 24, className?: string) => ({ + width: size, + height: size, + viewBox: "0 0 24 24", + fill: "none", + stroke: "currentColor", + strokeWidth: 2, + strokeLinecap: "round" as const, + strokeLinejoin: "round" as const, + className, +}); + +export function ChevronDown({ size, className }: IconProps) { + return ; +} + +export function ChevronUp({ size, className }: IconProps) { + return ; +} + +export function Camera({ size, className }: IconProps) { + return ( + + + + + ); +} + +export function CheckCircle2({ size, className }: IconProps) { + return ( + + + + + ); +} + +export function Home({ size, className }: IconProps) { + return ( + + + + + ); +} + +export function ExternalLink({ size, className }: IconProps) { + return ( + + + + + + ); +} + +export function X({ size, className }: IconProps) { + return ( + + + + + ); +} + +export function Minus({ size, className }: IconProps) { + return ; +} + +export function Plus({ size, className }: IconProps) { + return ( + + + + + ); +} + +export function Ticket({ size, className }: IconProps) { + return ( + + + + ); +} + +export function ArrowRight({ size, className }: IconProps) { + return ( + + + + + ); +} + +export function Gift({ size, className }: IconProps) { + return ( + + + + + + + + ); +} diff --git a/apps/web/package.json b/apps/web/package.json index 550d62b1..388b2597 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -17,7 +17,6 @@ "framer-motion": "^12.26.2", "jsonwebtoken": "^9.0.3", "leaflet": "^1.9.4", - "lucide-react": "^0.575.0", "next": "16.1.3", "nprogress": "^0.2.0", "qrcode.react": "^4.2.0",